APP下载

基于改进的YOLOv3的托盘检测方法研究*

2021-08-27王平凯孙光泽朱芮萱

机电工程技术 2021年7期
关键词:边界损失聚类

王平凯,孙光泽,朱芮萱

(长春工业大学机电工程学院,长春 130012)

0 引言

卷积神经网络(Convolutional Neural Network,CNN)是一种人工神经网络[1],1998 年,LeCun[2]提出了第一个卷积神经网络模型LeNet,随着Relu 和Dropout 的提出,以及GPU 和大数据带来的历史机遇,相继诞生了AlexNet、VggNet、Gool⁃eNet、ResNet[3-6]。由于图像数据可以看作二维的像素网格,卷积神经网络通过特殊的线性运算可以处理图像数据,因此常被应用于图像处理与目标检测。

目标检测目前有一阶段(one-stage)和两阶段(two-stage)两种方法,其中,一阶段是指通过一遍网络就可以得出目标的位置和类别信息,常见的方法有括YOLO(you only look once)[7]、SSD(single shot multibox detector)[8]等。两阶段是指当输入图片通过网络后,会生成一些候选区域,这些区域可能会包含一个待检测目标,然后进一步区分这些候选区域具体包含了哪些待检测的目标。常见的方法有R-CNN(region-conventional neural network)、Fast R-CNN、Faster R-CNN、Mask R-CNN 和SPP-net(spatial pyramid pool⁃ing-net)[9-12]。

基于卷积神经网络的目标检测方法能够快速准确地定位到目标,通过辅助设备能向人类用户传递实时的场景信息。随着物流业的蓬勃发展,智能化叉车不断涌现,目标检测起了推动性的作用,除了基于卷积神经网络的目标检测方法,还有传统的检测方法。J.Pagès等[13]介绍了一个完整的计算机视觉系统,提出了基于颜色和几何特征的托盘识别方法。Mi⁃chael Seelinger等[14]提出了一种移动相机空间操作(MCSM)的视觉引导控制方法,将基准放在托盘本身,实验的精度与速度都很高,但同时需要预先给托盘添加基准和多摄像头的高成本。Sungmin Byun等[15]提出了一种基于单目视觉的托盘定位方法,该方法快速、准确,同时采用了摄像机标定技术来确定托盘的位置。

为了更好地满足实时检测的工程应用场景,本文采用YOLOv3 算法,其采用一个单独的CNN 模型实现end-to-end的目标检测[2],为了提高该算法对托盘检测的平均精度与检测速度,首先在YOLOv3算法的基础上使用K-Means++聚类算法重新聚类,得到新的适用于托盘检测的先验框。其次引入了二元交叉熵损失函数对原有的损失函数进行改进,同时改进了输入图像划分网格的机制,引入了权重矩阵,通过数据增强的手段对采集到的图像进行扩充。最后在本文制作的数据集上进行训练以及测试,并与其他的目标检测算法进行比较,结果表明改进后的YOLOv3算法在平均精度以及速度上都有提升。

1 YOLOv3基本原理

YOLOv3将目标检测作为一个空间分离的边界盒和相关类概率的回归问题,单个神经网络可以在一次评估中直接从完整图像中预测边界框和类概率[7]。通过对输入图像的特征提取,得到一定大小的特征图,然后将得倒的特征图像划分成S×S的网格,当图像中某个目标的中心位置落入到其中的一个网格,那么该网格将会负责预测该目标。每个网格都会预测B 个边界框,该网络会预测3 个固定数量的边界框,通过K-means聚类得出9种尺寸的Anchor Box,分别为10×13、16×30、33×23、30×61、62×45、59×119、116×90、156×198、372×326。

在网络中实际训练的参数为tx、ty、tw、th,其中tx、ty为预测的坐标偏移值,tw、th为尺度缩放值。在先验框的基础上通过平移加尺度缩放进行微调,得到最终的边界框坐标值(x,y,w,h),分别表示检测框的横坐标、纵坐标、宽度和高度。Bounding Box 与Anchor Box的对应关系如图1所示。

图1 Bounding Box 与Anchor Box的对应关系

Bounding Box的坐标计算公式为:

式中:bx、by、bw、bh分别为Bounding Box 的中心坐标、宽度和高度;cx、cy分别为当前单元网格相对于图像左上角的横纵偏移量;pw、ph分别为对应Anchor Box 的宽和高;σ 为Sig⁃moid激活函数。

每个边界框有(x,y,w,h,confidence)5个基本参数,其中confidence为预测边界框的置信度,其计算公式为:

式中:P(object)为网格中含有某类目标的类别概率,为真实边界框和预测边界框的交并比。

采用逻辑回归方式对先验框进行目标性评分,通过非极大值抑制方法从9种不同尺寸的先验框中找到目标存在可能性得分最高的。最终输出特征图的尺度为13×13、26×26 以及52×52。

2 改进的K-means聚类算法

在目标检测中,选择合适的先验框可以显著提高目标检测的速度和精度。Yolov3 使用的先验框思想是从Faster-rcnn中引入的,其是一个具有固定宽度和高度的初始候选框。Yo⁃lov3 算法在mscoco 和pascal voc 数据集上通过使用K-means 聚类算法得到9 组先验框,分别为(10,13)、(16,30)、(33,23)、(30,61)、(62,45)、(59,119)、(116,90)、(156,198)、(372,326),但是,在COCO 和VOC 数据集中使用的先验框并不适合本文使用的托盘数据集。因此,本文采用K-means++算法对托盘数据集的w和h进行重新聚类。本文使用AvgIOU 作为目标的度量标准进行聚类分析,AvgIOU 聚类的目标函数如下:

式中:nk为第k 个聚类中心的样本数量;K 为样本总数;n 为聚类个数;bbox为样本手动标注的矩形框的值;center为簇中心;IOU(bbox,center)为样本和聚类的交并集。

本文采用训练中生成的当前迭代中交并比IOU(Intersec⁃tion over Union)参数替代K-means 算法中的欧几里得距离,其评估标准为:

式中:d(bbox,center)为边界框与中心框之间的距离;IOU(bbox,center)为两个框的交并比。

当d(bbox,center)的值较小时,说明聚类的效果好,同时IOU(bbox,center)的值较大,这样才能保证1-IOU(bbox,center)的值较小。这种聚类方法可以在同一聚类中产生较大的交并比和较小的两个框之间的距离。

本文对样本信息重新聚类,选取的k值为1~9,在聚类过程中发现随着k值增加,平均交并比AvgIOU也呈现逐步上升的趋势,当k=6时出现拐点,此时为最佳的预测框数量。本文中数据集对应聚类中心的宽和高分别为(23,13)、(66,22)、(143,30)、(163,47)、(219,56)、(340,70)。该聚类方法可以加快网络的收敛速度,有效的改善训练过程中的梯度下降。

3 改进的损失函数

损失函数是一种可以很好地反映模型与实际数据差距的工具。在神经网络的正向传播过程中生成损失函数,同时得到的损失函数也是反向传播的起点。该网络中的损失函数包括中心坐标的损失、预测边界框的损失、置信度的损失和预测类别的损失。本文应用以数据的最大似然法则得到交叉熵来作为损失函数,在YOLOv3目标检测中,通过对输入图像的特征提取,得到一定大小的特征图,然后将得到的特征图像划分成S×S的网格,在coco、voc数据集上,先验框在x轴和y轴上同等密度分布。但是在实际的托盘检测中,托盘实际的成像呈现出在y轴稀疏、在x轴上相对密集的形态,因此为了降低划分输入图像网格的长宽比例对目标检测所带来的影响,调整划分网格的机制,将原来的S„S 的尺寸更改为大小为2S„S,增加了沿x 轴方向的检测密度。同时为了提高对托盘分类的准确性,避免进行错误的分类,引入了权重矩阵T,T=[T1,…,Ti],表示不同类别的目标分类错误的惩罚权重。改进后的损失函数为:

式中:L1为预测中心坐标的损失函数;λcoord为坐标误差的权重参数,在该网络中λcoord=5;B 为该网格具有的Bounding Box 个数;为有无目标对象中心落在预测边界框中,当需要被识别的目标落入到第i 个网格生成的第j 个边界框中时,分别为预测框的宽度和高度;为真实框中心点的横纵坐标;为预测框中心点的横纵坐标。

式中:L2为预测边界框的损失函数;分别为真实框的宽度和高度。

式中:L3为置信度的损失函数;为预测的置信度;ci为真实的置信度;λnoobj为不含目标的置信度权重参数,在该网络为第i个网格的第j个边界框不负责该目标。

式中:L4为类别概率的损失函数;pi(c) 为类别概率预测;为真实的类别概率预测。

4 数据集的建立

4.1 图像增强

由于没有专门用来识别托盘信息的数据集。因此本文在实际的仓储环境中进行了托盘图片的采集,数据集中的数据越大,整个网络的鲁棒性就越好。本次采集到的图片935张,为了提高整体网络的性能,增加识别精度,提高泛化能力,通过数据增强的办法将原始图片进行处理来扩充数据集。本文用来数据扩充的方法有3种:第一种方法包括镜像对称、翻转、缩放、平移和随机裁剪;第二种方法为添加噪声,在扩充数据样本的同时,也有效地提升了神经网络的学习能力;第三种方法为对比度变换。扩充之后部分数据集如图2所示。

图2 对原有图片进行数据增强

4.2 图像标注

在完成数据扩充之后,借助LableImg 标注工具进行数据集的标注,找出每张图片中的感兴趣区域(ROI),并用矩形框将其标注生成xml格式的文件,如图3所示。将标注后的数据通过修改生成训练所需的数据形式,其中包括类别,还有归一化后的中心点横坐标、纵坐标、宽、高。该研究运用的是和PASCAL VOC 2007 数据集一样的结构,分为训练集、测试集和验证集。

图3 标注数据集

5 实验结果及分析

5.1 实验环境

本文实验基于Ubuntu 18.04操作系统,CPU 为Inte⁃li9-9900k,主频为3.6 GHz,内存32G,显卡为NVIDIA Ge⁃Force GTX1080Ti,显存为8 GB,深度学习框架为Dark⁃net-53,CUDA版本为10.0,CUDNN的版本为7.6.4。

5.2 参数配置与模型训练

本研究对包含尺寸大小为416×416 的5 000 张训练集图片、2 000张测试集图片的托盘数据集进行训练。在准备训练之前将参数batch 设置为64,表示网络积累64 个样本进行一次正向传播,将subdivisions设置为16,这样64个样本将会分为16 次完成正向传播,每次4 个样本数量。初始学习率设为0.001,动量系数设置为0.9,权重衰减率设为0.000 5,配置完训练参数后随即对模型进行训练,当迭代次数到达3 000次,学习率衰减为初始值的0.1 倍;当迭代次数到达3 500次,学习率进一步衰减为初始值的0.01 倍。损失值随着迭代次数变化的曲线如图4所示。

图4 损失值随迭代次数变化曲线

可以看出,损失值随着迭代次数的上升而逐渐降低,当迭代次数小于2 000 时,损失值迅速下降,当迭代次数达到8 000时,损失值逐渐趋于平稳。检测效果如图5所示。

图5 托盘识别效果

6 对比实验与评价指标

6.1 对比实验

在目标检测中,目前比较常用的目标检测网络包括Faster RCNN以及SSD,在基于本研究的数据集上,对Faster RCNN以及SSD网络进行训练与测试,对比分析各种算法的性能。如表1 所示,对比的内容包括检测速度、mAP 值、AP 值以及漏检率,本文用IOU=0.5,也就是PASCAL VOC数据集常用的指标这一标准来作为准确性评估的方法,当IOU=0.7时,是实际工程应用中的标准。由表可以看出,本文的算法相较于YOLOv3在检测速度上由45 帧/s 提升至47 帧/s,当IOU=0.5 时,mAP 由91.4%上升至94.6%,提高了3.2%,漏检率由8.7%降至5.9%,降低了2.8%。由此可以看出本文使用K-Means++算法进行重新聚类以及改进的损失函数,可以提高对托盘的检测速度与检测精度。

表1 不同网络结构的测试性能对比

6.2 评价指标

为了评估该模型对托盘孔的检测效果,使用精确率(Pre⁃cision)和召回率(Recall)对模型进行评价。通过这两个指标可以对模型的准确性进行评估。两个指标的计算公式分别为:

式中:Precision 为托盘的精确率;TP 为一个正例被预测为正例,在这里表示的是正确检测到的托盘样本数;FP为一个负例被预测为正例,表示的是检测的误差样本数;Recall为托盘的召回率;FN为一个实例被预测为负例,表示的是错过检测的托盘样本数量。

不同网络结构的测试对比如表2所示,由表中数据可以看出,本文改进的检测算法在测试集上所得到的评价指标Preci⁃sion和Recall都要优于未改进的YOLOv3,Faster RCNN和SSD。

表2 不同网络结构的测试对比

7 结束语

为了解决仓储环境中对托盘以及货物的实时检测,本文对原有的YOLOv3算法进行改进。为了提高对检测物体的平均精度以及检测速度,首先运用K-Means++算法重新聚类出更合适的Anchor Box,然后调整划分网格机制,改进损失函数。并与其他算法在本文制作的数据集上进行测试,采用在不同IOU 情况下的mAP 值、AP 值、漏检率以及检测速度、Preci⁃sion和Recall来联合评价本文算法与其他算法的性能。虽然本文算法在托盘实时检测以及分类方面取得了令人满意的结果,但其性能还有待进一步提高。

猜你喜欢

边界损失聚类
拓展阅读的边界
胖胖损失了多少元
意大利边界穿越之家
基于K-means聚类的车-地无线通信场强研究
玉米抽穗前倒伏怎么办?怎么减少损失?
论中立的帮助行为之可罚边界
基于高斯混合聚类的阵列干涉SAR三维成像
一般自由碰撞的最大动能损失
损失
一种层次初始的聚类个数自适应的聚类方法研究