论文名称:《 Fast R-CNN 》
论文下载:https://arxiv.org/pdf/1504.08083.pdf
论文代码:https://github.com/rbgirshick/fast-rcnn
一、 网络结构:
将整幅图像作为卷积网络的输入,经过一些列卷积和最大池化层后,得到整幅图的conv feature map.同时用Selective Search 方法提取2k个object proposals,找出整幅图的卷积特征映射中每个object proposals所对应的feature map, 它们经过一个ROI pooling layer 形成一个固定长度的feature map(全连接层要求输入大小相同),再经过两个全连接层,生成固定长度的feature vector。使用softmax网络进行分类,最后再进行边界框的回归。
ROI pooling层能实现training和testing的显著加速,并提高检测accuracy。该层有两个输入:
- 从具有多个卷积核池化的深度网络中获得的固定大小的feature maps;
- 一个表示所有ROI的N*5的矩阵,其中N表示ROI的数目。第一列表示图像index,其余四列表示其余的左上角和右下角坐标;
ROI pooling具体操作如下:
(1)根据输入image,将ROI映射到feature map对应位置;
(2)将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
(3)对每个sections进行max pooling操作;
这样我们就可以从不同大小的方框得到固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提高了处理速度。
二、训练:
分类和边框回归同时训练,损失函数为:
三、测试过程:
(1)任意size图片输入CNN网络,经过若干卷积层与池化层,得到特征图;
(2)在任意size图片上采用selective search算法提取约2k个建议框;
(3)根据原图中建议框到特征图映射关系,在特征图中找到每个建议框对应的特征,并在RoI池化层中将每个特征框池化到H×W的size;
(4)固定H×W大小的特征框经过全连接层得到固定大小的特征向量;
(5)第4步所得特征向量经由各自的全连接层,分别得到两个输出向量:一个是softmax的分类得分,一个是Bounding-box窗口回归;
(6)利用窗口得分分别对每一类物体进行非极大值抑制剔除重叠建议框,最终得到每个类别中回归修正后的得分最高的窗口。
四、创新点:
- 只对全图进行一次特征提取,不用对2K个建议框都进行卷积特征提取,大大缩短运行时间和硬件资源消耗。
- 在卷积层与全连接层之间加入SPP-net,替换之前的pool5,SPP层对特征进行池化,并产生固定长度的输出,这个输出再给全连接层,使得网络适应任意尺寸的图像输入。
- 网络末尾采用并行的不同全连接层,可输出分类结果和边界框回归结果,实现端到端的多任务同时训练,减少硬件缓存。
- 采用SVD对Fast R-CNN网络末尾并行的全连接层进行分解,减少计算复杂度,加快检测速度。
五、存在问题:
- 仍然使用Selective Search方法进行候选框的提取,复杂耗时。
- 仍然没有实现实时目标检测。