当前位置:首页 期刊杂志

基于改进的SSD深度学习算法的双目视觉纱筒识别定位

时间:2024-09-03

倪奕棋,管声启,2,管宇灿,卫艳芳,胡璐萍

(1.西安工程大学 机电工程学院,陕西 西安 710048;2.绍兴市柯桥区西纺纺织产业创新研究院,浙江 绍兴 312030;3.山西大同大学 计算机与网络工程学院,山西 大同 037009)

0 引 言

近年来计算机视觉技术的发展,为纱筒的自动识别定位提供一种新的思路,高效的视觉识别定位也是机器人实现上纱的关键技术之一[1]。王纪程等提出了一种ORB+RANSAN特征匹配算法,搭建了双目视觉模型对工件进行三维重建,消除了误匹配,实现了工件的识别与定位[2]。任慧娟等通过视觉系统获取了多目标纱筒图像,基于颜色特征实现了不同颜色纱筒的识别定位与分拣[3]。李毅等利用Kinect V2相机获取纱筒的图像和深度信息,通过构建二维图像与三维空间转换的模型,实现了纱筒的三维质心定位[4]。传统的视觉方法对特定的目标进行识别定位精度较好,但是都需要手动提取目标特征。

随着深度学习技术的迅速发展,卷积神经网络(convolutional neural network, CNN)在图像分类、目标检测和语义分割等多个领域都取得了突破性进展[5],为目标的识别与定位提供了一种新的思路。金守峰等提出一种基于对抗神经网络和神经网络模型的筒子纱抓取方法,利用生成式对抗网络(generative adversarial networks ,GAN)扩充筒子纱数据集,并利用Faster R-CNN实现了纱筒的识别与定位[6]。欧攀等提出基于Mask RCNN的目标识别定位方法,利用改进的Mask RCNN算法对Kinect深度传感器采集的RGB图像进行目标的识别与分割,并建立二维到三维空间的转换模型,实现目标的空间定位[7]。杨长辉等构建了基于CNN和采摘机器人的识别定位系统,利用YOLO V3目标检测模型和深度图映射获取了目标和障碍物的三维信息[8]。

双目视觉与深度学习的结合也取得了相关的进展。童基均等提出基于深度学习的识别与定位方法,利用SSD目标检测算法模型和双目相机组成的双目视觉系统实现了运动目标的实时识别和定位[9]。董鹏等将一种双目视觉与YOLO V3相结合,通过YOLO V3实现海参的识别,利用搭建的双目视觉系统获取了海参的三维信息,实现了海参尺寸的自动测量[10]。基于深度学习的识别与定位方法模型参数量较大,且识别的精度和速度还需要进一步提升。

为了提高机器人上纱过程中对于多种颜色纱筒识别定位的准确率,本文提出了一种基于改进SSD深度学习算法的双目视觉纱筒识别定位方法。在原始SSD深度学习算法的基础上,引入轻量化的MobileNet V3和特征融合模块,实现了纱筒的识别。然后,利用双目视觉原理实现纱筒的定位。

1 纱筒识别定位方法

1.1 纱筒识别定位原理

改进的SSD深度学习算法的双目视觉纱筒识别定位过程,如图1所示。

图 1 纱筒识别定位Fig.1 Bobbin identification and positioning

首先,对双目相机进行标定,并加载标定参数,完成纱筒图像的采集;其次,将左相机采集的纱筒图像作为改进SSD深度学习算法训练所需要的测试集和验证集,完成算法的训练和测试;最后,将双目相机校正后的图像输入改进的SSD算法实现纱筒的识别,获得左右图像中的纱筒目标,并通过双目视觉立体匹配和视差计算,获得纱筒的深度距离信息,最终实现纱筒的定位。

1.2 纱筒定位方法

单目相机进行纱筒定位时,需保持纱筒与相机的距离一定,定位误差较大。通过双目相机可在纱筒识别的基础上实现纱筒的有效定位。双目视觉系统[11]采用2个相机平行放置,从不同视角对物体进行观察,通过左右图像差异计算纱筒距离,见图2。

图 2 双目视觉成像原理

图2中,Ol-XlYlZl和Or-XrYrZr分别为左右相机坐标系。设空间一点P(Xc,Yc,Zc)在图像平面C1和C2上的点分别为pl(xl,yl)和pr(xr,yr)。由于2个相机水平放置,因此yl=yr。由三角形关系可得

(1)

式中:f为左右相机的焦距;B为2个相机的基线距离。在已知基线B和焦距f的情况下,获得视差d后,即可计算空间点P到相机的距离Zc,可表示为

(2)

2 纱筒识别算法

2.1 SSD算法

SSD算法是一种高效快速的深度学习目标检测算法[12],融合了Faster R-CNN[13]的候选框机制和YOLO[14]的回归思想。该算法是一种直接预测图像中目标位置和类别的深度学习算法,可以针对不同大小的目标进行识别,其网络结构如图3所示。

图 3 SSD网络结构Fig.3 SSD network structure

从图3可知,SSD算法将VGG16[15]作为主干特征提取网络,其最后2层全连接层改为卷积层Conv6和Conv7,并在主干网络之后加入了一系列卷积层。网络模型采用了特征图金字塔的方法,提取了卷积层Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2和Conv11_2的输出特征图用于预测,对应的输出特征图大小为(38,38)、(19,19)、(10,10)、(5,5)、(3,3)、(1,1)。

每层输出特征图会生成多个长宽比不同的默认框,每个默认框会对目标的类别和位置参数进行预测,第i层特征图的默认框大小Si可表示为

(3)

SSD算法的综合性能较好,但是VGG16的参数量较为庞大,且各个网络层之间相互独立,对网络浅层语义信息表达能力不足。

2.2 改进的SSD算法

针对上述问题,本文提出一种改进的SSD算法用于纱筒图像的识别。首先,将轻量化的MobileNet V3[16]替换VGG16,作为主干特征提取网络,减少了网络模型的参数量;其次,在网络结构中加入了特征融合模块,增强了网络浅层的特征提取能力和上下网络层的联系,改进后SSD算法的网络结构如图4所示。

图 4 改进SSD网络结构Fig.4 Improved SSD network structure

图4中的300×300×3表示输入大小为300×300,通道数为3的特征图。改进SSD深度学习算法的主干网络由2个普通卷积层Conv和多个Bneck结构组成,并且移除了MobileNet V3中最后的平均池化层和1×1的卷积层。主干网络后面添加了多个卷积层进行特征提取,其中卷积层Conv9、Conv10_2、Conv11_2和Conv12_2的输出特征用于算法的预测。

MobileNet V3网络中的Bottleneck(简称Bneck)综合了MobileNet V1[17]的深度可分离卷积和MobileNet V2[18]的逆残差结构,并且加入了轻量级注意力SE模块[19],该模块能够建立通道之间的联系,提升网络性能。Bneck结构如图5所示。

图 5 Bneck结构图Fig.5 Bneck structure diagram

图5中的Conv1×1表示大小为1×1的普通卷积,DW Conv3×3表示3×3深度可分离卷积,右侧分支为SE注意力模块,左侧分支为逆残差结构。Bneck结构可以提升网络结构的深度,增强网络的特征提取能力,并且防止梯度爆炸现象的产生。

H-swish激活函数的非线性在保证模型精度的同时,提高了模型运行的速度,MobileNet V3引入H-swish激活函数,可表示为

(4)

式中:g(x)为Relu6激活函数,且g(x)=min(6,max(0,x))。

改进的SSD算法从Bneck4_3和Bneck6_3提取输出特征图进行预测,相比VGG16中的Conv4_3,所处的网络层较浅,为了充分利用上下文信息,本文提出了特征融合模块,如图6所示。

图6中,特征融合模块将Bneck4_3和Bneck6_3的输出特征分别与浅层和深层的输出特征进行融合,增强了浅层网络的特征提取能力。为了实现不同尺度特征图的融合,浅层网络经过1×1卷积、3×3卷积、BN层和Relu激活函数;深层网络经过1×1卷积、BN层、Relu激活函数和上采样,从而保证浅层和深层的特征大小与Bneck4_3和Bneck6_3一致,以便将三层特征图的输出进行拼接融合操作。为了保证输出的特征具有可分辨性,拼接融合后的输出经过3×3卷积、BN层和Relu激活函数,消除了冗余的信息,为网络模型引入了一定的非线性属性。特征融合模块的输出结果用于算法的预测。

图 6 特征融合模块结构图Fig.6 Feature fusion module structure diagram

2.3 损失函数

改进的SSD算法需要对纱筒的位置和颜色种类进行回归,通过损失函数计算预测值和真实值之间的误差。损失函数包括位置损失和置信度损失,可表示为

L(x,c,l,g)=1/N(Lconf(x,c)+

αLloc(x,l,g))

(5)

式中:x为真实框和预测框是否匹配,x∈{0,1};c为分类置信度;α为位置和置信度损失的平衡系数,默认为1;l为预测框位置;g为真实框位置;N为正样本的数量;Lloc为位置损失;Lconf为置信度损失。

3 结果与分析

3.1 实验环境与数据集

实验平台的配置:内存为16 GB,GPU型号为NVIDIA GeForce RTX2060,CPU型号为Intel i7-9700HQ,操作系统为Windows 10,采用Pytorch深度学习框架和Python编程语言。

数据集来源于人工采集,利用双目相机采集9种不同颜色的纱筒图像共6 000张。为了避免模型发生过拟合,对左相机采集的3 000张图像进行翻转、旋转、裁剪、色域变换等数据增强方法,扩充后数据集包含6 000张纱筒图像,将其中4 800张图像作为训练集,剩余的1 200张图像作为测试集。

3.2 改进SSD算法模型训练策略及评价指标

本文改进SSD算法的训练迭代轮次设置为200,每一轮次需要迭代300次才能将训练数据全部训练完成,因此,训练过程总共迭代了60 000次。前30 000次的学习率设为0.000 1,后30 000万次的学习率设为0.00 001。动量因子表示训练时损失函数的值下降的趋势,设为0.9,图像批处理大小设置为16。

本文实验采用平均精度[20]作为算法识别精度的评价指标。本文算法中精度表示识别每种颜色纱筒的准确率,精度PA表示为

(6)

式中:P表示精确率;R表示召回率。

平均精度可表示为

(7)

式中:N表示数据集中纱筒颜色总的类别个数。

算法的识别速度采用FPS进行评估,即算法每秒钟识别图片的数量。

3.3 纱筒识别结果与分析

3.3.1 改进SSD算法性能分析 改进SSD算法的训练损失函数曲线如图7(a)所示,并且为了验证改进SSD算法的收敛速度和收敛的稳定性,将改进的SSD算法与SSD、Faster R-CNN和DSSD 3种算法的损失函数曲线进行对比。为了更加清晰地对比收敛效果,这里选取每一轮次的总损失值作为对比数据,只选取了前100轮次的训练损失变化,后100轮次的损失值都在一个小范围内震荡,因此不进行对比,如图7(b)所示。

(a) 改进SSD算法的训练损失函数曲线

(b) 不同算法的损失函数曲线对比图 7 损失函数变化曲线Fig.7 Loss function curve

训练过程中的损失函数通过式(5)进行计算,包括位置损失函数、置信度损失函数和总损失函数,由图7(a)损失值的变换曲线可知,经过不断的迭代,前10 000次迭代的损失值迅速减小直至稳定,后面的训练过程中,损失值在小范围内发生震荡,算法达到了收敛[21]。由图7(b)4种算法的损失函数变化曲线可知,4种算法进行训练时,最终都达到了收敛,但是改进后的SSD算法相对于其他3种算法而言,损失函数曲线更加平滑,算法的收敛速度更快,损失值震荡的范围和损失值也更小。由此可见,改进的SSD算法在保证收敛性能的同时,具有较好的鲁棒性。为了验证算法的综合性能,分别在测试集中对4种算法进行测试,统计的识别结果如表1所示。

表 1 纱筒数据集的算法实验结果

从表1可知, 改进SSD算法的PmA为94.6%,相比于Faster R-CNN、SSD和DSSD分别提升了5.3%、6.2%和2.8%。从算法的网络模型大小来看,前3种算法的网络模型较大,而改进SSD算法的网络模型大小有大幅度降低,可以布置在嵌入式平台上运行。从识别速度来看,本文算法的每秒传输帧数相比于其他3种算法,均有所提升,达到了52.3,可以满足实时识别的要求。改进的SSD算法在保证识别精度的情况下,减少了网络模型大小,提升了识别的速度。

3.3.2 改进SSD算法识别效果 本文采集的纱筒图像数据集总共包括9种颜色,分别是红色、黄色、蓝色、绿色、白色、黑色、杏色、棕色、银色。随机选取部分纱筒图像进行识别结果的验证,如图8所示。

(a) 单一颜色

(b) 少量颜色混合

(c) 多种颜色混合图 8 纱筒数据集部分识别结果Fig.8 Partial recognition result of bobbin data set

由图8可以看出,改进的SSD算法针对单一颜色、少量颜色混合和多种颜色混合状态下的纱筒,均具有较好的识别准确度。改进的SSD算法对于颜色区分度不明显的黄色纱筒和杏色纱筒、白色纱筒和银色纱筒,还有和背景具有较大相似度的黑色纱筒,都能够准确识别,算法的鲁棒性较好。改进的SSD算法通过替换主干特征提取网络减少了网络模型的参数量,保证识别准确度的同时提升了识别速度。特征融合模块可以增强网络浅层的特征提取能力,对颜色的敏感度较强,提取多种纱筒颜色特征的能力较强。

3.4 双目视觉的纱筒定位分析

利用改进的SSD算法对双目相机校正后的纱筒图像进行识别,通过双目视觉技术完成纱筒在三维空间中距离的测定。为了验证本文双目视觉的方法在不同距离的情况下,纱筒的定位效果,实验过程中,调整相机与纱筒的距离,每隔100 mm进行一次测试,选取5次测试结果的平均值,并进行误差计算。实验结果如表2所示。

表 2 深度测试距离与实际距离的比较

从表2可知,本文方法的最大误差为2.78%,最小误差为0.6%,平均误差为1.63%,利用双目视觉进行纱筒的定位,对于纱筒在三维空间中的距离测定准确率较高,定位误差较小,为后续机器人上纱提供基础技术支持。

同时,在纱筒识别的基础上实现了对纱筒的定位,通过深度学习的方法可以有效提取纱筒的特征,识别出目标纱筒在图像中的位置和类别信息。利用双目视觉定位方法分别在改进的SSD算法、SSD、Faster R-CNN和DSSD 4种算法识别纱筒的基础上,发现纱筒定位误差分别为1.63%、2.24%、2.07%和1.88%。相比于其他3种算法,改进的SSD算法的定位误差最小。

4 结 语

本文利用改进SSD深度学习算法和双目视觉技术,实现了纱筒的自动识别定位。改进后的SSD算法将轻量级的MobileNet V3作为主干特征提取网络,并加入特征融合模块,不仅减少了网络的参数量,同时对图像具有较好的特征提取能力。改进后的SSD算法具有更快的收敛速度,识别的平均精度达到了94.6%,识别的每秒传输帧数达到52.3。通过双目视觉原理获取纱筒图像目标在世界坐标系下的深度距离信息,最终实现了纱筒的定位,定位平均误差为1.63%。本文的方法可以提高多颜色纱筒识别定位的准确率,下一步需要对不同形状尺寸的纱筒和堆叠遮挡状态下的纱筒识别定位问题进行研究。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!