深度学习-目标检测(R-CNN)
神经网络大多解决图像识别问题:输入一张图像,输出该对象对应的类别。目标检测输入的同样是一张图片,区别在于输出不单单是图像的类别,还有该图像中包含的所有物体以及其位置,本博文先从R-CNN讲起。
说起R-CNN(Region - Cnn),它是第一个成功的将深度学习应用到目标检测的算法。传统的目标检测算法先是在图片中以穷举算法选出所有物体可能出现的区域框,然后在区域框中提取特征并且使用图像识别方法分类,从而得到所有分类区域后,通过非极大值抑制(Non-Maximum Suppression,NMS)输出结果。这里插一句,对于所有的Bounding Box其都有一个置信度,非极大值抑制是指去除冗余的Bounding Box,保留所有框中置信度最好的一个。
R-CNN遵循传统的目标检测思路,同样是采用提取框、对每个提取框提取特征、图像分类、非极大值抑制进行目标检测,但R-CNN与传统的区别在于:将传统的提取特征(如SIFT、HOG)换成深度卷积网络提取特征,具体算法如下:
1)在数据集ImageNet训练上AlexNet(首次运用卷积神经网络)。
2)在目标检测的数据集上对训练好的AlexNet进行微调。
3)用Selective Search(相对于穷举法而言,减少计算量)搜获候选区域,统一使用微调后的AlexNet对候选区域进行特征提取(这里候选框大小不同,需要调整为统一大小再传到AlexNet中),并将提取的特征存储起来。
4)将存储起来的特征用SVM分类(https://www.zhihu.com/question/21094489/answer/86273196,该链接算是比较清楚的阐述SVM分类器的,有不懂得读者可以查阅)。
创新:1)采用CNN网络提取图像特征,从经验驱动的人造特征范式HOG、SIFT到数据驱动的表示学习范式,提高特征对样本的表示能力;
2)采用Selective Search(采取过分割手段,将图像分割成小区域,再通过颜色直方图,梯度直方图相近等规则进行合并,最后生成约2000个建议框的操作)代替穷举算法,减少计算量;
3)采用大样本下有监督预训练+小样本微调的方式解决小样本难以训练甚至过拟合等问题;
缺点:1)R-CNN计算量非常大;
2)在训练阶段还需要将提取的特征保存起来,也非常不便。
下一部分讲解下SPPNet ,为Fast R-CNN做准备工作。