机器人智能视觉感知与深度学习应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4.4 基于轻量级Ghost-YOLO模型的喷码识别

要实现多类小目标对象的高精度检测,需要强大的特征提取网络。轻量化Ghost-YOLO网络以轻量化网络YOLOv5为核心,结合Ghost模块来替换普通卷积层,可极大地减少模型的计算量,同时也减少了硬件资源使用量。

1.YOLOv5网络

YOLOv5是YOLO网络系列较新的版本,它在前期YOLOv3、YOLOv4的基础上使用了更多训练技巧来提升模型的复杂程度,从而实现了更加强大的检测能力。YOLOv5的网络结构主要从骨干网络和Neck中做了大量的细节改进。骨干网络采用了Focus结构和CSP结构。其中Focus结构中关键的是切片操作,如图1-14所示。

假定原始输入图像大小为320×320×3,输入Focus结构中,先采用切片操作变成160×160×12大小的特征图,再经过一次32个卷积核的卷积计算,最终得到维度为160×160×32的输出特征图。CSPNet(Cross Stage Partial Network)是从网络结构设计的角度来解决以往工作在推理过程中需要很大计算量的问题。CSPNet结构可以降低卷积神经网络中20%的推理计算量,同时还能增强网络的特征提取能力,非常适合应用于轻量化的网络当中。CSPNet结构通过将梯度的变化从头到尾地集成到特征图中,它的这种处理思想可以很方便地与ResNet和DenseNet等网络结合进一步地提高模型的准确率。如图1-15所示为YOLOv5中的CSP结构,其中结合了ResNet中的残差块,可以极快地加速深层神经网络的训练过程。

图1-14 Focus结构中的切片操作

图1-15 YOLOv5中CSP结构

Neck部分采用了FPN(Feature Pyramid Networks)+PAN(Path Aggregation Network)结构形式。通常目标检测算法只利用顶层的特征信息作为输出层,如图1-16a所示,主要因为高层的语义特征信息较为丰富。但图像经过多次下采样之后,高层的感受野扩大,使得目标的预测位置较为粗略,而低层的特征图感受野小,但它的语义特征信息较少。为了实现不同尺度的语义特征信息的融合,FPN结构通过自底向上的网络前向过程,采用下采样构成不同尺度的特征金字塔,然后通过另外一条自顶向下的上采样过程,与自底向上生产的大小相同的特征图的信息融合,其中具有多层语义信息融合的网络层可以用来同时预测多个尺度信息,如图1-16b所示。

PAN结构在FPN的基础上,又采用了自底向上的方式融合FPN产生的特征信息,从而保留更多的浅层特征,如图1-17所示。

YOLO系列的网络在推理得到的结果中同时包含目标类别、置信度和边框的位置、大小信息,所以YOLO系列网络损失函数的设计主要由三部分构成:类别损失Lclc、目标置信度损失Lobj和边框损失Lbox。例如在YOLOv1中,Loss的计算可以通过以下公式获得

图1-16 不同的特征预测形式

图1-17 PAN结构示意图

其中S2表示将预测端划分成S×S个网格,例如10×10、20×20、40×40。B代表每个网格的真实框(Box),的值与预测框在网格(i,j)是否存在目标相关。如没有目标落入对应网格中,则为0,为1;反之为1,为0。

在设计边框损失Lbox的问题上,YOLOv1~YOLOv3都采用的是均方误差来定义真实框与预测框的距离大小。但实际上每个边框Box的中心点和宽、高之间存在着联系,而均方误差损失函数将其中的每个参数都作为独立的变量来考虑。目标检测中常用的IoU距离评价方式可以很好地反映预测框的检测效果。

其中AB分别代表预测框和真实框,IoU(A,B)为预测框和真实框的交集面积与并集面积的比值,称为交并比。交并比有效地利用了Box的中心点和宽、高之间的关系,是一种很好的衡量预测框和真实框之间距离的方式。而采用IoU设计为边框损失,当预测框和目标框不相交时,IoU(A,B)=0,无法反映AB距离的远近,此时损失函数不可导,IoU损失无法优化。且当AB的大小都确定和AB的交值是确定值时,其IoU(A,B)是相同的,无法辨别不同的相交方式。

因此,YOLOv5中采用了GIoU来定义边框损失

LGIoU是以GIoU来设计边框损失函数,其中AB分别代表预测框和真实框,CAB的最小外接边框,如图1-18所示为ABC之间的位置关系。可以看出GIoU与IoU相似,也是一种距离度量,对物体的尺度大小不敏感。由于GIoU引入了最小外接边框C,所以在AB位置不重叠的情况下,损失函数的优化也不会受到影响。当AB两个框无重合的情况下,GIoU为-1,当两个框完全重合情况下,GIoU为1,满足作为边框损失函数的要求。同时GIoU不仅关注重叠区域,还考虑到了IoU没有考虑到的非重叠区域,能够反映出AB的重叠方式。

图1-18 预测框A与真实框B之间的位置关系

2.Ghost Bottleneck

MobileNet和ShuffleNet等轻量化网络通过深度可分离卷积和通道混洗等操作来减少生成特征图的计算量,但是引入的点卷积依然会产生一定量的计算操作。Kai Han等研究者提出了一种新颖的Ghost模块,通过使用更少的参数产生更多的特征图,其核心思想在于卷积运算产生的大量特征图中存在许多相似的特征图,把这样的特征图称为冗余特征图。在Ghost模块中可以通过简单的线性运算将其他特征图变换得到这些冗余特征图,将这些变换后得到的特征图称为“幻影”特征图。如图1-19所示,幻影模块首先采用正常的卷积操作得到通道较少的特征图,称为“内在”特征图。然后对“内在”特征图做线性变换(深度卷积操作)得到更多的特征图,最后将不同的特征图合并到一起,组成新的输出。

假定输入数据X∈h×w×c,其中hw为输入高度和宽度,c为输入通道数,对于生成n个特征图的标准卷积运算可以表示为

其中*为卷积运算,卷积核为f∈k×k×c×n,输出特征图为n为输出通道数,h′w′代表输出特征图的高度和宽度,b是偏差项。由于卷积核数量n和通道数c通常较大(常用有256个通道数或者512个通道数),所以一次标准的卷积过程计算量可达n⋅h′⋅w′⋅c⋅k⋅k。而在Ghost模块中,先通过标准卷积生成m个“内在”特征图Y′∈,其中mn。在生成“幻影”特征图的变换中,假定变换数量为s,“内在”特征图的通道数是m,最终得到的新的特征图数量是n,那么可以得到等式n=m∗s。由于Ghost变换过程中最后存在一个恒等变换,所以实际上有效的变换数量是s-1,线性运算数量为m(s-1)=n/s(s-1),假定每个线性运算的内核大小为d×d,幅度与k×k相似。那么使用Ghost模块与标准卷积过程中的加速比可以计算为

图1-19 幻影模块结构

类似的参数压缩比可以计算为

Ghost Bottleneck利用Ghost模块的优势为基础构建,类似于ResNet中的基本残差块(Residual Block),集成了多个卷积层和跳跃连接方式(shortcut),如图1-20所示。Ghost Bottleneck主要由两个Ghost模块堆叠组成。第一个Ghost模块用于扩展层,增加了通道数。第二个Ghost模块减少了通道数,以与shortcut路径匹配。最后,通过shortcut连接这两个Ghost模块的输入和输出。

3.Ghost-YOLO网络结构

为了进一步减轻深度神经网络模型对硬件资源的需求,本例在YOLOv5的基础上融合了Ghost模块的思想,将YOLOv5中的残差单元(Residual Block)替换成Ghost Bottleneck,通过产生幻影特征图来达到高维卷积的效果,同时减少了计算量。Ghost Bottleneck中加入的shortcut也可以发挥加速网络的训练过程。所提Ghost-YOLO网络整体结构如图1-21所示。假定输入图片尺寸大小为320×320,则通过Ghost-YOLO网络特征提取后可以得到10×10、20×20、40×40三个尺度大小的网格预测结果。

图1-20 Ghost Bottleneck结构图

图1-21 Ghost-YOLO网络整体结构

4.位置重复抑制方法

由于YOLO的预测端在每个网格所代表的向量最终都会产生一组预测值,因此YOLO网络的目标检测过程会产生大量的候选框,而这些候选框大都不符合真实物体检测框的要求且大量的检测框是重复冗余的。Ghost-YOLO算法在一张图片上的推理结果会产生大量的候选边界框(Bounding Box),假定每一个边界框的预测结果为[cls, confidence score,x,y,w,h]。其中,cls代表预测类别,confidence score代表预测置信度,xy分别代表预测框中心点的横、纵坐标,wh分别代表预测框的宽和高。在一个较低的置信度阈值下,会保留预测结果中较低置信度的边界框,而部分低置信度的边界框会存在大量重叠的预测框和错误的预测框。当在一个较高的置信度阈值下,预测结果中保留下的边界框由于高置信度的可靠性,提升了模型识别的精确度,但会存在部分漏检,召回率下降。

对于本例研究的多类别目标检测问题,后处理中通常需要用NMS算法分别对每一个类别的所有预测候选边界框进行筛选,如图1-22所示。为提高喷码检测对象的召回率,也就是提高所有目标对象的检出率,可以设置一个较低的置信度阈值,来保留更多的检测对象,但同时会存在大量的误检,导致精确度的下降。其原因是喷码字符检测同一位置可能会出现不同类别的预测结果。

图1-22 多类别目标检测后处理过程中的NMS流程

如图1-23所示为某喷码图像样本经过YOLOv5推理和NMS处理后得到的喷码字符的所有预测结果,其中边界框的数据经过归一化处理。从图1-23中可以看出,经过上述方法处理后的结果中,对于只有15个喷码字符(不考虑“:”字符)的检测对象在预测结果中给出了16组边界框,有两组边界框给出了几乎相同坐标位置和边框大小的预测,而类别的预测却不相同。因此,考虑到喷码字符不存在重叠这一特点,本例将传统后处理做法中对每一个类别采用NMS的过程改进为对所有类别对象同时采用NMS,并将此过程称为位置重复抑制(PDS),即在同一位置上所产生的预测结果是唯一的。具体PDS算法步骤如下所示。

图1-23 某喷码图像样本的预测结果

输入:模型推理得到Inference[](Inference[]代表所有预测类别的边界框)。

输出:优化后保留的边界框。

步骤1:将Inference[]中所有边界框按照confidence score从大到小顺序排列,设定置信度阈值为C

步骤2:从Inference[]中取出第一个边界框,将其保留在最终的预测结果中,同时把它作为临时比较对象,计算剩余边界框与比较对象边框的IoU,去除IoU大于C的边界框,在Inference[]中保留IoU小于C的边界框。

步骤3:重复步骤2,直到Inference[]为空,所有取出的边界框即为最终预测结果。

5.改进的模型自训练方法

机器学习算法需要数据驱动,而数据集又分为有标签和无标签两种,因此根据数据集中是否有标签的学习过程分为监督学习、无监督学习和半监督学习。监督学习从有标签的数据集中学习分类标签的经验,并通过该经验达到对无标签数据进行准确预测的效果。无监督学习是训练机器使用未分类和无标签数据的方法,从大量无标签的数据中寻找数据的模型和规律,例如聚类和自编码器等。但在很多实际问题中,获得原始数据的过程较为简单,而给这些数据标记上所需要的标签则需要人工花费大量的时间。因此,针对需要少量正确标签信息的数据同时又能利用好无标签的数据的情况,就需要采用半监督学习技术。如图1-24为监督学习过程和半监督学习过程,其中半监督学习问题中的关键就是如何有效地利用这些无标签的数据。

图1-24 监督学习和半监督学习过程

传统的半监督模型自训练方法过程如图1-25所示,记有标签数据集为L,无标签数据集为U。通过L训练得到模型M,用M预测U,选取预测结果中高置信度的样本补充到L中继续完成训练,然后重复上述训练过程得到最终模型。采用上述自训练方法可以很好地利用无标签数据集,理论上使得模型具有更好的鲁棒性。但该方法的主要问题在于模型迭代过程中,如果初始训练样本集中已标注样本的数量过少,则可能会出现预测结果错误标注,并通过迭代使错误逐渐被放大,最终导致错误累积。

本案例检测对象为具有复杂背景图案的喷码图像,采用的喷码产品字符(共15个字符)由生产日期加上产品型号组成,模型训练中使用的标签数据集数量远少于采集到的样本数据量,根据这一特点和传统自训练方法的局限性,提出了基于半监督学习的改进自训练方法用于模型训练,如图1-26所示,具体步骤分为如下三个阶段。

图1-25 半监督模型自训练方法过程

图1-26 改进的模型自训练方法

输入:利用有标签数据集L训练得到的模型M0

输出:优化后的模型。

步骤1:通过模型M0对无标签数据集U进行预测,并将预测结果R0加入有标签数据集L中,继续训练生成模型M1

步骤2:采用步骤1生成的模型M1对无标签数据集U进行预测,并将新的预测结果R1中满足边界框数量等于15的样本加入有标签数据集中,继续训练生成模型M2

步骤3:采用新生成的模型M2预测无标签数据集U,同时对预测结果采用PDS得到R2,将R2中预测结果的边界框数量为15的样本加入L中继续训练,得到最终的预测模型M3

改进后的自训练方法目的在于一步步地增加预测样本的可信度,可以减少错误分类样本所带来的噪声影响,提高模型的鲁棒性。

6.实验与分析

(1)实验数据集准备

利用分辨率为656×490像素的千兆视觉相机,选取了不同的时间日期,不同类型的瓶型和不同的光照条件,采集样本3万多张,通过对样本图片中心位置随机裁剪得到448×448、384×384、320×320三种不同尺寸大小的图像。使用LabelImg软件实际标注1533张有标签的数据集,如图1-27a为某样本标签的可视化展示,图1-27b为通过软件标注得到的图像XML格式标签。一个完整XML格式的标签主要包含有图像的尺寸大小h×w和每个字符的Box,Box中包含有对应字符的类别和坐标,一个Box包含的主要信息有[clc,xmin,ymin,xmax,ymax]。其中clc代表类别,(xmin,ymin)和(xmax,ymax)分别代表Box的左上角坐标和右下角坐标,图1-27b中仅展现了图像中部分Box的坐标信息。在Ghost-YOLO模型训练数据准备中,需要将XML格式标签转换成文本格式标签,转化后的文本格式标签中的每一个Box用[clc,x,y,w′,h′]表示,clc代表类别,xy分别代表Box归一化的中心点的横纵坐标,w′h′分别代表Box归一化的宽度和高度,转换过程如下所示。

图1-27 样本的标签信息

本例将其中1000张有标签样本用于训练,采用对比度增强和图像叠加等方法扩充得到3321张样本作为训练集,剩下533张作为测试集。在训练过程中还采用了Mosaic数据扩充方法,如图1-28所示。

图1-28 目标检测中数据增强方法

CutMix是将图像中一部分区域剪切掉但不填充0像素,而是随机填充训练集中其他数据的部分区域像素值,检测结果为两张图像的目标对象的结合。Mosaic每次随机加载四张图片,分别进行随机缩放、翻转、排布组合的方式拼成输入图片,进一步丰富检测物体的背景。喷码图像数据增强方法步骤如图1-29所示。

图1-29 喷码图像数据增强方法

(2)模型训练

首先,该实验在有标记的数据集上训练1000轮,设置学习率为0.01,批次大小为64,采用动量梯度下降法(Momentum SGD)优化,动量为0.9,衰减为0.000 5。然后,在预训练好的模型上加入本例改进的自训练方法,三个阶段分别训练100轮、400轮和500轮。图1-30对比了监督学习和改进自训练方法的训练样本类别的数量,可以看出通过改进后的方法添加了大量的可信目标对象,同时还在训练中增加了如类别“J”“d”“b”等少量字符类别的数量。所提模型在训练时总的损失函数分别由边框损失LGIoU、目标置信度损失Lobj和类别概率损失Lcls三部分相加得到。

图1-30 对比监督学习和改进自训练方法的训练样本类别的数量

在图1-31中的3个子图分别代表训练过程中LGIoULobjLcls的变化情况,可以看到本模型在训练过程中有很好的收敛效果,同时在引入改进的自训练方法后收敛效果有进一步的提升。

图1-31 监督学习和改进自训练方法训练损失

(3)性能评价与消融实验

在检验本章所提方法的效果时,采用精确度(Precision)、召回率(Recall)、均值平均精度(mAP)和F1值来作为评价指标。这四项评价标准的计算公式如下

其中,TP为真阳性,是预测结果中正确目标的个数;FP为假阳性,是错误目标的个数;FN为假阴性,是漏检的正确目标的个数;C为类别数,这里取17个字符类别。AP代表某类别的平均精确度,是对P-R曲线上的精确度求均值,如下式所示

其中,p(r)通过下式得到

目标检测算法的检测结果被认为是TP时,需要满足下面三个条件:

①目标置信度要大于设定的置信度阈值(Confidence Threshold);

②预测类别要匹配真实值的类别;

③预测边框和真实边框的交并比要大于设定交并比阈值(IoU Threshold)。

由于不同的置信度阈值和交并比阈值会影响检验结果中对TP、FP、FN的评判,因此下面不同方法的比较会在相同的条件下进行。

实验对比中通过设定置信度阈值为0.6,交并比阈值为0.5来对比喷码识别方法的有效性,如表1-4所示。

表1-4 不同方案的喷码检测效果对比

(续)

表中A为基本的YOLOv5方法,B、C、D为在基础版本YOLOv5上分别加入所提的改进方法。其中方案B为加入PDS方法,可以看出在模型性能没有达到很高的水平下,引入的PDS方法反而使得精确度和召回率略有下降。主要因为如果模型没有很高的精确度,PDS方法会在有冗余位置的预测上把一些正确的分类剔除,反而保留下错误的分类对象。方案C为加入改进自训练方法,可以看出该方案对模型性能的提升最大。主要因为引入的改进自训练方法增加了对预测样本的多层过滤,从而能从无标签样本中保留下更多高置信度带标签的样本,解决了一定程度上模型过拟合的问题,提升了模型表达性能。方案D为Ghost-YOLO模型,该方案是在YOLOv5模型上的改进,结果表明该方法的参数量比YOLOv5减少了25%,同时精确度和召回率略有提升。综合主要的方法,最终针对喷码检测和识别的方案为F,该方案相比于常规YOLOv5算法,在精确度、召回率、mAP和F1值等性能指标上均有很好的效果提升,精确度和召回率分别达到100%和99.99%,比常规YOLOv5方法分别提升了1.01%和1.3%。

另外,所提的喷码字符检测方案还和现有的主流目标检测方案进行了对比,不同算法分别在IoU0.5、IoU0.6、IoU0.7、IoU0.8下mAP的值如表1-5所示。可以看出所提方法在IoU0.5~IoU0.8上mAP值都高于其他方法,且随着IoU阈值的提升,mAP值相对稳定,表明所提方法定位效果十分精准。

表1-5 本例的方法和主流目标检测方法下的mAP值对比

在目标检测中,置信度的阈值会对评价标准的精确度、召回率、F1值造成影响,这由于预测结果置信度大于置信度阈值的预测框才会保留,其余的将会被剔除。一般来说精确度会随着置信度阈值的增大而提高,召回率反而会减小。图1-32为在不同置信度下不同方法的精确度、召回率和F1值的对比。可以看出,所提方法能保证精确度、召回率和F1值在一定置信度阈值的范围内始终保持在一个较高的水平上,F1值始终高于其他主流的轻量化网络方法。

图1-32 在不同置信度下不同方法的精确度、召回率和F1值