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

2020 年 8 月 5 日 微信AI

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



背 景



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


问 题



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

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

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


选 型



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

图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的训练,这为模型调参和优化节省了大量的时间。

图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。

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

2

轻检测头(Light Head)


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

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

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

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

表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在“扫一扫”识物中的作用。

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

表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音乐等产品。


登录查看更多
0

相关内容

【CVPR2022】基于鲁棒区域特征生成的零样本目标检测
专知会员服务
10+阅读 · 2022年3月22日
CVPR2022 | Sparse Transformer刷新点云目标检测的SOTA
专知会员服务
24+阅读 · 2022年3月9日
专知会员服务
22+阅读 · 2021年7月15日
专知会员服务
72+阅读 · 2021年7月3日
专知会员服务
59+阅读 · 2021年5月11日
专知会员服务
19+阅读 · 2021年5月1日
专知会员服务
29+阅读 · 2021年2月26日
为什么你学了这么多产品干货,却还是做不好产品?
人人都是产品经理
0+阅读 · 2022年1月26日
微信AI的高性能检测器,让识图更精准
微信AI
0+阅读 · 2021年4月22日
微信看一看如何过滤广告文章?
微信AI
0+阅读 · 2021年3月29日
微信扫一扫识物技术的从0到1
微信AI
0+阅读 · 2020年7月30日
微信OCR(1)——公众号图文识别中的文本检测
微信AI
17+阅读 · 2017年11月22日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2011年12月31日
Arxiv
0+阅读 · 2022年4月18日
Object Detection in 20 Years: A Survey
Arxiv
48+阅读 · 2019年5月13日
Arxiv
22+阅读 · 2018年2月14日
VIP会员
相关VIP内容
【CVPR2022】基于鲁棒区域特征生成的零样本目标检测
专知会员服务
10+阅读 · 2022年3月22日
CVPR2022 | Sparse Transformer刷新点云目标检测的SOTA
专知会员服务
24+阅读 · 2022年3月9日
专知会员服务
22+阅读 · 2021年7月15日
专知会员服务
72+阅读 · 2021年7月3日
专知会员服务
59+阅读 · 2021年5月11日
专知会员服务
19+阅读 · 2021年5月1日
专知会员服务
29+阅读 · 2021年2月26日
相关资讯
为什么你学了这么多产品干货,却还是做不好产品?
人人都是产品经理
0+阅读 · 2022年1月26日
微信AI的高性能检测器,让识图更精准
微信AI
0+阅读 · 2021年4月22日
微信看一看如何过滤广告文章?
微信AI
0+阅读 · 2021年3月29日
微信扫一扫识物技术的从0到1
微信AI
0+阅读 · 2020年7月30日
微信OCR(1)——公众号图文识别中的文本检测
微信AI
17+阅读 · 2017年11月22日
相关基金
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2011年12月31日
Top
微信扫码咨询专知VIP会员