文章目录
- 摘要
- abstract
- 1.Fast R-CNN
- 1.1 RoI pooling
- 1.2 End-to -End model
- 1.3 多任务损失-Multi-task loss
- 1.4 R-CNN、SPPNet、Fast R-CNN效果比对
- 2.Faster R-CNN
- 2.1 RPN原理
- 2.2 效果对比
- 2.3 Faster R-CNN总结
- 3.总结
- 4.参考文献
摘要
本周学习了Fast R-CNN和Faster R-CNN算法的核心思想、技术细节和创新点,并对其性能进行比较。Fast R-CNN通过引入ROI Pooling层解决了R-CNN中重复计算特征的问题,同时采用多任务损失函数将分类和边框回归整合为一个端到端的模型。相比于Fast R-CNN,Faster R-CNN进一步提出了区域生成网络(RPN),取代了耗时的Selective Search,显著提升了候选区域生成的效率。并讨论了两种算法在实际应用中的优势与不足,尤其是Faster R-CNN在端到端整合和实时检测方面的潜力。同时,对训练过程和改进方向,如YOLO系列算法的快速检测,进行了简要展望。
abstract
This week, we studied the core ideas, technical details and innovations of Fast R-CNN and Faster R-CNN algorithms, and compared their performance. Fast R-CNN solves the problem of repeated calculation features in R-CNN by introducing ROI Pooling layer, and integrates classification and border regression into an end-to-end model by using multi-task loss function. Compared with Fast R-CNN, Faster R-CNN further proposes region generation network (RPN), which replaces time-consuming Selective Search and significantly improves the efficiency of candidate region generation. The advantages and disadvantages of the two algorithms in practical applications are discussed, especially the potential of Faster R-CNN in end-to-end integration and real-time detection. At the same time, the training process and improvement direction, such as the fast detection of YOLO series algorithms, are briefly prospected.
1.Fast R-CNN
相对于上一周的R-CNN改进的地方:
- 提出了一个ROI pooling
- 分类使用softmax计算:K个类别加上”背景“类
- 与SPPNet一样的地方:
- 首相将整个图片输入到一个基础卷积网络,得到整张图的feature map
- 将选择性搜索算法的结果region proposal(RoI)映射到feaure map 中
- ROI pooling layer提取一个固定长度的特征向量,每个特征会输入到一系列全连接层,得到一个RoI特征向量
R-CNN与Fast R-CNN的区别有哪些呢?
先说R-CNN的缺点:即使使用了Selective Search等预处理步骤来提取潜在的边界框bounding box作为输入,但是R-CNN仍会有严重的速度瓶颈,原因也很明显,就是计算机对所有region进行特征提取时会有重复计算,Fast-RCNN正是为了解决这个问题诞生的。
与R-CNN框架图对比,可以发现主要有两处不同:一是最后一个卷积层后加了一个ROI pooling layer,二是损失函数使用了多任务损失函数(multi-task loss),将边框回归Bounding Box Regression直接加入到CNN网络中训练。
- 这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量,而conv、pooling、relu等操作都不需要固定size的输入,因此,在原始图片上执行这些操作后,虽然输入图片size不同导致得到的feature map尺寸也不同,不能直接接到一个全连接层进行分类,但是可以加入这个神奇的ROI Pooling层,对每个region都提取一个固定维度的特征表示,再通过正常的softmax进行类型识别。
- R-CNN训练过程分为了三个阶段,而Fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中,这样整个的训练过程是端到端的(除去region proposal提取阶段)。
也就是说,之前R-CNN的处理流程是先提取proposal,然后CNN提取特征,之后使用SVM分类器,最后再做box regression,在Fast R_CNN中,作者将box regression 放进神经网络内部,与region 分类和并成一个muti-task模型,实际验证也证明:这两个任务能够共享卷积特征,并互相促进。
1.1 RoI pooling
RoI pooling本质上是一个简单的SPP,目的是为了减少计算时间并得出固定长度的向量。使用一种4*4=16空间盒数。
- RoI pooling使用最大池化将任何有效的RoI区域内的特征转换成具有H*W的固定空间范围的小feature map,其中H和W是超参数,它们独立于任何特定的RoI.
为什么要设置单个尺度(SPP金字塔–多尺度以及single scale)
- single scale ,直接将image定为某种scale,直接输入网络中进行训练(Fast R-CNN)
- muti scale:使用金字塔模型
== 后者比前者更加准确些,虽然没有很明显,但是第一种时间要省很多,在实际中采用第一个策略,因此 Fast R-CNN要比SPPNet快很多的原因。==
1.2 End-to -End model
从输入端到输出端直接用一个神经网络连接,整体优化目标函数。
思考:为什么后面的整个网络能进行统一训练?
特征提取CNN和SVM分类器的训练在时间上是有先后顺序的,两者的训练方式独立,在SVM的训练Loss无法更新SPP层之前的卷积层参数,去掉了SVM分类这一过程,所有特征都存储在内存中,不占用硬盘空间,形成了End-to-End模型。
Fast-RCNN很重要的一个贡献是成功的让人们看到了Region Proposal + CNN这一框架实时检测的希望,原来多类检测可以在保证准确率的同时提升处理速度,也为后来的Faster R-CNN做下了铺垫。
1.3 多任务损失-Multi-task loss
两个loss
- 对于分类loss,是一个N+1个softmax输出,其中N是类别的个数,1为背景,使用交叉熵损失
- 对于回归loss,是一个4*N个输出的regressor,对于每个类别都会训练一个单独的regressor,使用平均绝对误差损失-L1损失
fine-tuning训练:
- 再微调时,调整CNN+RoI pooling+softmax
- 调整bbox regressor回归当中的参数
1.4 R-CNN、SPPNet、Fast R-CNN效果比对
缺点:使用Selective Search提取Region Proposals,没有实现真正意义上的端到端,操作也十分耗时。
2.Faster R-CNN
在Faster R-CNN中加入一个提取边缘的神经网络,相当于找候选框的工作交给了神经网络来操作。这样,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)被统一放到一个深度网络框架之内。
Faster R-CNN可以简单的看成区域生成网络+Fast R-CNN模型,用区域生成网络(RPN)来代替Fast R-CNN中的选择性搜索方法。
Faster R-CNN步骤:
- 向CNN网络中输入图片,Faster RCNN使用一组基础的conv+relu+pooling层提取feature map.该feature map被共享用于后续RPN层和全连接层。
- Region Proposal Networks:RPN网络用于生成region proposals,Faster R-CNN中称为anchors。
- 通过softmax 判断anchors属于foreground 或者background
- 再利用bonding box regression 修正anchors获得精确的proposals,输出其Top-N(默认为300)的区域给RoI pooling。
- 生成anchors ->softmax分类器提取fg anchors-> bbox reg回归fg anchors ->Proposal Layer生成proposals
- 后续就是Fast R-CNN操作
2.1 RPN原理
RPN网络主要作用是得出比较准确的候选区域。整个过程分为两步:
首先,使用nn(默认为33=9)的大小窗口去扫描特征图,每个滑窗位置映射到一个低维的向量(默认为256维),并为每个滑窗位置考虑k种(在论文设计种为9)可能的参考窗口(论文中称为anchors)
每个特征图中像素对应的9个窗口大小?
三种尺度{128,256,512},三种长宽比{1:1,1:2,2:1}得到3*3=9种不同大小的候选框。输出N个256维的窗口,做分类判断是否是背景,N个候选框与自己对应目标值GT做回归,修正位置。之后将更好的候选区域提供给RoI pooling使用。
2.2 效果对比
2.3 Faster R-CNN总结
优点:
- 提出了RPN网络
- 端到端网络模型
缺点:
训练参数过大
可以改进的需求:
速度提升,如YOLO系列算法,删去RPN,直接对proposal进行分类回归,极大的提升了网络的速度。
代码结果:
运行结果如下图:
3.总结
Fast R-CNN通过引入ROI Pooling和多任务损失函数,优化了目标检测流程,提高了计算效率和检测精度。Faster R-CNN进一步结合区域生成网络(RPN),在深度学习框架内实现了候选区域生成、特征提取和分类的统一训练。这种端到端设计不仅提高了检测速度,也在准确率上达到了新的高度。然而,Faster R-CNN模型的训练参数较多,对硬件资源要求较高,适应性仍有待提升。
4.参考文献
[1] R. Girshick, “Fast R-CNN,” 2015 IEEE International Conference on Computer Vision (ICCV), Santiago, Chile, 2015, pp. 1440-1448.DOI: 10.1109/ICCV.2015.169
[2] S. Ren, K. He, R. Girshick and J. Sun, “Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 39, no. 6, pp. 1137-1149, June 2017.DOI: 10.1109/TPAMI.2016.2577031