深度学习之Faster R-CNN阅读笔记

来源:互联网 发布:昆明学院网络教学平台 编辑:程序博客网 时间:2024/06/05 16:21

Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks

背景知识

1. RCNN 系列是机器学习在计算机图形学方面的应用,主要涉及图像分类,目标检测,目标识别等。

2.RCNN系列发展沿革:CNN(卷积神经网络)

->RCNN=SS+CNN+SVM+NMS bla....

->fast RCNN=SS+CNN(把bounding box regression融入CNN+采用ROI POOLING,类似于SPPnet ),但此时用SS产生region proposal成为时间瓶颈

->faster RCNN=RPN+去掉SS的RCNN,rpn和detection network共享conv layers

3.SPP net:空间金字塔池化网络,特点是多角度特征提取固定大小的特殊向量。即解决CNN对图片大小固定的要求,在conv 层和全连接层做出改变,投影成类似于1+2+4的        金子塔

4.overfeat:一个很牛的综合能力体,集分类识别探测于一身的网络,利用两个神器:SPPnet和offset max pooling(选择多个delta进行池化)

5.平移不变性 translation invariant

6.BP算法:反向传播算法,用于学习各项参数,如weight和bias

7.softmax:柔性最大值:此层的输出可以看做是一个概率分布,具有正单调性

8.ROI:交并比:模型产生的窗口和原来窗口的交叠率

9.relu:线性修正单元,一种激活函数

10.FCN:一种端到端的语义分割网络,fully-conv network

11.loss function:代价函数


正文笔记

1.介绍部分

由于region proposal method的成功和rcnn的提出推动了目标探测领域的发展。但是proposal的计算成了最大的时间瓶颈。proposal计算是在cpu上进行的而fast rcnn则是在gpu上进行的。仅仅调整代码在gpu上的移植不能从根本解决问题。于是本文提出了在算法层面上的改进措施。

我们发现如fast rcnn的基于区域的探测器使用的卷积feature maps也可以用于产生region proposals。我们的设想是:在这些卷积层之上再加两层conv layers,这两层就是RPN。其中一层用于给每个conv map 的position信息编码成一个短向量(如256维)(注:这里使用了spp net机制),第二层在每个conv map的位置,为k个(一般取9个)不同比例和长宽比的region proposals输出一个objectness score和regressed bound。

因此我们的RPN就类似于一种FCN,可以被训练成专门为产生某种探测proposal任务的端对端的网络。想要把RPN和RCNN联合起来,我们的训练系统是通过微调rpn和rcnn相互迭代训练,这种训练系统会很快的汇聚,从而形成一个共享卷积特征的联合网络。

当然faster rcnn放弃了SS这种产生proposal的方法。

2.相关工作

OverFeat,SPPnet,MultiBox.....

3.RPN

RPN选择任意大小图片进行输入,输出一个矩形目标proposal集合,每个矩形都有一个objectness score。这块是用FCN建模的。我们的终极目标是和fast rcnn共享计算。我们假设这两个网络分享一个共同的卷积网络集合。(如zf模型的5层conv layers和vgg的13层)

要产生region proposal,我们在最后一层卷积层得到的feature map上滑动一个小网络,这个网络是和一个n*n(这里取n=3)的空间窗口全连接的。每个滑动窗口被映射到一个低维向量。这个向量要被送入两个姊妹全连接层:box regression层(reg)和box classification(cls)层。这两个全连接层在所有的滑动位置都是共享的。

4.平移不变的anchors

在每个滑动窗口,我们同时对k个region proposals进行预测。reg有4k个参数,cls有2k个参数。这k个被参数化的proposals和k个叫做anchor的boxes相关。每个anchor都处于刚才所说的滑动窗口的中心,anchor里存放一类比例和长宽比,我们给每个位置都配置9个anchors对应9种不同的比例和长宽比搭配。也就是说,假如被扫描的feature map是W*H的大小的话,就会有9WH的anchors和这张图对应。我们的策略是平移不变的,因此可以有效防止在小数据集上的过拟合。

5.RPN学习的代价函数

这块就不解释太多了,总之要注意Lreg用了RCNN里的SMOOTH函数,Lcls是log类函数,pi是第i个anchor是object的可能性,p*是选择函数,只选positive的anchors。具体anchors怎么判别posiive,就是利用IOU,大于0.7或最佳为positive,小于0.3为negative。具体tx之类的定义文里十分清楚。为啥只选positive优化里会讲。

6.优化

7.怎样share

a.训练RPN,用imagenet微调,端对端式训练

b.用a中的proposals训练另一个fast rcnn,同样这个fast rcnn也用ImageNet初始化。

c.固定两个网络共享的conv 层,用fast rcnn只微调RPN特有的层

d.继续保持共享conv层不变,微调fast rcnn的fc层


 

0 0
原创粉丝点击