Fast R-CNN算法是作者Ross Girshick对R-CNN算法的一种改进。R-CNN虽然取得了不错的成绩,但是其缺点也很明显。Fast R-CNN同样使用VGG-16网络结构,与R-CNN相比训练时间快9倍,测试时间快213倍,准确率从62%提升至66%(再Pascal voc数据集上)。Fast R-CNN主要是解决R-CNN存在的问题:
测试训练速度慢,主要是提取候选区域的特征慢:R-CNN首先从测试图中提取2000个候选区域,然后将这2000个候选区域分别输入到预训练好的CNN中提取特征。由于候选区域有大量的重叠,这种提取特征的方法,就会重复的计算重叠区域的特征。在Fast-RCNN中,将整张图输入到CNN中提取特征,在邻接时再映射到每一个候选区域,这样只需要在末尾的少数层单独的处理每个候选框。
训练需要额外的空间保存提取到的特征信息:R-CNN中需要将提取到的特征保存下来,用于为每个类训练单独的SVM分类器和边框回归器。在Fast R-CNN中,将类别判断和边框回归统一的使用CNN实现,不需要再额外的存储特征。
Fast R-CNN算法步骤:
输入一张图像生成1K~2K个候选区域(使用Selective Search方法);
将图像输入网络得到相应的特征图,将Selective Search算法生成的候选框投影到特征图上获得相应的特征矩阵;
将每个特征矩阵通过ROI pooling层缩放为7×7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果。
关于Fast R-CNN的几个点:
一次性计算整张图像特征:R-CNN依次将候选框区域输入卷积神经网络得到特征;Fast R-CNN将整张图像输入网络,紧接着从特征图像上提取相应的候选区域,这些候选区域的特征不需要再重复计算。
ROI 池化层
分类器和边界框回归器
Multi-task loss: L ( p , u , t u , v ) = L c l s ( p , u ) + λ [ u ⩾ 1 ] L l o c ( t u , v ) L(p, u, t^{u}, v)=L_{cls}(p, u)+ \lambda[u\geqslant 1]L_{loc}(t^{u}, v) L(p,u,tu,v)=Lcls(p,u)+λ[u⩾1]Lloc(tu,v)
Fast R-CNN是对R-CNN的一种改进:
卷积不再是对每个候选区域进行,而是直接对整张图像进行,这样减少了很多重复计算;
用ROI pooling进行特征的尺寸变换,因为全连接层的输入要求尺寸大小一样,因此不能直接把候选区域作为输入;
将回归器放进网络一起训练,每个类别对应一个回归器,同时用softmax的全连接层代替原来的SVM分类器。
Fast R-CNN存在的问题:
依旧使用Selective Search算法提取候选区域,耗时较长;
无法满足实时应用,没有真正实现end-to-end训练测试;
利用了GPU,但是候选区域方法是在CPU上实现的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/148724.html