全称:Region-CNN 出处:《Rich feature hierarchies for accurate object detection and semantic segmentation》
它可以说是第一个成功地将深度学习应用到目标检测上的算法。
传统的目标检测方法大多以图像识别为基础。一般可以在图片上使用穷举法选出所高物体可能出现的区域框,对这些区域框提取特征并使用图像识别方法分类,得到所有分类成功的区域后,通过非极大值抑制(Non-maximum suppression)输出结果。
R-CNN遵循传统目标检测的思路,同样采用提取框、对每个框提取特征、图像分类、非极大值抑制四个步骤进行目标检测。只不过在提取特征这一步,将传统的特征(如SIFT、HOG特征等)换成了深度卷积网络提取的特征。
R-CNN的整体框架如图所示: R-CNN的训练可以分成下面四步:
在数据集上训练CNN。R-CNN论文中使用的CNN网络是AlexNet,数据集为ImageNet。在目标检测的数据集上,对训练好的CNN做微调。用Selective Search搜索候选区域,统一使用微调后的CNN对这些区域提取特征,并将提取到的特征存储起来。使用存储起来的特征,训练SVM分类器。缺点:计算量大,耗时
出处:《Fast R-CNN》
SPPNet 是改进的重点,英文全称是 Spatial Pyramid Pooling Convolutional Networks,中文是“空间金字塔油化卷积网络” 。 作用是将CNN的输入从固定尺寸改进为任意尺寸。
在SPPNet中,实际上特征提取和区域分类两个步骤还是分离的。只是使用 ROI 池化化层提取了每个区域的特征3在对这些区域分类时,还是使用传统的SVM作为分类器。 FastR-CNN相比SPPNet更进一步,不再使用SVM作为分类器,而是使用神经网络进行分类,这样就可以同时训练特征提取网络和分类网络,从而取得比SPPNet更高的准确度。
Fast R-CNN的网络结构如图所示
R-CNN和SPPNet对比:
不同点:R-CNN要对每个区域计算卷积,而SPPNet只需要计算一次,因此SPPNet的效率比R-CNN高得多。
相同点:它们都遵循着提取候选框、提取特征、分类几个步骤。在提取特征后,官们都使用了SVM进行分类。
出处:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》
Fast R-CNN看似很完美了,但在Fast R-CNN中还存在着一个有点尴尬的问题:需要先使用Selective Search提取框,这个方法比较慢,有时检测一张图片,大部分时间不是花在计算神经网络分类上,而是花在Selective Search提取框上! 在Fast R-CNN升级版Faster R-CNN中,用RPN网络(Region Proposal Network)取代了Selective Search,不仅速度得到大大提高,而且还获得了更加精确的结果。
RPN 网络的结构如图所示:
“anchor”指的是“框”,面积分别 1282、2562、5122,每种面积又分为 3 种长竟比,分别是 2:1、1:2、1:1
anchor与网络输出的对应关系: Faster R-CNN 使用RPN生成候选框后,剩下的网络结构和 Fast R-CNN 中的结构一模一样。 在训练过程中,需要训练两个网络,一个是 RPN 网络, 一个是在得到框之后使用的分类网络 。 通常的做法是交替训练,即在一个 batch 内,先训练 RPN 网络一次,再训练分类网络一次。