概述
原文:https://mp.weixin.qq.com/s/PrkID3lnoDFVUxh-i3V2UQ
这是来自腾讯的一篇解读,针对嵌入式设备,从目标检测模型方面进行优化。
二、选型
近几年物体检测算法日新月异,面对琳琅满目的检测模型(见图 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 方法以 YOLOV1-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 红框)。
首先,将检测头的所有普通 3x3 卷积替换为 5x5 的 depth-wise 卷积,并将可形变卷积(DeformConv)也改造为 depth-wise 的可形变卷积。其次,参照 ShuffleNet 通道压缩的技巧,将 CenterNet 中多层特征的残差融合(residual)改造为通道压缩的连接融合(concat)。通过大感受野(Large RF)和轻检测头(Light Head),优化后的模型在 MS-COCO 数据库在计算量(FLOPs)、参数量(Parameters)和检测性能(mAP)均取得优异的结果,见表 1。
图4:CenterNet检测头的结构优化
表1:在MS-COCO下物体检测的对比
(3)金字塔插值(Pyramid Interpolation Module,PIM)
然而,可形变卷积(DeformConv)对移动端加速并不友好,因此我们需要重新设计 DeformConv 的替代品。DeformConv 可自适应地对多尺度信息进行抽取,在 MS-COCO 中的小物体检测起到巨大作用。“扫一扫”识物对小物体的检测需求并不是非常强烈,DeformConv 更多的是提供多样化的尺度特征。对此,我们借鉴图像分割方法 PSPNet[22](见图 5)的金字塔池化(Pyramid PoolingModule,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,在 iphone8 的 A11 CPU 上的单帧检测时间仅 15ms。
六、展望
目前“扫一扫”移动端检测只是开端,移动端物体检测的发展也才刚刚开始。抛开“扫一扫”识物的场景,CenterNet 在通用的物体检测上仍存在以下问题:如何解决类别增加带来的检测头爆炸性增长?可形变卷积(DeformConv)是否存在更通用的替代品?U-Net 式的上采样结构是否可进一步优化?路漫漫其修远兮,在我们后续工作中将针对这些问题进行探索。
总结
- 采用shuffleNetv2替换resnet,模型的深度和感受野。
- 以热力图回归模型,模型的感受野很重要,所以用更大的卷积核,5*5
- 将多层特征的残差融合改造为通道压缩的连接融合
- deformconv可自适应地对多尺度信息进行抽取,可提高小物体的检测效果。
- 提出了金字塔插值(PIM)
- 用ncnn做移动端部署
- 模型仅436KB
其他可优化地方
- deformconv的替代品与加速
- u-net的上采样
最后
以上就是踏实蜗牛为你收集整理的【目标检测】centernet嵌入式网络优化的全部内容,希望文章能够帮你解决【目标检测】centernet嵌入式网络优化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复