目标检测系列——开山之作RCNN原理详解

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题
🍊往期回顾:ubuntu使用指南阿里云对象存储oss+picgo+typora实现步骤及无法上传图片解决方案
🍊近期目标:拥有10000粉丝
🍊支持小苏:点赞👍🏼、收藏⭐、留言📩

文章目录

RCNN原理

写在前面

RCNN是目标检测领域的开山之作,作者是Ross Girshick ,我们称之为RGB大神🥗🥗🥗 可以在google学术中看看这位大牛都写了哪些文章,看看这引用次数,只能惊呼🐂🍺!!!

目标检测系列——开山之作RCNN原理详解

接下来将详细介绍介绍RCNN的原理,先来看看论文中这张经典的图片。这张图片展示了RCNN的实现过程,其主要有四步,下面分别对每步进行讲解。

目标检测系列——开山之作RCNN原理详解

; 候选区域生成

候选区域生成在RCNN中采用的是selective search 【简称SS算法】,这个算法的原理大致是通过颜色、大小、形状等一些特征对图像进行聚类,算法的结果是在一张图片中生成一系列的候选框,RCNN中让每张图像都生成2000个候选框。这些候选框有着大量的重叠部分,因此我们后面需要将这些重叠的候选框去除,得到相对准确的候选框。【注:这里不对SS算法做详细的讲解,感兴趣的可以自己查阅了解🍍🍍🍍】下图展示了SS算法得到的大致结果,可见一个目标会有多个候选框生成。 【注:RCNN中SS算法每幅图像生成的候选框个数为2000🥝🥝🥝】

目标检测系列——开山之作RCNN原理详解

神经网络提取特征

上一步我们由SS算法从一张图片中得到了2000个候选框,接下来需要对这些候选框进行特征提取,即分别将2000个候选框区域喂入ALexNet网络进行训练,提取特征。【注:有关ALexNet的网络结构我前文有介绍,不清楚的点击了解详情🌱🌱🌱】为方便大家阅读,我把ALexNet的网络结构也贴出供大家参考,如下图所示:

目标检测系列——开山之作RCNN原理详解

需要注意的是,在RCNN中,我们不需要最后的softmax层,只需要经过最后两次全连接层,利用其提取到的特征即可。此外由于全连接层的存在,需要对输出图片的尺寸进行限制,即需要图片分辨率为227227。论文中所采用的方法为无论候选区域的大小或纵横比如何,先将其周围扩展16个邻近像素,然后将所有像素强制缩放至227227尺寸。 【注:可见此方案会使原图像发生畸变,如人物变矮变胖等】相关缩放方案如下图所示:

目标检测系列——开山之作RCNN原理详解

图片来源B站同济子豪兄

; SVM分类器分类

上一步我们已经通过ALexNet网络提取到特征,每一个候选框区域都会生成4096维的特征向量,如下图所示:

目标检测系列——开山之作RCNN原理详解

图片来源B站霹雳吧啦Wz

上图展示的是一个候选框提取到的特征,我们采用SS算法会从一幅图片中生成2000个候选框,将所有候选框输入网络,就会得到20004096维的特征矩阵。将20004096维的特征矩阵与20个SVM组成的权值矩阵409620相乘,会得到200020维的概率矩阵,其中每一行代表一个候选框属于各个目标类别的概率。 【注意:若采用的是VOC数据集,那么类别是应该有21类,包括一个背景类】

目标检测系列——开山之作RCNN原理详解

图片来源B站霹雳吧啦Wz

为让大家更容易理解,对于上图的结构①做更详细的解释,如下图所示:

目标检测系列——开山之作RCNN原理详解

从上图可以看出,200020维矩阵的每一列表示2000个候选框分别对某一类的预测概率,如第一列则表示2000个候选框分别对狗的预测概率。 我们对每一列即每一类进行非极大值抑制(NMS)用于剔除重叠候选框,得到该列中得分最高的的建议框。*具体NMS过程如下:

目标检测系列——开山之作RCNN原理详解

图片来源B站霹雳吧啦Wz

关于这一部分开始可能会有点迷惑,为什么要删除IOU大的目标呢?我之前也产生过这个疑问,其实这还是我们对这个流程不是很清楚。首先我们会在某一列中找出得分最高的目标,然后会计算其它目标和这个得分最高目标的IOU【注意不是计算与Ground Truth的IOU】,这个IOU大表示什么含义呢? 这个值越大表示这两个候选框重叠的部分越多,则表示这两个候选框很可能表示的是同一个物体,那么删除得分低的候选框就很容易理解了。下图展示了相关过程:

目标检测系列——开山之作RCNN原理详解

图片来源B站霹雳吧啦Wz

回归器修正候选框位置

上一步骤中我们剔除了许多候选框,接下来我们需要对剩余的候选框进一步筛选,即分别用20个回归器对上述20个类别中剩余的候选框进行回归操作,最终得到每个类别修正后的得分最高的bounding box。

那么我们怎么由候选框得到最后的预测框呢?我们依旧会由ALexNet输出的特征向量来得到回归器的预测结果,其结果为( d x ( P ) , d y ( P ) , d w ( P ) , d h ( P ) ) (d_x(P),d_y(P),d_w(P),d_h(P))(d x ​(P ),d y ​(P ),d w ​(P ),d h ​(P )) ,其表示中心点坐标偏移及宽度和高度候选框偏移的缩放因子。其预测的结果G i ∧ {\mathop {\rm{G_i}}\limits^ \wedge}G i ​∧​的表达式如下所示:

目标检测系列——开山之作RCNN原理详解

图片来源B站同济子豪兄

我们由上式反解出( d x ( P ) , d y ( P ) , d w ( P ) , d h ( P ) ) (d_x(P),d_y(P),d_w(P),d_h(P))(d x ​(P ),d y ​(P ),d w ​(P ),d h ​(P )) 的表达式,现用( t x , t y , t w , t h ) (t_x,t_y,t_w,t_h)(t x ​,t y ​,t w ​,t h ​) 表示,因为标注框参数和候选框参数都是给定的,因此( t x , t y , t w , t h ) (t_x,t_y,t_w,t_h)(t x ​,t y ​,t w ​,t h ​) 也是可直接计算得到的,为真实值。

目标检测系列——开山之作RCNN原理详解

图片来源B站同济子豪兄

接下来就用( d x ( P ) , d y ( P ) , d w ( P ) , d h ( P ) ) (d_x(P),d_y(P),d_w(P),d_h(P))(d x ​(P ),d y ​(P ),d w ​(P ),d h ​(P ))值去拟合( t x , t y , t w , t h ) (t_x,t_y,t_w,t_h)(t x ​,t y ​,t w ​,t h ​)值,使损失函数最小,损失函数如下:

目标检测系列——开山之作RCNN原理详解

; 小结

RCNN的原理部分就介绍到这里了,希望可以对大家有所帮助。🍀🍀🍀后续会持续更新fast_RCNN和Faster_RCNN的内容以及相关代码讲解,一起加油吧!!!

参考链接

RCNN理论合集🍁🍁🍁
RCNN论文精读🍁🍁🍁

如若文章对你有所帮助,那就🛴🛴🛴

咻咻咻咻~~duang~~点个赞呗

人工智能感兴趣的可以扫码加入C站人工智能官方社群,欢迎各位小伙伴加入交流学习,一起进步!!

Original: https://blog.csdn.net/qq_47233366/article/details/125367120
Author: 秃头小苏
Title: 目标检测系列——开山之作RCNN原理详解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/680831/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球