Press "Enter" to skip to content

目标检测篇:Faster-RCNN

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

又来开计算机视觉的坑了, 这次一定做好整理和记录,包括算法内容和程序 。做好训练、保存和推理的框架,下次需要的时候直接用。做目标检测的东西,于是决定从 Faster-RCNN 重头来过了。其中,FastRCNN 只有理论,Faster-RCNN 部分含有代码。

 

既然是目标检测,就需要做两件事情,目标在哪,目标是什幺。对于目标在哪的问题,可以让网络生成一个框,框有四部分组成:$(x,y,w,h)$,表示起始点坐标和框的宽度与高度;对于目标是什幺的问题,就是传统神经网络的多分类问题了。

 

Fast-RCNN

 

算法步骤与网络结构图:

 

 

    1. 首先使用 selective search 算法搜索目标区域候选框,以下简称 SS 算法

 

    1. 将图像输入 backbone,一个超大规模的特征提取网络,得到一个特征图

 

    1. 将 SS 生成的候选框映射到特征图中,得到每个候选框的特征矩阵

 

    1. 将每个候选框的特征矩阵通过 (region of interest)-pooling 层缩放到 $7\times 7$ 的矩阵

 

    1. 将矩阵展平,全连接,得到一系列的预测结果。包括预测概率和目标框,而后反向传播

 

 

 

详解

 

对于算法步骤 3,特征图映射问题。是为了减少计算量,不用为每个候选框单独计算特征矩阵;而是计算一个特征矩阵后,直接选择候选框的内容。选择方式也很简单,矩阵映射就行。

 

正样本与负样本

 

训练期间,并没有训练全部候选框的特征矩阵,只使用了其中的一小部分,比如只训练 64 个。正样本,表示含有待检测目标;负样本,表示背景区域。因为要让网络能正确识别背景,并不是所有图片都含有目标。

正样本:候选框与真实框的 IOU 大于 0.5,选择其中的一部分进入网络
负样本:候选框与真实框的 IOU 在 0.1 到 0.5 之间

论文中还提到了对数据做增强,当然这些并不是重点。IOU 的意思是,图像的交除以图像的并。就是蓝色区域的面积除以绿色区域的面积。

 

 

ROI-pooling

 

ROI-pooling 层的目的在于,不限制输入图像的大小。因为 ROI 后面的全连接层肯定是固定到某一个特殊维度的,而每个候选框对应特征矩阵的大小也不一致,所以,需要使用 ROI-pooling 将不同大小的特征矩阵映射到同一大小。具体方法如下,算了如图吧,如对任意大小的特征矩阵映射为 $2\times2$的特征矩阵,取其中的最大值或平均值。$7\times7$ 也是同一个道理。

 

 

预测输出与反向传播

 

先来看概率预测。因为含有负样本,因此网络要识别 $N$ 的类的话,网络输出的概率就是 $N+1$,多一个背景。ROI-pooling 后,经过两个全连接得到特征向量。特征向量经过第一个 并联 的全连接,softmax 后输出标签概率;经过第二个 并联 的全连接,输出目标框的位置参数。

对于第一个全连接而言,只需要和真实标签进行交叉熵即可,损失记为 $L_1$;

接下来重点讲输出目标框的部分,如何使输出的目标框越来越接近真实的目标框呢?未完待续。

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注