手把手教你深度学习(目标检测—RCNN)

Posted 羽峰码字

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教你深度学习(目标检测—RCNN)相关的知识,希望对你有一定的参考价值。

目录

​1. 目标检测基础

1.1 物体识别

1.2 物体定位

1.3 交并比

1.4 非极大值抑制

1.5 目标检测分类

2. RCNN [2]

2.1 Seletive search选择候选框

2.2 候选框特征提取

2.3 候选区域分类及边框微调

2.4 非极大值抑制

3. 总结

参考文献


大家好,我是羽峰,今天要和大家分享的目标检测算法中RCNN算法,希望通过本文的讲解,各位朋友可以对RCNN有个更好的理解。

还是老话,我是羽峰,希望我所分享的文章能为您及更多的朋友带来帮助。欢迎转发或转载呀!

欢迎关注“羽峰码字”

​1. 目标检测基础

1.1 物体识别

物体检测首先是物体识别,人眼观看物体,对其识别是观看其特征,每种物体都有其固有特征,我们就是根据其自身特征来辨别他是哪一种物体。而计算机想要识别某一物体,也是通过其特征,而这些特征则是一些数字特征,计算机通过这些数字特征就可以去识别这些物体。

1.2 物体定位

物体检测第二步就是物体定位,我们不仅要知道他是属于哪一种物体,我们也要知道,这个物体的位置在哪里,所以就出现了物体的定位。那么如何定位这个物体呢,就需要一个边框来框出物体,由这个边框来告诉我们物体所在的位置。那么如何确定这个边框呢?可以是左下点和右上点坐标,也可以是边框中心坐标和边框的宽和高,这两种方法都有被用到。

1.3 交并比

物体检测的另一个重要概念就是物体的交并比,这个在所有目标检测算法中是不可缺少的,他的作用就是衡量两个边界框的相似度,即两个边界框相交面积与相并面积之比。公式如下:

下图用几何图形表示IOU的计算公式,可以更加直观的看出IOU是怎样计算的

1.4 非极大值抑制

物体检测的另一个基础就是非极大值抑制,它的流程如下:

1. 置信度或者其他衡量参数从高到低排序,得到列表L

2. 从L中选取最高置信度的预测边框A1为基准,移除与A1相似的预测边框

3. 重新排序列表L,从L中选取第二高置信度的预测边框A2为基准,移除与A2相似的预测边框。

4. 重复上一步骤,直到L中所有的预测边框都曾作为基准。

经过非极大值抑制之后,将多余边框去掉,之后猫和狗就剩下了一个预测边框,这个预测边框就是网络输出的结果。

1.5 目标检测分类

目标检测算法近20年的进程如图所示[1]

2016年后主要分为两种类型,一种是以YOLO为代表的一步检测法,物体的定位和分类同时实现,一步完成。另一种就是两步检测算法,物体的定位和分类是分开进行的,这一类的代表就是RCNN,Fast RCNN系列。YOLO系列我们已经讲完了,有兴趣的话可以看我之前的视频。今天我们要讲的是RCNN算法,接下来会讲Fast RCNN和Faster RCNN,最后会讲Faster RCNN的代码实现,帮助你去使用Faster RCNN训练自己的数据集。

 

2. RCNN [2]

2.1 Seletive search选择候选框

RCNN首先借鉴了传统的目标检测算法,传统方法采用滑动窗口来检测物体所在位置,而RCNN采用了一种新的策略:Seletive search,来选择候选框。具体步骤为:

step0:生成区域集R,具体参见论文《Efficient Graph-Based Image Segmentation》

step1:计算区域集R里每个相邻区域的相似度S={s1,s2,…} 

step2:找出相似度最高的两个区域,将其合并为新集,添加进R

step3:从S中移除所有与step2中有关的子集 

step4:计算新集与所有子集的相似度 

step5:跳至step2,直至S为空

RCNN最后一共生成2000个标注框,标注框生成之后,将标注框归一化,使每个边框都变成224*224固定大小的图像。

2.2 候选框特征提取

将归一化之后的图像送入到网络中提取其特征,每张图片都产生一个4096的特征向量。

2.3 候选区域分类及边框微调

将产生的每一个特征特征向量在喂入到SVM中进行分类,此时SVM采用的OVR策略进行分类。如果特征向量包含目标物体,则对这个边框进行岭回归,来微调预测边框,使得边框就会更加准确。2000个边框都要经过重置大小,置入网络中提取特征,在分别进行分类和边框的微调,这样2000个边框都结束之后,图像上就只剩余包含物体的边框,而非目标物体上的边框被筛选去掉了。

2.4 非极大值抑制

这时每个物体仍然有好几个边框,这时我们要采用非极大值抑制的方法,将预选边框去除,去除流程如下:

1.每个框都会与真值框做IOU计算,按照IOU结果进行排序,A,B,C

2.计算B,C与A的IOU,如果大于设定阈值就会被舍弃掉,小于则会保留

3.保留的框重新排序,重复上述过程

经过非极大值抑制之后,每个目标物体就只剩下一个最好的预测边框了。

 

3. 总结

下图是论文的原始流程图,先用Seletive search在输入图像上筛选出大约2000个候选框,将候选框区域归一化到统一大小,再使用CNN对每个候选框进行特征提取,生成一个4096的特征向量,在将每个特征向量送入SVM中进行分类,在使用回归方法对候选框位置精修,之后使用NMS进行预选框最后的筛选,最后使得每个物体区域只保留一个最好的预测边框。

RCNN优缺点如下图

以上 就是我今天要分享的内容,谢谢各位。如有错误,欢迎批评指正。

 

参考文献

[1] Z. Zou, Z. Shi, Y. Guo, and J. Ye, "Object detection in 20 years: A survey," arXiv preprint arXiv:1905.05055 (2019).

[2] R. Girshick, J. Donahue, T. Darrell, J. Malik, "Rich feature hierarchies for accurate object detection and semantic segmentation"

 

讲解视频已经放在了b站上(up主:羽峰码字),欢迎围观。

我是羽峰,公众号“羽峰码字”,欢迎来撩。

 

以上是关于手把手教你深度学习(目标检测—RCNN)的主要内容,如果未能解决你的问题,请参考以下文章

深度学习和目标检测系列教程 5-300:早期的目标检测RCNN架构

实战深度学习目标检测:RCNN

深度学习和目标检测系列教程 6-300:目标检测Fast-RCNN架构

深度学习目标检测:YOLOv5实现红绿灯检测(含红绿灯数据集+训练代码)

深度学习目标检测:YOLOv5实现红绿灯检测(含红绿灯数据集+训练代码)

深度学习之目标检测常用算法原理+实践精讲 YOLO / Faster RCNN / SSD / 文本检测 / 多任务网络