首页 » 刷脸背后:人脸检测 人脸识别 人脸检索 » 刷脸背后:人脸检测 人脸识别 人脸检索全文在线阅读

《刷脸背后:人脸检测 人脸识别 人脸检索》5.2 Fast R-CNN的特点和结构

关灯直达底部

在Fast R-CNN提出以前,基于卷积神经网络的R-CNN和SPPnet有着很高的目标检测准确率,但是它们仍存在一些缺点和不足。

R-CNN的缺点:(1)R-CNN的训练是多阶段的,首先通过selective search方法[5]提取object proposal,然后使用CNN网络提出特征,并在SVM中分类,最后对边界框回归。(2)R-CNN训练的时间和空间花费大,使用VGG16网络在GPU上训练5000张图片需要耗时2.5天,并且在训练过程中提取的特征需要占用大量的磁盘存储空间。(3)R-CNN检测时间慢,使用VGG16网络在GPU上检测一张图片需要47s。

和R-CNN相比,SPPnet提出了特征共享计算,从而加快了训练和测试的速度。但其仍存在一些缺点:(1)训练是多阶段的。(2)特征需要写入磁盘。(3)不能更新卷积层的权重。

Fast R-CNN算法弥补了R-CNN和SPPnet的缺点。它的训练过程是单阶段的。在训练时,特征缓存不需要写进磁盘,并且使用向后传播的方法更新卷积层的权重。图5-1所示是Fast R-CNN的结构。Fast R-CNN的网络输入为一张图片和对应的object proposal集,网络使用几个卷积网络和最大pooling层对整个图像进行处理,从而产生卷积特征map。对于每个OP,使用ROI pooling层从特征map中提取固定长度的特征向量,最后这些特征向量通过一系列全连接层的处理后产生两个输出层:一个是softmax probability;另一个是边界框回归偏移。Fast R-CNN不仅提高了训练和测试的速度,而且也增加了检测的准确性。

使用预训练的网络初始化一个Fast R-CNN网络需要进行如下操作。

(1)最后一个max pooling层被ROI pooling层替换。

(2)最后的全连接层和softmax被两个输出层替换。

(3)修改网络的输入为:一个图片列表和图片对应的ROIs列表。

本书使用ImageNet预训练的网络初始化一个侧脸人脸检测模型,下面结合Fast R-CNN的源码进行介绍。

图5-1 Fast R-CNN的结构