R-CNN
网络结构如上图,可以看到R-CNN主要由三部分组成,
第一部分:首先通过se’lective search从输入图片中得到2000多个候选区域,接着将候选区域wrap为227*227的图像;
第二部分:使用CNN(vgg,resnet等)从固定尺寸的图像数据中提取特征;
第三部分:使用分类器,论文使用(SVM)对得到的特征图进行分类。
R-CNN论文是深度学习在目标检测领域的开端,是一个two-stage的模型,效果在当时还是非常好的,此外其通过现在大规模数据集上预训练模型,然后使用标注的小规模目标检测数据集进行微调的思想仍然是现在非常多任务的主流。
Fast R-CNN
如上图所示,Fast R-CNN相比于R-CNN多了一个(RoI pooling layer)用于替代R-CNN中的wrap操作将特征图变为大小固定的尺寸,至于RoI projection其实就是R-CNN中通过selective search得到的候选框。
同时使用全连接层代替R-CNN中的SVM进行分类,得到两个结果,分别是分类结果以及微调的边界框位置信息(即用来对生成的检测框进行调整使其效果更好),对应的损失函数需要包括两个部分,分别是分类以及边界框位置的部分。
Faster R-CNN
网络结构如图,看着是不是和前面不太一样,其实基本结构和Fast R-CNN差不多,其最主要的贡献在我看来应该是Region Proposal Network(RPN)的提出,其可以使用神经网络提取候选框而不是之前通过传统的手工特征方法提取候选框,大大加速和简化了整个网络训练流程。
RPN网络结构如图所示,通过在特征图上的每个滑动窗口设定k个固定的anchor表示k个固定的候选框,为什么是2k scores 呢,因为要判断每个框是不是包含物体(0,1);为什么是4k coordinate呢,因为每个框要包含4个值表示位置信息。
代码仓库: