FASTER-RCNN是一种目标检测的算法,可以迅速检测出输入图像内部的目标,并给出目标的具体范围,本文主要讨论算法的实现过程,内部不包含具体的实现代码,论文原文:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》
FASTER-RCNN主要由两部分构成,RPN和RCNN,RPN用于对输入图像的初步判断,将给出一个或多个含有目标的区域,RCNN则是对RPN已给定的区域进行类别检测和对边界区域的进一步调整。其中对于图像特征提取的卷积层输出,RPN与RCNN将共享并直接使用,但RCNN只处理由RPN选择过后的ROI CONV feature map。
1.RPN介绍
RPN的作用是对输入的图像给出一批目标矩形候选区域,基于网络结构是卷积神经网络,但在最后一层将包括二分类softmax和bounding box两个输出,网络的整体结构展示如下图:
从上图我们可以看出,输入的图像将首先利用卷积网络进行特征提取,这一网络可采用已知的可用网络如VGG16等进行填充,可以不用自行训练。训练得到的feature map将通过再一次的卷积后进行softmax二分类输出,分别是foreground和background的概率。对于判断区域的选择,则是在图像上选取若干等距anchor中心点,并采用多种规格的anchor进行判断,常见的anchor类别是3种比例*3种大小。在经过若干anchor的检测之后,我们将发现对于同一目标可能输出了多个anchor,针对此情况可采用IOU阈值筛选,但应注意阈值的选择,一般选取IOU=0.6,若阈值过大可能造成目标缺失,过小则可能造成单个目标仍存在多个anchor,需要根据实际情况进行调整。
在初步选定了anchor后,目标虽然位于已框选的矩形区域中,但由于anchor的形状固定,所以矩形框选区域不够精确,因此需要进行bounding box regression对anchor进行调整使其更加接近目标,回归之后将输出至RCNN进行目标检测。
2.RCNN
RCNN网络的主要目的是对ROI区域的feature map进行目标分类,但由于检测的目标多样,因此RPN输出的ROI区域也同样多样,对此需要进行ROI pooling以实现对输入数据的size统一。ROI pooling是对输入的多维卷积矩阵进行横向和纵向的均分,在划分的区域内各自进行max pooling操作。通过ROI pooling可以实现对输入矩阵规格的统一,方便后续处理。
对ROI pooling的结果进行两层fc+relu的计算后直接进行softmax分类输出目标所属种类,若需求较高精度的bbox可以在此处进行二次regression。可以看出,RCNN与RPN共用了初始的卷积网络,可以一定程度的减小网络的规模和计算量。
3.网络的训练
对于网络的训练,原文采用了四步训练法。
1.单独训练RPN,共用的卷积层采用已训练好的VGG16。
2.利用RPN给出的预选区域,对RCNN部分进行独立训练,在前两个步骤中两个部分是进行独立训练的。
3.二次训练RPN,此时固定网络公共部分的参数,只更新RPN独有部分的参数。
4.利用调整过的RPN输出,对RCNN部分再次进行训练。
FASTER-RCNN理论学习
最新推荐文章于 2022-12-15 22:14:58 发布