2013 年,RBG 提出了R-CNN,它是一个基于卷积神经网络的两阶段的通用目标检测框架。在R-CNN 框架中,用Select Search 算法来代替密集滑窗方法从输入的图像中提取候选区域,然后将每个候选框强制拉伸至227×227 大小,再输入到含有全连接层的CNN 模型以输出一个固定长度的特征向量,之后把提取的特征向量作为支持向量机的输入进行人脸-背景分类,即判别该区域是否为人脸,同时将神经网络中从Conv5 层提取的特征输入线性回归模型进行Bounding-Box 回归[33-34]。R-CNN 用Selective Search 算法来代替传统的滑动窗口方法进行候选区域提取,是因为滑动窗口会产生大量的背景Region Proposal,从而降低了SVM 的判别速度。另外,不同人脸的外接框具有不同的大小和比例,无法使用同一尺寸和比例的窗口对图像进行扫描。R-CNN 模型中的Backbone 使用Alexnet,其输出为一个固定长度的向量;Alexnet 使用ImageNet 预训练后进行微调;分类器使用SVM。可以说,R-CNN 极大地提高了复杂场景下目标检测的精度,但是R-CNN 有很多缺陷,比如,候选区域特征重复提取、图片强制拉伸、会产生大量的本地缓存、检测速度慢等。2014 年,何恺明提出了SPPNet,该框架是在R-CNN 基础上进行的改进,即SPPNet 在特征图上提取特征,所有候选框共享计算。同时SPPNet 引入了Spatial Pyramid Pooling 层[35-37],对卷积特征图像构建空间金字塔,并将金字塔的每层划分为固定数量的格栅,在每个格栅内进行最大池化运算,从而输入固定长度的特征向量[38-40]。所以说,SPPNet 解决了R-CNN 图像拉伸问题,并在一定程度上解决了多尺度问题;同时SPPNet 将所有候选区域共享计算,其检测速度得到大幅提升。但是,SPPNet 仍然是两阶段的目标检测框架,且会产生大量的中间缓存。2015 年,RBG 针对 SPPNet 又进一步做了改进,提出了 Fast R-CNN[41],其最大改进是用ROI Pooling 层代替SPP 层,这一改进使得网络可以进行Fine-tuning。另外,Fast R-CNN 使用卷积神经网络模型代替之前的支持向量机进行目标分类和Bounding Box 回归任务,即只使用一个新的网络同时做分类和回归[42-43],因此,Fast R-CNN 的训练和检测时间都得到大幅缩短。2016 年,RGB 等人对Fast R-CNN 进行改进优化,进一步提出了Faster R-CNN。该算法通过嵌入在主干网络中的RPN 网络和Anchor Box 机进行候选框提取和框回归,以替代之前的选择性搜索算法,从而实现网络端到端的训练[44]。之后,Faster R-CNN 通用目标检测算法不断被应用到人脸检测等其他目标检测问题中[45-54]。
2016 年,Redmon 等人提出了YOLO 算法并不断迭代优化,极大地提高了人脸检测的速度,此后,人脸检测进入一阶段深度卷积神经网络时代[55]。不同于两阶段检测目标检测算法,YOLO 仅使用单一无分支的网络进行候选区域生成、候选框分类和回归,其检测速度较两阶段算法有了非常大的提高。YOLO 算法在检测时需要将输入图像划分为多个Cell,每个Cell 负责预测中心落在该Cell 内的目标。但是,YOLO v1对小目标检测的效果不佳,尤其是密集人脸这样的图像;YOLO v2 改进了YOLO v1 的网络结构,用全卷积代替了全连接,并在主干网络中加入了 Batch Norm 和残差结构,同时使用基于机器学习的方法寻找Anchor 框的最佳比例,以代替人手工设计的Anchor 框比例[56];YOLO v3通过特征融合引入多尺度信息,同时分类损失使用二分类交叉熵代替Softmax 损失函数来解决一个目标属于多个类别的问题[57-61]。(https://www.xing528.com)
2016 年,Wei Liu 等人提出SSD(single shot multibox detecor,SSD)算法。SSD 算法在不同卷积层的特征图上进行目标检测以解决多尺度问题[62],同时SSD 算法的基于密集采用的候选框生成策略在一定程度上提高了检测的召回率。更重要的是,SSD 算法将整个过程封装到一个网络中,且不再需要后续的特征图重采样,极大地提高了人脸检测的速度。SSD 算法也因此成为工业上使用最广泛的目标检测算法[63]。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
