←上一篇 ↓↑ 下一篇→
3.8 Anchor Boxes 回到目录 3.10 候选区域

YOLO 算法 (Putting it together: YOLO algorithm)

你们已经学到对象检测算法的大部分组件了,在这个视频里,我们会把所有组件组装在一起构成YOLO对象检测算法。

我们先看看如何构造你的训练集,假设你要训练一个算法去检测三种对象,行人、汽车和摩托车,你还需要显式指定完整的背景类别。这里有3个类别标签,如果你要用两个anchor box,那么输出 yyy 就是3×3×2×8,其中3×3表示3×3个网格,2是anchor box的数量,8是向量维度,8实际上先是5( pc,bx,by,bh,bwp_c,b_x,b_y,b_h,b_wpc​,bx​,by​,bh​,bw​ )再加上类别的数量( c1,c2,c3c_1,c_2,c_3c1​,c2​,c3​ )。你可以将它看成是3×3×2×8,或者3×3×16。要构造训练集,你需要遍历9个格子,然后构成对应的目标向量 yyy 。

所以先看看第一个格子(编号1),里面没什么有价值的东西,行人、车子和摩托车,三个类别都没有出现在左上格子中,所以对应那个格子目标 yyy 就是这样的, y=[0???????0???????]Ty=\left[\begin{matrix} 0 & ? & ? & ? & ? & ? & ? & ? & 0 & ? & ? & ? & ? & ? & ? & ? \end{matrix}\right]^Ty=[0​?​?​?​?​?​?​?​0​?​?​?​?​?​?​?​]T ,第一个anchor box的 pcp_cpc​ 是0,因为没什么和第一个anchor box有关的,第二个anchor box的 pcp_cpc​ 也是0,剩下这些值是don’t care-s

现在网格中大多数格子都是空的,但那里的格子(编号2)会有这个目标向量 yyy , y=[0???????1bxbybhbw010]Ty=\left[\begin{matrix} 0 & ? & ? & ? & ? & ? & ? & ? & 1 & b_x & b_y & b_h & b_w & 0 & 1 & 0 \end{matrix}\right]^Ty=[0​?​?​?​?​?​?​?​1​bx​​by​​bh​​bw​​0​1​0​]T ,所以假设你的训练集中,对于车子有这样一个边界框(编号3),水平方向更长一点。所以如果这是你的anchor box,这是anchor box 1(编号4),这是anchor box 2(编号5),然后红框和anchor box 2的交并比更高,那么车子就和向量的下半部分相关。要注意,这里和anchor box 1有关的 pcp_cpc​ 是0,剩下这些分量都是don’t care-s,然后你的第二个 pc=1p_c=1pc​=1 ,然后你要用这些( bx,by,bh,bwb_x,b_y,b_h,b_wbx​,by​,bh​,bw​ )来指定红边界框的位置,然后指定它的正确类别是2( c1=0,c2=1,c3=0c_1=0,c_2=1,c_3=0c1​=0,c2​=1,c3​=0 ),对吧,这是一辆汽车。

所以你这样遍历9个格子,遍历3×3网格的所有位置,你会得到这样一个向量,得到一个16维向量,所以最终输出尺寸就是3×3×16。和之前一样,简单起见,我在这里用的是3×3网格,实践中用的可能是19×19×16,或者需要用到更多的anchor box,可能是19×19×5×8,即19×19×40,用了5个anchor box。这就是训练集,然后你训练一个卷积网络,输入是图片,可能是100×100×3,然后你的卷积网络最后输出尺寸是,在我们例子中是3×3×16或者3×3×2×8。

接下来我们看看你的算法是怎样做出预测的,输入图像,你的神经网络的输出尺寸是这个3×3×2×8,对于9个格子,每个都有对应的向量。对于左上的格子(编号1),那里没有任何对象,那么我们希望你的神经网络在那里(第一个 pcp_cpc​ )输出的是0,这里(第二个 pcp_cpc​ )是0,然后我们输出一些值,你的神经网络不能输出问号,不能输出don’t care-s,剩下的我输入一些数字,但这些数字基本上会被忽略,因为神经网络告诉你,那里没有任何东西,所以输出是不是对应一个类别的边界框无关紧要,所以基本上是一组数字,多多少少都是噪音(输出 yyy 如编号3所示)。

和这里的边界框不大一样,希望 yyy 的值,那个左下格子(编号2)的输出 yyy (编号4所示),形式是,对于边界框1来说( pcp_cpc​ )是0,然后就是一组数字,就是噪音(anchor box 1对应行人,此格子中无行人, pc=0,bx=?,by=?,bh=?,bw=?,c1=?,c2=?,c3=?p_c=0,b_x=?,b_y=?,b_h=?,b_w=?,c_1=?,c_2=?,c_3=?pc​=0,bx​=?,by​=?,bh​=?,bw​=?,c1​=?,c2​=?,c3​=? )。希望你的算法能输出一些数字,可以对车子指定一个相当准确的边界框(anchor box 2对应汽车,此格子中有车, pc=1,bx,by,bh,bw,c1=0,c2=1,c3=0p_c=1,b_x,b_y,b_h,b_w,c_1=0,c_2=1,c_3=0pc​=1,bx​,by​,bh​,bw​,c1​=0,c2​=1,c3​=0 ),这就是神经网络做出预测的过程。

最后你要运行一下这个非极大值抑制,为了让内容更有趣一些,我们看看一张新的测试图像,这就是运行非极大值抑制的过程。如果你使用两个anchor box,那么对于9个格子中任何一个都会有两个预测的边界框,其中一个的概率 pcp_cpc​ 很低。但9个格子中,每个都有两个预测的边界框,比如说我们得到的边界框是是这样的,注意有一些边界框可以超出所在格子的高度和宽度(编号1所示)。接下来你抛弃概率很低的预测,去掉这些连神经网络都说,这里很可能什么都没有,所以你需要抛弃这些(编号2所示)。

最后,如果你有三个对象检测类别,你希望检测行人,汽车和摩托车,那么你要做的是,对于每个类别单独运行非极大值抑制,处理预测结果所属类别的边界框,用非极大值抑制来处理行人类别,用非极大值抑制处理车子类别,然后对摩托车类别进行非极大值抑制,运行三次来得到最终的预测结果。所以算法的输出最好能够检测出图像里所有的车子,还有所有的行人(编号3所示)。

这就是YOLO对象检测算法,这实际上是最有效的对象检测算法之一,包含了整个计算机视觉对象检测领域文献中很多最精妙的思路。你可以在本周的编程作业中尝试现实这个算法,所以我希望你喜欢本周的编程练习,这里还有一个可选的视频,你们可以看,也可以不看,总之,我们下周见。

课程板书





←上一篇 ↓↑ 下一篇→
3.8 Anchor Boxes 回到目录 3.10 候选区域

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

  1. 深度学习第四课——卷积神经网络(week 1)

    目录 一.前言 1.1 卷积 1.2 其他滤波器 1.3 Padding 1.3.1 解释 1.3.2 填充多少像素的选择 1.4 卷积步长 1.5 三维卷积 1.6 单层卷积网络 1.7 深度卷积神 ...

  2. 2.19 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.18 Logistic 损失函数的解释 回到目录 3.1 神经网络概览 文章目录 总结 习题 第 11 题 第 12 题 第 13 题 第 14 题 第 15 题 第 1 ...

  3. 4.11 一维到三维推广-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 4.10 风格代价函数 回到目录 4.12 总结 一维到三维推广 (1D and 3D Generalizations of Models) 你已经学习了许多关于卷积神经网络 ...

  4. 4.1 什么是人脸识别-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 总结 回到目录 4.2 One-Shot 学习 什么是人脸识别 (What is face recognition?) 欢迎来到第四周,即这门课卷积神经网络课程的最 ...

  5. 1.8 简单卷积网络示例-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 单层卷积网络 回到目录 1.9 池化层 简单卷积网络示例 (A Simple Convolution Network Example) 上节课,我们讲了如何为卷积网络 ...

  6. 机器学习和深度学习到底怎么学?顶尖专家吴恩达告诉你

    机器学习和深度学习到底怎么学? 在外国版知乎上,有位网友问:新手如何学习机器学习?学习完MOOC的课程后有没有能力阅读研究论文或者真正的做出一点研究成果? 这个困惑很多人的问题吴恩达给出了详细的回答, ...

  7. 3.12 总结-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.11 随机初始化 回到目录 4.1 深层神经网络 文章目录 总结 习题 第 21 题 第 22 题 第 23 题 第 24 题 第 25 题 第 26 题 第 27 题 ...

  8. 1.1 欢迎-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 无 回到目录 1.2 什么是神经网络 欢迎 第一个视频主要讲了什么是深度学习,深度学习能做些什么事情.以下是吴恩达老师的原话: 深度学习改变了传统互联网业务,例如如网络搜索和 ...

  9. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 3.4 多个例子中的向量化 回到目录 3.6 激活函数 向量化实现的解释 (Explanation for Vectorized Implementation) 在上一个视频 ...

最新文章

  1. 2018-3-14智能算法(文章--优化问题的智能算法及其哲学内涵)笔记一(什么是优化问题)
  2. Windown Server 2003
  3. Django 获取前端发送的头文件
  4. Ubuntu在当前目录下右键直接打开terminal终端
  5. 12月27日云栖精选夜读:实人认证 - 阿里云实人认证(公测)发布
  6. 2021-02-25
  7. 【终极方法】This method must return a result of type boolean
  8. elixir 高可用系列(五) Supervisor
  9. WinAPI: midiOutCachePatches - 预装音色
  10. skynet启动读取配置文件浅析(skynet_main.c)
  11. 开课吧:为什么指针被誉为C语言灵魂?
  12. CHIL-SQL-UPDATE 语句
  13. 离散数学及其应用 (第2版)
  14. 2022手机商城源码h5运营版本
  15. 29-地理空间数据云下载【进阶】
  16. java 无理数_Java 程序设计:有理数类
  17. Ubuntu和win10系统(N卡)
  18. UVa 1645 Count
  19. Zynq linux启动过程,详解zynq的启动步骤
  20. 蓝桥杯单片机第11届国赛程序题参考答案

热门文章

  1. @JsonProperty的使用
  2. fileinput 的总结
  3. spoj 375 Query on a tree
  4. powerDesiger uml class
  5. C++运算符重载-mfc演示
  6. ArcGIS 桌面版安装和ArcMap添加mdb库表基本操作
  7. SuperMap webGIS 简易提示框示例
  8. Windows内核系统调用分析
  9. BZOJ 2820 YY的GCD 莫比乌斯反演
  10. C++ code:main参数