文章目录
1.论文信息
题目 | Fast R-CNN |
---|---|
作者 | Ross Girshick |
年份 | 2015 |
期刊 | ICCV |
论文地址 | https://arxiv.org/pdf/1504.08083.pdf |
项目地址 | https://github.com/rbgirshick/fast-rcnn |
2. 论文创新点
- 对整张图片只进行一次特征提取
- 将分类与回归同时在网络中进行,不需要SVM训练,也不用额外的特征存储空间
- 采用SVD(奇异值分解)分解全连接层,减少计算量
3.欲解决的问题
- R-CNN速度很慢:每张图片采用selective search算法提取2000个候选框,且存在大量重叠,在提取特征时,多次重复提取了特征
- R-CNN需要大量存储空间:网络后期的SVM分类器及BBox回归器训练时需要大量的特征样本
4.解决方案
4.1 概述
- 网络结构图如上所示。
- 首先,任意大小的图片输入CNN,经过卷积与池化层,得到特征图,同时,在图片上采用selective search算法提取约2000个候选框;
- 其次,根据候选框与特征图的映射关系,在特征图中找到每个候选框对应的特征框,并在ROI池化层中将每个特征框池化到7x7大小,经过全连接层可以得到固定大小的特征向量;
- 最后,利用SVD分解使得特征向量分别经过各自的全连接层,分别输出softmax分类得分以及bbox窗口回归,利用窗口得分分别对每一类物体进行NMS去除重叠候选框,最终得到每个类别回归修正的得分最高的窗口。
4.2 ROI池化层
- 每个ROI都是一个元组(r,c,h,w),(r,c)是ROI左上角的坐标,(h,w)是高与宽
- 输入是N个特征映射和一组R个ROI,每个特征映射都是HxWxC的大小
- 输出是max-pooling的特征映射,H’xW’xC的大小
- ROI池化层主要是将ROI定位到特征图中对应的patch
- ROI池化层将每个候选区域均匀分成M×N块,对每块进行max-pooling。将特征图上大小不一的候选区域转变为大小统一的数据,送入下一层。
4.3 预训练网络初始化
- 用了3个预训练的网络:CaffeNet,VGG16,VGG_CNN_M_1024
- 预训练的网络最后一个max-pooling层替换为ROI池化层,设置H’xW’与第一个全连接层兼容
- 预训练网络的最后一个全连接层与1000类softmax替换为K+1个类别的分类层和bbox回归层
- 预训练网络的输入变为一组图片和R个ROI
4.4 微调
- 小批量采用层次取样,先对图片取样,再对ROI取样,同一图片的ROI共享计算和内存;一次微调联合优化softmax分类器与bbox回归器
- 多任务损失:分类loss是N+1类的softmax输出,引入了类间竞争;回归loss是对每个类别都训练一个回归器,公式如下:
- 小批量取样:每个SGD的N=2,R=128,所以每张图片取样64个ROI,从候选区域选择25%的与ground_truth的IoU大于等于0.5的ROI,剩下的作为背景
- ROI池化层的反向传播:计算公式如上图所示。其中y是池化层的输出,x是池化层的输入。x,y,r的关系如下图所示。
4.5 尺度不变
- single scale:直接将图片设置为某个scale,直接输入网络训练
- multi scale:生成一个图像金字塔,训练时对于要用的ROI只要在金字塔上找到一个最接近227x227的尺寸,然后用这个尺寸训练网络
4.6 SVD分解
- 采用SVD分解加速全连接层计算速度
- 将全连接层参数W进行分解,分解公式如下。
- 这相当于把一个全连接层拆分为两个全连接层,第一个不含偏置项,第二个含偏置项。
5.几点思考
5.1 为什么可以只进行一次特征提取操作
- 因为selective search算法提取的候选框属于整张图片,因此对整张图片提取出特征图后,再找出相应候选框在特征图中对应的区域,这样就可以避免冗余的特征提取操作,节省大量时间。
5.2 为什么要采用SVD分解实现Fast R-CNN最后的全连接层
- 目标检测任务中,selective search算法提取的候选框比较多,几乎有一半的前向计算时间被花费于全连接层,就Fast R-CNN而言,ROI池化层后的全连接层需要进行约2000次,因此在Fast R-CNN中可以采用SVD分解加速全连接层计算。
5.3 候选区域是不是越多越好
- 文中利用selective search算法提取1000~10000中10种数目的候选区域进行训练测试,发现随着候选区域个数的增加,mAP成先增加后缓慢下滑的趋势,这表明更多的候选区域会有损精度
- 文中也以selective search算法提取的2k个候选区域为基础,每次增加1000 × {2, 4, 6, 8, 10, 32, 45}个密集box进行训练测试,发现mAP比只有selective search方法的2k候选区域下降幅度更大
6.论文结果
- PASCAL VOC 2007训练集上,使用VGG-16网络Fast R-CNN训练时间为9.5h,同等条件下R-CNN需要84h,快8.8倍;
- PASCAL VOC 2007测试集上,使用VGG-16网络不采用SVD Fast R-CNN mAP为66.9%,同等条件下R-CNN mAP为66.0%;Fast R-CNN采用SVD mAP为66.6%。
7.待解决的问题
- Fast R-CNN中采用selective search算法提取候选区域,而目标检测大多数时间都消耗在这里,这无法满足实时应用需求,而且Fast R-CNN并没有实现真正意义上的端到端训练模式