技术揭秘:微信“扫一扫”识别物体为何这么快?
微信“扫一扫”功能上线一段时间,受到公司内外的高度关注。相比行业内相关竞品的“拍摄”方式,“扫码”识别物体的特点就是“扫一扫”,带来了更便捷的用户体验。 “扫描”离不开高效的移动物体检测,本文将为您揭秘。
1。背景
“扫一扫”是“扫一扫”识别物体的亮点,带来更便捷的用户体验。与“拍摄”交互方式相比,“扫描”的难点在于如何自动选择包含物体的图像帧,这离不开高效的移动物体检测。
2。问题
“扫描”物体识别是开放环境下的通用物体识别——复杂多样的物体形状需要模型具有很强的泛化能力,而移动端的计算瓶颈要求模型保持较高的实时性能。需要什么移动终端识别(类或对象)来“扫描”识别对象?经典检测(即传统意义上的物体识别)的优点在于它同时输出物体的位置和类别。然而,开放环境中的对象类别很难精确定义和完全覆盖。
因此,我们将问题定义为物体检测(即主体检测):只关注是否存在物体以及物体的位置,而不关心物体的具体类别 。 Object-ness物体检测对于不同物体具有更强的通用性,同时大大减轻了模型的负载,保证了其实时性。这就是“扫一扫”物体与相关竞品在移动终端识别问题定义上的差异。
3. 选择
近年来,物体识别的算法日新月异。面对琳琅满目的检测模型(见图1),正确的就是最好的。 ![]()
图1:种类繁多的探测器(每种探测器的优缺点都标注在照片上,请放大查看)
(1) One-Stage
从模型的层次结构来看,可分为两级(two-stage)和单级(one-stage)。
(a) 两级检测器以R-CNN系列(Fast R-CNN [1]、Faster R-CNN [2]、Mask-RCNN [3])为代表,The First的模型阶段发出粗略的对象候选框(提案),第二阶段进一步回归对象坐标并分类对象类别。两级检测器的优点是RoIPool候选框尺度归一化对于小物体更加鲁棒;进一步的区域分类对于更多类别的检测需求更加友好。
(b)单级检测器以YOLO和SSD系列为代表(YOLO V1-V3 [4-6], SSD [7], RetinaNet [8]),其特点是全卷积网络(FCN)直接输出物体的坐标和类别,方便移动端加速。
对于主体识别和“扫描”物体识别的应用场景,对于小物体、多类别的需求并不像实时性能那么强烈,因此我们选择一阶段模型结构。
(2) Anchor-free
(a) Anchor 是R-CNN系列和SSD系列检测方法的一个特点:在单级检测器中,通过滑动窗口(sliding window)生成多个锚点作为候选框;在两阶段检测器中,RPN从anchor中选择相应的候选帧进行第二阶段的分类和回归。 Anchor为检测器提供了物体形状优先级,可以有效降低检测任务的复杂度,但经验的anchor参数会极大地影响模型的性能。
(b)anchor-free的检测器随着网络结构(如:FPN[9]、DeformConv[10])和损失函数(如:Focal Loss[8]、IOU Loss[ 11])变得缓慢并慢慢恢复活力。其中,尺度鲁棒的网络结构提高了模型的表达能力,鲁棒损失函数的形成解决了样本的平衡和测量问题。无锚方法以YOLOV1-V2 [4-5]及其衍生物为代表(DenseBox [12]、DuBox [13]、FoveaBox [14]、FCOS [15]、ConerNet [16]、CenterNet [17]等..)。他们将形状放置在页面上的候选框前面,立即对对象的类别进行分类并回归对象的坐标。
在“扫描”物体的应用场景中,复杂多样的物体形状给anchor的设计带来了巨大的挑战,因此我们选择了anchor-free模型结构。
(3) 灯头
在过去的一年里,无锚探测器每天都在进步。然而,在移动应用场景中,大多数单级和无锚检测器仍然存在以下缺点:
(a) 多输出(多头):改进针对多尺度物体的模型为了提高检测能力,大多数检测器(例如FoveaBox[14]、DuBox[13]、FCOS[15])通常使用多头输出来提高模型的尺度鲁棒性。其中,低层函数满足小物体检测的需求,高层函数满足大物体检测的需求。但多头输出的网络结构对于移动端加速并不友好。
(b) 后处理: 为了解决之前锚点缺失和多头结果整合的问题,大多数检测器必须依赖复杂的后处理,例如: 非极大值抑制(NMS)以及不同的技巧,但它们一般不适合并行加速。
综上,我们选择CenterNet作为移动端检测模型,进行“扫描”物体检测(见图2)。 CenterNet 是一种单阶段无锚检测方法。单头的输出和高斯响应图的回归使其独立于NMS后处理。 CenterNet将目标检测问题转化为标准的关键点估计问题:通过全卷积网络获取中心点(峰值点为中心点)的热图,并预测峰值点对应的物体宽高信息。
此外,我们在TTFNet[18]中引入了高斯采样、高斯权重和GIOU Loss[19]等技术来加速CenterNet的训练。 MS-COCO在4台Tesla P4下只需要5个小时就可以完成训练。 ,节省了大量模型参数调整和优化的时间。 ![]()
图 2:CenterNet:对象作为点
3。优化
针对移动端的检测需求,我们首先将CenterNet的backbone从ResNet18改为ShuffleNetV2,对移动设备更加友好[20]。但仅仅依靠backbone带来的性能提升是有限的,所以我们进行有针对性的模型优化。
(1)大感受野(Large RF)
从ResNet到ShuffleNetV2主要影响模型的深度和感受野。在借助热图回归的 CenterNet 中,模型的感受野极其重要。在保持网络轻量的同时,模型的感受野如何提高?从AlexNet到VGG,VGG将大规模卷积核分解为多个小规模卷积核(1 5x5 → 2 3x3):相同感受野下,两个3x3卷积的参数量和计算量仅为18/25 5x5。然而,这不适用于深度卷积时代。在ShuffleNet中,5x5深度卷积获得了两倍的感受野,这比3x3深度卷积只增加了非常少量的计算量(图3)。
因此,我们用 5x5 卷积替换 ShuffleNetV2 中的所有深度卷积。由于ImageNet预训练的5x5模型的缺失,我们巧妙地对3x3 ShuffleNetV2预训练模型的卷积核进行空填充,得到5x5的大卷积核ShuffleNetV2。 ![]()
图3:具有大感受野的深度卷积
(2)Light Head
CenterNet的检测头采用了类似于U-Net[21]的上采样结构,可以有效。 - 详细信息级别,提高小物体的检测性能。然而CenterNet的检测头并没有针对移动端进行优化,因此我们将其改造为ShuffleNet(见图4中红框)。
首先,将检测头的所有普通3x3卷积替换为5x5深度方向卷积,并将可变形卷积(DeformConv)改造为深度方向可变形卷积。其次,参考ShuffleNet通道压缩技术,将CenterNet中多层特征的残差融合(residual)转化为通道压缩的级联融合(concat)。由于接收场大(Large RF)和光检测头(Light Head),优化后的模型在计算量(FLOPs)、参数量(parameters)和检测性能(mAP)方面在MS-COCO数据库中取得了优异的成绩)。 。参见表 1。![]()
图 4:CenterNet 检测头的结构优化
表 1:MS-COCO 下物体检测对比 ![]()
(3)金字塔插值模块(PIM) ❀ 但可变形体积对移动端并不友好加速,因此我们需要重新设计 DeformConv 的替代品。 DeformConv可以自适应地提取多尺度信息,在MS-COCO中的小物体检测中发挥着主要作用。 “扫描”物体检测对于小物体的检测没有非常强烈的需求。 DeformConv更多的是提供多样化的缩放功能。对此,我们借鉴图像分割方法PSPNet[22]的金字塔池化模块(PPM)(见图5),提出了金字塔插值模块(PIM),用于融合多尺度特征和特征同时映射。插值(参见图 4 中的蓝色框)。 PIM主要包括2x上采样的三个分支:空洞反卷积、卷积+上采样、全局平均池化+全连接。其中,“空洞反卷积”对应的是大规模特征; “卷积+上采样”对应小规模特征; “全局平均池化+全连接”对应的是全局函数。在ShuffleNetV2 x0.5的骨干网络下,表2比较了不同上采样方法对检测性能的影响。可以看出,PIM有效地替代了DeformConv在“扫描”物体检测中的作用。 图 5:PSPNet 的金字塔池化模块 表 2:不同上采样方法在“扫描”物体检测中的效果对比(测试集包含 7k 张图像) 目前,“扫描”移动检测只是一个开始,移动物体检测的发展才刚刚开始。除了“扫描”物体来识别物体的场景外,CenterNet 在一般物体检测中还存在以下问题: 如何通过增加类别来解决检测头的爆炸性增长?是否有更通用的可变形卷积(DeformConv)替代品? U-net式的上采样结构能否进一步优化?任重而道远,我们将在后续工作中探讨这些问题。 [1] Girshick,Ross。 “快速 R-CNN。”计算机视觉国际会议 作者:arlencai,腾讯WXG应用研究员![]()
5.优化,我们最终得到采用表2中的最优结果作为移动终端检测模型进行“扫描”物体检测。该模型使用基于pytorch框架的mmdetection作为训练工具。对于移动部署,我们使用ncnn框架将Pytorch模型转换为onnx模型,然后转换为ncnn模型,在转换过程中将参数量化为16位。此外,为了减少和加速模型体积,我们将网络中的 conv/bn/scale 三个连续的线性运算合并到一个 conv 层中,这样可以在不影响‘conv.’的情况下减少参数数量约 5%。效果好,提速约5%~10%。最终,“扫描”物体检测的移动端检测模型仅为436 KB,在iPhone8的A11 CPU上单帧检测时间仅为15ms。 6.展望
7。参考文献
(2015): 1440-1448.
[2] 任少庆,等. “快速 R-CNN:通过
区域提议网络实现实时对象识别。” IEEE Transactions on Pattern Analysis and Machine
Intelligence 39.6 (2017): 1137-1149.
[3] He, Kaiming, et al. “面具 R-CNN。”国际计算机
视觉会议(2017):2980-2988。
[4] Redmon,Joseph,et al。 “您只需看一次:统一、实时的对象
检测。”计算机视觉和模式识别 (2016):779-788。
[5] Redmon、Joseph 和 Ali Farhadi。 “YOLO9000:更好、更快、更强。”
计算机视觉和模式识别(2017):6517-6525。
[6] Redmon、Joseph 和 Ali Farhadi。 “YOLOv3:渐进式改进。”
arXiv:计算机视觉和模式识别(2018)。
[7] 刘伟等人。 “SSD:单次多盒探测器。”欧洲计算机视觉会议
(2016):21-37.
[8]林聪一等人。 “密集物体检测的焦点损失。”国际
计算机视觉会议(2017):2999-3007。
[9] Lin,Tsungyi,et al。 “用于目标检测的特征金字塔网络。”
计算机视觉与模式识别(2017):936-944。
[10]戴继峰,等。 “可变形卷积网络。”国际
计算机视觉会议(2017): 764-773.
[11] 于家辉, 等. “UnitBox:先进的物体检测网络。” acm
多媒体(2016):516-520 .
[12] 黄立超,等。 “DenseBox:将地标定位与端到端目标检测相结合。” arXiv:计算机视觉和模式识别(2015)。
[13] Chen, Shuai, et al. “DuBox:通过残差
双尺度检测器进行无先验框异议检测。” arXiv:计算机视觉和模式识别(2019)。
[14] Kong,Tao,et al。 “FoveaBox:超越基于锚点的物体检测器。” arXiv:
计算机视觉和模式致谢(2019)。
[15] 田,Zhi,等。 “FCOS:全卷积单阶段目标检测。”
计算机视觉国际会议(2019):9627-9636。
[16]Law、Hei、Jia Deng。 “CornerNet:将对象检测为配对关键点。”
欧洲计算机视觉会议(2019):765-781。
[17] Zhou、Xingyi、Dequan Wang 和 Philipp Krahenbuhl。 “对象作为点。”
arXiv:计算机视觉和模式识别(2019)。
[18] Liu, Zili, et al. “训练时间友好的网络进行实时对象
检测。” arXiv:计算机视觉和模式识别(2019)。
[19] Rezatofighi、Hamid 等人。 “广义交叉联盟:一个度量
和边界框回归的损失。”计算机视觉与模式识别
(2019): 658-666.
[20] 马宁宁, 等. “ShuffleNet V2:高效 CNN
架构设计实用指南。”欧洲计算机视觉会议(2018):122-138.
[21] Ro内伯格、奥拉夫、菲利普·费舍尔和托马斯·布洛克斯。 “U-Net:用于生物医学图像分割的卷积
网络。”医学图像计算与
计算机辅助干预(2015):234-241.
[22] 赵恒双,等。 “金字塔场景解析网络”。计算机视觉
与模式识别(2017):6230-6239.
[23] Li, Zeming, et al. CNN:捍卫两级物体
探测器。”arXiv:计算机视觉和模式识别(2017)。
[24] Wang、Jun、Xiang Li 和 Charles X. Ling。“Pelee:真实的-移动设备上的时间对象
检测系统。》神经信息处理系统
(2018):1967-1976。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网