基于深度学习的目标分拣教学实验系统

2023-12-01 03:44张银胜单慧琳何秉坤郭子民
软件导刊 2023年11期
关键词:置信度舵机损失

张银胜,单慧琳,何秉坤,郭子民

(1.无锡学院 电子信息工程学院,江苏 无锡 214105;2.南京信息工程大学 电子与信息工程学院,江苏 南京 210044)

0 引言

机器学习作为人工智能等专业的必修课,也可作为电子信息类专业的选修课,教学目标是使学生理解机器学习的基本问题和算法,掌握相关实践方法,为学生今后从事相关领域的研究工作奠定坚实的基础。该课程的实验教学侧重于电子信息与人工智能相结合,内容设计一般以示例入手,逐步推进,以体现算法思想与基本原理。其中,目标分拣是实验项目的重点,传统实验教学通常在虚拟仿真环境下完成,利用计算机技术模拟目标进行分拣,虽然仿真实验存在效率高、可重复性强、成本低等优点,但直观性差、模型准确性低,存在数据缺乏和验证不确定性等问题。因此十分迫切需要设计一种目标分拣实验系统。

特征提取是目标分拣的关键技术,卷积神经网络(Convolutional Neural Network,CNN)可自动提取图像特征,模型提取的特征随着网络深度增加越来越抽象,识别能力更强。Krizhevsky 等[1]提出AlexNet,在ImageNet 数据集上达到15.3%的top5 错误率,远超其他传统特征提取方式。2015 年,GoogleNet[2]、VGG[3]、ResNet[4]和DenseNet[5]相继被提出。Wang 等[6]使用ResNet 网络作为卷积层,提出自动检测系统,有效解决了区域误检问题。Vo 等[7]修改原始ResNet 模型,在全局平均池化层后添加两个全连接层,能快速实现分类模型的稳定和泛化。董子源等[8]提出一种注意力机制模型,通过全局、局部特征提取与特征融合机制等手段建立图像分类模型GCNet,以获得更完善、有效的特征信息,但实验过程较复杂。Song 等[9]提出基于Inceptionv4[10]和ResNet 的自动分类网络DSCR,解决了由于使用缩减模块而导致模型过于敏感的问题,但分类效率较低。YOLOv3 算法[11]在牺牲少量精度的前提下,取得了较高的检测速度。张静等[12]通过减少YOLOv3 特征提取网络中卷积层的层数,以提升模型精度和速度,但对类间差距不明显的目标存在误检现象。

目前,深度学习逐步应用于课程实验教学中。张飞等[13]开发了机器人抓取实验教学系统。邱益等[14]开发了平面无序列抓取实验系统。孙友昭等[15]开发了自动化控制仿真实践教学平台,取得了一定的实践教学成效。然而,上述实验教学系统的功能集中在实验操作本身,技术较陈旧,在检测速度、精度上落后于新技术。

为此,本文提出一种基于深度学习的目标分拣教学实验系统,聚焦目标源头进行分类和控制操作,使学生既能通过算法优化、设计和操作验证目标检测算法,还能通过实验数据分析目标分拣算法的结果。

1 实验系统组成

在虚拟仿真教学中,目标分拣存在实验过程复杂、成本高等问题。为了解决该问题,本文教学实验系统围绕目标识别分类的算法实现、分拣操作等教学要求,简化硬件设计,聚焦目标采集、识别、分类、分拣操作等主要功能。其中,目标分拣实验的教学要求是学习并掌握目标检测与分拣的基本原理,通过软、硬件的综合设计,实现目标检测与分拣,可选择元器件、水果等目标进行实验,学生可通过改进检测算法提升目标检测的速度和精度。系统总体结构如图1所示。

Fig.1 Overall system structure图1 系统总体结构

由图1 可见,系统主要包括主控模块、摄像头、机械臂、分拣模块等。主控部分由Jetson Nano 和STM32 芯片组成,二者间采用串口进行通信。首先由摄像头将拍摄到的目标图片传输至Jetson Nano;然后由Jetson Nano 根据目标检测算法识别、分类目标,同时STM32 对目标当前位置进行三维坐标转换,控制机械臂进行抓取,通过分拣模块实现自动分拣。分拣模块主要由STM32芯片、42步进电机、6个舵机及7 个光电传感器组成。其中,STM32 负责控制42步进电机带动传送带运送物料;光电传感器起开关作用,当物料落至传送带时光电传感器检测到物料,并反馈给STM32,随后STM32 驱动步进电机转动;舵机主要完成分拣挡板的旋转运动,驱动挡板与传送带形成45~60°夹角,使传送过来的物料落至分拣槽,分拣槽内置的光电传感器发出分拣完成信号,再由STM32 控制各部分电机完成复原操作。

2 改进YOLOv3的目标检测算法

2.1 YOLOv3算法

YOLOv3 网络结构如图2 所示,整个框架分为主干网络(Darknet-53)、特征层融合和分类检测3个部分[16-18]。

Fig.2 YOLOv3 network structure图2 YOLOv3网络结构

由于YOLOv2无法处理大尺度与小尺度物品数据的图片,YOLOv3 采用3 个不同大小的网格划分原始图像,通过金字塔网络解决该问题。预测大物体时使用13×13 的网格(具有最大感受野),预测中等物体时使用26×26 的网格(中等感受野),预测小物体时使用52×52 的网格(较小感受野)。

YOLOv3 的损失函数是在YOLOv2 的基础上改进所得,将分类损失替换为二值交叉熵损失,损失函数由目标置信度损失、目标类别损失和目标定位偏移量损失相加所得,具体计算公式如式(1)所示。

式中:λ1、λ2、λ3为置信度误差、类别误差与偏移量误差的权重,分别表示对应误差在损失函数中所占权重;Lconf(o,c)为目标置信度损失;Lclɑ(O,C)为目标类别损失;Lloc(l,g)为目标定位偏移量损失。

目标置信度为检测目标矩形框内,存在被测目标的概率,目标置信度损失采用二值交叉熵损失,具体计算公式如式(2)所示。其中,通过Oi∈(0,1)表示检测目标是否在预测目标边界框i内,0 代表不存在,1 代表存在。预测值采用Sigmoid 函数计算,代表预测目标边界框i内真实存在目标的Sigmoid 概率,如式(3)所示。

式中:ci表示预测值。

2.2 改进YOLOv3算法

2.2.1 特征提取网络

为了解决Darknet-53 网络在前向特征提取时,参数量和计算量较大的问题[19-20],本文采用轻量级网络Mobile-NetV2 进行前向推理。MobileNetV2 的网络结构如图3所示。

Fig.3 Network architecture of MobileNetV2图3 MobileNetV2的网络结构

MobileNetV2 模型虽然具有较高的分类效率,但在仅使用低维度提取特征时,提取的目标特征有限。为此,在深度可分离卷积前使用1×1 的网络结构,将高维度特征值映射在低维度空间内,在计算深度可分离卷积后,再利用扩展连接层将计算的低维度信息传入下一层卷积网络,以减少通道数、计算量和运算时间。

实验表明,在连接过程中采用扩展6 倍的分离卷积网络能较好的满足运算需求,同时该模型采用1×1 的卷积核进行维度转换过程。考虑到原有激活函数ReLU 在反向输入情况下不会激活神经元,在大梯度运算时会导致状态无法激活,造成目标物体进入网络时丧失目标信息或信息被破坏的问题。因此,在升高维度时将激活函数ReLU 替换为线性激活函数,以确保在降维过程中最大限度地保留目标信息。

在主干网络内部,在信息处理时,Darknet-53 使用标准卷积融合相邻的两层特征层。然而,当面对混在一起的物品时检测效果较差,并且特征金字塔结构(Feature Pyramid Networks,FPN)过深会增加目标检测的计算量。为此,本文系统采用分组卷积和逐点卷积替换标准卷积,在此结构下相同输入模型的卷积个数仅为Darknet-53 网络的1/3,以此提升模型检测速度和精度。

综上所述,MobileNetV2 网络采用深度可分离卷积操作大幅减少了网络的运算量和参数量,既降低了网络复杂度,又提升了网络推理速度与检测模块的运行速度。

2.2.2 特征尺度

YOLOv3 网络直接使用1×1 多维度卷积核,替换传统YOLOv2网络使用的3×3与5×5的多维度,既能达到传统网络卷积核的性能,还能节约90%的计算效能,减少模型所需参数和计算维度。同时,3×3 与5×5 多维度卷积核采用传统特征图进行线性有机结合,实现跨通道的信息交互与资源整合,1×1 的多维度卷积核仅需一个特征图就能有效表示在多维度通道间的交互。

在各不同物体分类的任务和回归压缩为0 到1 的置信度方面,1×1 卷积核有效替代了作为分类器的完全连接层(Fully Connected Layers),在视觉任务方面降低了大量计算量,既节约了实际部署能源消耗,又降低了算力。

2.2.3 损失函数

YOLOv3 中主干网络Darknet-53 会输出3 种不同尺度的特征图,分别对应不同尺度的Loss 函数,需要将最终的计算损失结果求和后再进行反向传播。

在判断物体的过程中会出现正例、负例和忽视3 种情况,因此在输入特征图中应统计边界框数量,针对特征图中识别出的每一个对象,选择交并比(Intersection over Union,IoU)最大值为正例,边界框如果大于0.5 则忽视,剩余的为负例。

在实际计算过程中会出现背景错误检测的问题,对于训练图片的真值(Ground Truth),若中心点在某个区域内,同时另一个物体的中心点恰好也在此处,则将该区域内所有框体与Ground Truth 值进行匹配,选择最优值作为预测框体进行计算,其余框体继续按照流程进行剔除。

此外,本文增加Focal Loss 函数修正模型,根据样本分辨的难易程度给样本损失添加权重。在实际应用中,置信度高的负样本在总体样本中占比较大,剔除或减弱该部分损失能明显提升损失函数的效率,因此在交叉熵前加入权重因子形成新的损失函数,如式(4)所示。

式中:log 为交叉熵损失函数;γ为权重的参数,当γ>1时,能取得更好的效果(默认值为2);Pt为目标物体的置信度,为容易区分的样本(置信度接近1 或接近0)添加较小的权重α1,为难分辨的样本(置信度在0.5 附近)添加较大权重α2,如式(5)所示。

综上,损失函数的计算取决于样本的区分难度,采用Focal Loss 在处理类不均衡问题时,效果优于传统YOLOv3算法中使用的损失函数。

2.2.4 利用K-means++实现锚点框聚类

为了高效预测不同尺度与宽高比的物体边界框,一般采用Anchor(锚点框)机制。合适的Anchor 值既能快速准确定位边界框,还能减少计算量和损失值,提升目标检测精度与速度。

传统YOLOv3 锚框利用K-means 算法进行聚类所得,由于K-means 随机生成的聚类初始点对聚类结果具有较大影响,极易造成每次聚类结果产生严重偏差。虽然,YOLOv3 能在不同尺度下实现检测,但聚类结果在尺寸上没有明显差别,难以根据算法要求对锚框进行排序,一旦直接将聚类结果应用到各尺度的特征图检测中,将降低检测精度。

为此,本文系统首先分析目标图像的形状及特点,手动选择K-Means++的12个初始聚类框,以有效降低原始算法在初始聚类点时的聚类偏差,得到尺寸更好的先验框,并将其匹配到对应的特征图上,达到提升系统检测召回率、准确率的目的。

3 目标抓取控制

目标抓取控制由机械臂实现,通过逆运动学求解和角度转化,获得目标点坐标的对应角度数值和转化后的舵机脉宽数据,控制舵机转动。通过移动、夹取、抬升操作抓取目标后进行转动、抬升、放置操作,一般抓取过程包括靠近目标、对齐目标、夹取目标、机体抬升、回归中位解5 个步骤。

机械臂控制系统由控制芯片、六自由度机械臂机械结构、姿态控制模块、舵机和电源模块等组成。其中,控制芯片为STM32,通过串行外设接口(Serial Peripheral Interface,SPI)接受来自Jetson Nano 的目标检测信号,以控制机械臂姿态,进而实现目标抓取;六自由度机械臂包含6 个舵机,每个舵机均具有堵转保护和过温保护功能;姿态控制模块实现机械臂各关节的挠度控制。

电源接通后,通过编程接口将控制程序烧录至控制芯片内,STM32 输出脉冲宽度调制(Pulse Width Modulation,PWM)信号。通过修改输入信号的脉宽可转换舵机角度:①当脉冲宽度为1.5 ms 时进行舵机位置归一化;②脉宽每增加0.5 ms,舵机输出轴角度顺时针旋转45°;③脉冲宽度每减小0.5 ms,舵机输出轴的角度逆时针旋转45°。

4 实验结果与分析

本文提出的目标分拣实验系统应用场景广泛[21-22],在机器学习及创新实践等课程中,学生可通过系统验证与优化检测算法、完成综合设计和目标分拣操作等内容。本文以元器件分拣为例,YOLOv3 原算法和改进YOLOv3 算法的元器件检测结果如图4、图5所示。

Fig.4 Component detection results based on original YOLOv3 algorithm图4 基于YOLOv3原算法的元器件检测结果

Fig.5 Component detection results based on improved YOLOv3 algorithm图5 基于改进YOLOv3算法的元器件检测结果

本文系统采用六自由度机械臂结合视觉识别算法进行操作,开发的分拣样机和分拣过程如图6、图7 所示。同时,采用原算法和改进算法进行比较实验,实验结果如表1所示。由此可见,系统能快速识别、分拣目标,改进后的算法相较于原算法更快速、精确。

Table 1 Evaluation indicator表1 评价指标

Fig.6 Target sorting prototype图6 目标分拣样机

Fig.7 Screenshot of target sorting process图7 目标分拣过程截图

由表1 可知,轻量级主干网络能提升算法的识别精度与检测速度,改进后算法的mAP_0.5(损失函数IoU=0.5 时对应的平均准确率)从70.2%提升至93.6%。在检测速度方面,处理一帧图片的速度减少了9.35 ms,权重模型大小减少11.3 MB。

图8 为改进前后的Loss 值变化曲线,当样本数量为400 时,改进前的初始Loss 值相较于改进后的初始Loss 值更高,经过200 次迭代后一直维持在0.25 以下,证实了改进后算法能提升检测目标的速度与准确度。

Fig.8 Loss curve of detection results图8 检测结果的loss曲线

同时,在机器学习、创新实践等课程开设了目标分拣实验项目。其中,机器学习课程重点考查分类算法,实验内容是目标检测算法的验证与完善,分拣操作结果证明了检测算法精度的重要性;创新实践课程中目标分拣作为设计选题之一,实践内容包括目标数据集的采集与预处理、网络模型搭建与优化、控制系统设计编程、机械臂调试操作、分拣模块设计等,学生在样机上能分类元器件、水果、垃圾等。2022 年无锡学院电子信息工程学院通信工程专业的课程教学质量报告显示,该系统的教学效果良好,相较于传统实验方案课程目标达成度得到了明显提升,如表2所示。

Table 2 Achievement situation of curriculum objectives表2 课程目标达成情况

5 结语

为了解决传统目标分拣实验的虚拟仿真教学实验系统,因依靠人工提取的图像特征进行分类,导致过程复杂、成本高、分类效率低、无法满足机器学习等课程实验需求的问题。本文通过改进YOLOv3 算法,提出一种基于深度学习的目标分拣教学实验系统。具体为:①利用Mobile-NetV2 替换传统算法的特征提取网络,以减少特征尺度;②将YOLOv3 的损失函数替换为调整后的Focal loss;③将锚点框聚类算法替换为K-Means++。

本文以元器件分拣为例,在物理样机上的比较实验结果表明,所提模型能快速识别与分拣目标、控制机械臂进行分拣操作,完成了目标分拣实验的教学要求。虽然,该系统为人工智能相关专业的教学、科研和课外学术竞赛提供了一套完整的实验平台,具有良好的实用价值,但分类物品的种类有待提高,目标检测精度仍具有进一步提升的空间。

猜你喜欢
置信度舵机损失
硼铝复合材料硼含量置信度临界安全分析研究
胖胖损失了多少元
含齿隙弹载舵机的全局反步模糊自适应控制
玉米抽穗前倒伏怎么办?怎么减少损失?
正负关联规则两级置信度阈值设置方法
基于dsPIC单片机的飞艇舵机控制实现
基于高速同步485总线通信的多通道舵机控制器设计
一般自由碰撞的最大动能损失
置信度条件下轴承寿命的可靠度分析
损失