1. 引言
封面图作为内容的主题或其相关事物的载体,以图片形式直观的呈现出来,其影响在传统媒体和互联网时代都有着举足轻重的地位。尤其在当今的移动互联网浪潮中,人们被各种新事物环绕,然而每个人的时间和精力是有限的,所以封面图的优劣很大程度上会直接决定用户的选择。对于文章的封面图而言,如何从中挑选出合适的图作为封面就显得至关重要。深度学习作为机器学习的一个分支,凭借其在计算机视觉、语音识别等领域的优势迅速成为被追捧的对象,本文主要分享深度学习在汽车之家论坛文章封面图筛选中的应用。2. 技术方案
汽车之家论坛文章主要是关于人、汽车和生活为主题的作品,其中人和汽车作为实体对象,将其作为封面图时有着较强的规律可循。为了突出图片中的主题,通常选定具有一个人或车辆的图片,或情侣出现的图片作为封面图的候选图。即根据人或车在图片中的显著性判定其数量,然后对满足条件图片中包含的物体进行分析,如物体是否完整、车辆头部的方向、两人的性别是否不同等。通过对论坛主题和选图规则的分析,归纳总结候选图中需要关注的内容包括:人或车辆的数量、人的性别和年龄、车辆的角度、人或车辆的完整性等。如上分析决定了深度学习在封面图筛选中的两个作用:定位物体位置和判定物体属性,上述功能分别对应着深度学习的检测算法和识别算法。另外,为了将算法应用到实际项目中,还需要根据使用场景进行修改,如对于人体完整性而言,脚踝位置可以作为可选项,故不能简单通过识别算法判定人体完整性,可通过组合人体关键点的位置和数量完成判断逻辑。3. 基于深度学习的检测算法
文章[1]分析了检测算法的不同分类结果,根据检测算法应用的对象及其数量不同,可以分为通用目标检测和特定目标检测;根据处理过程可以将其分为单阶段和两阶段的检测算法。由于封面图筛选中需要检测车辆和行人的位置,然后根据检测结果做进一步的属性分析,所以本应用选择定位精度和准确率更高的两阶段的Faster R-CNN[2]作为通用目标检测算法,并使用具有相同框架的Mask R-CNN[3]作为人体关键点检测算法完成人体的完整性判断。
检测算法主要用来获得物体的位置,然后将检测结果作为属性分析的对象。Faster R-CNN[2]被称为两阶段的检测算法,因为它采用了传统的处理模式:产生候选区域,然后对候选区域进行分类。同时该算法基于以往的研究,首次将不同模块融合在同一个模型中,实现了端到端的训练。该模型不仅可用作通用目标检测算法,通过训练还可以作为人脸检测算法。如下对该算法中的主要模块进行分析。
骨干网作为基础的特征提取器,用来生成输入图像的特征图,该模块由分类器去除全连接层后的部分组成[1]。检测算法的骨干网通常选择基于ImageNet数据集[4]训练的分类器,这样的骨干网具有较好的特征提取能力,同时还可以减少检测模型的训练时间。另一方面,针对不同的场景,可选择不同的骨干网来提高检测模型的准确率或速度,本文对VGG[5]、ResNet[6]和MobileNet[7][8][9]三类骨干网的特点及计算量进行简单介绍。VGG[5]是2015年由牛津大学提出的网络,是CNN架构出现之后一次较大的创新。该网络将AlexNet[10]在第一层卷积中使用具有较大感受野的卷积核替换为3*3的卷积核。这是因为通过堆叠2个3*3的卷积核后其感受野与5*5卷积核的感受野相同,7*7的感受野可通过堆叠3个3*3的卷积核实现。另一方面,VGG网络通过减小标准卷积中滤波核大小的方式减少了参数量和计算量,如对于具有C个通道的卷积层而言,堆叠3个3*3卷积核的参数量为,若使用7*7的滤波器则其参数量为,参数量增加了81%,其计算量也会发生相同的变化。文章作者通过堆叠3*3卷积核的方式探究了在误差饱和前通过增加网络深度可减小分类误差,基于此研究结果取得了2014年ImageNet分类任务的第二名。ResNet[6]是由何凯明等提出的网络框架,旨在解决网络层数增加时训练困难的问题。该网络主要有上图中的残差模块堆叠而成,该网络名称的由来可由该模块进行说明。假设可通过堆叠的网络层近似逼近任意复杂的函数,从中学习输入x到输出的映射关系H,该文章旨在学习另一个函数F(x),使F(x):=H(x) – x,变换格式后得到H(x):=F(x)+x,即上图模块的输出部分。由于x为恒等映射,所以网络实际学习的是一个残差函数F(x)。实验证明,该残差函数较原始的映射关系更容易学习。为减少深层网络训练的时间,ResNet在残差模块中引入bottleneck结构(上图右侧),将两层的残差模块替换为三层,虽然参数量和计算量几乎不变,但是随着网络深度的增加时其效果比原始残差模块变化的更明显。最后,论文中针对CIFAR-10数据集成功训练出深度达1000层的网络。论文[11]在Nvidia Titan X GPU上测试了不同骨干网在coco数据集的速度和精度,结果如上表所示。
论文中通过训练独立的网络Region Proposal Network (RPN)来产生候选区域。RPN利用骨干网输出的特征图作为输入,通过n*n的卷积核进行滑窗处理,输出是否为物体的分类分支和预测边框的回归分支,对于回归分支的预测边框利用设定的anchor进行位置修正后得到最终的候选区域。首先设定RPN特征图上每个点相对于原图的anchor box。利用输入图像相对于RPN网络的降采样步长作为基础大小,通过设定的大小和长宽比获得每个位置上k个不同的anchor box。然后利用1*1的卷积核输出不同位置上的得分和预测边框位置。接着基于分类输出的置信度进行排序得到RPN网络的预测边框,最后通过anchor box修改预测边框的位置得到候选区域。RPN网络中通过对anchor设置的不同大小和长宽比,解决了检测中的多尺度问题。
由于RCNN网络的输出层包含全连接层,所以需要将RPN输出的候选区域位置编码为固定长度的向量。论文直接复用了Fast RCNN[12]中的ROI pooling层,对候选区域进行池化后得到固定大小的特征图。
人体关键点检测模块以Mask R-CNN[3]模型为基础。该模型主要用于实体分割,并且其框架可以很好的应用到人体关键点检测的任务上。Mask R-CNN是基于Faster R-CNN框架提出的,通过在原有分支的基础上增加了分割和人体关键点检测的分支实现相应的功能,利用多任务学习的方式,提高关键点检测的精度。与Faster R-CNN框架一个很大的不同之处是,该模型对候选区域框使用ROI Align获得固定大小的特征图。这是因为ROI Pooling执行的过程中需要进行两次量化,一次是候选框在特征图上坐标的量化,另一次则是对候选框内部进行区域划分时的量化。操作中的量化结果导致了候选区域与提取特征间的误匹配,对像素级的分割和小目标的检测会造成很大影响,如Faster R-CNN中ROI Pooling层上1个像素的偏差将对应原图上16个像素的距离。作者发现若不执行量化操作,则RoI Align的结果对池化窗口中点的数目和位置不敏感。所以利用双线性插值的方法计算每个bin中4个固定位置的特征,获得固定大小的特征图。4. 基于深度学习的识别算法
识别算法主要用来判断物体的属性。如对于情侣的判定,性别和年龄成为待识别的对象;对于车辆角度而言,识别角度后可进一步设定优先级排序,如车头朝前比车尾朝前的属性优先级高,45度的优先级比侧身的优先级高。由于检测算法已经对物体的位置进行了判定,故本应用选择轻量级网络MobileNet来快速实现目标属性的识别。MobileNet[7][8][9]是由谷歌团队于2017年提出的针对手机或嵌入式设备设计的轻量级网络,目前为止共经历了3个版本的迭代。由于V3[9]版本基于网络结构搜索来实现的,需要大量的gpu参与运算,故此处不进行讨论,仅介绍前两版基于人工设计的网络。其中V1[7]模型中主要通过使用深度可分离卷积大大减少了计算量和模型参数。相比于标准卷积中将滤波和不同通道的组合在一个阶段完成的处理流程,深度可分离卷积将其分为两个阶段进行。首先对每个通道上的特征图单独进行滤波,称之为深度卷积,然后利用1*1卷积对不同通道的特征图进行组合,称之为点卷积。MobileNetV1通过使用深度可分离卷积降低了模型的计算量。假设特征图的宽高分别为W和H,卷积核大小为3*3,输入通道为64维,输出通道为128维时,标准卷积的计算量为3*3*64*128*H*W,深度可分离卷积的计算量(3*3*64+1*1*64*128)*H*W,则标准卷积的计算量约为深度可分离卷积的8.4倍。同时,该模型设置了宽度因子和分辨率因子两个超参数来进一步控制模型大小,以便更好的适应不同设备的内存或运行速度。MobileNet V2[8]模型相对于V1模型的速度和性能均得到提升。这得益于作者的实验结果:网络的特征图可以在低维空间进行编码;RELU激活函数会导致低维特征的信息损失。所以利用残差模块时,论文将输入通道变为小的参数值,然后提高中间层的通道维度来增加非线性表达能力,接着为实现skip connection的相加操作,设置残差模块最后一层的输出通道数与其输入的通道数相同,并将最后一层的RELU激活函数替换为线性输出以便减少低维特征的信息损失,最后将其与模块的输入执行相加操作后输出结果。此时的残差模块形状与ResNet中的残差模块形状相反,因此称之为Inverted residuals。实验证明线性的bottleneck比非线性的准确率更高,且输出为低维度残差模块的效果优于高维度残差模块和不使用残差模块的效果。5. 实验结果
5.1 基于检测算法的效果图
本应用中选择基于ResNet101作为骨干网的Faster R-CNN算法,针对行人和车辆的检测结果如下。由图中可以看出回归位置具有较高的精度,为物体数量和属性的判定提供了良好的位置基础。基于Mask R-CNN的关键点检测算法共检测人体17个关键点,自上向下分别为鼻子、左右眼睛、左右耳朵、左右肩膀、左右手肘、左右手腕、左右臀部、左右膝盖和左右脚踝。如下展示了三种不同姿态的关键点检测结果。由于行人姿态的多样性,因此仅依靠关键点数量无法很好的判定人体完整性,需要结合关键点位置及其数目综合判定人体完整性。
本应用基于MobileNetV2模型识别人脸属性和车辆的角度属性。对于人脸属性判断,将性别和年龄均作为分类问题进行识别,其中性别属于二分类,年龄跨度为0-100岁共101个类别。对于车辆角度属性,训练时依据车辆位置信息将角度分为8个类别:正车头、正车尾、前45度(车头向左或向右)、后45度(车头向左或向右)、侧身(车头向左或向右)。如下分别展示了人脸属性和角度的识别结果。
针对论坛图片的主题分类,可以将图片属性简单归纳为如下组合:单车及其角度属性、单人及是否有车,双人及是否有车等。图片筛选结果如下图所示。通过对论坛文章的数据进行测试,结果的整体准确率为81.5%。目前该应用已用于支撑论坛帖子封面图的筛选工作,节省了部分人力和资源。6. 总结
本文介绍了深度学习算法在汽车之家论坛帖子封面图筛选中的应用流程。梳理了对不同算法中核心模块的理解,并通过比较不同算法的特点和性能来确定检测和识别功能的模型。文中如有错误还望指正。图片说明,第5章节中的实验图片均来自pixabay素材库[13] ,在此表示感谢。对于文中出现的图片若涉及隐私或其他问题,请与公众号小编联系,我们将在第一时间删除内容。
[1] L. Jiao, F. Zhang, F. Liu, S. Yang, L. Li, Z. Feng and R. Qu. A Survey of Deep Learning-based Object Detection. arXiv:1907.09408v2, 2019.
[2] S. Ren, K. He, R. Girshick, and J. Sun. Faster R-CNN: Towards real-time object detection with region proposal networks. Pattern Analysis and Machine Intelligence, vol. 39, pp. 1137–1149, June 2017.
[3] K. He, G. Gkioxari, P. Dollr, and R. Girshick. Mask RCNN.International Conference on Computer Vision (ICCV), pp. 2980–2988, Oct 2017.
[4] O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein, A. C. Berg, and L. Fei-Fei. ImageNet Large Scale Visual Recognition Challenge. in International Journal of Computer Vision (IJCV), 2015.
[5] K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. arXiv:1409.1556, 2014.
[6] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. Computer Vision and Pattern Recognition (CVPR), pp. 770–778, June 2016.
[7] A. G. Howard, M. Zhu, B. Chen, D. Kalenichenko, W.Wang, T.Weyand, M. Andreetto, and H. Adam. Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv:1704.04861, 2017.
[8] M. Sandler, A. Howard, M. Zhu, A. Zhmoginov, and L.-C. Chen. Mobilenetv2: Inverted residuals and linear bottlenecks. ComputerVision and Pattern Recognition, pp. 4510–4520, 2018.
[9] Andrew Howard, Mark Sandler, Grace Chu, Liang-Chieh Chen, Bo Chen, Mingxing Tan, Weijun Wang, Yukun Zhu, Ruoming Pang, Vijay Vasudevan, et al. Searching for mobilenetv3. arXiv:1905.02244, 2019.
[10] Krizhevsky, A., Sutskever, I., and Hinton, G. E.ImageNetclassification with deep convolutional neural networks. In NIPS, pp. 1106–1114, 2012.
[11] Nikhil Yadav and Utkarsh Binay. Comparative Study of Object Detection Algorithms. International Research Journal of Engineering and Technology. vol. 04, pp. 586–591, Nov 2017.
[12] R. Girshick. Fast R-CNN. International Conference on Computer Vision (ICCV), pp. 1440–1448, Dec 2015.
[13] https://pixabay.com/zh/