机器学习经典模型(二)目标检测

1.图像中单个目标的定位

标签为:中心点,方块的长宽

2.图像中多个目标检测——滑窗法

训练一个目标识别网络Net,能够判断是不是car。

用滑窗法遍历图片,每一次都用Net来做预测,因为知道滑窗的位置和大小,所以可以预测出图片中物体的种类的位置。

受细粒度、滑动步长影响大,计算量太大

3.通过卷积来减少计算量

1)通过卷积代替全连接

机器学习经典模型(二)目标检测_第1张图片

 2)通过卷积实现滑窗操作

机器学习经典模型(二)目标检测_第2张图片

有很多计算是共享的,通过卷积通过“并行”的方式,一次从前到后的计算就预测了所有滑窗的结果。 卷积的步长决定了滑窗的步长

4. YOLO

之前的滑窗是以窗口大小作为bounding box的,不够精确。

机器学习经典模型(二)目标检测_第3张图片

输入100x100x3图像,输出3x3x8的预测,3x3中每一个格子对应一个8的预测标签。

相对于当个目标的定位,这个可以实现多个目标的bouding box定位。

相比滑窗法的pipeline式检测流程,这个是更贴近端到端的方法。

好处:

1、因为用了bounding box目标定位的标签,所以更精确 ,而不是滑窗中只能按照滑窗大小来

2、采用了卷积实现,计算效率高,可以实时

机器学习经典模型(二)目标检测_第4张图片

注意:

这里的3x3网格并没有真正地把图片分割成9块,不存在如果一个物体横跨了两个格子就识别不出来的情况,只是输出限制成了3x3的区域,不同格子的输入并没有应为划分格子而相互解耦,并不等价于分割成9个图片,然后单独做目标定位。

5. 评价指标 IoU 交并比

机器学习经典模型(二)目标检测_第5张图片

 6. 非极大值抑制

机器学习经典模型(二)目标检测_第6张图片

图中高亮的被选中,变暗的被抑制。 

机器学习经典模型(二)目标检测_第7张图片

因为有多个物体,所以需要循环遍历: 

1.选一个概率Pc最大的框,挑出来,作为第一个物体的预测

2.遍历剩下的框,和这个框IoU大于0.6(某个阈值)的框就不要了

3.遍历剩下的框,找一个Pc最大的,作为第二个物体的预测

4.遍历剩下的,和这个框IoU大于0.6(某个阈值)的框就不要了

.......如此循环

参考链接:https://blog.csdn.net/shuzfan/article/details/52711706

7.处理重合物体Anchor Boxes

机器学习经典模型(二)目标检测_第8张图片

输入的预测每个格子不再是只有一组预测值,而是对应不同类别的物体有不同的anchor box 

输出3x3x(8x2)

机器学习经典模型(二)目标检测_第9张图片

 下面列举了一个格子中有两种、有一种物体的情况时,标签是什么样的

 机器学习经典模型(二)目标检测_第10张图片

这种方法无法处理:

1、一个格子中有三个物体,却只有两个anchor box

2、一个格子中同一类物体有两个以上 

参考链接:https://blog.csdn.net/weixin_43384257/article/details/100974776 

8.YOLO

机器学习经典模型(二)目标检测_第11张图片

机器学习经典模型(二)目标检测_第12张图片

这部分还需要看代码仔细研究一下

https://docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA/pub?start=false&loop=false&delayms=3000&slide=id.g137784ab86_4_4611

这里anchor_box在代码里并没有一个与之对应的结构,网络要回归预测boundingbox在anchor_box上的偏移量,输出这个偏移量以后就能得到一个boundingbox的尺寸,通过和标签中的尺寸进行比较,能够算出一个loss,通过这个loss来指导网络学习,所以能够在代码中体现anchor_box的地方就是loss的计算,与输出tensor的channel,anchor_box是一个“不存在代码实体”的东西。

9.R-CNN系列

基于区域建议的,不是滑窗,而是先建议在哪些区域里找,然后在那些区域里执行卷积网络预测bounding box,缺点是太慢了。

这里边区域建议还是很慢。

你可能感兴趣的:(深度学习基础知识)