基于深度学习的低成本堆叠物料定位系统
2020-10-21田立勋刘雄飞张彩芹王文佳傅建中
田立勋, 刘雄飞, 张彩芹, 王文佳, 傅建中
(1. 浙江大学 机械工程学院,浙江,杭州 310058; 2. 杭州永创智能设备股份有限公司,浙江,杭州 310058; 3. 北京先见科技有限公司,北京 100070)
堆叠物料无序分拣即为从随机堆叠物料中取出最上层指定目标的技术. 目前,堆叠物料目标定位方法主要可以分为三类:基于传统人工特征的方法,基于三维信息的方法和基于深度学习的方法. 贾东永等[1]设计了一种基于视觉前馈和视觉反馈的仿人机器人抓取操作,并通过实验验证了该方法的可用性. 施家栋等[2]提出了一种基于卡尔曼滤波的动态场景中运动目标的检测算法. 上述传统算法虽然无需采集和标注数据,但对光照和形变的鲁棒性较差,检测精度不高,适用范围有限. Lenz等[3]提出了一种基于全连接网络和深度图像进行无序分拣的算法,Harada等[4]提出了一种基于深度相机和SVM/RF对抓取点进行筛选的办法. 这类基于目标深度信息的算法虽然精度较高,但是满足精度的深度相机价格昂贵,成本较高. Danielczuk等[5]利用人工生成的三维数据训练深度学习模型,通过Mask RCNN算法对分拣目标进行分割,最后将坐标返回机械手完成抓取. Zeng等[6-7]提出一种利用FCN算法对RGB-D图像进行处理,得到不同角度下抓取目标区域的热力图,据此识别最适合抓取的位置. 上述基于深度学习的一般算法,一方面需要高频GPU和深度相机等硬件设备的支持,成本高,另一方面无法识别相互之间存在小面积堆叠的目标,精度仍然有待提高.
① 文中设计了一套基于单目相机和深度学习算法的堆叠物料定位分拣系统,能分辨出堆叠物料的上下层目标,并对指定目标进行定位和分拣. 由于本系统只使用了单目光学相机,无需使用深度相机即可完成分拣,降低了系统成本. 文中优化了检测算法,设计了一系列目标函数,提高了对小面积堆叠目标的检测准确率. 文中提出的四角定位法,可适用于任意扁平形状堆叠目标的定位. 本系统已成功应用于真实的工业生产场景中.
② 文中基于depthwise convolutions和pointwise convolutions[8]对模型进行优化,将BN层参数融合进卷积层,最后使用OpenVINO等工具进行加速,进一步减少了算法计算量,降低算法运行所需的硬件条件,降低了系统成本.
本系统是基于目标的二维信息以及目标之间的相互堆叠情况来定位最上层目标,只能定位出目标的二维坐标信息,无法准确测算出目标在竖直方向的高度. 另一方面,本系统在机械手上装了如图1所示的弹簧结构的缓冲褶皱,能让系统对抓取目标所在的高度范围有一定的鲁棒性. 综上所述,本系统主要适用于定位目标的厚度不超过弹簧结构缓冲高度的扁平状目标.
传统方法所需的深度相机价格昂贵,而本系统只使用单目光学相机,降低了系统成本. 针对一般深度学习算法无法识别小面积堆叠区域的问题. 文中通过优化目标函数和修改网络结构,在不损失速度的前提下,有效提高分拣的准确率. 最后,文中还通过对算法的时间复杂度进行优化,进一步提高运算速度,降低成本. 测试结果显示,本系统能在现实应用场景中达到0.3 cm以内的精度,验证了文中工作的有效性.
1 问题分析
工业生产时,产品放置于传送带上,随着传送带的移动依次往前执行各项流程. 所有流程执行完毕,需要从传送带上抓取成品产品,依序堆置于外包装箱内,出厂销售. 传统装箱主要依靠工人手动操作完成. 但是人工分拣不仅错误率高,而且生产效率低下,所以物料自动分拣系统也就应运而生.
要实现高精度的物料自动分拣,存在两个难点:
① 因为传送带移动速度较快,系统要在目标移动的指定距离内,完成对目标的检测和抓取,这要求算法的运算速度够快. 相对应,这对系统的硬件条件也提出了较高要求.
② 堆叠物料中无可避免存在一些小面积堆叠的目标,这些目标很容易被误检. 如果在下层的目标被误判成上层目标,机械手在抓取下层目标时,会带动上层目标,极易造成抓飞. 产品抓飞在工业生产中是严重的事故,必须避免.
2 目标定位系统设计
文中设计了一套包含三个模块的目标定位系统,各个模块按序级联运作,逐步定位目标.
2.1 候选目标检测
针对无序分拣任务的特点,文中以SSD[9]检测算法为原型,设计了目标检测模块.
针对无序分拣定位精度更重要的特点,使用了如下Loss函数:
L(x,c,l,g)=
(1)
式中:N为默认匹配的候选框总数,定位的目标函数是预测框(1)和基准框(g)之间的L1范数,分类的目标函数为目标预测类别x和目标基准类别c的softmax函数;因为无序分拣的定位精度更为重要,所以设置常数α=1.2.
无序分拣的最小堆叠面积大小为20个像素左右,且长宽比例差距较大,而SSD算法候选锚点框的最小尺寸是30个像素,长宽比例大多为正方形,这会造成大量的目标错检. 为了解决这个问题,文中重新设计了SSD算法的头部特征处理部分,将目标候选锚点框的最小尺寸下降到了20个像素并增加了更多长宽比例的候选锚点框. 图2所示为文中对候选目标框的改进图,图中虚线框为SSD[10]算法预设的锚点框,文中在其基础上,增加了黑色加粗实线框用于检测小尺度目标和不规则目标.
为了能够获得更小的感受视野,文中从第10个卷积层抽取锚点框,并对其进行回归和分类. 图3为候选目标检测模块结构图,左侧加粗的黑线部分是文中新添加的网络层.
由于文中算法对SSD算法的目标函数和网络结构都进行了针对性的改进,算法的准确率和召回率都获得了较大提升.
2.2 候选目标筛选
由于候选目标检测阶段所使用的图像分辨率过小,算法会将被遮挡面积较小的目标误判为候选目标,造成误检. 为了解决这个问题,文中设计了候选目标筛选模块,使用分辨率更高的图像作为输入数据,对候选目标区域再做一次筛选.
在实践中发现,将目标所在区域的图像外扩数个像素,让卷积神经网络有更大的选择余地,检测得到的结果将会更加准确. 因此,本模块统一将输入图像都外扩若干像素,再输入卷积神经网络. 通过外扩操作,候选目标框才能覆盖目标的角点,才能准确判断是否为上层目标.
如图4所示,最内侧实线框为单阶段检测算法检测得到的候选目标框,最外侧的虚线框为外扩后的目标框,中间的深色线为目标的真实边界框. 由于单阶段检测算法的固有缺陷,定位精度不高,通过将候选框外扩的办法,利用后续的处理模块修复这一问题.
为了兼顾精度和速度,文中使用MobileNet[8]的结构作为主干网络,同时设计了如下函数作为目标函数:
Lcls(y,p(y))=-ylog(p(y))-
(1-y)log(p(1-y)),
(2)
式中:y为预测标签类型的示性函数;p(y)为预测类型对应的预测概率.
本模块根据网络前向传播的结果判断是否属于正确的分拣目标. 若神经网络判定候选目标为正确分拣目标,则将该目标周围的感兴趣图像区域送入下一个模块进行处理;否则,将该候选目标筛除,不做处理.
2.3 关键点检测及四角定位
为了能准确抓取到目标,不仅需要检测出目标的中心点和边界,还需要准确检测出目标的朝向角度. 所以,文中使用第三个模块检测目标的关键点,然后进一步得到目标的朝向角度.
根据无序抓取的需求,本模块选择检测目标的左上角、右上角、右下角、左下角和中心点5个特征点,4个角的特征点用于计算目标的朝向角度,中心点用于判断抓取位置. 上述5点中,各点都是带有位置标识的,每个点不仅包含坐标信息,也包含图5所示1~4号的位置类别信息. 因为四角定位法的4个特征点,可以定位至任意二维形状目标的任意点,所以本方法适用性较广. 文中设计了一种基于欧氏距离的目标函数,用以度量关键点检测的准确程度,其具体形式如式(3)所示.
(3)
为使本模块的检测速度和精度能同时满足工业生产需求,本模块使用MobileNet[8]为主干网络,在网络的最后一层卷积层输出10个量,依序分别对应5个特征点的x和y坐标. 接着,根据特征点计算出目标的中轴线与水平线所成的角度,作为目标的朝向角度,对第5个特征点和检测框中心点取平均,作为抓取点. 产品角度计算示意图如图5所示. 最后,将目标的抓取点坐标和角度朝向一起传输给机械手,由机械手执行分拣操作.
本系统以四边形目标为例,但是实际上任意扁平形状的目标均可由这5个带有位置标识的关键点计算得出角度和中心点,用于无序分拣. 只要稍加更改标注数据,文中的四角定位法可适用于任意扁平形状的目标.
通过上述三步级联操作,由粗到细,使用卷积神经网络逐步得到分拣目标的轮廓信息,完成目标分拣.
2.4 算法优化加速
本系统通过使用depthwise convolutions和pointwise convolutions降低模型FLOPs,BN层参数和卷积层参数融合减少网络层数,最后使用OpenVINO对整个模型进行优化.
depthwise convolutions和pointwise convolutions是一种卷积核解耦操作. 假设输入图像为DF×DF×M,标准卷积核的尺寸为DK×DK×M×N,则标准卷积核在该层卷积运算的时间复杂度为
o(DKDKMNDFDF).
(4)
而将其解耦后,depthwise convolutions和pointwise convolutions的时间复杂度为
o(DKDKMDFDF+MNDFDF).
(5)
从式(5)(6)可以得到卷积核解耦前后时间复杂度对比为
(6)
系统网络所使用的卷积核大多为3×3,以此计算,计算量减少为原来的10%左右.
本系统在网络训练阶段,使用了Batch Normalization技术,加快了训练速度. 但是在前向传播阶段,需要Convolution层,BatchNorm层和Scale层才能实现批归一化. 本系统通过参数融合的方法,将三个层合并为一个层,减少计算量. 本系统按照式(7)(8)合并参数,将三个层的参数合并为一个层的参数:
(7)
(8)
在CPU是Core i7-8700的硬件条件下,原版SSD[10]的检测耗时为500 ms左右,使用depthwise convolutions和pointwise convolutions代替普通卷积之后,检测耗时降低到70 ms,在BN层合并之后耗时降低到60 ms. 最后在经过OpenVINO优化后,检测占用时间为15 ms.
通过上述优化加速,本系统无需安装GPU即可满足实时性,进一步降低了硬件成本.
3 实验结果与分析
3.1 测试数据
文中测试所使用的数据均从真实的工业生产场景中采集得到. 文中算法一共使用了3 618张图像,其中3 454张为训练集,164张为测试集. 上述采集得到的图像均为RGB图像,大小均为2 590×1 942. 将所有图像数据按照不同纹理分为四类,测试系统在不同类别目标纹理上的表现.
3.2 实验步骤
为了验证本系统有效性,文中设计了如下所述方案进行测试.
首先,将所有图像按不同纹理目标分为四类,然后对这四类图像分别进行标注. 因为分拣检测分为三步,需要三个卷积神经网络,所以需要按三种方式分别进行标注:第一步是候选框检测,将最上方的目标按VOC的格式标注范围框;第二步是候选框筛选,在原图中剪切出上层目标框和下层目标框,用于分类筛选;最后一步是关键点检测,标定出目标的5个关键点,用于训练关键点检测网络.
在数据标注完成之后,开始训练卷积神经网络模型. 在上述实验环境下,整个算法的训练时间在48 h左右. 本文中使用的深度学习框架是Caffe[10].
接着,将训练得到的模型用于分拣检测. 先将图像做一定的预处理,然后输入到候选框检测网络,再将所得到的候选框感兴趣区域图像输入到分类筛选网络,最后用关键点检测网络得到目标的角点和中心点,进一步算出目标的朝向和中心点坐标,发送给机械手.
最后,文中还复现了SIFT,SURF,ORB和BRISK等传统算法作为对比参照组,与本系统算法结果进行比较.
3.3 检测结果的评价指标
本次测试主要选用了三种指标来展示系统的定位效果:①平均位置差(ME),这是定位误差的直接表示;②均方根误差(RMSE),它不仅反映了系统的定位误差大小,也反映了系统的定位稳定性;③检测时间,ms.
本次测试的ME取预测坐标和基准坐标欧氏距离差的平均值. 其数学表达式为
(9)
此外,本次测试的RMSE按式(10)计算为
(10)
文中根据检测结果计算上述两个评价指标,全面地展示系统的定位性能.
3.4 检测结果与分析
用本系统分别测试4种不同纹理的目标图像,对其检测结果进行统计,最后计算得出的ME和LRMSE结果分别如表1和表2所示,两个表格的第1行均为本系统的结果,2~5行为传统算法的参照对比实验组,ME和LRMSE的单位均为cm.
从表1结果可以看到,对于不同纹理的检测目标,关键点定位的欧氏距离差在0.3 cm之内,能准确完成定位和角度计算工作. 相对应,传统算法的误差在0.5 cm以上.
如表2所示,与4种其他传统算法相比,本系统的RMSE都是最小的,这直接证明了本系统设计的有效性. 其中,本系统的RMSE在0.5 cm以内,传统算法的RMSE至少在0.9 cm以上,这说明本系统方法精度和稳定性都超过了传统算法.
表3所示为本系统的检测速度与传统算法的检测速度对比表. 本系统的检测耗时在76~79 ms之间,而传统算法的耗时最快的也在337 ms以上,从这一对比可直接证明文中对算法模型优化的有效性.
表1 检测结果ME表
表2 检测结果RMSE表
表3 检测时间对比表
图6为本系统的一个典型候选框检测结果图,左侧的检测框为正确候选框,右侧为错误候选框. 从图中可以看出,该算法模块的候选框检测无漏检,定位位置准确. 通过第二个分类模块的筛选,右侧的错误候选框得以筛除,左侧的正确候选框得以保留.
图7为经过筛选且经过关键点检测模块处理后得到的结果图. 从图中可以看到,关键点检测的位置基本准确,能满足机械手抓取的需求.
上述检测结果可以证明,本系统适用于真实工业物料分拣场景,且精度能满足实际生产需要.
4 结 论
文中针对传统分拣目标定位方法的局限性,提出了一种基于深度学习的低成本级联式堆叠目标定位系统. 针对传统算法对光照和形变鲁棒性低的问题,构建了一个数据全面且均衡的训练集,采用了深度学习算法用于检测目标,提高了定位精度. 本系统采集的是目标的二维图像信息,无需昂贵的高精度深度相机,降低了系统成本. 为了解决其他视觉算法无法识别小面积堆叠区域的问题,改进了候选框检测模块,构建了一个候选目标筛选网络,用于筛除小面积堆叠的目标,取得了较好的效果.
本系统使用一个单阶段目标检测算法得到候选目标框,然后使用一个卷积神经网络对候选目标框进行筛选,最后再对筛选后的目标框进行特征点检测,得到目标的坐标和角度. 测试结果显示,本系统在真实工业数据中取得了较好的精度,能够满足实际生产的需要.