计算机视觉——典型的目标检测算法(Fast R-CNN算法)(五)

姓名:贾轶名    学号:21011210011     学院:通信工程学院

【嵌牛导读】目标检测在现实中的应用很广泛,我们需要检测数字图像中的物体位置以及类别,它需要我们构建一个模型,模型的输入一张图片,模型的输出需要圈出图片中所有物体的位置以及物体所属的类别。在深度学习浪潮到来之前,目标检测精度的进步十分缓慢,靠传统依靠手工特征的方法来提高精度已是相当困难的事。而ImageNet分类大赛出现的卷积神经网络(CNN)——AlexNet所展现的强劲性能,吸引着学者们将CNN迁移到了其他的任务,这也包括着目标检测任务,近年来,出现了许多目标检测算法。

【嵌牛鼻子】计算机视觉

【嵌牛提问】如何理解目标检测算法——Fast R-CNN

【嵌牛正文】

参考文献:https://blog.csdn.net/u014380165/article/details/72851319

        为克服SPP-Net 存在的问题,2015 年Girshick 等提出基于边界框和多任务损失分类的Fast R-CNN[31]算法。该算法将SPP 层简化,设计出单尺度的ROI Pooling 池化层结构;将整张图像的候选区域采样成固定大小,生成特征图后作SVD分解,通过RoI Pooling层得到Softmax的分类得分和BoundingBox 外接矩形框的窗口回归两个向量;用Softmax 取代SVM 提出多任务损失函数思想,将深度网络和SVM分类两个阶段整合,即将分类问题和边框回归问题进行合并。

算法详解:

Fast R-CNN的流程图如下,网络有两个输入:图像和对应的region proposal。其中region proposal由selective search方法得到,没有表明在流程图中。对每个类别都训练一个回归器,且只有非背景的region proposal才需要进行回归。

计算机视觉——典型的目标检测算法(Fast R-CNN算法)(五)

ROI pooling:ROI Pooling的作用是对不同大小的region proposal,从最后卷积层输出的feature map提取大小固定的feature map。简单讲可以看做是SPPNet的简化版本,由于全连接层的输入需要尺寸大小一样,所以不能直接将不同大小的region proposal映射到feature map作为输出,需要做尺寸变换。在文章中,VGG16网络使用H=W=7的参数,即将一个h*w的region proposal分割成H*W大小的网格,然后将这个region proposal映射到最后一个卷积层输出的feature map,最后计算每个网格里的最大值作为该网格的输出,所以不管ROI pooling之前的feature map大小是多少,ROI pooling后得到的feature map大小都是H*W。

因此可以看出Fast RCNN主要有3个改善:1、卷积不再是对每个region proposal进行,而是直接对整张图像,这样减少了许多重复计算。原来RCNN是对每个region proposal分别做卷积,由于一张图像中有2000左右的region proposal,肯定相互之间的重叠率很高,因此产生重复计算。2、用ROI pooling进行特征的尺寸变换,由于全连接层的输入要求尺寸大小一样,因此不能直接把region proposal作为输入。3、将regressor放进网络一起训练,每个类别对应一个regressor,同时用softmax取代原来的SVM分类器。

在实际训练中,每个mini-batch包含2张图像和128个region proposal(或者叫ROI),也就是每张图像有64个ROI。然后从这些ROI中挑选约25%的ROI,这些ROI和ground truth的IOU值都大于0.5。另外只采用随机水平翻转的方式增加数据集。

测试的时候则每张图像大约2000个ROI。

损失函数的定义是将分类的loss和回归的loss整合在一起,其中分类采用log loss,即对真实分类(下图中的pu)的概率取负log,而回归的loss和R-CNN基本一样。分类层输出K+1维,表明K个类和1个背景类。

计算机视觉——典型的目标检测算法(Fast R-CNN算法)(五)

这是回归的loss,其中t^u表明预测的结果,u表明类别。v表明真实的结果,即bounding box regression target。

计算机视觉——典型的目标检测算法(Fast R-CNN算法)(五)

采用SVD分解改善全连接层。如果是一个普通的分类网络,那么全连接层的计算应该远不及卷积层的计算,但是针对object detection,Fast RCNN在ROI pooling后每个region proposal都要经过几个全连接层,这使得全连接层的计算占网络的计算将近一半,如下图,所以作者采用SVD来简化全连接层的计算。另一篇博客链接讲的R-FCN网络则是对这个全连接层计算优化的新的算法。

计算机视觉——典型的目标检测算法(Fast R-CNN算法)(五)

稍微总结下训练和测试的结构,如下面两个图,对算法的理解会更清晰。

计算机视觉——典型的目标检测算法(Fast R-CNN算法)(五)

test结构图在ROI Pooling层是怎么输出的画得比较容易理解。

计算机视觉——典型的目标检测算法(Fast R-CNN算法)(五)

© 版权声明

相关文章

暂无评论

none
暂无评论...