【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling

最近刚接触图像识别,理解一些概念十分困难,尤其是动不动就冒出个看不懂的英语,让人抓狂。查了不少资料后做一个总结并加上一些自己的理解,理解若有误,烦请大家指出,相互学习。

本文主要对region proposal、anchor box、bounding box、bounding box regression、ground truth、IoU、NMS、RoI Pooling 这些名字进行解释,随后附上RCNN、Fast RCNN、Faster RCNN的实现步骤

首先需要了解一下图像分类检测的时间轴
【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling_第1张图片
图来自RCNN和Fast RCNN和Faster RCNN区别
Bounding box是在RCNN的时候就用了(至于bbox哪年提出的没去细究过),而anchor box在Faster RCNN才提出,所以有些文章用anchor box 例子去理解bounding box,会让人摸不着头脑。另外,为什么RCNN和Fast RCNN分类用的不一样,为什么YOLOv1没用而v2(图上没画)用到anchor box,这些都不要奇怪,因为研究嘛,,都要有个过程。

扯了这么多,下面开始正题:

一、相关概念

region proposal: 候选框区域,选出来的区域。

anchor box: 锚框。在以前的网络中,没有anchor box,R-CNN和Fast R-CNN都是通过selective search方法得到候选框(region proposal),具体步骤见文末,这种方法费时。在Faster R-CNN中首次提出anchor box这个概念,CNN得到的feature map上的点(下图右侧的黑点)映射到原图像16*16这一块正方形区域(感受野),取正方形区域中点(下图左侧的黑点)为anchor box的中心点,向周围做9个不同形状、不同尺寸的anchor box,图中蓝色、红色、绿色“框”都叫anchor box,9个框是自己定义的。个人理解这里的“锚”的意思是定位,也就是定位到中心点,再做9个锚框。

其实本质上也是选出来的区域,和region proposal差不多,估计作者用anchor box是想强调这些框的中心都是基于某一个点,而不是传统的region proposal(不同的中心点的框)

具体anchor 的细节可以参看这篇大佬的文章
目标检测中的Anchor详解
【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling_第2张图片

Bounding box(bbox): 通过bbox回归之后的结果叫bounding box,就是更进一步的候选框,离标答更近了,从某种程度也是proposal(候选框)。

Bounding box regression(bbox回归): 边框回归,通过 平移缩放 变换使候选框(region proposal或anchor box)更接近标准答案(ground truth),这个变换函数P就叫边框回归。

ground truth: 可以理解为标准答案

IoU(Intersection over Union): 交并比,衡量bounding box与ground truth的重叠程度。比值越大重叠度越高,完全重合为1。如果还没有bbox回归,则bbox就是候选框/锚框。
IoU公式

NMS(Non-maximum suppression): 非极大值抑制,从bounding box中求出与标准答案(ground truth)重合度最高的那一个bounding box,重合度就是IoU。这里同样,如果还没有进行bbox回归,则bbox就是候选框/锚框。
关于NMS的理解,推荐这篇:【目标检测】基础知识:IoU、NMS、Bounding box regression

RoI(Region of Interest)Pooling: 兴趣域池化,将框出的不同大小的区域压缩成相同大小,方便后面的分类回归操作。这是Fast R-CNN提出来的,它与R-CNN中的warp操作不同,它可接受任意尺寸输入,避免了扭曲变形。推荐这篇文章:图解 Fast RCNN & RoI Pooling

二、RCNN、Fast RCNN、Faster RCNN步骤

R-CNN步骤: RCNN 详解
1、生成候选区域,通过selective search方法(对图片每一个像素聚类,颜色、纹理相近的合并,不断重复直到合并成一个区域)得到候选框(region proposal)
2、归一化,将候选框压缩变形成固定大小(warp操作)
3、特征提取,将每个大小固定的框用CNN特征提取
4、类别判断,用SVM进行分类
5、位置精修,用bounding box regression得到变换函数

【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling_第3张图片

Fast R-CNN步骤:
1、生成候选区域,通过selective search(ss)得到候选框
2、特征提取,原始图像用CNN特征提取得到feature map
3、1和2结合得到RoI(候选框在feature map上的位置)
4、RoI Pooling,将RoI调整到固定尺寸
4、类别判断,用softmax进行分类
5、位置精修,bbox回归

注:Fast R-CNN与R-CNN其实过程差不多,主要区别就是Fast R-CNN加了RoI Pooling层

Faster R-CNN步骤:
这里直接引用了,感兴趣可以看一看这篇
p.s. 第二、三步中的proposals(下图中灰色方框)我的理解就是bounding box,因为它是anchor box 用bbox回归后的结果

一文读懂Faster RCNN(大白话,超详细解析)

(1)conv layers。即特征提取网络,用于提取特征。通过一组conv+relu+pooling层来提取图像的feature maps,用于后续的RPN层和取proposal。
(2)RPN(Region Proposal Network)。即区域候选网络,该网络替代了之前RCNN版本的Selective Search,用于生成候选框。这里任务有两部分,一个是分类:判断所有预设anchor是属于positive还是negative(即anchor内是否有目标,二分类);还有一个bounding box regression:修正anchors得到较为准确的proposals。因此,RPN网络相当于提前做了一部分检测,即判断是否有目标(具体什么类别这里不判),以及修正anchor使框的更准一些。
(3)RoI Pooling。即兴趣域池化(SPP net中的空间金字塔池化),用于收集RPN生成的proposals(每个框的坐标),并从(1)中的feature maps中提取出来(从对应位置扣出来),生成proposals feature maps送入后续全连接层继续做分类(具体是哪一类别)和回归。
(4)Classification and Regression。利用proposals feature maps计算出具体类别,同时再做一次bounding box regression获得检测框最终的精确位置。
————————————————
版权声明:本文为CSDN博主「风中一匹狼v」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42310154/article/details/119889682

【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling_第4张图片

References:
[1]目标检测中的Anchor详解
[2]图解 Fast RCNN & RoI Pooling
[3]RCNN 详解
[4]目标检测中的anchorproposals、Region Proposal什么意思?
[5]RCNN,Fast RCNN, Faster RCNN整理总结
[6]Bounding Box与anchor box
[7]什么是Bounding Box、anchor box?
[8]RCNN和Fast RCNN和Faster RCNN区别
[9]一文读懂Faster RCNN(大白话,超详细解析)

你可能感兴趣的:(目标检测,计算机视觉,深度学习)