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

    基于网络瘦身算法的YOLOv4-tiny的甘蔗茎节识别*

    时间:2023-04-18 08:15:05 来源:柠檬阅读网 本文已影响 柠檬阅读网手机站

    陈文,余康,李岩舟,陈远玲,胡珊珊,乔曦

    (1. 广西大学机械工程学院,南宁市,530004;

    2. 中国农业科学院深圳农业基因组研究所,广东深圳,518000)

    中国的甘蔗种植面积排名世界第三。然而,由于甘蔗破头率、含杂率高,刀具磨损严重,传统的甘蔗收获机械多年仍未解决其机构稳定性、地貌适用性差及收获质量不满足糖料生产需求等问题。因此,目前甘蔗收割主要仍依靠人工操作。相比之下,人工收割质量高,操作灵活,但效率低、劳动密集度高。为解决传统机械化甘蔗收割的问题,有必要从人类收获甘蔗的行为上找到解决方法。若同时结合机器收割的高效率及人工收割的准确性,可为解决破头和刀具磨损提供有效思路。因此,模仿人工收割的视觉识别和判断甘蔗节砍断位置是实现智能化甘蔗收获作业的第一步。

    在对甘蔗茎节的识别研究中,Moshashai等[1]首先通过比较甘蔗不同部分的直径,研究了甘蔗茎节点的识别方法。陆尚平等[2]提出了一种基于支持向量机的甘蔗茎节特征提取与识别方法。黄亦其等[3]通过sob算子寻找灰度图像的边缘,再使用randon变换检测和定位甘蔗茎节点。李尚平等[4]通过改进YOLO v3算法,建立去皮甘蔗茎节点的智能识别模型。Meng等[5]提出了一种基于多阈值和多尺度小波变换的甘蔗节点识别算法,运用于去皮甘蔗的茎节点识别。Zhou等[6]提出了一种基于Sobel边缘检测的甘蔗茎节识别方法,以满足甘蔗切种机的工作要求。Chen等[7]提出了基于垂直投影函数最小点局部像素和的甘蔗节点识别算法,分析了单节点和双节点的识别。

    上述方法更适合在实验室恒定光照和剥叶后的茎节识别,对本文所研究的田间蔗叶包裹、背景复杂下的茎节识别效果未知。

    YOLO系列算法及其改进的方法[8-9]在农业领域已被广泛应用,但这些方法具有复杂的网络结构和大量的网络参数,故利用它们在嵌入式设备和移动设备上实现实时目标检测是一个很大的挑战。为了解决这个问题,许多研究人员提出了轻量级目标检测算法[10],其网络结构相对简单,参数也较少。YOLOv4-tiny[11]就是一种基于YOLOv4[12]改进的最先进的轻量级目标检测算法,相对于YOLOv4算法,它进一步简化了网络结构和网络参数,提高了网络推理速度。

    轻量级网络设计和模型剪枝技术是减少深度学习模型的参数量和复杂度上常用的两种方法,轻量级网络设计主要是对算法的结构进行更改。例如:MobileNet[13]系列算法被运用于改进目标检测算法上,如MobileNet-YOLO[14]、MobileNet-SSD[15]。而模型剪枝技术是对算法训练完成后识别模型中不起作用的网络通道并裁剪,以达到减小复杂度的目的。为了进一步优化YOLOv4-tiny算法,本文分别运用了这两种方法对基于YOLOv4-tiny的甘蔗茎节识别算法进行了改进并通过试验进行比较。

    1.1 数据采集与处理

    甘蔗茎节图像的采集工作在广西崇左市扶绥县广西大学农科新城基地完成,甘蔗品种为桂糖8号,甘蔗采集位置为靠近根部茎节位置,图像获取时间为8:00~19:00。为保证数据集尽可能与实际田间环境相似,采用包含不同光强度的阴天和晴天数据,从而确保了该方法对不同照明的适应性。采集数据量为735张,通过数据增强方法对数据集进行进一步的扩充,使总数据量到达5 880张。文中采用的数据增强方法为旋转(左右旋转45°、旋转90°)、镜像翻转、亮度调节(亮度分别调为原来的1.3倍和0.7倍),如图1所示。总数据量按照8∶1∶1的比例划分训练集、验证集和测试集。

    (a) 原图

    (b) 亮度0.7倍

    (c) 亮度1.3倍

    (d) 镜像翻转

    (e) 左转45°

    (f) 旋转90°

    (g) 右转45°

    1.2 轻量级

    为降低移动和嵌入式平台的算力需求,不能直接采用已有的大型深度学习视觉识别算法。因此本文尝试利用轻量级卷积神经网络作为目标检测模型的特征提取网络。为此,本文先对各特征提取网络和目标检测技术进行简介。

    1.2.1 MobileNet v1

    MobileNet v1[13]是2017年提出的一种适用于移动和嵌入式平台的轻量级卷积神经网络。它主要是提出了一种深度可分离卷积模型,其将标准卷积分解为两个步骤:深度卷积和点卷积(1×1卷积)。其分解过程如图2所示。假设输入与输出的长×宽不变,标准的卷积过程是将输入为Df×Df×M的输入层转化为维度为Df×Df×N的输出层,其中Df×Df是输入特征图的长×宽,M是输入通道数,N为输出通道数。假设卷积核过滤器的大小为DK×DK,传统标准卷积的计算量如式(1)所示。对于深度可分离卷积来说,卷积执行的计算分两步,先用深度卷积对通道进行卷积,再用点卷积对通道数进行调整,深度可分离卷积的计算量如式(2)所示。

    C1=Df2×M×N×Dk2

    (1)

    C2=Df2×M×Dk2+Df2×M×N

    (2)

    因此,深度可分离卷积与传统标准卷积的参数量计算比为

    (3)

    实际上,在深度方向上可分离的卷积网络中经常使用3×3卷积核,而输出通道的数量N很大。因此,深度可分离卷积的参数量约为传统标准卷积的1/9,从而到达降低网络复杂度的目的。

    图2 深度可分离卷积模型

    1.2.2 MobileNet v2

    MobileNet v2网络[16]在MobileNet v1基础上提出了反向残差网络结构,而残差网络结构是何凯明等[17]在ResNet一文中提出的,两者的结构如图3所示。

    (a) MobileNet v1中的线性块

    (b) ResNet50中的标准残差块

    (c) MobileNet v2中的反向残差块

    如图3(c)所示,反向残差结构是在深度卷积之前加一个1×1的卷积,目的在于提升通道的数量,获取更多的图像特征。因为深度卷积自身无法改变通道数量,输出通道数量取决于上层输出的通道数量,若上层通道数量较少,使得深度卷积在低维度无法获得较好的特征,最后再使用一个1×1卷积进行降维操作,不再使用激活函数ReLu6(Rectified Linear Unit 6)对输出特征进行操作,因为在低维度空间ReLu6层会破坏特征。ReLu6的定义如式(4)所示。

    ReLu6(x)=min(max(x,0),6)

    (4)

    1.2.3 MobileNet v3

    MobileNet v3网络[18]吸收了MobileNet v1和MobileNet v2网络的优势,在反向残差网络结构上引入了SE(Squeeze-and-Excitation)注意力机制模块,并且引入了新的激活函数。图4(a)展示了MobileNet v3特有的倒残差结构:SE Net[19]注意力模块如图4(b)所示,它是一种复杂度低、计算量小的简单有效的注意力机制网络模型,主要分为Squeeze和Excitation两个部分。

    图4 MobileNet v3的反向残差结构

    Squeeze是将输入进来的特征图进行全局平均池化的压缩处理,得到1×1×C大小的特征图,这个特征图具有H×W维的全局感受野。Exicitation操作是使用一个Fully Connection对1×1×C的特征图进行非线性变换,预测每一个通道的重要性,然后再经过ReLu6和Fully Connection操作。使用两个Full Connection层是为了增加非线性,更好地拟合通道之间的相关性。在激活函数上,引入了Hard-swish和Hard-sigmoid,定义如式(5)、式(6)所示,其有利于减少参数量,提高神经网络的准确度。

    (5)

    (6)

    本文选用了MobileNet v1、MobileNet v2和MobileNet v3三种适用于移动和嵌入式平台的轻量级卷积神经网络来优化YOLOv4-tiny算法的特征提取网络,这一系列网络在充当目标检测算法的骨架中,可以很好地降低模型的计算量和复杂度,应用较为广泛。

    1.2.4 YOLOv4-tiny

    YOLO(You Only Look Once)系列算法是目前最流行的一种一阶段目标检测算法。但由于YOLO网络的深层次结构和巨大的参数量,一般的移动式设备和嵌入式设备难以满足,于是各种轻量级目标检测算法[10-11]被提出,而YOLOv4算法的简化版本YOLOv4-tiny[11]是最先进的YOLO轻量级检测算法,其参数量只有YOLOv4的1/10。图5展示了YOLOv4-tiny的网络结构。

    图5 YOLOv4-tiny模型

    YOLOv4-tiny算法使用CSPDarknet53-tiny网络作为骨干网络替换了YOLOv4算法使用的CSPDarknet53网络。CSPDarknet53-tiny在跨级网络这部份使用了CSPBlock模块而不是原先的ResBlock模块。CSPBlock模块把特征图分成两部分,再通过跨级残差网络把其结合起来,这使得梯度流可以在两种不同的网络路径上传播,进一步丰富了梯度信息。为了进一步简化计算过程,YOLOv4-tiny算法使用了Leaky relu函数代替原先使用的Mish 激活函数。Leaky relu函数的定义如式(7)所示。

    (7)

    其中∂i∈(0,+∞),它是一个常数。

    在特征融合部分,YOLOv4-tiny算法使用FPN(Feature Pyramid Network)提取不同尺度的特征图来提高目标检测速度,替换YOLOv4 算法中的SPP(Spatial Pyramid Pooling)和PAN(Path Aggregation Network)。同时,Yolov4-tiny只使用13×13和26×26这两种不同尺度来预测检测结果。

    1.2.5 YOLOv4-tiny的预测过程

    首先,YOLOv4-tiny算法调整输入图像的大小,使所有的输入图像都具有相同的固定大小。其次,将输入图像分成大小为S×S的网格,每个网格都将使用B个边界框来检测对象。

    因此,它将为输入图像生成S×S×B边界框,且生成的边界框覆盖整个输入图像。如果某个物体的中心落在某个网格中,网格中的边界框将预测该对象。为了降低预测过程中边界框的冗余性,设置了置信度阈值。如果边界框的置信度高于置信度阈值,则保留边界框,否则将删除边界框。边界框的置信度得分如式(8)所示。

    (8)

    表示预测框与真实边界框的交集。分数越高,说明预测框越接近于真实边界框。YOLOv4-tiny的损失函数和YOLOv4一样,主要由以下三部分组成,如式(9)所示。

    loss=loss1+loss2+loss3

    (9)

    式中:loss1——置信度损失函数;

    loss2——分类损失函数;

    loss3——边界框回归损失函数。

    1.2.6 YOLOv4-tiny的训练过程

    图6显示YOLOv4-tiny在训练期间的总损失函数曲线,可以看出,甘蔗茎节检测模型在训练的前30个epoch,模型的学习效率较高,训练曲线的收敛速度较快。随着训练的深入,损失曲线斜率逐渐减小。最后在第80个epoch的时候,模型的学习效率达到饱和,Loss只在1.2左右略有波动。

    图6 YOLOv4-tiny甘蔗茎节检测模型的训练损失函数

    训练好的YOLOv4-tiny算法模型对甘蔗茎节检测的效果如图7所示。

    从图7可以看出,在随机选取采集到的甘蔗茎节的3幅图像中,该算法能够完全检测出甘蔗茎节,说明本文所采用的YOLOv4-tiny算法可以满足对田间甘蔗茎节识别的要求。这为下一步的网络瘦身和轻量化改进奠定了基础。

    (a) 早上

    (b) 中午

    (c) 傍晚

    1.2.7 模型性能评估

    为了验证两种模型的性能,本研究采用精度P、召回率R、mAP、Params(模型参数量)、FLOPs(模型的浮点运算数)和检测速度6个指标进行评估。其计算公式如式(10)~式(15)所示。其中mAP是检测到甘蔗茎节时AP(Average Precision)的平均值,该值越高,说明算法的检测性能越好,在重要性上AP>P=R。Params和FLOPs是衡量模型复杂度的指标,该值越低,说明模型的复杂度越低,对运算平台越友好。

    (10)

    (11)

    (12)

    (13)

    FLOPs=2×H1×W1(CinK2+1)Cout

    (14)

    Params=Cin×K2×Cout

    (15)

    式中:H1——输入图像的宽;

    W1——输入图像的高;

    K——卷积核大小;

    Cin——输入的卷积核个数;

    Cout——输出的卷积核个数;

    TP——真阳性个数;

    FP——假阳性个数;

    FN——假阴性个数;

    C1——检测目标的类别数量在本文中仅检测甘蔗茎节,故其为1。

    本文提出两个研究方案——基于MobileNet的YOLOv4-tiny识别算法和基于网络瘦身的YOLOv4-tiny识别算法,通过对比二者对田间环境甘蔗茎节识别的精度和模型复杂度来确定其优劣。具体的模型构建方法如下。

    2.1 基于MobileNet的YOLOv4-tiny识别算法

    如图8所示,YOLOv4-tiny的Backbone为CSPDarknet53-Tiny,它的主要作用是处理输入的图像,将提取到的图像特征传递给FPN做进一步的特征融合。

    图8 MobileNet-YOLOv4-tiny

    本文使用MobileNet系列网络作为YOLOv4-tiny的Backbone来设计轻量级网络结构。在YOLOv4-tiny的网络结构中,输入的图像尺寸为416×416,然后Backbone分别将其26×26和13×13的特征层传入了FPN结构中。

    在Backbone-MobileNet v1中,它主要由深度可分离卷积模块堆叠而成,将其26×26和13×13的特征层作为FPN的输入层。在Backbone-MobileNet v2和Backbone-MobileNet v3它们的输出层大小均和MobileNet v1相同,图8展示了他们的具体结构。

    2.2 基于网络瘦身的YOLOv4-tiny识别算法

    YOLOv4-tiny在拥有80个类别数的COCO数据集的测试上取得了不错的成绩,其平均精度达到40.2%[11],但本文的数据集只取甘蔗茎节一个类别,训练好的网络模型上可能存在大量的冗余参数。故对模型进行进一步的修剪,有利于在移动式和嵌入式设备上进行部署。

    网络瘦身算法[20]的作用原理是通过识别网络通道来消除不起作用的通道及其相关的输入和输出关系。其可以有效减小模型大小和运行时占用的内存,在几乎不影响识别精度的同时,降低了计算量。如图9所示,在对YOLOv4-tiny进行通道修剪过程中,批归一化(BN)层的Gama系数直接被选作为网络瘦身的缩放因子,用于评估输入通道的重要性,没有引入新的参数,降低了操作的难度。根据Gama系数的分布和所设置的修剪率,保留了起作用大的通道(蓝色实线),并删除起作用低的通道(橙色虚线)。

    1) 正常训练。训练出一个收敛且精度高的YOLOv4-tiny甘蔗茎节识别模型。

    2) 稀疏训练。将L1正则约束应用于YOLOv4-tiny甘蔗茎节检测模型的BN层的系数,在稀疏训练过程中,模型内不起作用的网络层所对应的缩放因子会趋向于0。

    3) 进行网络瘦身。稀疏训练完成后,按设置好的修剪比例执行通道修剪,以生成占用较少内存空间的简化模型。

    4) 微调修剪后的模型。主要目的是克服通道修剪后模型精度损失过大的问题,可以有效恢复损失的精度。

    图9 网络瘦身过程

    网络瘦身算法中的总损失函数如式(16)所示。其中第一项是网络的训练损失,第二项是BN层的Gama(γ)系数的L1正则约束项。

    L=∑(x,y)l(f(s,W),y)+λ∑γ∈Γ(g(γ))

    (16)

    式中:x——模型训练的输入;

    y——模型训练的输出;

    W——网络中的训练参数;

    λ——惩罚因子。

    网络瘦身过程的主要参数设置如表1所示。

    如图10(a)所示为正常训练时BN层的γ系数的分布图,可以看出γ值主要分布在1周围。图10(b)为稀疏训练时BN层的γ系数的分布图。随着稀疏训练的继续,所有BN层的γ系数中心逐渐接近0,但并未全部衰减到0,这表明γ系数逐渐变得稀疏。直到第120个epoch的稀疏变化才逐渐变得微弱,这表明稀疏训练已经饱和。

    表1 网络瘦身的主要参数设置Tab. 1 Main parameter settings of network slimming

    稀疏训练后,在保证精度不大幅度下降的前提下,本文选择了0.6的剪枝率来对稀疏训练后的YOLOv4-tiny甘蔗茎节检测模型进行通道剪枝。一共剪掉 1 517 层通道,被修剪层的通道数前后变化如图11所示。

    (a) 正常训练时BN层的γ系数分布

    (b) 稀疏训练时BN层的γ系数分布

    图11 被修剪层的前后通道数变化

    试验环境为Intel 5218×2、2.3 GHz处理器,64 GB RAM,500 GB硬盘和11 GB NVIDIA RTX 2080Ti GPU。算法的开发语言为Python3.6,深度学习框架为Pytorch。

    3.1 不同方法检测结果对比

    为了验证所提方法的有效性,使用测试集558张甘蔗茎节图像进行了测试,结果如表2所示。在轻量化网络设计方法中,尝试使用不同MobileNet作为YOLOv4-tiny的Backbone进行特征提取,可以发现MobileNet v1-YOLOv4-tiny、MobileNet v2-YOLOv4-tiny和MobileNet v3-YOLOv4-tiny均可以显著降低模型的复杂度、减少计算量,在平均精度AP上,分别为86.35%、92.78%、90.38%,在模型大小上分别为13.7 M、16.5 M、22 M。其中,试验结果表现最好的是MobileNet v2-YOLOv4-tiny,其参数量为2 600 068,比YOLOv4-tiny的5 876 411减少一半。最优模型MobileNet v2-YOLOv4-tiny的FLOPs为1.29 G,约为YOLOv4-tiny的2/5,同时也优于MobileNet v1-YOLOv4-tiny和MobileNet v3-YOLOv4-tiny。在速度上,它们分别为0.001 1 s、0.014 s和0.017 5 s,均慢于原算法的0.009 9 s。主要原因是目前所用的GPU并未对深度可分离卷积做专门的优化推理[21]。综上分析得知,轻量化结构设计中的MobileNet v2更适合作为YOLOv4-tiny的Backbone。

    在网络瘦身方法中,经过网络瘦身算法后的YOLOv4-tiny模型其复杂度大大降低,它的参数量、FLOPs、模型大小分别为1 789 658、1.1 G、6.3 M,而未瘦身前YOLOv4-tiny模型的参数量、FLOPs和模型大小分别为5 876 411、3.4 G、22.4 M,综上所述,瘦身前的模型复杂度约为瘦身后的3倍,而平均精度AP下降了0.6%,速度上,模型瘦身前后并无变化。

    表2 MobileNet-YOLOv4-tiny和YOLOv4-tiny网络瘦身的试验结果Tab. 2 Experimental results of MobileNet-YOLOv4-tiny and YOLOv4-tiny after network slimming

    综上可知,基于网络瘦身算法的YOLOv4-tiny的精确度和模型复杂度均要优于方法一中所使用MobileNet的轻量化网络结构设计方法。因此,可采用本文基于网络瘦身的YOLOv4-tiny模型在保证精度不下降的情况下,降低模型本身的复杂度,有效满足嵌入式或移动式设备在田间实现对甘蔗茎节的准确快速检测。图12为五种方法的甘蔗茎节检测效果图。

    从效果图中可看出以MobileNet v1和MobileNet v2为Backbone的YOLOv4-tiny无法检测到图像中左下角的甘蔗茎节,而MobileNet v2-YOLOv4-tiny对该节点的识别率也仅为0.13。这表明了MobileNet的特征提取效果不如原先的CSPDarknet53-tiny,在降低原算法的复杂度上,网络瘦身是更优的选择。

    (a) 原图

    (b) YOLOv4-tiny

    图12 不同方法的甘蔗茎节检测效果图

    3.2 与其他目标检测算法的比较

    基于深度学习的目标检测算法已被学者用于众多农作物检测和识别任务中[22]。为了验证所提方法的有效性和优越性,本研究选择4种已被使用于农作物识别上目标检测算法进行了比较,包括YOLOv4[23]、YOLOv3[24]、YOLOv3-tiny[25]、SSD[26]。使用训练集对上述几种算法进行训练,然后使用测试集评估算法的性能。测试结果如表3所示。

    表3 五种算法的对比结果Tab. 3 Comparison results of five algorithms

    从测试结果分析可以看出,本文所采用的基于网络瘦身法的YOLOv4-tiny算法的速度、模型大小、FLOPs、Params均远胜于其他四种算法。在平均精度AP上该方法分别比YOLOv4和YOLOv3低0.9%和0.2%,但参数量只为它们的1/60,FLOPs约为它们的1/30。与SSD和YOLOv3-tiny相比,在保持模型的复杂度远低于它们的同时,其平均精度AP分别比SSD和YOLOv3-tiny高出0.93%和0.1%。综上所述,本文提出的基于网络瘦身算法的YOLOv4-tiny的甘蔗茎节识别模型不仅复杂度低,对嵌入式设备和移动式设备友好,还能保持较高的识别精度。

    为了进一步降低基于YOLOv4-tiny算法的甘蔗茎节识别模型的复杂度,减少对嵌入式设备和移动式设备的算力需求,本文使用MobileNet对原算法进行轻量化结构设计和使用网络瘦身算法对原算法模型进行剪枝,并对这两种方式进行了对比分析,得出主要结论如下。

    1) 在使用轻量级网络MobileNet作为YOLOv4-tiny的Backbone来降低网络复杂度的试验中,以MobileNet v2作为Backbone的试验效果最好。在精度只下降2.08%的前提下,其模型大小、参数量和FLOPs分别为原算法模型的73.7%、37.9%和44.2%。这表明该方式可有效降低模型的复杂度,但会损失一定的准确率。

    2) 在基于网络瘦身算法的YOLOv4-tiny的甘蔗茎节识别的试验中,在精度只下降0.6%的基础上,瘦身后的模型大小、参数量和FLOPs分别为原算法模型的28%、30.1%、32.4%。与轻量化结构改进试验中表现最好的MobileNet v2-YOLOv4-tiny相比,其平均精度AP高出1.32%,且模型大小、参数量和FLOPs分别是MobileNet v2-YOLOv4-tiny的38%、85.3%和68.8%。

    因此,基于网络瘦身算法的YOLOv4-tiny甘蔗茎节检测模型在保持较高识别精度的同时,能极大地降低模型的复杂度,这为未来智能化收割的应用提供了重要技术参考。

    猜你喜欢瘦身复杂度甘蔗给自己的课“适度瘦身”教师博览·中旬刊(2022年5期)2022-05-29我的瘦身计划快乐语文(2021年34期)2022-01-18清明甘蔗“毒过蛇”基层中医药(2021年3期)2021-11-22甘蔗的问题小猕猴学习画刊(2019年8期)2019-09-16一种低复杂度的惯性/GNSS矢量深组合方法中国惯性技术学报(2019年6期)2019-03-04爱咬甘蔗的百岁爷爷特别健康(2018年3期)2018-07-04求图上广探树的时间复杂度中央民族大学学报(自然科学版)(2017年2期)2017-06-1123个甘蔗品种对甘蔗黑穗病的抗性测定中国糖料(2016年1期)2016-12-01某雷达导51 头中心控制软件圈复杂度分析与改进火控雷达技术(2016年3期)2016-02-06还说公立医院“瘦身”中国卫生(2015年5期)2015-11-08
    相关热词搜索: 甘蔗 算法 瘦身

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