文章目录
- 一、模型分类
- 1. 一阶段目标检测
- 2. 二阶段目标检测
- 二、常见模型
- 1. R-CNN
- 2. Fast R-CNN
- 3. Faster R-CNN
一、模型分类
2012年卷积神经网络(Convolutional Neural Networks, CNNs)的兴起将目标检测领域推向了新的台阶。基于CNNs的目标检测算法主要有两条技术发展路线:anchor-based和anchor-free(此文不涉及)方法,而anchor-based方法则包括一阶段和二阶段检测算法(二阶段目标检测算法一般比一阶段精度要高,但一阶段检测算法速度会更快)。
1. 一阶段目标检测
一阶段目标检测不需要产生候选框,直接将目标框定位的问题转化为回归(Regression)问题,处理常见算法有YOLO、SSD等等。
2. 二阶段目标检测
二阶段检测算法主要分为以下两个阶段:
Stage1: 从图像中生成region proposals
Stage2: 从region proposals生成最终的物体边框
本文将重点介绍二阶段目标检测的算法模型。
二、常见模型
1. R-CNN
R-CNN是由Ross Girshick于2014年提出,首先通过选择性搜索算法Selective Search从一组对象候选框中选择可能出现的对象框,然后将这些选择出来的对象框中的图像resize到某一固定尺寸,并喂入到CNN模型(如AlexNet等)提取特征,最后将提取出的特征送入到分类器来预测该对象框中的图像是否存在待检测目标,并进一步预测该检测目标具体属于哪一类。如下图:
图中“Extract region proposals”(Selective Search算法)的步骤如下:
1. 基于oversegmented(Felzenszwalb and Huttenlocher 算法)得到细分的区域,作为初始的region集合;
2. 计算region两两之间的相似性,合并具有最大相似性的两个region,得到新的更大的 region,加入region集合中;
3. 重复步骤2,直到整幅图只剩一个region,至此,得到的region集合就是算法的输出;
“Region proposal”生成后,会经过“Compute CNN features”进行特征提取。此处,作者使用了AlexNet,该CNN包含5个卷积层和2个全连接层从每个“Region proposal”中提取固定长度的特征向量(4096-dimentional)。
最后,提取的特征向量经过SVM分类模块对每张图像上的目标进行分类,并通过边界框回归对目标进行定位。
R-CNN有如下缺点:
1. 训练和推理时间较长:每个“Region proposal”都会经由CNN进行特征提取,消耗大量的计算资源;
2. 检测精度较低;
2. Fast R-CNN
Fast R-CNN网络是R-CNN和改进版。如下图:
首先,与R-CNN不同,Fast R-CNN的输入是“图像”和“图像的Region proposal”,先将图像经过卷积网络提取特征图,再使用“Region proposal”对特征图提取特征框。这样做的好处是,原来建议框重合部分非常多,卷积重复计算严重,而这里每个位置都只计算了一次卷积,大大减少了计算量。
其次,由于特征框大小不一,得到的特征框需要转化为相同大小,这一步是通过ROI Pooling层来实现的(ROI表示region of interest即目标)。
最后,将大小相同的特征图输入全连接层做最终的预测。
Fast R-CNN的不足:
该模型依然使用Selective Search来寻找感兴趣的区域,这一过程通常较慢,速度仍然不够理想。
3. Faster R-CNN
Faster RCNN是第一个端到端,接近于实时性能的深度学习检测算法,主要创新点就是提出了区域选择网络用于生成候选框,能极大提升检测框的生成速度。该网络首先输入图像到卷积网络中,生成该图像的特征映射。在特征映射上应用Region Proposal Network,返回object proposals和相应分数。应用Rol池化层,将所有proposals修正到同样尺寸。最后,将proposals传递到完全连接层,生成目标物体的边界框。如下图:
由于Faster R-CNN设计更为复杂,后续会对其原理另做详细分析。