之前在吴恩达的课程上接触到了YOLO的原理及简单实现,上一周对YOLO算法进行了学习,现将个人的学习心得及学习结果记录如下。

1.YOLO简介:

    人类视觉系统快速且精准,只需瞄一眼(You Only Look Once)即可识别图像中物品及其位置。作者用了You Only Look Once的首字母YOLO来表示其算法,相当有趣。YOLO为一种新的目标检测方法,该方法的特点是实现快速检测的同时还达到较高的准确率。作者将目标检测任务看作目标区域预测和类别预测的回归问题。该方法采用单个神经网络直接预测物品边界和类别概率,实现端到端(end to end)的物品检测。同时,该方法检测速非常快,基础版可以达到45帧/s的实时检测;FastYOLO可以达到155帧/s。与当前最好系统相比,YOLO目标区域定位误差更大,但是背景预测的准确性优于当前最好的方法。

YOLO的网络结构:模型采用卷积神经网络结构。开始的卷积层提取图像特征,全连接层预测输出概率。模型结构类似于GoogleNet,如图3所示。作者还训练了YOLO的快速版本(fast YOLO)。Fast YOLO模型卷积层和filter更少。最终输出为7×7×30的tensor。

2.参考源码及运行环境:

这里用到的YOLO算法的实现代码源于https://github.com/hizhangp/yolo_tensorflow

运行环境:Windows+显卡MX150+python3.6.5+tensorflow1.8

3.项目详解:

最近被安利了一个好用的IDE——Pycharm,先用他看看我们的项目文件结构:

在作者贴出的链接处下载权重文件,两次解压后得到YOLO_small.ckpt的权重文件,放到weights文件夹中,完成准备工作。由于本人笔记本的渣渣配置,用CPU或者MX150进行训练的过程会非常地长,故直接跳过train的过程,直接运行test.py。准备工作和运行过程出现了若干错误,在baidu的帮助下一一解决了。

下面看看运行结果:

首先是作者给出的两张照片:

and

可以看到,算法能够较准确地检测出真实图片的人物或者动物;突发奇想测试一下动漫人物:

可以看到,虽然也能识别,但是效果不如刚才。对作者的代码稍加改动,看看算法对摄像头实时检测的效果:

由于显卡性能问题,无法做到实时检测,每秒只有2.5帧。

4.代码分析:

  1. config.py 这部分程序主要是用来定义网络中的一些整体结构参数
  2. yolo_net.py 这部分的主要作用是利用 cfg 文件对网络参数进行初始化,计算 Loss,计算两个 bounding box 之间的 IoU,实现了 yolo 网络模型的构成,可以清楚的看到网络的组成,而且为了使程序更加简洁,构建网络使用的是 TensorFlow 中的 slim 模块。
  3. train.py 这部分代码主要实现的是对已经构建好的网络和损失函数利用数据进行训练,在训练过程中,对变量采用了指数平均数(exponential moving average (EMA))来提高整体的训练性能。同时,为了获得比较好的学习性能,对学习速率同向进行了指数衰减,使用了 exponential_decay 函数来实现这个功能。
  4. test.py 这部分的主要内容就是利用训练好的权重进行预测,得到预测输出后利用 OpenCV 的相关函数进行画框等操作。同时,还可以利用 OpenCV 进行视频处理,使程序能够实时地对视频流进行检测。

5.At Last

yolo_v1 虽然已经能够对物体进行实时检测,但是整体上来说,检测的效果并不是特别好,检测的类别也比较少,针对这些问题,作者之后还提出了 yolo_v2,以此来对这些问题进行改进。这周的总结就到这里,下周计划是FCN网络。

YOLO算法学习总结相关推荐

  1. 论文学习:基于集成YOLO算法的蝴蝶检测与分类

    0.论文名称与地址连接 Butterfly detection and classification based on integrated YOLO algorithm 论文地址:xxx.itp.a ...

  2. Yolo目标检测算法属于深度学习吗?yolo算法是什么?

    Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测.本文将介绍一个端到端的方法--Yolo算法,该方法操作简便且仿真速度快,效果也不差. Yolo算法是什么? YOLO框架(You ...

  3. YOLO系列算法学习

    YOLO系列算法学习 YOLOV1算法 预测阶段(前向推断) yolo基准模型和tiny模型结构 基准模型 为什么是7x7x30的输出? 流程可视化 预测阶段后处理-NMS非极大值抑制 两个bboxs ...

  4. 3.9 YOLO算法-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.8 Anchor Boxes 回到目录 3.10 候选区域 YOLO 算法 (Putting it together: YOLO algorithm) 你们已经学到对象检 ...

  5. yolo算法_吴恩达深度学习笔记(100)-目标检测之YOLO 算法讲解

    YOLO 算法(Putting it together: YOLO algorithm) 你们已经学到对象检测算法的大部分组件了,在这个笔记里,我们会把所有组件组装在一起构成YOLO对象检测算法. 我 ...

  6. 深度学习目标检测系列:一文弄懂YOLO算法|附Python源码

    在之前的文章中,介绍了计算机视觉领域中目标检测的相关方法--RCNN系列算法原理,以及Faster RCNN的实现.这些算法面临的一个问题,不是端到端的模型,几个构件拼凑在一起组成整个检测系统,操作起 ...

  7. 吴恩达神经网络和深度学习-学习笔记-43-Bounding box 预测 + YOLO算法

    滑动窗口目标检测的缺点 在滑动窗法中,取这些离散的位置的集合,然后在它们上面跑分类器.在这种情况下,这些边界框没有一个能完美匹配汽车位置. 还有,最完美的边界框甚至不是方形,而是稍微有点长方形. 得到 ...

  8. python目标识别算法_深度学习目标检测系列:一文弄懂YOLO算法|附Python源码

    摘要: 本文是目标检测系列文章--YOLO算法,介绍其基本原理及实现细节,并用python实现,方便读者上手体验目标检测的乐趣. 在之前的文章中,介绍了计算机视觉领域中目标检测的相关方法--RCNN系 ...

  9. yolo 深度学习_YoLo v1-v3深度学习网络-结构简介

    引言:如今基于深度学习的目标检测已经逐渐成为自动驾驶,视频监控,机械加工,智能机器人等领域的核心技术,而现存的大多数精度高的目标检测算法,速度较慢,无法适应工业界对于目标检测实时性的需求,这时YOLO ...

最新文章

  1. Java Activiti 工作流引擎 流程审批 后台框架源码 springmvc SSM
  2. 安装Uikit时ERROR in Entry module not found: Error: Can't resolve './src' in 'xxx'的解决思路
  3. 2018 blockchain innovation final round of the chain valley
  4. 分布式架构--基本思想汇总
  5. PAT乙级1066 图像过滤
  6. 阅读笔记-JavaScript学习指南
  7. 使用 ListView 控件展示数据
  8. python的sorted用法_python的sorted用法详解
  9. 极课大数据完成C轮融资,投资方为好未来
  10. 全桥电路matlab仿真,三相电压型桥式逆变电路及建模与仿真结构
  11. 【Swift】图片裁剪
  12. 道友自诉:入职中软一个月(外包华为)就离职了!
  13. 远程调用报错java.net.UnknownHostException 解决方法
  14. 2012春节回乡见闻
  15. 深圳科陆集团2015校招软件开发笔试题
  16. 麻省理工学院研发可编程数字纤维
  17. UML之3——图(简介)
  18. 基于循环神经网络的主题模型
  19. 自动生成编号,id,序号,采用不同策略生成
  20. WXML---微信开发文档

热门文章

  1. rbac数据库设计 mysql_rbac数据库设计
  2. 监督学习方法与无监督学习方法总结
  3. node开通阿里云短信验证服务,代码演示 超级详细
  4. cadence virtuoso VIVA及calculator
  5. 攻防技术基础笔记一——病毒、蠕虫病毒、木马、软件漏洞、常见问题、漏洞成因、黑产产业链、遵纪守法、渗透测试、渗透测试方法、VMware的使用、认识kali
  6. 10.21黄金原油价格走势如何?黄金行情分析预测及操作建议
  7. 网络训练需要的混合类型数据的组织方式
  8. 湖南大学21夏训练四7.斯诺克台球
  9. 湖南大学21夏训练四18.身份证校验
  10. printk 续行问题