(目标检测)关于R-CNN中一些基础知识的整理

前言

2014年CVPR上的经典之作:《Rich feature hierarchies for Accurate Object Detection and Segmentation》,提出了一个具有实际工程意义的目标检测的卷积网络架构,这就是大名鼎鼎的R-CNN,如果想要探索目标检测方面的知识,R-CNN无疑是最佳的入门算法。
R-CNN目标检测算法总体可以分为三大模块:
一、region proposal
二、基于 AlexNet 架构的特征提取
三、针对每一检测类别训练的一系列SVM分类器
然而这里要介绍的并不是R-CNN的整体架构和思想,而是在这个算法中所涉及到的一些细节问题,包括:IoU,NMS,fine-tuning,bounding-box regression

IoU(intersection over unions)

在目标检测的任务中,我们评价目标定位的准确与否的一个重要指标,就是IoU(交并比),IoU定义了两个bounding box的重叠度,如下图所示:
在这里插入图片描述
矩形框A、B的IoU计算公式为:
I o U = ( A ∩ B ) / ( A ∪ B ) IoU = (A\cap B)/(A\cup B) IoU=(AB)/(AB)

NMS(non-maximum suppression)

由于在使用R-CNN进行目标检测时,每张图片会产生2000个proposal region box,因此经过R-CNN可能会在一张图片中找到n个表示同一物体的举行框,然而这并不是我们所希望的,我们所期望的是每个物体都有一个最准确的矩形框来标注目标的位置。这就需要我们对检测的结果进行非极大值抑制。如下图所示,我们可以看到在图片中只有车和人两个类别的目标,但是却产生了许多的候选框,因此我们需要在这些框中滤除掉不准确或者没用的框。
在这里插入图片描述
NMS的算法思想如下:
先假设在对一张图片进行目标检测时,产生了6个矩形框,并且这6个框是标注同一类别的。

  1. 我们先根据分类器的类别分类概率对这6个框进行排序,概率从小到大的框分别为A、B、C、D、E、F。
  2. 从最大概率的矩形框 F 开始,分别判断 A、B、C、D、E 与它的 IoU 是否大于某个设定的阈值。
  3. 假设 B、D 与 F 的 IoU 超过了设定的阈值,则我们认为这三个框表示的是图片中的同一个目标,而不是属于同一类别的不同目标,这时我们只需保留概率最大的 F 框就好了。
  4. 从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
  5. 重复上述步骤,直到找到所有被保存下来的矩形框。

fine-tuning

我们知道,如果从头到尾训练一个层数较深的卷积网络,往往需要大量的数据,并且往往需要很长的时间才能使网络收敛,而事实是,我们往往无法得到足够的图片数据来支撑我们的网络训练任务,从而导致网络的过拟合严重,并且由于硬件设备的限制,训练网络需要花去大量的时间。而经过实验发现,卷积网络中前几层识别的往往是图片中较低层级的特征,这些特征具有很好的普适性,这也就意味着我们可以将已经训练好的浅层参数直接用在我们自己的网络上,这就是fine-tuning的思想。在实际应用中,fine-tuning往往有两种形式:

  1. 使用已经训练好的网络参数来初始化自己的网络参数,然后进行训练,这可以使网络在一个较优的初始状态开始训练,从而大大缩短训练时间。
  2. 使用别人已经训练好的网络来构建自己的网络,只需修改高层的网络结构,而固定网络浅层的结构和参数。

bounding-box regression

转自博客
在介绍 bounding-box regression 之前,我们先来说说为什么要对 bounding box 进行回归:
首先,原始的 bounding box 是用 selective search 选出来的,在对每个 box 经过 CNN 的分类之后,继续运用 NMS 进行筛选,得到了我们**“暂时最优”**的 bounding box,但是这个 box 真的是最优的结果吗?恐怕未必,如下图所示:
在这里插入图片描述
其中红框是我们经过 NMS 之后得到的最优结果,然而绿框才是真正的我们标注出来的 bounding box,也就是 Ground truth,我们可以看到这两个框并不是十分重合。这时,bounding box regression 就派上用场了,其作用可以理解为将“暂时最优”的框进行挪动,使其尽量接近实际的框。

怎么“挪动”

挪动这个词只是形象的说法,其实就是平移加缩放。
P = { P x , P y , P w , P h } P=\{P_x, P_y, P_w, P_h\} P={Px,Py,Pw,Ph} 表示我们的“暂时最优”框,其中 x、y 表示框中心的坐标,w、h 表示宽和高。
G = { G x , G y , G w , G h } G = \{G_x, G_y, G_w, G_h\} G={Gx,Gy,Gw,Gh} 表示 Ground truth。
G ^ = { G x ^ , G y ^ , G w ^ , G h ^ } \hat{G} = \{\hat{G_x}, \hat{G_y}, \hat{G_w}, \hat{G_h}\} G^={Gx^,Gy^,Gw^,Gh^} 表示我们变换后得到的框。
那么平移操作我们可以表示为:
G x ^ = P x + Δ x G y ^ = P y + Δ y \begin{aligned} \hat{G_x} &= P_x + \Delta x \\ \hat{G_y} &= P_y + \Delta y \end{aligned} Gx^Gy^=Px+Δx=Py+Δy
缩放操作我们可以表示为:
G w ^ = P w Δ w G h ^ = P h Δ h \begin{aligned} \hat{G_w} &= P_w \Delta w \\ \hat{G_h} &= P_h \Delta h \end{aligned} Gw^Gh^=PwΔw=PhΔh
在 R-CNN 的论文中, Δ \Delta Δ 是这样定义的:
在这里插入图片描述
这样我们就得到了变换的一般形式:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值