faster-rcnn 物体检测(深度学习在物体检测的应用)

本文是2015年发表的物体检测的经典top论文。

本文思路:

1、目的得到feature maps。先通过conv层+pooling层+relu层,可以是vgg,得到feature maps。

2、目的得到精确的proposals,提议建议图??,在feature maps上提取对应的图。在第一步基础上,先通过rpn生成region proposals。通过softmax判断anchors(9个框),是foreground还是background,再通过bounding box regression 进行修正是anchors,也就是进一步确定proposals。

3、目的是为了得到proposals feature maps,提取框的特征图,这一步是为了下面的分类做准备,也就是先得到框图在分类。这一步先通过上面得到的proposals,和roi pooling,提取proposals feature maps。

4、分类。用proposals feature maps和一开始的proposals判断类别。

下图是论文自带的检测架构图:

faster-rcnn 物体检测(深度学习在物体检测的应用)

 

更细的如下:

faster-rcnn 物体检测(深度学习在物体检测的应用)

由上图:

1、从最上,一个图片从由pq大小,变为mn大小,进入网络,经过13个conv,13个relu,4个pooling。得到feature maps。

2、先经过3*3conv,经过1*1conv,分成foreground和background,上面一条线是通过softmax分类anchor,获得foreground和background,下面计算anchor的boundingboxregression偏移情况。然后计算出来proposals。

3、roi pooling,用proposals从最一开始的feature maps,通过全连接和softmax,分类。

 

步骤

1、卷积层

包括conv,relu,pooling。以vgg16为例,13个conv参数为kernelsize为3*3,pad为1,4个pooling为kernelsize为2*2,stride为2。一个图形进去网络出来后大小为m/16 ,n/16的feature maps。

2、region proposal networks(RPN)

  faster-rcnn 物体检测(深度学习在物体检测的应用)

上面一层目的是为了完成分类anchors(9个框),以获得foreground和background,目的是留着foreground。

下面是对anchors进行bounding box regression,为了得到精准的参数,可以帮助后面得到精准的proposal。

最后proposal是为了整合上面两个步骤得到proposal。

从第一层说,进入3*3前图形是m/16 ,n/16的feature maps,进行3*3卷积应该是为了更好融合每个点周围的信息,每个点都有9个anchors,如下所示:

faster-rcnn 物体检测(深度学习在物体检测的应用)

每个点都有256-d,每个点都要对框分fore和back,为2个维度,所以为2k,k为9个框,所以每个点输出为W*H*18。同理回归是需要四个值定框,分别为左上右下,4个维度,所以为4k,为W*H*36。虽然文章里面有些到,但是其实在程序里面没有这样的内容,找不到所谓的框和所谓框的四个维度。

proposals layer 3个输入,一个是分类器结果foreground,一个是anchor回归结果reg,还有一个是im-info,就是把图像进行了缩减。

后进行proposal layer,

1、先再生成anchor,对做reg回归。

2、按照输入foreground softmax scores对anchor排序。目的找到最优anchor。

3、通过feat_stride和im_info,把anchor映射回原图。

4、nms。

5、按照nms由大到小排序foreground anchors。提取top作为结果输出proposal。

 

ROI pooling

目的是为了输出一样的大小的图。对proposal,xy轴分为7份,对每一份进行了maxpooling,得到了结果就是7*7大小。后再送入最后的网络。