28

即扫即识,微信“扫一扫”识物为什么可以这么快?

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI5MTU5OTM1NQ%3D%3D&%3Bmid=2247486244&%3Bidx=1&%3Bsn=ef545d298a80e657d84760968c25ecb8
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

RjeMJnZ.gif

在微信AI背后,技术究竟如何让一切发生?关注微信AI公众号,我们将为你一一道来。今天我们将放送 微信AI技术专题系列“微信扫一扫的技术与艺术”的第二篇 ——《揭秘“扫一扫”识物的移动端物体检测》。

“扫”是“扫一扫”识物的亮点,带来更为便捷的用户体验。相比于“拍”的交互方式,“扫”的难点在于如何 自动地选择包含物体的图像帧 ,这离不开 高效的移动端物体检测

“扫一扫”识物是一种面向开放环境的通用物体检测——复杂多样的物体形态要求模型具有强的泛化性,移动端的计算瓶颈又要求模型保持高的实时性。

“扫一扫”识物需要一个什么样的移动端检测(Class-wise or Object-ness)呢?Class-wise检测(即传统意义上的物体检测)的优势在于同时输出物体的位置和类别,然而开放环境下的物体类别很难准确定义和完整覆盖。

因此,我们将问题定义为 Object-ness检测(即主体检测):只关注是否为物体和物体的位置,并不关心物体的具体类别。 Object-ness的物体检测对多样化的物体具有更强的普适性,同时大大减轻模型的负担来保证其实时性。这是“扫一扫”识物相比于相关竞品在移动端检测问题上定义的不同。

近几年物体检测算法日新月异,面对琳琅满目的检测模型(见图1), 合适的才是最好的

RNzqauJ.png!web

图1:琳琅满目的检测器

(图中标注各个检测器的优缺点,可放大查看)

1

One-stage

从模型的层次结构上,可分为两阶段(two-stage)和单阶段(one-stage)。

(a) Two-stage检测器以R-CNN系列(Fast R-CNN [1]、Faster R-CNN [2]、Mask-RCNN [3])为代表 ,其模型的第一阶段输出粗糙的物体候选框(proposal),第二阶段进一步回归物体坐标和分类物体类别。Two-stage检测器的优势在于:RoIPool的候选框尺度归一化对小物体具有较好的鲁棒性;进一步的区域(region)分类对于较多类别的检测需求更为友好。

(b) One-stage检测器以YOLO和SSD系列(YOLO V1-V3 [4-6]、SSD [7]、RetinaNet [8])为代表 ,其特点是全卷积网络(FCN)直接输出物体的坐标和类别,为移动端加速提供了便利。

对于“扫一扫”识物中主体检测的应用场景,小物体和多类别的需求不如实时性来得强烈,因此我们选择one-stage的模型结构。

2

Anchor-free

(a) 锚点(anchor)是R-CNN系列和SSD系列检测方法的特点 :在one-stage检测器中,通过滑动窗口(slide window)产生各式各样的anchor作为候选框;在two-stage检测器中,RPN从anchor中挑选合适的候选框进行第二阶段的分类和回归。Anchor为检测器提供物体的形状先验,可有效地降低检测任务的复杂度,但经验性的anchor参数会极大地影响模型的性能。

(b) 无锚点(anchor-free)的检测器随着网络结构(如:FPN [9]、DeformConv [10])和损失函数(如:Focal Loss [8]、IOU Loss [11])的发展逐渐焕发出新的生机。 其中,尺度鲁棒的网络结构增强模型的表达能力,训练鲁棒的损失函数解决样本的平衡和度量问题。Anchor-free方法以YOLO V1-V2 [4-5]及其衍生(DenseBox [12]、DuBox [13]、FoveaBox [14]、FCOS [15]、ConerNet [16]、CenterNet [17]等)为代表。他们抛开候选框的形状先验,直接分类物体的类别和回归物体的坐标。

在“扫一扫”识物的应用场景中,复杂多样的物体形状对anchor的设计提出了巨大挑战,因此我们选择anchor-free的模型结构。

3

Light-head

近一年来,anchor-free的检测器日新月异。然而,在移动端的应用场景下,大部分one-stage且anchor-free的检测器仍存在以下不足:

(a)多输出(Multi-head) :为了增强模型对多尺度物体的检测能力,大部分检测器(如:FoveaBox [14]、DuBox [13]、FCOS [15])普遍采用多头输出来提高模型的尺度鲁棒性。其中,低层特征满足小物体检测需求,高层特征应对大物体检测。然而,多头输出的网络结构对于移动端加速并不友好。

(b)后处理(Post-process) :为了解决anchor先验缺失和multi-head结果整合的问题,大部分检测器都需依赖复杂的后处理,如:非极大值抑制(NMS)和各式各样的奇技淫巧(trick),但它们普遍不适合并行化加速。

综上,我们选取 CenterNet 作为“扫一扫”识物的移动端检测模型(见图2)。 CenterNet是one-stage的anchor-free检测方法,single-head的输出和高斯响应图的回归使其不依赖NMS的后处理。 CenterNet将目标检测问题变成一个标准的关键点估计问题:通过全卷积网络得到中心点的热力图(峰值点即中心点),并预测峰值点对应的物体宽高信息。此外,我们引进了TTFNet [18]中高斯采样、高斯加权和GIOU Loss [19]等技术实现CenterNet的训练加速,仅需5小时即可在4块Tesla P4下完成MS-COCO的训练,这为模型调参和优化节省了大量的时间。

A7nqm2f.png!web

图2:CenterNet: Objects as points

针对移动端的检测需求,首先我们将CenterNet的骨干网络(backbone)从ResNet18更换为对移动设备更为友好的ShuffleNetV2 [20]。然而,仅仅依赖backbone带来的效能提升是有限的,对此我们进行针对性的模型优化。

1

大感受野(Large RF)

从ResNet到ShuffleNetV2主要影响了模型的深度和感受野。在以热力图回归的CenterNet中,模型的感受野显得异常重要。

如何在保持网络轻量的前提下提高模型的感受野呢?从AlexNet到VGG,VGG通过将大尺度的卷积核拆解为多个小尺度的卷积核(1个5x5→2个3x3):在相同感受野下,2个3x3卷积的参数量和计算量均只有1个5x5的18/25。

然而,这在深度(depth-wise)卷积的时代并不适用。在ShuffleNet中,5x5的depth-wise卷积获得两倍感受野,仅比3x3的depth-wise卷积增加极少的计算量(如图3)。因此,我们将ShuffleNetV2中所有的depth-wise卷积均替换为5x5卷积。因为缺少ImageNet预训练的5x5模型,我们取巧地将3x3的ShuffleNetV2预训练模型进行卷积核的零扩边(zero padding),得到5x5的大卷积核ShuffleNetV2。

aINzuev.png!web

图3:大感受野的depth-wise卷积

2

轻检测头(Light Head)

CenterNet的检测头使用类U-Net [21]的上采样结构,可有效地融合低层细节信息,从而提高对小物体的检测性能。然而,CenterNet的检测头并未针对移动端进行优化,因此我们对其进行ShuffleNet化改造(见图4红框)。

A3iiIfm.png!web

图4:CenterNet检测头的结构优化

首先,将检测头的所有普通3x3卷积替换为5x5的depth-wise卷积,并将可形变卷积(DeformConv)也改造为depth-wise的可形变卷积。

其次,参照ShuffleNet通道压缩的技巧,将CenterNet中多层特征的残差融合(residual)改造为通道压缩的连接融合(concat)。通过大感受野(Large RF)和轻检测头(Light Head),优化后的模型在MS-COCO数据库在计算量(FLOPs)、参数量(Parameters)和检测性能(mAP)均取得优异的结果,见表1。

2iIZBzn.png!web

表1:在MS-COCO下物体检测的对比

3

金字塔插值(PIM,

Pyramid Interpolation Module)

然而,可形变卷积(DeformConv)对移动端加速并不友好,因此我们需要重新设计DeformConv的替代品。DeformConv可自适应地对多尺度信息进行抽取,在MS-COCO中的小物体检测起到巨大作用。

“扫一扫”识物对小物体的检测需求并不是非常强烈,DeformConv更多的是提供多样化的尺度特征。对此,我们借鉴图像分割方法PSPNet [22](见图5)的金字塔池化(Pyramid Pooling Module,PPM),提出了金字塔插值(Pyramid Interpolation Module,PIM)同时实现多尺度特征的融合和特征图的插值(见图4蓝框)。PIM中主要包括三条分支进行2倍上采样:空洞解卷积,卷积+上采样,全局平均池化+全连接。其中,“空洞解卷积”对应大尺度特征;“卷积+上采样”对应小尺度特征;“全局平均池化+全连接”对应全局特征。在ShuffleNetV2 x0.5的骨干网络下,表2对比了各种上采样方法对检测性能的影响,可见PIM有效地替代DeformConv在“扫一扫”识物中的作用。

nUFFJjz.png!web

图5:PSPNet的金字塔池化模块

m263ayB.png!web

表2:不同上采样方法在“扫一扫”识物中的效果对比

(测试集包含7k张图片)

通过以上优化,我们最终采用表2中最优结果作为“扫一扫”识物的移动端检测模型。该模型采用基于pytorch框架的mmdetection作为训练工具。在移动端部署上,我们采用ncnn框架,将pytorch模型转换为onnx模型再转换为ncnn模型,并在转换过程中将参数量化到16bit。

此外,为了进一步减小模型体积和加速,我们将网络中conv/bn/scale三个连续的线性操作融合为一个conv层,在不影响效果的同时可减少约5%的参数量,并提速约5%~10%。最终, “扫一扫”识物的移动端检测模型仅436 KB,在iphone 8的A11 CPU上的单帧检测时间仅15ms。

目前“扫一扫”移动端检测只是开端,移动端物体检测的发展也才刚刚开始。抛开“扫一扫”识物的场景,CenterNet在通用的物体检测上仍存在以下问题:如何解决类别增加带来的检测头爆炸性增长?可形变卷积(DeformConv)是否存在更通用的替代品?U-Net式的上采样结构是否可进一步优化?路漫漫其修远兮,在我们后续工作中将针对这些问题进行探索。

参考文献

[1] Girshick, Ross. "Fast R-CNN." international conference on computer vision (2015): 1440-1448.

[2] Ren, Shaoqing, et al. "Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks." IEEE Transactions on Pattern Analysis and Machine Intelligence 39.6 (2017): 1137-1149.

[3] He, Kaiming, et al. "Mask R-CNN." international conference on computer vision (2017): 2980-2988.

[4] Redmon, Joseph, et al. "You Only Look Once: Unified, Real-Time Object Detection." computer vision and pattern recognition (2016): 779-788.

[5] Redmon, Joseph, and Ali Farhadi. "YOLO9000: Better, Faster, Stronger." computer vision and pattern recognition (2017): 6517-6525.

[6] Redmon, Joseph, and Ali Farhadi. "YOLOv3: An Incremental Improvement." arXiv: Computer Vision and Pattern Recognition (2018).

[7] Liu, Wei, et al. "SSD: Single Shot MultiBox Detector." european conference on computer vision (2016): 21-37.

[8] Lin, Tsungyi, et al. "Focal Loss for Dense Object Detection." international conference on computer vision (2017): 2999-3007.

[9] Lin, Tsungyi, et al. "Feature Pyramid Networks for Object Detection." computer vision and pattern recognition (2017): 936-944.

[10] Dai, Jifeng, et al. "Deformable Convolutional Networks." international conference on computer vision (2017): 764-773.

[11] Yu, Jiahui, et al. "UnitBox: An Advanced Object Detection Network." acm multimedia (2016): 516-520.

[12] Huang, Lichao, et al. "DenseBox: Unifying Landmark Localization with End to End Object Detection." arXiv: Computer Vision and Pattern Recognition (2015).

[13] Chen, Shuai, et al. "DuBox: No-Prior Box Objection Detection via Residual Dual Scale Detectors." arXiv: Computer Vision and Pattern Recognition (2019).

[14] Kong, Tao, et al. "FoveaBox: Beyond Anchor-based Object Detector." arXiv: Computer Vision and Pattern Recognition (2019).

[15] Tian, Zhi, et al. "FCOS: Fully Convolutional One-Stage Object Detection." international conference on computer vision (2019): 9627-9636.

[16] Law, Hei, and Jia Deng. "CornerNet: Detecting Objects as Paired Keypoints." european conference on computer vision (2019): 765-781.

[17] Zhou, Xingyi, Dequan Wang, and Philipp Krahenbuhl. "Objects as Points." arXiv: Computer Vision and Pattern Recognition (2019).

[18] Liu, Zili, et al. "Training-Time-Friendly Network for Real-Time Object Detection." arXiv: Computer Vision and Pattern Recognition (2019).

[19] Rezatofighi, Hamid, et al. "Generalized Intersection Over Union: A Metric and a Loss for Bounding Box Regression." computer vision and pattern recognition (2019): 658-666.

[20] Ma, Ningning, et al. "ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design." european conference on computer vision (2018): 122-138.

[21] Ronneberger, Olaf, Philipp Fischer, and Thomas Brox. "U-Net: Convolutional Networks for Biomedical Image Segmentation." medical image computing and computer assisted intervention (2015): 234-241.

[22] Zhao, Hengshuang, et al. "Pyramid Scene Parsing Network." computer vision and pattern recognition (2017): 6230-6239.

[23] Li, Zeming, et al. "Light-Head R-CNN: In Defense of Two-Stage Object Detector." arXiv: Computer Vision and Pattern Recognition (2017).

[24] Wang, Jun, Xiang Li, and Charles X. Ling. "Pelee: A Real-Time Object Detection System on Mobile Devices." neural information processing systems (2018): 1967-1976.

微信AI 

不描摹技术的酷炫,不依赖拟人的形态,微信AI是什么?是悄无声息却无处不在,是用技术创造更高效率,是更懂你。

微信AI关注语音识别与合成、自然语言处理、计算机视觉、工业级推荐系统等领域,成果对内应用于微信翻译、微信视频号、微信看一看等业务,对外服务王者荣耀、QQ音乐等产品。

INbu2e3.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK