目录
1. 目标定位
2. 特征点检测
3. 目标检测
4. 滑动窗口的卷积实现
5. Bounding Box预测(YOLO)
6. 交并比
7. 非极大值抑制
8. Anchor Boxes
9. YOLO 算法
10. 候选区域
作业
参考:吴恩达视频课深度学习笔记
1. 目标定位
定位分类问题:
不仅要判断图片中是不是一辆汽车,还要「标记出它的位置」,用框「圈起来」
2. 特征点检测
Landmark 检测
3. 目标检测
基于「滑动窗口」的目标检测
将目标剪切出来,训练卷积网络以一定大小的窗口扫描图片,将窗口内的图片输入卷积网络预测更改窗口大小,重复上面步骤
滑动窗口目标检测算法「缺点」:
「计算成本」,剪切出太多块,卷积网络要一个个地处理用的步幅很大,窗口个数少,可能会影响性能用小粒度或小步幅,窗口会特别多,这意味着超高的计算成本
4. 滑动窗口的卷积实现
对「整张图片」进行卷积操作,「一次得到」所有预测值,如果足够幸运,神经网络便可以识别出目标的位置在卷积层上应用滑动窗口算法,「提高」了整个算法的「效率」不过这种算法仍然存在一个「缺点」,就是「边界框的位置可能不够准确」
5. Bounding Box预测(YOLO)
滑动窗口法中,「离散」的边界框可能没有一个能完美匹配汽车位置
一个能得到「更精准边界框」的算法是「YOLO」算法,YOLO(「You only look once」)意思是你只看一次,这是由Joseph Redmon,Santosh Divvala,Ross Girshick和Ali Farhadi提出的算法
YOLO算法有一个好处,它是一个「卷积」实现,运行速度「非常快」,可以达到「实时识别」
边界框定义还有其他更有效的方法,可能效果要更好一点
6. 交并比
7. 非极大值抑制
算法可能对同一个对象做出「多次」检测。「非极大值抑制」确保算法对每个对象「只检测一次」。
「非极大值抑制」,非最大值意味着你「只输出概率最大」的分类结果,抑制很接近,但不是最大的其他预测结果
如果你尝试「同时检测三个对象」,比如说行人、汽车、摩托,那么输出向量就会有三个额外的分量。事实证明,正确的做法是「独立进行三次」非极大值抑制,对每个输出类别都做一次
8. Anchor Boxes
你想让一个格子检测出「多个对象」,就是使用 anchor box 这个概念
算法处理「不好」的情况:
如果你有两个anchor box,但同一格子有三个对象两个对象都分配到一个格子中,且它们的anchor box「形状也一样」出现的概率比较小,对性能的影响应该不会很大
怎么选择 anchor box呢?
一般「手工指定」anchor box形状,选择5到10个anchor box形状,覆盖多种不同的形状k - 平均算法,可以将两类对象形状「聚类」,选择「最具有代表性」的一组 anchor box,这是自动选择anchor box的高级方法
9. YOLO 算法
训练:预测:非极大值抑制:如果使用两个anchor box,那么9个格子中任何一个都会有两个预测的边界框,其中一个的概率很低。接下来你抛弃概率很低的预测。如果你希望检测(3种目标)行人,汽车和摩托车,那么你要做的是,对于「每个类别」单独运行
非极大值抑制,运行三次来得到最终的预测结果。10. 候选区域
候选区域是一个有趣的想法,但这个方法需要两步:
首先得到候选区域然后再分类
相比之下,类似于YOLO(You only look once)这个算法,能够一步做完,老师觉得长远而言更有希望
YOLO 网址:/darknet/yolo/
作业
待写,见下一篇,一起加油!
如遇链接失效,请查阅原文
我的CSDN博客地址 https://michael./
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!