一品文秘网 - www.sdelec.cn 2025年12月15日 05:41 星期一
当前位置 首页 >专题范文 > 公文范文 >

面向AI芯片的轻量级目标检测算法研究

发布时间:2023-08-27 19:35:03 来源:网友投稿

曹朋军,傅 哲

(西安交通大学自动控制研究所,陕西 西安 710000)

随着深度学习的发展,目标检测算法的检测精度越来越高,而网络的复杂度和计算规模也在倍增,逐渐呈现一种在边缘端设备平台上“算不好”、穿戴设备上“算不了”、数据中心“算不起”的无奈场面。对于参数量巨大的神经网络结构以及日益增长的边缘场景的AI计算任务要求,如何使算力和精度达到一个平衡是急需要解决的一个问题。在目标检测领域,利用边缘端AI芯片有限的算力资源,使目标检测算法模型的速度和精度最大化,对无人驾驶、智慧安防、智能监控、智慧煤矿等领域的发展有着极其重要的推进作用[1-3]。

轻量级网络的本质是执行效率的问题[4],执行效率是指模型的运算速度和模型的预测精度的统一。评价算法执行效率的标准有算法模型的空间复杂度、时间复杂度和算法内存访问量。文献[5-7]通过设计轻量化网络结构来达到轻量化的目的。文献[8]将剪枝量化、压缩、权值共享、编码应用到网络模型压缩中,取得了很好的效果。文献[9]中利用神经网络架构搜索NAS,通过强化学习的方式自动搜索生成轻量级的神经网络结构,此方法在图像分类任务上超越了手工设计的轻量级网络。AI芯片的存储、算力、内存带宽相对受限,利用有限的算力和带宽资源实现软硬件协同加速神经网络推理,是加快算法快速落地,从而应用到具体业务场景的关键[10-11]。YOLOv5系列[12]是目前目标检测领域应用最为广泛的算法之一,其检测精度随着模型深度和宽度的增加而增加。YOLOv5n是YOLOv5系列比较轻量的网络,但仅仅是通过调整网络的宽度,即卷积核的通道数来减少卷积的计算量,这样做的好处是参数量仅有3.2 MB,计算量为4.6 MB,但准确率相比YOLOv5s却下降了13个点,所以设计一种更轻量化的目标检测网络,同时又不损失精度至关重要。

本文以YOLOv5s6为基础网络结构,对主干网络进行重新设计,提出一种YOLOv5_RepVGG目标检测网络结构,主要思想是将训练和推理进行解耦,训练时它是一个多分支结构,训练完成后将多分支结构通过结构重参数化等价转换为单分支结构进行部署推理[13]。YOLOv5_RepVGG网络结构如图1所示。

图1 YOLOv5_RepVGG网络结构

图1中,RepVGG_1表示步长为2的网络结构模块,设计了2个分支,分别为1×1卷积和3×3卷积,每个卷积后加入批归一化操作,主要用于降采样;
RepVGG_2表示步长为1的网络结构模块,设计了3×3卷积、1×1卷积和Identity直连3个分支结构,每个分支结构后加入批归一化操作,主要用多分支结构来增强网络提取特征的能力。在YOLOv5s6主干网络中,由RepVGG_1结构对输入特征图先后进行6次降采样,在每次降采样后都加入RepVGG_2的网络结构模块,其模块深度分别为2,2,3,2,2,主要用来提取不同尺度下的图像特征。在网络的预测输出层,为了充分利用骨干网络的多尺度信息,设计输出80×80,40×40,20×20,10×10四种特征图,网络结构中激活函数使用ReLU函数。

模型训练完成后,对模型进行等价转换融合,得到推理模型。根据卷积操作的线性可加性,一个RepVGG_X内的计算可表示为:

式中:F(x)表示3×3卷积;
G(x)表示1×1卷积。在推理时将卷积层与BN层进行融合,卷积层和BN层的公式如下:

式中:var表示标准差;
mean表示均值。将卷积层结果式(2)代入式(3)中可得:

令Wfused=+β,将其代入式(4)可得融合后的结果为:

将卷积层和BN层融合之后,可以得到3×3卷积、1×1卷积分支和Identity分支,以及3个偏置向量。如图2所示,训练时加入1×1分支和Identity分支,部署推理时对模型结构重参数化进行融合。对于1×1的分支,假如输入和输出特征图大小相同,卷积步长Stride为1,1×1的卷积核直接与输入图像进行卷积操作,就可以得到相同大小的输出特征图,要想将1×1变为3×3的卷积核大小,只需要给1×1填充一圈权重为1的像素即可变为3×3的卷积核;
对于Identity分支同样也需要构造3×3的卷积进行融合。为了保证在经过Identity分支前后原始权重保持不变,可以选用权重为1和0的3×3卷积核进行分通道卷积,将当前通道卷积核权重设为1,其他通道权重设为0,进行卷积运算后将各通道结果相加,最终得出融合后的权重。通过结构重参数化融合就可以形成3×3独立推理分支,不仅减少了计算量,而且推理时也减少了不必要的显存占用。

图2 YOLOv5_RepVGG主干网络结构重参数化过程和内存访问量对比

从图2可以看出,结构重参数化融合使得训练时的网络结构和推理时的网络结构进行解耦,形成两种不同的结构,训练时为多分支结构,推理时为单分支结构,而单分支网络又保留了多分支网络提取特征的能力。在内存占用方面,多分支网络需要临时存储每个分支的计算结果,内存占用量会比单分支网络多。

本文将国产海思Hi3559AV100芯片作为边端推理平台。Hi3559AV100是一款多核异构处理器,集成了ARMv8架构的双核Cortex-A73和双核Cortex-A53,集成了神经网络推理引擎(Neural Network Inference Engine,NNIE),具有4Tops算力,支持Caffe深度学习框架,部署时需要模型框架转换。如图3所示,在Hi3559AV100上部署轻量化目标检测算法需要转换模型结构和量化,修改不支持的算子,设计后处理算法。

图3 轻量化网络在Hi3559AV100上移植部署流程

原生YOLOv5s6在训练时使用的是PyTorch深度学习框架,因而生成的模型是PyTorch框架的,部署时需要转换成AI芯片的模型格式,将YOLOv5s6模型先转换成*.onnx模型,再转换成*.caffemodel模型,最后转换成芯片可用的*.wk模型。

在算子支持方面,NNIE支持的上采样层是unPooling方式,而YOLOv5s6中所用的上采样方式是最近邻插值(Nearest)。为了减少计算量,本文使用反卷积进行代替,激活函数原网络中的LeakyReLU、SiLU需要换成ReLU。在预测推理时,YOLOv5s6模型的预测是在20×20,40×40,80×80每个输出层的每个特征点上预测3个框,分别对应3个尺寸的Anchor,每个框再进一步预测分类,在内存中每个特征图被拉长为一个一维数组。每个框的维度大小为Cx,Cy,W,H,Conf以及number of class,即每个段数据的Height,排列顺序是x,y,w,h,boxScore和num个id Score,保存时是先存储Feature Map Size个x,再存储Feature Map Size个y,依此类推。在Hi3559AV100平台上,为了提升硬件和数据搬移的利用效率,通常会引入步长或跨度的概念;
为了使硬件快速跨越到下一行,会在一个跨度内在一行的有效字节数目上补充一些无效的字节使得数据能够字节对齐,如图4所示。本文设计的YOLOv5_RepVGG网络有4个尺度的特征图,所以每个尺度会多增加一个Anchor。

图4 YOLOv5s6在Hi3559AV100平台上推理输出特征图在内存的排布结构

在Hi3559AV100平台NNIE上推理得到特征图后,需要在CPU端实现后处理操作Softmax和NMS,从内存中提取回归物体类别、置信度和坐标框位置并计算NMS最终得出真实目标框,利用C++编程链表结构实现每个预测框的输出和NMS计算算法。

本文选用的是COCO数据集中目标实例(object instances)带有标注的 80类目标,通过对instances_train2017.json和instances_val2017.json进行提取,选择最具代表性、最常见的几类目标物体,仅保留1,3,6,8这4类目标,分别是person(人)、car(汽车)、bus(公共汽车)、truck(卡车),训练集共69 214张照片,验证集2 930张照片,最多的人的目标个数达到25万个。本文实验分为训练环境和推理环境,训练环境选用图形工作站,配备两块RTX2080Ti;
推理环境选用Hi3559AV100边缘端计算平台,硬件和环境配置如表1所示。

表1 实验环境配置

除了训练环境和推理环境,因为需要将训练好的离线模型进行格式转换并移植到AI芯片端,所以还要搭建一系列模型转换和边缘AI芯片开发所需的环境,比如ONNX、Caffe1.0、OpenCv4.0、Protobuf3.5、Darknet框架、GCC编译器、aarch64-himix100-Linux-gcc交叉编译器、Ubuntu16.04上位机开发环境等。在本文设计的轻量网络模型进行训练时,选用学习率为0.01,余弦退火超参数设为0.1,模型输入为640×640,BatchSize设置为32,Epochs为300次。

在RTX2080TI GPU计算显卡和Hi3559AV100芯片上,本文网络和原生的网络模型在参数量、计算量、网络层数、准确率、推理时间等方面的参数评估见表2。

表2 本文设计的轻量级网络模型与原生模型各参数性能对比

从表2可以看出,本文设计的YOLOv5_RepVGG的计算量约是原生YOLOv5s6的1/ 2,在精度损失不多的情况下,AI芯片端的推理时间由原来的38.3 ms降到了18.6 ms,减少了近1/ 2,而其准确率仅下降了3个百分点。GPU推理时间提升并不明显,说明本文设计的YOLOv5_RepVGG单分支推理结构对AI芯片更友好。

在准确率方面,本文设计的YOLOv5_RepVGG网络结构和原生网络的准确率和召回率(P-R)曲线如图5所示,由图5可以看出,4类目标中的准确率都有不同程度的下降,召回率也有不同程度的降低。但在实际应用任务中,都会选用特定场景数据集作为训练集,更具有针对性,这种精度损失可以通过增加数据集来改善。

图5 YOLOv5s6与YOLOv5_RepVGG目标检测P-R曲线对比

在模型大小方面,PyTorch深度学习框架权重参数是按照高精度32 bit浮点数进行存储,相当于1个参数按照32个bit进行存储,如果是1 MB的参数量,所占空间大小为1 M×32 bit=32 Mbit=4 MB。在嵌入式AI芯片中一般选用INT8的量化技术,目的是减小权重参数的位宽,减少浮点数计算量。当用INT8进行量化时,即就是用8 bit进行存储,1 MB的参数量占用的空间大小为1 M×8 bit=8 Mbit=1 MB。在整个模型转换过程中,模型文件大小如表3所示,如果忽略模型转换过程中一些层融合或者多分支结构转换的影响,经过INT8进行量化后的模型大小和模型参数量基本上是1∶1的关系。

表3 模型转换过程大小变化对比

用相同的照片对本文设计的轻量化网络进行推理测试,在GPU服务器上识别到的目标个数要比在Hi3559AV100上多1个,并且在置信度输出上,均比在AI芯片高一点,推理结果如图6所示。嵌入式AI芯片推理结果差的主要原因是在嵌入式AI芯片上以INT8的数据量化后进行推理,量化会对精度造成一定损失。

图6 GPU与Hi3559AV100推理结果

为满足日益增长的边缘端设备算法推理实时性的要求,提升模型的执行效率,本文研究一种面向AI芯片的轻量化的目标检测算法,提出YOLOv5_RepVGG轻量化网络结构。将训练和推理进行解耦,训练时采用多分支的网络结构,增加网络提取特征的能力;
推理时将多分支结构权重融合形成单分支结构进行部署,并增加网络输出特征图的数量,提升小目标的检测能力。最后,在国产化Hi3559AV100芯片平台端上部署轻量化网络并进行验证。实验结果表明,本文提出的轻量化网络结构与原生的网络在模型参数量、计算量、内存访问量、模型体积等方面相比具有一定的优势,在精度下降很少的情况下,推理时间减少了近1/ 2,可大大促进人工智能技术在边缘端落地应用。

猜你喜欢网络结构轻量化分支汽车轻量化集成制造专题主编精密成形工程(2022年2期)2022-02-22巧分支与枝学生天地(2019年28期)2019-08-25一种轻量化自卸半挂车结构设计智富时代(2019年2期)2019-04-18一种轻量化自卸半挂车结构设计智富时代(2019年2期)2019-04-18一类拟齐次多项式中心的极限环分支数学物理学报(2018年1期)2018-03-26瞄准挂车轻量化 锣响挂车正式挂牌成立专用汽车(2016年1期)2016-03-01基于互信息的贝叶斯网络结构学习北京信息科技大学学报(自然科学版)(2016年6期)2016-02-27知识网络结构维对于创新绩效的作用机制——远程创新搜寻的中介作用管理现代化(2016年3期)2016-02-06沪港通下A+ H股票网络结构演化的实证分析管理现代化(2016年3期)2016-02-06复杂网络结构比对算法研究进展智能系统学报(2015年4期)2015-12-27
Top