机器学习经典模型(二)目标检测
1.图像中单个目标的定位
标签为:中心点,方块的长宽
2.图像中多个目标检测——滑窗法
训练一个目标识别网络Net,能够判断是不是car。
用滑窗法遍历图片,每一次都用Net来做预测,因为知道滑窗的位置和大小,所以可以预测出图片中物体的种类的位置。
受细粒度、滑动步长影响大,计算量太大
3.通过卷积来减少计算量
1)通过卷积代替全连接
2)通过卷积实现滑窗操作
有很多计算是共享的,通过卷积通过“并行”的方式,一次从前到后的计算就预测了所有滑窗的结果。 卷积的步长决定了滑窗的步长
4. YOLO
之前的滑窗是以窗口大小作为bounding box的,不够精确。
输入100x100x3图像,输出3x3x8的预测,3x3中每一个格子对应一个8的预测标签。
相对于当个目标的定位,这个可以实现多个目标的bouding box定位。
相比滑窗法的pipeline式检测流程,这个是更贴近端到端的方法。
好处:
1、因为用了bounding box目标定位的标签,所以更精确 ,而不是滑窗中只能按照滑窗大小来
2、采用了卷积实现,计算效率高,可以实时
注意:
这里的3x3网格并没有真正地把图片分割成9块,不存在如果一个物体横跨了两个格子就识别不出来的情况,只是输出限制成了3x3的区域,不同格子的输入并没有应为划分格子而相互解耦,并不等价于分割成9个图片,然后单独做目标定位。
5. 评价指标 IoU 交并比
6. 非极大值抑制
图中高亮的被选中,变暗的被抑制。
因为有多个物体,所以需要循环遍历:
1.选一个概率Pc最大的框,挑出来,作为第一个物体的预测
2.遍历剩下的框,和这个框IoU大于0.6(某个阈值)的框就不要了
3.遍历剩下的框,找一个Pc最大的,作为第二个物体的预测
4.遍历剩下的,和这个框IoU大于0.6(某个阈值)的框就不要了
.......如此循环
参考链接:https://blog.****.net/shuzfan/article/details/52711706
7.处理重合物体Anchor Boxes
输入的预测每个格子不再是只有一组预测值,而是对应不同类别的物体有不同的anchor box
输出3x3x(8x2)
下面列举了一个格子中有两种、有一种物体的情况时,标签是什么样的
这种方法无法处理:
1、一个格子中有三个物体,却只有两个anchor box
2、一个格子中同一类物体有两个以上
参考链接:https://blog.****.net/weixin_43384257/article/details/100974776
8.YOLO
这部分还需要看代码仔细研究一下
9.R-CNN系列
基于区域建议的,不是滑窗,而是先建议在哪些区域里找,然后在那些区域里执行卷积网络预测bounding box,缺点是太慢了。
这里边区域建议还是很慢。