[论文理解]Region-Based Convolutional Networks for Accurate Object Detection and Segmentation

Region-Based Convolutional Networks for Accurate Object Detection and Segmentation

概括

这是一篇2016年的目标检测的文章,也是一篇比较经典的目标检测的文章。作者介绍到,现在表现最好的方法非常的复杂,而本文的方法,简单又容易理解,并且不需要大量的训练集。

文章的大致脉络如图。

产生region proposal

文章提到了滑窗的方法,由于滑窗的方法缺点非常明显,就是每次只能检测一个aspect ratio,所以确定object的框的大小很难确定,而且很笨重。而文章中采用的是selective search算法得到region proposal,这个算法是作者对比了多种方法后采取的方法。在实验的时候,作者描述可以用selective search得到大概2000个region proposal。

得到CNN features

这里作者是采用了训练好的网络来提取特征。首先在大训练集上使用使用CNN训练一个用于识别的网络,然后拿这个网络进行微调。具体的做法是,将softmax之前的fc层的输出变为要识别的类别数+1,1是背景,然后再在具体的训练集上进行小数据训练。最终要取的feature是每个region都丢进CNN,然后取softmax之前的fc层是输出值作为feature,这里要注意,输入网络的region的长宽都必须warp到CNN需要的长宽才能进行输入。

此外,作者还提到了 Visualizing Learned Features ,作者直接将某一层的特征视作分类,直接执行activation,得到activation之后的值按照从大到小排序,选取最大的几个,进行非最大抑制,显示得分最高的几个。作者称为“speak for itself”,这种方法可以直接可视化CNN中经过学习之后的内容。如作者可视化了TorontoNet的pool5 层,pool5的feature map是6✖6✖256=9216维的,而每个pool5层又代表原输入图像227✖227pixel的195✖195 pixel的部分,因此可以用来检查某一层是否学的正确。

下图是CNN对COV2007训练集进行微调后训练的pool5的激活后排名前16 的图像。这些层的选择是为了展示网络学习代表性的样本。

丢进SVM训练

从上面我们得到了CNN提取的feature,我们要做的是把这些feature丢进SVM进行训练,这里有多少个类就有多少个分类器负责某一类别的分类。

Bounding-Box Regression

上面训练完了,我们就知道那个region里的东西属于哪个类别,但是我们还需要用Bounding Box把这个类别的object给框起来,所以就需要Bounding-Box Regression.文章采用的是简单的线性回归模型来预测Bounding Box.抱歉公式不会打。只能粘贴论文原文。简单来说就是给定x,y,w,h预测对应的ground truth的x,y,t,h。然后就得到了bounding box。


链接:论文原文

猜你喜欢

转载自www.cnblogs.com/aoru45/p/9998130.html