深度学习之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层
- 深度学习之Faster R-CNN阅读笔记
- 深度学习论文笔记:Faster R-CNN
- Faster R-CNN阅读笔记
- Faster R-CNN学习笔记
- Faster R-CNN学习笔记
- Faster R-CNN学习笔记
- Faster R-CNN学习笔记
- Faster R-CNN学习笔记
- Faster R-CNN学习笔记
- Faster R-CNN学习笔记
- Faster R-CNN 之再阅读
- Faster R-CNN 之再阅读
- 深度学习: Faster R-CNN 网络
- 深度学习目标检测模型发展过程:R-CNN Fast R-CNN Faster R-CNN R-FCN
- 【转】R-CNN学习笔记5:Faster R-CNN
- R-CNN学习笔记5:Faster R-CNN
- Faster R-CNN学习笔记(RBK)
- R-CNN+SPP-NET+Fast-R-CNN+Faster-R-CNN+YOLO+SSD阅读笔记
- CCF 201412(2)之字形扫描
- 【NOI2005T4】聪聪和可可-期望DP+记忆化搜索
- 循环结构程序设计
- HTML编写规范
- iOS视频边下边播--缓存播放数据流
- 深度学习之Faster R-CNN阅读笔记
- LeetCode|Array|Teemo Attacking
- MATLAB初学
- Android UI之国际化
- 排序-冒泡,快速(选择排序)
- 手机和ubuntu系统安装Shadowsock的基本方法
- 文章标题
- JAVA习题
- Numeric Keypad