传统机器学习的目标检测算法的泛化性、鲁棒性、精度已经不能满足当前应用环境的需求了。自 2012 年 AlexNet 出现以后,基于深度学习的目标检测算法逐渐成为了研究的主流方向。深度学习方法的优势在于能够自主学习出最合适的特征提取算子,虽然其可解释性差,但是在精度和速度方面都有了很大的提升。在目标检测问题中,提取的图像特征的好坏直接影响了目标检测算法的效果。
目前基于深度学习的目标检测方法主要分为两大类:
(1)基于候选区选取(region proposal) 的两阶段(two stage)的目标检测算法。这类检测算法是先由特定算法针对输入图像生成一系列的候选框,然后通过深度神经网络对每一个候选框中的内容进行特征提取和分类,最后在进行候选框位置回归和去冗余得到最后的目标检测结果,其主要代表有 R-CNN 系列模型。
(2)基于回归问题的单阶段(one stage)的目标检测算法。这类算法不需要候选框生成的操作,而是直接将目标边界框的定位问题转化为了回归问题,以此得到目标的位置信息和目标类别信息,这类算法的代表作有 YOLO 系列模型和SSD 网络。
两类算法各有优劣,两阶段(two stage)类模型的检测准确率和定位精度更高,而单阶段(one stage)类算法由于省去了候选框生成的操作,整个模型的检测速度更快。下面将通过 R-CNN 算法简要说明两阶段(two stage)类模型的目标检测过程。
R-CNN目标检测网络主要流程如下:
(1)候选区域提取。通过候选框提取模块(Selective Search)从原始图片中提取 2000 个左右的候选框。
(2)将候选区域大小归一化。将所有根据候选框选出的图像都缩放为固定大小( 227X227)。
(3)特征提取。将缩放后的候选区域图像输入到预训练好的特征提取网络(AlexNet)中,提取得到固定长度(4096)的特征向量 。
(4)分类及回归。将提取出的特征经过两个全连接层,SVM分类器和边框回归器将分别接受最后输出的特征向量,SVM 将得到目标图像的分类,而不同的分类有不同的边框回归器,将全连接层的输出根据 SVM 得到的图像类别分别输入给不同的边框回归器,最终得到目标检测的边框和类别结果。
可以看出两阶段(two stage)类的模型和传统机器学习算法流程很类似,唯一有较大差别的便是特征提取模块,对于特征提取模块而言,传统机器学习采用的是手工设计的特征提取算子,而深度学习算法使用的是预训练好的卷积神经网络,从中可以看出特征提取模块在目标检测模型中的重要地位。