• 美文
  • 文章
  • 散文
  • 日记
  • 诗歌
  • 小说
  • 故事
  • 句子
  • 作文
  • 签名
  • 祝福语
  • 情书
  • 范文
  • 读后感
  • 文学百科
  • 当前位置: 柠檬阅读网 > 范文 > 正文

    基于轻量化Yolov5算法的目标检测系统

    时间:2023-01-18 22:45:06 来源:柠檬阅读网 本文已影响 柠檬阅读网手机站

    张利红,蔡敬菊

    (1.中国科学院 光电技术研究所,四川 成都 610209;
    2.中国科学院大学,北京 100049)

    目标检测是计算机视觉的重要研究领域之一,要求能对图像中的目标位置进行精准定位、种类精确识别。随着深度学习和智能互联技术的发展,将目标检测算法应用至终端的需求不断增强,但受限于嵌入式设备的内存和算力资源,参数量多、结构复杂的模型部署时的计算开销和通信耗时是个亟待解决的问题。

    近年来,对模型进行轻量化改进主要分为两类:网络结构压缩、权重数值压缩。前者以SqueezeNet[1]、MobileNet[2]、ShuffleNet[3]等轻量化模型结构系列为代表,后者中网络减枝和量化是应用最广泛的两种方法。

    自2012年以后,基于深度学习的目标检测算法成为主流研究方向,并分为单阶段和双阶段两类。双阶段检测算法以R-CNN[4-5]系列为代表,需要先获取目标区域随后进行候选框的选取,检测精度较高的同时计算量大又比较复杂;
    不适合进行终端部署。单阶段检测算法以Yolo[6-9]系列为代表,将候选区域生成阶段省略掉,直接将检测任务视为回归问题进行端到端的检测,检测速度和精度相对其他深度目标检测算法在嵌入式设备上进行部署更占优势。

    Rk3399pro是福州瑞芯微电子开发的专门针对终端推理的国产AI芯片,芯片架构采用大小核处理器内嵌NPU神经网络处理器的方案换取高性能、低功耗和高扩展性,兼具高速总线PCIE和超强的视频编解码能力,以上特点使其适用于目标检测算法部署。

    该文以Yolov5s算法为模型结构基础,对其Backbone特征提取层使用mobilenetv2[10]进行替换,并通过网络模型稀疏化获得缩放因子,根据缩放因子的分布对卷积核做重要性排序,并考虑到Rk3399pro芯片架构特点进行卷积通道数裁剪约束。其次通过对减枝后的模型通过将32位浮点数据进行非对称8位量化减少权重参数,并充分考虑到平台的多核处理器资源,使用CPU-GPU-NPU多线程协同计算。对图像前后处理和硬件推理时间模糊后,实现了实时的鲁棒目标检测系统。

    Yolo系列算法将检测任务统一为回归问题,省去Region proposal阶段,直接可从一张图像中预测出bouning box的坐标及目标各类别概率。

    1.1 Yolov5算法

    Yolov5是由Uitralytics公司发布的单阶段算法,基于pytorch训练而成,并按模型大小排序为yolov5x、yolov5l、yolov5m、yolov5s四个模型,其中v5s网络模型相较于yolov1-v4系列,在检测精度相仿的基础上,实现了宽度深度、权重参数更小,更适合部署至嵌入式平台中。

    Yolov5可以分为Input输入端、Backbone、Neck、Head输出端四个部分,如图1所示。Yolov5在Input输入端对图像进行自适应填充预处理,对不同数据集自适应计算anchor大小,并采用Mosaic数据增强的方法,将四张图片进行随机非对称缩放、裁剪和排布组合,实现对目标样本大小和背景丰富;
    同时Yolov5相比v4增加了正样本的anchor数目,显著增加训练速度,减少收敛时间。Backbone中的focus模块主要用于将输入的图片数据进行切片,即将原本图像的高、宽转化为了特征信息通道,对矩阵进行卷积后就得到了下采样的特征图,从而减少前向计算中特征提取的时间花销。Backbone中主要分为瓶颈跨阶段局部结构BottleneckCSP和空间金字塔池化模块SPP,实现了对不同尺度的特征提取。其中Neck中采用了特征金字塔FPN自底向上传递语义特征,与路径聚合结构PAN自上向下传递位置特征相结合。Neck实现不同网络层的信息融合,在Head输出端可实现更精准的预测。

    1.2 特征提取网络

    Yolov5中的Focus模块在平台部署的时候并不能带来更高的精度提升,甚至略微增加了模型参数量,于是用Conv卷积模块进行替代。同时将Backbone中复杂的BottleneckCSP模块替换为MobileNetv2。

    MobileNetv1使用深度可分离卷积的堆叠替代标准卷积,其包括深度卷积和逐点卷积两部分,可在同等卷积输入下减少模型参数量和计算开销。

    假设标准卷积与深度可分离卷积的输入特征图宽为Wc、高为Hc、卷积核数为M、通道数为N,输出特征图大小为Wo×Ho×N,如图2所示。而深度卷积在标准卷积的基础上将卷积核数改为1后,并与送入1×1逐点卷积模块后的卷积结果相加。两者的计算和参数量相比均如式(1)所示:

    (1)

    Mobilenetv2在其基础上除了沿用深度可分离卷积外还加入了Expansion layer和线性连接的Bottleneck layer,分别实现高维特征与低维特征之间的映射,模型体积仅为mobilev1的1/4。该文将原yolov5s的特征提取层中的BottleneckCSP替换后,可实现网络结构轻量化。

    1.3 模型减枝

    网络减枝被广泛应用于卷积网络压缩中,可以有效地降低网络复杂度和缓解过拟合,并提高前向推理速度。基于卷积核的结构化减枝指从卷积核层面进行考虑,在初始时正常训练网络,随后将权重链接低于判断阈值的卷积核或通道进行移除,最后对稀疏后的网络进行微调即可在轻微损失精度时获得轻量化模型。

    在对卷积核重要性的判断中,Li等[11]使用卷积核权重的L1范数值作为判断标准,He[12]则以卷积核的非零权重值个数及L0范数为标准进行判断。Ye[13]则考虑到了较小范数对提取特征准确度的影响,Hu[14]则以卷积核权重的稀疏程度排序作为减枝标准。此外还有些学者研究通过集成减枝的方法,综合多种参数排序依据进行模型减枝[15-16]。

    该文对网络BN层中可学习的参数进行L1正则化稀疏训练,得到接近0的稀疏缩放因子,并采用L1范数对卷积核重要性进行评价的方式进行减枝,流程如图3所示。即按照递减顺序将每个卷积层的滤波器矩阵绝对值总和排列,设定一个阈值将低于此阈值的卷积核去除。

    为了避免单一阈值参数的评价方式造成误减、结构通道数发生巨变或检测精度下降过多,并且考虑到嵌入式平台MAC硬件单元对优化模型加速时对卷积通道数要求最好为3的倍数,在剪枝时设计判断函数(如式(2)),进一步抑制减枝通道数范围。

    (2)

    其中,N表示网络减枝后的通道数,x表示原网络卷积核通道数,f(x)表示经减枝后小于x且是9的倍数的最大值。

    1.4 模型量化

    模型量化指将32位浮点运算转化为定点计算,可以有效压缩参数、降低内存占用,但也会略微降低检测精度。目前常用的量化方法分为三类:二三值化、线性量化以及对数量化。二三值化过于简单的位运算操作会带来极大的精度损失,而对数运算将同底的幂指数相乘的复杂操作不利于AI芯片底层加速实现。因此该文考虑使用线性量化中非对称和对称量化两种方案验证择优选取。

    根据近几年的量化模型研究8位量化能够尽量在损失精度较小的情况下实现模型大小的压缩,并分为对称量化和非对称量化两种。根据谷歌对量化研究的白皮书指导可知,对大部分网络而言非对称(unit8)量化对网络精度损失最小[17]。其二者区别在于计算公式中是否存在零点值的漂移,同时还根据不同网络权重参数值在压缩后的分布相关。因此,该文分别对两种量化方式都进行精度损失测验。

    两种量化方式属于32位浮点数据映射到8位定点的不同计算方式,区别在于是否存在零点值Z的偏移。

    (3)

    其中,xf表示输入的float32类型数据,n表示量化后数据的bit位数,Q表示量化后数值。

    对模型采用不同的量化方式可以发现(见图4),使用8位定点量化的模型大小将减至量化前的1/4,将FP32的浮点数张量转化为unit8张量,有助于减少内存带宽和存储空间,并进一步提高系统吞吐量,降低系统延时。

    实验选择目标检测常用的PASCAL VOC数据集进行训练,包括常见的vehicle、household、animal、person四个大类及20个小类。检测目标样本丰富,特征背景不一,可用于训练测试在不同环境需求下的深度目标检测算法。对数据集中少部分标注不清或目标重叠或较小的图片进行筛选和数据增强操作。

    未移植前模型以pytorch为框架,训练硬件环境设置为GPU:RTX 2060 SUPER,CPU:i5-10400,内存16 G;
    python:3.6;
    CUDA10.1,cuDNN7.6.5,opencv:3.4.5;
    移植后以RKNN为框架,嵌入式设备:Rk3399pro。在PC机上安装交叉编译环境,通过ssh协议远程登录到板端,将在PC端编写的程序用CMake工具编写Cmakelist.txt配置文件实现跨平台的编译和管理。在pycharm上进行python代码的编写训练,在VScode进行C++程序的部署落地。

    评价模型精确度指标采用mAP(mean average precision),其由模型训练中每一类检测目标的精确率(Precision)对应的召回率(Recall)在0至1的范围内进行积分后求和,再除以总的检测目标类别数得到。

    (4)

    其中,TP表示检测目标被模型正确识别为正例的个数,FP表示被模型错误识别为正例的个数,FN表示被错误识别为负例的个数,N值为20。

    为防止单次模型训练中存在的误差,文中数据均是经过五次平均后的结果。

    2.1 轻量化实验

    在原yolov5s的网络结构上进行轻量化改进,输入图像大小为416×416,分别就替换特征提取网络、网络减枝、量化后的网络与原网络进行性能对比。在PC端的模型对比为Pytorch框架下,在Rk3399pro端的对比在RKNN框架下,从pt模型转换为RKNN模型需要模型训练的框架版本及神经网络op算子能被RKNN Toolkit识别进而才能被硬件支持,而原yolov5s导出的pt模型并不满足条件。RKNN模型开发应用流程如图5所示。

    在原版yolov5s模型基础上,通过更改模型训练框架版本、使用常规op替换特殊op算子以及编写能被硬件支持的op算子解决硬件支持问题后,且未进行文中的模型轻量化改进直接导出的模型标注为yolov5s.RKNN。

    由表1中数据可见,与原yolov5s.pt模型相比,改进特征提取网络和进一步剪枝后的模型在PC端的推理耗时大幅减少,检测速度从140 fps/s提升至370 fps/s,模型精度在参数量降低了17.1%的基础上损失了6.74%。而将两种离线模型转换为Rk3399pro支持的RKNN框架下进行部署后,论文提供了无量化、非对称及对称8位量化三种不同精度和运行速度的模型方案,供不同检测性能需求的应用场景下进行选择。其中对称与非对称8位量化模型参数量大小相同时,非对称8位量化对yolov5s及文中模型均损失精度更低。

    表1 不同模型性能对比

    文中模型检测精度mAP值略微低于yolov5s.RKNN,但在理论检测速度上从18.6 fps/s大幅提升至50 fps/s。在一些要求检测速度的特殊应用场景下,采用文中轻量化方案会更加合理,对于存在的精度损失问题,实验中对较小或遮挡的目标也能有所检测。

    2.2 算法通用性实验

    该文主要针对yolov5s在轻量化部署方向上进行探索改进,yolo其他系列算法采用Darknet网络框架构建训练而成,在检测不同特征样本的数据集时,可能相较yolov5s的适配性更高。为探索不同算法的部署效果,验证提出的改进方案具有一定的普适性,对yolov2-v4系列在数据预处理后的KITTI数据集训练,并同样进行轻量化实验,结果如表2所示。

    表2 改进yolo系列轻量化模型前后检测效果对比

    由表2可见,对yolo系列而言,采用文中改进方式均可实现在Rk3399pro上进行轻量化部署,为后续进一步探索其他改进方法提供了理论和数据支持。

    2.3 嵌入式部署实验

    对算法网络进行轻量化改进后,在实际部署至终端时需要考虑最大化利用硬件设备资源,以减少图像数据传输和推理中不必要的耗时。在Rk3399pro采用CPU-GPU-NPU多线程协同计算方案(见图6)优化算法运行速度[18],即:(1)图像获取与预处理;
    (2)数据推理;
    (3)数据后处理与显示。

    以上三种分支结构中计算复杂度最高的就是数据推理,数据推理中的卷积计算占到整个目标检测系统90%的计算量应交由NPU工作。其余两个分支结构都与图像处理相关交由GPU实现。而CPU则负责系统调度,协调各个预算单元降低GPU功耗和NPU负载。

    在开发测试过程中发现,NPU专注推理加速时整个模型推理过程耗时将极小,而图像预处理和后处理时间较长。该文将利用两个CPU大核分时复用NPU对GPU预处理的图像数据进行加速推理,随后CPU小核调用GPU进行数据后处理和显示。

    实验证明使用8位量化后的Our mobilenetv2-yolov5s模型在Rk3399pro的理论推理性能达到50帧/s,比不进行网络结构轻量化的8位量化yolov5s.RKNN模型的基础上提升了近1.7倍。

    为比较Rk3399pro同其他国产AI芯片平台在目标检测算法部署上的性能差异,同时考虑到不同国产平台的AI算子支持和软件开发环境差异,仅对yolov3 tiny模型进行部署,检测速度数据比较如图7所示。

    由图7可知,虽然不同AI芯片存在算力、软硬件开发环境差异,但Rk3399pro由于相对而言在硬件加速的适配效果较好,对yolo系列算法而言还是比较适合做目标检测算法应用的嵌入式平台之一。

    以yolov5s算法为基础,使用MobileNetv2替换Backbone特征提取层中的BottleneckCSP结构、Conv替换Focus模块达到网络轻量化。针对Rk3399pro芯片结构特点对卷积核通道数约束后基于L1范数进行稀疏减枝,并对比了不同量化方式后模型差异,验证文中算法采用非对称8位量化精度损失更低、检测速度相较原模型更快。为证明算法改进的普适性,对Yolo其他系列算法同样进行实验;
    为证明采用Rk3399pro平台部署的合理性,对其他国产AI平台也进行相关实验比较。可知在使用文中模型轻量化、c++部署、多核并行等改进后,能在Rk3399pro上实现实时的目标检测系统。

    猜你喜欢 轻量化卷积精度 基于不同快速星历的GAMIT解算精度分析导航定位学报(2022年5期)2022-10-13基于ABAQUS的某轻卡车蓄电池支架轻量化汽车实用技术(2022年11期)2022-06-20热连轧机组粗轧机精度控制一重技术(2021年5期)2022-01-18基于3D-Winograd的快速卷积算法设计及FPGA实现北京航空航天大学学报(2021年9期)2021-11-02一种并行不对称空洞卷积模块①计算机系统应用(2021年9期)2021-10-11从滤波器理解卷积电子制作(2019年11期)2019-07-04一种轻量化自卸半挂车结构设计智富时代(2019年2期)2019-04-18一种轻量化自卸半挂车结构设计智富时代(2019年2期)2019-04-18基于傅里叶域卷积表示的目标跟踪算法北京航空航天大学学报(2018年1期)2018-04-20以工匠精神凸显“中国精度”华人时刊(2016年16期)2016-04-05
    相关热词搜索: 算法 检测系统 目标

    • 文学百科
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章