基于CNN深度学习的机器人抓取位置检测方法
2020-09-02申燕萍
申燕萍
(1.常州工业职业技术学院 信息工程学院,江苏 常州 213164;2.江苏大学 计算机科学与通信工程学院,江苏 镇江 212000)
0 引言
随着当代计算机与网络通信技术快速发展,智能家居系统受到人们的密切关注,在智能家居系统中,机器人逐渐进入人们日常生活[1]。机器人抓取研究被广泛应用到军事及工业等领域并作为机器人领域重点研究方向。但是实际的机器人抓取却只能完成提前设定好的任务,一旦遇到复杂的设定环境,抓取任务就会失败[2]。为了满足实际生活需要,对这方面的要求更加严格,保证它不仅仅局限于预先设定程序,而且对不同需要抓取的目标在非稳定的环境下进行合理的抓取,以达到更加准确的抓取目的[3]。因此,该研究是具有实际意义与价值的。智能机器人的抓取研究由于抓取的形态、位置等因素变得相对困难,采用了一种可以直接搜索有效位置的方法,该方法是通过在编码器的改进下学习目标位置的多模态特征学习,采用卷积神经网络模型学习目标,获取最优抓取位置,并预测出目标位置处的二维图像坐标系下的坐标以及旋转角度。采用上述两种方法进行扫描并提取目标物体所标记的信息时,受到复杂环境及人为干预影响,导致检测精准度较低。针对该问题,提出了基于CNN深度学习的机器人抓取位置检测方法,无需人工干预,通过监督学习,可获取目标物体在机器人坐标系下的姿态,进而完成抓取动作。
1 基于CNN深度学习检测原理
在深度学习目标检测领域中,大都采用卷积神经网络模型进行检测,该检测模型以其独特的结构设计被广泛应用。CNN 采用局部连接与权值共享这两种设计结构,使系统具有类似生物视觉功能,能够对图像数据进行挖掘和语义上的分析,大幅度地减少了网络模型参数规模的复杂性,提高了检测精准性[4]。同时CNN 中的特殊层结构具有高度不变性的优点,在平移、倾斜或任意其他形式的变形情况下被设计应用,这也是卷积神经网络更适合应用于图像特征学习与表达主要原因,相比于其他神经网络方法检测可靠性更高[5]。
CNN 模型的种类较多,但是其基本结构的设计方式大致相同,CNN 模型由输入层、卷积层、池化层、全连接层、输出层组成。
1)输入层:输入层的作用是取得有效待测数据,它作为CNN的起始层,进行图像数据的获取和预处理。输入层只有一个数据输出操作,并对这个输出数据进行图像随机剪裁、尺度缩放、去均值化或归一化等预处理,并把数据图像的特征图作为网络结构层,CNN把每一层输出的图像数据信息或含有某种语义特征信息都称为特征图[6-8]。
2)卷积层:卷积层是整个CNN的核心层,利用特殊的卷积核核心结构,对输出的所有数据进行卷积,并把卷积结果以特征图方式输出,完成数据特征提取。CNN的卷积层利用卷积核进行数据输出提取的独特卷积方式,具有提取精准、效率高的优点,是CNN深度神经网络重要结构[9]。标准结构如图1所示。
图1 卷积层的卷积操作
通过卷积层的卷积操作流程可知,卷积层将局部空间上感受到的信息和特征维度上的信息进行聚合处理,形成一个完整信息聚合体,在卷积层经过多层卷积操作后,得到特征图[10]。CNN通过输入特征图,便可对从全局里面得到的图像做相应的描述和提取。为了实现不同分层的特征提取和融合,需要学习了解每个卷积核的不同的目标特征,同时输入多层卷积信息[11]。
3)池化层:池化层在CNN中主要是负责对输入的数据样本进行采样操作。池化层通过对输入特征图的各个空间维度上的特征进行切片划分,并将划分的特征图设置为个毫无交点的区域,然后池化每个所对区域的特征[12]。
每个区域的特征图像在它的池化过程中,需要选取尺寸为2×2,但如果有一些非常大的图,也可以采用的尺寸,但是这种过大尺寸会造成在池化过程中信息的大量流失。普遍采用平均值和最大值两种池化方法,过程如图2所示。
图2 池化处理
根据均值池化和最大值池化示意图在每个区域的特征图像按照的尺寸进行池化时,均值池化是将每个区域内的元素进行均值计算,并作为输出特征值,或者是把不同区域的相同元素加起来作为输出特征值。每个元素在不同区域内的最大值作为输出特征值,这两种不同的池化方式能够正确有效地提取不同特征值。
4)全连接层:全连接层位于池化层和输出层之间,主要负责全连接对最后一个池化和输出层的特征图。目前全连接层在CNN中己经逐渐被表面全局均值池化层所替代,可以得到比全连接层更好的效果。全连接层的工作原理与单层前馈神经网络相同,通过将输入的高维度特征图采用卷积的方法降为一维,或者直接将具有特征矩阵的元素排列成一维向量,这两种降维方法都是为了便于输出层的分类与处理。
5)输出层:输出层是CNN的结尾层,通过对全连接层得到的一维特征向量,采用Logistic回归或SVM进行分类,或者采用Softmax回归等概率形式完成特征向量的输出。输出层基本采用Softmax回归的输出方式,利用逻辑回归的推广原理,能够处理不同形式的分类问题。
2 机器人抓取位置检测
2.1 抓取位置目标匹配
将机器人抓取位置模板点按照切线斜率方向进行角度划分,结合距离匹配定义,得到按照倾角分层的模板匹配距离:
(1)
式(1)中,M为匹配点总数;xi为匹配点投影在机器上的坐标值;mi为机器模板点根据切线斜率方向的第m幅距离映射图上的取值;Fmi(xi)为映射图上坐标灰度值。根据上述公式可得到机器模板上匹配点到边缘坐标图像点中最近的距离。
为研究按倾角分层的距离对映射图上坐标灰度值的影响,需保持横纵坐标变量保持不变,并观察匹配度函数分布情况,结果如图3所示。
图3 匹配度函数分布
由图3可看出,按倾角分层方法峰值较为明显,能够提高匹配度函数灵敏性。引入GA求解匹配方法,匹配步骤如图4所示。
图4 匹配最优解流程图
GA作为CNN深度学习的随机搜索算法,能够使种群更加靠近全局最优值,一旦搜索接近峰值时,个体占据排序在最前端。当GA引进一段时间后,以其初始搜索结果为基准,寻找最优解。GA求解方法只能对一个变量进行优化,而相似度函数包含了多个变量,这些变量对于图像来说是具有独立意义的,因此,使用该方法能够在初值附近匹配到最优解。
2.2 信息获取与处理
将CNN深度学习方法应用到机器人抓取位置检测之中,应先将抓取位置作为深度学习对象,并将目标可抓取位置视为CNN深度学习样本数据。抓取位置检测过程可描述为:依据目标物体大小选择不同方向矩形框,并在目标物体上提取抓取位置,并将抓取位置均匀输入到CNN深度学习中进行预测。
抓取位置的CNN深度学习结合了多个模态特征信息,其中包括通道彩色图像信息、深度图像信息。图5分别列出了两种图像可抓取位置和不可抓取位置信息。
图5 抓取位置信息
将抓取位置信息进行预处理,将其转化为符合CNN深度学习的数据格式,以此提高CNN深度学习隐含层提取特征的能力。对于数据的预处理,需先将标记区域对应的模态数据统一转化为单模态的特征图尺寸向量;然后将处理后得到的特征向量输入到多模态特征预训练过程之中;最后将每层训练目标最小化函数代入训练过程之中,由此完成信息预处理。
2.3 检测流程设计
机器人抓取作业示意图如图6所示。
图6 机器人抓取作业示意图
利用机器人视觉系统分析给定的场景彩色图像,推断出目标物体最优抓取状态。机器人抓取过程中主要包括抓取点确定和姿态预估两个阶段。采用CNN深度学习法设计具体检测流程,如下所示:
step1:输入处理后的抓取位置信息;
step2:以射频网为基础,利用边界框及其分数对信息进行分类研究,实现抓取定位角度的粗估计;
step3:经过信息筛选与排序,获取边界框顶点坐标;
step4:簇估计角度,大约定位抓取位置,再细估计角度;
step5:将粗估计与细估计角度值相互融合,获取抓取角度;
step6:根据边界框顶点坐标,抓取中心坐标;
step7:输出检测结果。
2.4 抓取位置检测结果显示
使用旋转矩形框表示目标物体最优抓取位置,在检测该位置时,需将包含目标物体的图像输入到CNN深度学习过程之中,经过训练后,选定机器人最合适的抓取位置坐标和所涉及图像的平面旋转角。
抓取位置检测结果显示如图7所示。
图7 抓取位置检测结果显示
机器人的抓取方向根据其习惯,定为矩形框长边方向,表示矩形框相对图像坐标系横轴旋转角度,箭头表示矩形框旋转方向。根据该内容,可得到高精准抓取位置检测结果,利用CNN深度学习方法,获取清晰显示结果。
3 实验验证
为了验证基于CNN深度学习的机器人抓取位置检测方法有效性,实验环境为Win7操作系统,该系统训练环境为Matlab R2015a。
3.1 实验准备
3.1.1 数据分析
选用Canon VC-C50型号的单目标相机,具有320×240分辨率,在该相机下获取的目标物体图像如图8所示。
图8 样本示例
数据训练所需的基本数据为50张不同场景中的图像,抓取角度为0°,无需人工标注边界框就可获取抓取位置,通过旋转图像将数据扩充到200张,具体扩充方法如下所示:
围绕边界框中心点,扩充边长为原矩形框边长之和的正方形;以5°间隔将图形围绕圆心旋转一周,能够保证抓取的位置在图形中央,方便特征提取,能够省去修改边界框的繁琐步骤;为了减少第1阶段定位耗时,需将图片合并缩减为0°、45°、90°、135°。
3.1.2 角度归一化处理
因样本数据规模较小,内部层数多且复杂,使用微软数据集训练相关数据作为初始值,并在此基础上进行微调处理。采用动量法,在大量噪声环境下对角度进行归一化处理。
3.2 机器人抓取模式设置
通过机器训练,使其能够精准分辨出目标,这是机械视觉学习最简单有效的模式。机器人会从多个角度确定目标位置,然后将所有位置边缘点形成一个整体坐标,形成三维立体图。
在实验过程中,机器人成功抓起物体,如图9所示。
图9 机器人抓取模式
先建立3D模型,再经过一系列分析,可以判断物体当时所摆放的位置,进而完成一套抓取动作。
该过程中机器人抓取训练的2个阶段时间分别为15小时和1小时,其训练曲线如图10所示。
图10 训练曲线
由图10可知:两个时间阶段下的曲线都趋近于收敛状态。
3.3 实验结果与分析
根据上述内容可知,机器人实际抓取的物体是杯子和球,两个物体分别放在桌子上和地上。分别采用传统的改进自动编码器多模态特征学习、卷积神经网络模型学习方法和基于CNN深度学习方法分别在训练时间为15小时和1小时情况下进行对比分析。其中1小时无人工干预,环境简单;15小时受到人工干预,环境复杂。
1)15小时:在15小时情况下,将3种方法的检测精准度进行对比分析,结果如图11所示。
由图11可知:采用CNN深度学习方法检测精准度始终维持在85%以上;采用卷积神经网络模型学习方法检测精准度始终维持在50%以上;采用改进自动编码器多模态特征学习方法检测精准度始终维持在40%以上。由此可知,在15小时情况下,采用CNN深度学习方法检测精准度较高。
2)1小时:在1小时情况下,将3种方法的检测精准度进行对比分析,结果如表1所示。
表1 1小时情况下3种方法检测精准度对比分析
由表1可知:采用CNN深度学习方法检测精准度较高,在迭代次数为20次时,最高检测精准度为0.988。而采用其余两种方法,都比该方法检测精准度要低,当迭代次数为10次时,卷积神经网络模型学习方法最高为0.652,最低也高于50%,而改进自动编码器多模态特征学习方法最高检测精准度为0.410,最低为0.308。由此可知,在1小时情况下,采用CNN深度学习方法检测精准度较高。
4 结束语
针对传统方法存在的问题,提出了基于CNN深度学习的机器人抓取位置检测方法,并对该方法进行了实验验证。在实验中,通过与改进自动编码器多模态特征学习方法、卷积神经网络模型学习方法作对比,实验结果表明基于CNN深度学习方法能够较好提取目标位置特征,具有精准检测效果。相比于以往方法,既提高了检测方法实时性,又增强了姿态角检测精度,大大减轻了机器人内存消耗。
在未来研究项目中,使用基于CNN深度学习检测方法是进一步完善传统方法的网络结构,提高机器人抓取位置检测精准度,并将该方法应用到机器人抓取相关任务之中。针对CNN深度学习领域轻量化研究,较为繁琐,该领域有着较长的研究周期,很难应用到实际中,所以,权值轻量化的结合需应用到抓取目标位置中,接下来的研究方向可以将重点放在该领域。