1、 159信息:技术与应用信息记录材料 2022年12月 第23卷第12期 0 引言近年来,随着深度学习技术的发展,网络的精度以及速度相比传统目标检测网络有大大的提升,但是大部分网络是以不断增加网络结构深度和宽度、模型的复杂度来获得更佳的性能,但这势必带来网络模型参数庞大,参数空间存在一定的冗余以及内存占用过大等问题1。这些问题使得目标检测2的算法无法达到实时性检测,无法适合现实场景中的应用程序,也让模型直接部署在资源受限的低端设备成了一大阻碍。对此,部分学者采用剪枝降低网络的复杂性,但是剪枝过程未对跳跃连接层进行有效处理;龚圣斌等3通过使用轻量化Inception-V2 更换 Faster R
2、-CNN 网络的特征提取网络使得网络更轻量化;张丽莹等4通过深度可分离卷积替换了模型中的普通卷积从而减少参数量。像类似直接用已经轻量化的 backbone 直接去替换大网络中普通的主干网络治标不治本,甚至对于一些具有计算密集型设备的计算反而会有一定的抑制,模型性能有很大下降。本文在原有量化算法5-8基础上进行改进,摒弃原有量化计算流程中大量反复的加法与乘法的混合操作,简化模型中量化的计算流程,同时选取目标检测一阶段和两阶段的经典网络进行训练,同时模型数据流 clip 模型训练,分别分析其模型参数的分布情况,最后对模型低比特量化。1 量化原理目标检测网络模型 FasterRCNN 和 YOLOv
3、3-SPP 做采用均匀量化9,其量化方案严格的数学定义如下:Xq(x,scale,zp)=round(x/scale+zp)(1)式(1)中的 x 表示的是网络浮点输入,Xq 表示的是经过量化后的结果值。scale 和 zp 是量化参数,其中 scale体现了映射中的比例关系,zp 则是零基准 zero-point,也就是浮点中的零在量化 tensor 中的值。它们建立了浮点 tensor 到量化 tensor 的映射关系。当对称量化器将 zp限制为 0,对称量化公式如式(2)所示10:Xq(x,scale)=round(x/scale)(2)2 量化的加速本文中 YOLOv3 以及 Fast
4、erRCNN 网络中卷积算子Y=WX(这里暂时不考虑偏置),Y 是模型输出,W 表示模型权重,X 表示数据流,如果采用传统的量化方法,对数据量化是每个操作计算出最优的一组 scale,那么需要对输入数据Xxmin,xmax,Wwmin,wmax做如下操作:1)(2minminmax=xxxxx,Xx (3)1)(2minminmax=wwwww,Ww (4)接着对x,w的量化如式(5)(6),qx,qw是对x与w做量化操作的结果:2xxxkq=(5)2wwwkq=(6)Y=WX 算子的反量化,由于式(5)(6)可得xkqxx2=,wkqww2=,根据前面式(3)(4)和反量式(5)(6)得到的
5、反量化,如式(7)所示:(7)传统方法主要的问题在于有很多额外的计算过程且会占用较多内存和计算时间。基于此,本文提出了一种改进后的方法,基本过程如下:(1)首先,结合模型训练时量化和后量化的优缺低比特量化在目标检测上的研究与应用毛淑菲1,2,曾志高1,2(通信作者),张晓丽3,袁鑫攀1,文志强1(1 湖南工业大学计算机学院 湖南 株洲 412008)(2 湖南省智能信息感知及处理技术重点实验室 湖南 株洲 412008)(3 湖南交通工程学院电气与信息工程学院 湖南 衡阳 421200)【摘要】伴有复杂参数空间的目标检测神经网络模型很难直接部署在计算资源受限的设备上,模型量化的方法能有效对模型
6、进行压缩,但是量化降低模型大小的同时会带有频繁的量化计算开销以及模型精度的下降。针对这一问题,本文先提出一种将浮点数模型量化为定点数模型的优化量化算法,并以一阶段和二阶段经典检测网络 Faster RCNN 和YOLOv3 作为原始模型,在 PASCAL VOC2012 数据集进行模型训练得到 baseline 模型,然后对 baseline 模型做 clip 与量化。实验结果表明,量化后的模型与浮点数模型相比检测精度下降了 0.5%2%,模型大小压缩了近 75%。【关键词】模型量化;目标检测;模型压缩【中图分类号】TP39 【文献标识码】A 【文章编号】1009-5624(2022)12-0
7、159-04DOI:10.16009/13-1295/tq.2022.12.001160 信息:技术与应用信息记录材料 2022年12月 第23卷第12期 点,在模型训练时将数据流做了一个小 trick,将数据范围有效裁剪(clip)到一个固定的范围:2,2xnxnx,2,2wnwnw,这里n是小数位宽。假设x裁剪到-4,4,w裁剪到-1,1,则2=xn,0=wn。(2)进行模型推理的时候,对经过步骤(1)的模型进行量化:xkxxquantizex2)(=(8)wkwwquantizew2)(=(9)对于式(8)(9),如果此时需要做 8 bit 量化,要求:7222=xkxn,7222=wk
8、wn,如果需要更低比特,比如4 bit 量化,4,4=+=+wwxxknkn。(3)权重和数据流的反量化可由式(8)(9)反推得到,如式(10)所示:(10)3 量化实验步骤步骤一:实验首先选取二阶段 ResNet50+FPN+Faster RCNN 模型的学习率设置为 0.001,batch_size=4,epoch=15进行训练,并得到 baseline 的权重模型;步骤二:一阶段网络 DarkNet53-YOLOv3-SPP 模型,学习率设置为 0.001,batch_size=8,epoch=30,并得到baseline 的权重模型;步骤三:将 MobileNetv2 轻量化网络替换步
9、骤一的ResNet50,接着 MobileNetv2+FasterRCNN 全精度训练后得到 baseline 模型;步骤四:接着对步骤一和步骤二得到的模型数据流做clip 实验操作并对 FP32 的模型已经训练好的 baseline 的权重共做了 9 组裁剪实验以及不做裁剪操作的实验对比;步骤五:根据式(8)和式(9)对 YOLOv3-SPP、MobileNetv2-FasterRCNN 以及 ResNet50+FPN+FasterRCNN模型量化和反量化处理,量化后的x,w的精度误差为xk25.0,wk25.0,本实验基于7,7=+=+wwxxknkn,简单地说,即xn,wn值越小,说明实
10、验中 clip 的范围越小,那么wk和xk就越大,模型量化后精度则会越高。最后再对9 组量化模型进行模型推理。4 实验结果与分析4.1 实验环境与数据集本实验基于 Pytorch 深度学习开源框架,其他相关配置如表 1 所示,Faster RCNN 分别采用 Resnet50+FPN 和轻量化网络 MobileNetv2 的主干网络进行训练。选择基于coco 数据集训练好的权重进行迁移学习迭代出属于本文的模型。试验环境具体配置如表 1 所示:表 1 实验环境配置配置环境操作系统Windows10(64)CPUi5-10600KF CPU4.10 GHzGPUNVIDIA GeForce RTX
11、3060内存12 GBPython 版本3.8.13CUDA 版本11.6基于现有的配置,采用公开数据集 PASCAL VOC2012,该数据集主要有 20 个类别,主要分为 4 大类:交通工具类别、家庭物品类、动物类别、针对 Person 的检测。目标训练集共有 5717 张图片,验证集 5 823 张图片。对该数据进行图像预处理:随机水平翻转,同时所标注的 GT 的坐标也进行反转。4.2 实验结果由于图 1 中数值范围最大在(-1,1)之前,所以本文clip实验对权重裁剪到(-1,1)与(-0.5,0.5)两组范围内,实验表明,权重范围不管 clip 到 0.5 还是 1 的范围,模型AP
12、 和 AR 都下降得很低,ResNet50,MobileNetv2 和 YOLOv3模型数据流 clip 到 8 和权重 clip 到 1 效果最好。图 1 选取 YOLOv3 模型 list112 做权重 clip为了验证本文提出方法的有效性,一阶段网络Resnet50+FPN+Faster RCNN、MobileNetv2+Faster RCNN 和二阶段网络是输入图像 512512,backbone 为 Darknet53的 YOLOv3-spp 网络对数据流和模型权重做 clip 的实验,选取其中一个模型 ResNet50+_FPN 进行裁剪过后得到的模型检测的 mAP 和在训练过程的
13、损失如图 2 所示。(a)clip_x8_w1 的模型训练损失 (b)clip_x8_w1 模型对应的 mAP图 2 ResNet50+_FPN 模型训练损失和 mAP 161信息:技术与应用信息记录材料 2022年12月 第23卷第12期 图 2 是选取 clip_x8_w1 对数据流和权重分别裁剪到(-1,1)的损失和 mAP,是对 3.1 节量化实验细节中步骤四更为具体的实验,从图 2 中可以看到 clip 实验虽然在前几个 epoch 的 mAP 会有少许变化,但随着模型的迭代更新,总体的 mAP 相较于 baseline 模型的 mAP 并未减少,对应的各类别 mAP 的平均值可以达
14、到 78%左右,其他两个模型的训练损失和 mAP 结果类似模型 ResNet50+_FPN 的实验结果,所以这里不列举图示。表 2 模型 8 位量化推理以及微调结果LRAP1AP2AP3AP4AP5AP6AR1AR2AR3AR4AR5AR60.568 0.809 0.643 0.211 0.456 0.651 0.459 0.667 0.681 0.343 0.581 0.747Lr10.472 0.760 0.520 0.188 0.427 0.531 0.387 0.583 0.598 0.331 0.548 0.641Lr20.566 0.809 0.642 0.211 0.456 0.
15、650 0.459 0.665 0.681 0.342 0.581 0.747Lr30.579 0.809 0.647 0.211 0.456 0.671 0.459 0.667 0.681 0.343 0.581 0.763表 2 是 YOLOv3-SPP 模型 8bit 量化的结果,其中 Lr1是实验中参数 LR 设置为 0.001 同时将数据流 clip 到(-8,+8),w 裁剪到(-0.5,+0.5)与 clip 到(-8,+8),w裁剪到(-1,+1)的结果;Lr2 是 LR=0.0001 同时将数据流 clip 到(-8,+8),w 裁剪到(-1,+1)的结果;Lr3 是LR=0
16、.00001 同时将数据流 clip 到(-8,+8),w 裁剪到(-0,+1)的结果;由于对 w 设置在(-0.5,+0.5)时,结果最佳,本文选取对 w 设置在(-0.5,+0.5)的实验进行微调结果展示,LR=0.001 为最初始的学习率,进行 8bit模型量化后发现模型精度降低得稍微有点明显,本文对量化后的模型做微调,将学习率分别调整到 Lr2 和 Lr3,从实验结果可以看到,当 Lr 设为 0.000 1 后,模型量化的精度十分接近 baseline 浮点模型精度。表 3 各个模型的结果对比模型mAP%模型大小/MBYOLOv3-SPP baseline59.2323MobileNetv2+FasterRCNN63.5629ResNet50+FPN+FasterRCNN78.0315Our157.2582.75Our277.676.75Our362.3157.25表 3 是对实验模型 backbone 为 MobileNetv2、ResNet50+FPN、DarkNet53 的模型进行量化后的模型与三个 baseline 模型就 mAP 和模型大小的一个比较。实验结果表明,量