总篇 90 篇 2020 年 第 14 篇
封面图作为内容的主题或其相关事物的载体, 以图片形式直观的呈现出来, 其影响在传统媒体和互联网时代都有着举足轻重的地位. 尤其在当今的移动互联网浪潮中, 人们被各种新事物环绕, 然而每个人的时间和精力是有限的, 所以封面图的优劣很大程度上会直接决定用户的选择. 对于文章的封面图而言, 如何从中挑选出合适的图作为封面就显得至关重要. 深度学习作为机器学习的一个分支, 凭借其在计算机视觉, 语音识别等领域的优势迅速成为被追捧的对象, 本文主要分享深度学习在汽车之家论坛文章封面图筛选中的应用.
2. 技术方案
汽车之家论坛文章主要是关于人, 汽车和生活为主题的作品, 其中人和汽车作为实体对象, 将其作为封面图时有着较强的规律可循. 为了突出图片中的主题, 通常选定具有一个人或车辆的图片, 或情侣出现的图片作为封面图的候选图. 即根据人或车在图片中的显著性判定其数量, 然后对满足条件图片中包含的物体进行分析, 如物体是否完整, 车辆头部的方向, 两人的性别是否不同等.
通过对论坛主题和选图规则的分析, 归纳总结候选图中需要关注的内容包括: 人或车辆的数量, 人的性别和年龄, 车辆的角度, 人或车辆的完整性等. 如上分析决定了 深度学习在封面图筛选中 的 两 个 作用: 定位 物体 位置和判定物体属性 , 上述功能分别对应着深度学习的检测算法和识别算法. 另外, 为了将算法应用到实际项目中, 还需要根据使用场景进行修改, 如对于人体完整性而言, 脚踝位置可以作为可选项, 故不能简单通过识别算法判定人体完整性, 可通过组合人体关键点的位置和数量完成判断逻辑.
3. 基于深度学习的检测算法
文章 [1] 分析了检测算法的不同分类结果, 根据检测算法应用的对象及其数量不同, 可以分为通用目标检测和特定目标检测; 根据处理过程可以将其分为单阶段和两阶段的检测算法. 由于封面图筛选中需要检测车辆和行人的位置, 然后根据检测结果做进一步的属性分析, 所以本应用选择定位精度和准确率更高的两阶段的 Fast er R-CNN [2] 作为通用目标检测算法, 并使用具有相同框架的 Mask R-CNN [3] 作为人体关键点检测算法完成人体的完整性判断.
3.1 通用目标检测算法
检测算法主要用来获得物体的位置, 然后将检测结果作为属性分析的对象. Faster R-CNN [2] 被称为两阶段的检测算法, 因为它采用了传统的处理模式: 产生候选区域, 然后对候选区域进行分类. 同时该算法基于以往的研究, 首次将不同模块融合在同一个模型中, 实现了端到端的训练. 该模型不仅可用作通用目标检测算法, 通过训练还可以作为人脸检测算法. 如下对该算法中的主要模块进行分析.
3.1.1 骨干网
骨干网作为基础的特征提取器, 用来生成输入图像的特征图, 该模块由分类器去除全连接层后的部分组成 [1] . 检测算法的骨干网通常选择基于 ImageNet 数据集 [4] 训练的分类器, 这样的骨干网具有较好的特征提取能力, 同时还可以减少检测模型的训练时间. 另一方面, 针对不同的场景, 可选择不同的骨干网来提高检测模型的准确率或速度, 本文对 VGG [5] , Res N et [6] 和 M obile N et [7] [8] [9] 三类骨干网的特点及计算量进行简单介绍.
VGG [5] 是 2015 年由牛津大学提出的网络, 是 CNN 架构出现之后一次较大的创新. 该网络将 A lexNet [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 分类任务的第二名.
R es.NET [6] 是由何凯明等提出的网络框架, 旨在解决网络层数增加时训练困难的问题. 该网络主要有上图中的残差模块堆叠而成, 该网络名称的由来可由该模块进行说明. 假设可通过堆叠的网络层近似逼近任意复杂的函数, 从中学习输入 x 到输出的映射关系 H , 该文章旨在学习另一个函数 F (x) , 使 F (x):=H(x) - x , 变换格式后得到 H (x):=F(x)+x , 即上图模块的输出部分. 由于 x 为恒等映射, 所以网络实际学习的是一个残差函数 F (x) . 实验证明, 该残差函数较原始的映射关系更容易学习. 为减少深层网络训练的时间, Res.NET 在残差模块中引入 bottleneck 结构 ( 上图右侧 ) , 将两层的残差模块替换为三层, 虽然参数量和计算量几乎不变, 但是随着网络深度的增加时其效果比原始残差模块变化的更明显. 最后, 论文中针对 CIFAR-10 数据集成功训练出深度达 1000 层的网络.
M obile N et 网络特点将在识别部分进行介绍.
骨干网
| VGG-16
| Resnet-101
| MobileNet
|
map
| 2 4.9
| 3 3
| 1 9
|
s peed ( ms)
| 2 50
| 3 96
| 1 18
|
论文 [11] 在 Nvidia Titan X GPU 上测试了不同骨干网在 coco 数据集的速度和精度, 结果如上表所示.
3.1.2 RPN 网络
论文中通过训练独立的网络 Region Proposal Network (RPN) 来产生候选区域. RPN 利用骨干网输出的特征图作为输入, 通过 n *n 的卷积核进行滑窗处理, 输出是否为物体的分类分支和预测边框的回归分支, 对于回归分支的预测边框利用设定的 anchor 进行位置修正后得到最终的候选区域. 首先设定 RPN 特征图上每个点相对于原图的 anchor box . 利用输入图像相对于 RPN 网络的降采样步长作为基础大小, 通过设定的大小和长宽比获得每个位置上 k 个不同的 anc hor box . 然后利用 1 *1 的卷积核输出不同位置上的得分和预测边框位置. 接着基于分类输出的置信度进行排序得到 RPN 网络的预测边框, 最后通过 anchor box 修改预测边框的位置得到候选区域. RPN 网络中通过对 anchor 设置的不同大小和长宽比, 解决了检测中的多尺度问题.
3.1.3 RO I pooling 层
由于 RCNN 网络的输出层包含全连接层, 所以需要将 RPN 输出的候选区域位置编码为固定长度的向量. 论文直接复用了 F as t RCNN [12] 中的 RO I pooling 层, 对候选区域进行池化后得到固定大小的特征图.
3.2 人体关键点检测算法
人体关键点检测模块以 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 的结果对池化窗口中点的数目和位置不敏感. 所以利用双线性插值的方法计算每个 b in 中 4 个固定位置的特征, 获得固定大小的特征图.
4. 基于深度学习的识别算法
识别算法主要用来判断物体的属性. 如对于情侣的判定, 性别和年龄成为待识别的对象; 对于车辆角度而言, 识别角度后可进一步设定优先级排序, 如车头朝前比车尾朝前的属性优先级高, 45 度的优先级比侧身的优先级高. 由于检测算法已经对物体的位置进行了判定, 故本应用选择轻量级网络 M obile N et 来快速实现目标属性的识别.
M obile N et [7] [8] [9] 是由谷歌团队于 2017 年提出的针对手机或嵌入式设备设计的轻量级网络, 目前为止共经历了 3 个版本的迭代. 由于 V 3 [9] 版本基于网络结构搜索来实现的, 需要大量的 gpu 参与运算, 故此处不进行讨论, 仅介绍前两版基于人工设计的网络. 其中 V1 [7] 模型中主要通过使用深度可分离卷积大大减少了计算量和模型参数. 相比于标准卷积中将滤波和不同通道的组合在一个阶段完成的处理流程, 深度可分离卷积将其分为两个阶段进行. 首先对每个通道上的特征图单独进行滤波, 称之为深度卷积, 然后利用 1*1 卷积对不同通道的特征图进行组合, 称之为点卷积. M obileNe tV 1 通过使用深度可分离卷积降低了模型的计算量. 假设特征图的宽高分别为 W 和 H , 卷积核大小为 3*3 , 输入通道为 64 维, 输出通道为 128 维时, 标准卷积的计算量为 3*3*64*128*H*W , 深度可分离卷积的计算量 (3*3*64+1*1 *64 *128 )*H*W , 则标准卷积的计算量约为深度可分离卷积的 8.4 倍. 同时, 该模型设置了宽度因子和分辨率因子两个超参数来进一步控制模型大小, 以便更好的适应不同设备的内存或运行速度.
MobileNet V 2 [8] 模型相对于 V1 模型的速度和性能均得到提升. 这得益于作者的实验结果: 网络的特征图可以在低维空间进行编码; RELU 激活函数会导致低维特征的信息损失. 所以利用残差模块时, 论文将输入通道变为小的参数值, 然后提高中间层的通道维度来增加非线性表达能力, 接着为实现 skip connection 的相加操作, 设置残差模块最后一层的输出通道数与其输入的通道数相同, 并将最后一层的 RELU 激活函数替换为线性输出以便减少低维特征的信息损失, 最后将其与模块的输入执行相加操作后输出结果. 此时的残差模块形状与 ResNet 中的残差模块形状相反, 因此称之为 Inverted residuals . 实验证明线性的 b ottlenec k 比非线性的准确率更高, 且输出为低维度残差模块的效果优于高维度残差模块和不使用残差模块的效果.
5. 实验结果
5.1 基于检测算法的效果图
本应用中选择基于 Res N et 101 作为骨干网的 Faster R-CNN 算法, 针对行人和车辆的检测结果如下. 由图中可以看出回归位置具有较高的精度, 为物体数量和属性的判定提供了良好的位置基础.
基于 Mask R-CNN 的关键点检测算法共检测人体 17 个关键点, 自上向下分别为鼻子, 左右眼睛, 左右耳朵, 左右肩膀, 左右手肘, 左右手腕, 左右臀部, 左右膝盖和左右脚踝. 如下展示了三种不同姿态的关键点检测结果. 由于行人姿态的多样性, 因此仅依靠关键点数量无法很好的判定人体完整性, 需要结合关键点位置及其数目综合判定人体完整性.
5.2 基于识别算法的效果图
本应用基于 Mobile NetV2 模型识别人脸属性和车辆的角度属性. 对于人脸属性判断, 将性别和年龄均作为分类问题进行识别, 其中性别属于二分类, 年龄跨度为 0-100 岁共 101 个类别. 对于车辆角度属性, 训练时依据车辆位置信息将角度分为 8 个类别: 正车头, 正车尾, 前 45 度 ( 车头向左或向右 ) , 后 45 度 ( 车头向左或向右 ) , 侧身 ( 车头向左或向右 ) . 如下分别展示了人脸属性和角度的识别结果.
5.3 封面图筛选结果
针对论坛图片的主题分类, 可以将图片属性简单归纳为如下组合: 单车及其角度属性, 单人及是否有车, 双人及是否有车等. 图片筛选结果如下图所示. 通过对论坛文章的数据进行测试, 结果的整体准确率为 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 a nd 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/
来源: http://www.tuicool.com/articles/fMjiQbU