朱丹平,朱 明,周恒森
(中国科学技术大学 信息科学技术学院,合肥 230026)
随着我国物流行业的发展,以及劳动力成本的不断上升,自动化仓储物流近年来不断发展,自动化运输设备的需求不断提升.自动叉车是一种自动驾驶车辆,可以完成对货物的自动搬运,能有效降低人力成本,被广泛应用于自动化物流中.在仓储物流中,因为货物的外观存在大小、形状、颜色等明显的差异,所以直接对货物定位非常困难.而托盘用于承载和搬运货物,且具有通用的规格和形状.因此自动叉车一般通过托盘定位来叉取和搬运货物.
托盘定位方法主要分为以下3 类: 第1 类是基于激光雷达传感器的检测方法.赵俊宏等人[1]根据2D 激光雷达扫描结果分析托盘的距离和姿态.虽然基于激光雷达的方法对光照有比较好的鲁棒性,但是激光雷达成本高昂、不利于大规模普及.第2 类是传统图像处理的方法.Cui 等人[2]使用传统图像处理的方法直接分析图像本身特征,如角点、边缘和颜色等特征来检测托盘.Seelinger 等人[3]提出了一种利用标签来定位托盘的方法,但存在标签安装和维护的成本,而且在使用过程中容易损坏.武文汉[4]使用tof 相机和纸标签分别完成了对远距离托盘和近距离托盘的检测定位,但是算法速度较慢,实时性不高,因此难以应用于工业场景.此类方法易受到光照等环境因素影响,鲁棒性较差.第3 类是基于深度学习的托盘检测方法.Mohamed 等人[5]使用了Faster R-CNN[6]来训练模型,实现了对托盘的定位.李天健等人[7]使用改进的SSD 算法[8]实现了仓储环境中托盘的定位.叶伟[9]首先使用YOLOv4 算法[10]对托盘进行目标检测,再使用GrabCut 分割方法[11]提高精度.此类方法准确率高,抗干扰能力强,而且成本远低于激光雷达,适合部署于实际工业场景中.
在实际物流场景中,自动叉车为完成自动叉卸货任务,需要将叉铲对准托盘中心点,将叉铲方向与托盘水平方向保持一致,以保证安全无碰撞地叉取托盘.因此托盘定位任务可分为2 部分: (1)托盘中心点定位;(2)托盘水平方向估计.目前基于目标检测的托盘定位算法,一般使用矩形框进行定位,只能检测托盘区域位置,使用目标框中心点对托盘中心点定位精度不高,且无法有效估计托盘水平方向,难以应用于自动叉车系统中.基于此问题,本文提出了一种基于改进Center-Net[12]的托盘定位方法.在目标检测的基础上,通过托盘关键点检测,在精准定位托盘中心点的同时,完成对托盘水平方向的估计.
本文的贡献如下: (1)本文使用迁移学习的方法,将人体姿态估计引入托盘定位任务,完成了托盘关键点定位.(2)针对托盘定位任务,本文对CenterNet 网络做出2 点改进: 1)改进关键点分组方法,提出基于托盘关键点位置的区域约束方法; 2)提出关键点回归评价指标与自适应补偿,提高关键点检测精度.(3)在关键点定位的基础上,提出基于几何约束的托盘中心点计算方法,以及托盘水平方向估计方法.(4)使用RGB 摄像头拍摄并标注了托盘数据集.
Mohamed 等人[5]、李天健等人[7]与叶伟[9]所使用的目标检测算法,都需要人工设计特定长宽比的锚框,以训练出更好的检测器.但是人工设计的锚框难以兼顾所有长宽比的目标,针对此问题,Law 等人提出了CornerNet[13],通过检测目标的左上角和右下角关键点来检测目标,不需要人工设计锚框.ExtremeNet[14]通过检测目标的顶部、底部、最左侧、最右侧和中心点这5 点信息来完成目标检测.以上两种无锚框目标检测算法在关键点检测之后,都需要进行复杂且耗时的后处理步骤,这大大降低了算法的实时性.而Zhou 等人[12]提出的CenterNet 较好解决了这个问题.CenterNet 将目标检测简化成为对目标中心点的检测.使用3×3 最大池化选取目标中心点,从而避免了NMS 等后处理步骤.
CenterNet 可选取3 种不同的骨干网络,分别为Hourglass[15]、ResNet[16]、DLA[17],都是编码-解码结构.其中Hourglass 在3 种骨干网络中精度最高但预测速度较慢,而使用DLA 可以得到较好的精度以及较快的速度,因此选择DLA 作为算法的骨干网络.如图1 所示,CenterNet 网络的头部可分为3 个互相独立的部分,分别完成目标框中心点、中心点偏置和目标框宽高的检测.CenterNet 使用二维高斯核函数将输入图像映射成为热力图作为训练目标.二维高斯核函数的公式为:
图1 CenterNet 网络结构图
其中,Yxyc是归一化后的热力图,(x,y)为热力图中点的坐标,(p~x,p~y)为目标中心点4 倍下采样后的坐标(向下取整),σp是自适应标准差[13].CenterNet 目标检测任务中损失函数为Ldet:
Ldet由3 部分组成,分别为置信度损失Lk、下采样损失Loff和目标框宽高损失Lsize,超参数λsize为0.1,λoff为1.Lk用来训练目标中心点位置.由于正样本远少于负样本数量,为了使模型在训练时更加关注于难检测的样本,Lk使用focal loss[18].因为输出的热力特征图为原图大小的0.25 倍,所以中心点位置预测存在离散化误差,Loff用来训练下采样偏置的大小.
其中,Yxyc=1表示正样本,Yˆxyc是目标检测的预测值.N是图像中正样本的数量.超参数α 和 β分别为2 和4.
其中,为预测的中心点偏置大小,p为中心点真实值坐标,R为下采样倍数,中心点坐标p下采样R倍后向下取整得到.
其中,sk=(wk,hk)为目标k的宽高,为宽高估计值.
CenterNet 具有良好可扩展性,可以将CenterNet应用到人体姿势估计任务中.人体姿势估计的任务要求估计出图像中每个人体实例的人体关键点位置.首先直接回归每个关键点与中心点之间的偏移量,得到关键点的初步定位,使用L1 损失函数Lreg进行训练.然后为了细化关键点定位,类似目标检测,通过热力特征图以及中心点偏置来进行关键点检测,并以初步定位位置为依据进行分组.关键点检测使用目标检测任务中的置信度损失LK和偏移损失Loff进行训练.
其中,E为关键点个数,M为关键点掩码,对于图像中被遮挡等不可见的关键点Mki=0,可见关键点Mki=1.=(xkj,ykj)为第k个目标的第j个关键点坐标的偏移量.关键点检测失函数为Lkey=Lk+Loff+Lreg,得到总损失函数Loss:
在多人姿态检测场景中,通过关键点检测得到的结果无法确定属于哪个人体实例.CenterNet 使用初步定位结果作为分组依据,使用3 项规则进行匹配:(1)所匹配的热力特征图关键点置信度得分大于0.1;(2)匹配欧氏距离最近的初步定位位置; (3)仅匹配目标框内的关键点.
如图2 所示,不同类型托盘外观存在一定差异,主要可分为两柱形托盘和三柱形托盘.为适应不同类型托盘,选取托盘正面外轮廓的4 个角点作为关键点.从左上角点开始顺时针将关键点分别编号为1,2,3,4.托盘定位算法可分为托盘检测、托盘关键点检测以及托盘中心点计算与水平方向估计的后处理部分.算法框架如图3 所示,其具体流程如算法1 所示.算法1 中的所有步骤均在图3 中标出,其中本文提出的工作用星号标记,在原算法基础上改进的工作用菱形标记.
图2 托盘类型图
图3 托盘定位算法图
算法1.托盘定位算法1)将输入图片通过仿射变换转为512×512 固定大小输入;2)通过骨干网络生成128×128 高分辨率热力特征图;3)基于热力特征图进行托盘检测获得托盘目标框;4)直接回归得到托盘关键点初步定位位置;5)使用自适应补偿对初步定位位置进行调整;6)使用热力特征图进行关键点检测;
7)以托盘目标框和关键点初步定位位置为分组依据,对步骤6)的结果进行关键点分组;8)基于托盘关键点定位结果,计算托盘中心点,估计托盘的水平方向.
CenterNet 网络为了对关键点进行分组,只对目标框内的关键点进行匹配.由于托盘关键点分布于托盘边缘,托盘检测轻微的精度误差就可能导致目标框无法包含关键点位置,严重影响关键点分组结果,针对此问题,本文根据托盘关键点分布特点,如图4 所示,分别为左右两边的关键点设置了两组约束区域.
图4 区域约束对比图
其中,Pleft和Pright分别为托盘左右两边关键点的约束区域,(xm,ym)为托盘目标框中心点,(w,h)为托盘目标框宽高,(x,y)为图像中点的坐标.
关键点回归结果作为关键点定位的初步结果,是关键点检测的分组依据.较差的关键点回归结果,会直接影响关键点定位的最终精度.因为关键点分布于托盘外边缘,所以关键点的最小外接矩形与托盘的目标框相近.托盘目标框中心点与第i个关键点的欧式距离为,目标框中心点与目标框角点欧式距离Ddet.Ddet反映了目标的大小情况,对有一定参考意义.在与Ddet数值差距较大时,认为托盘关键点回归效果较差.根据二者大小关系得到关键点回归评价指标.
其中,=(xi,yi)为第i个托盘关键点回归的坐标.将目标框角点从左上角按顺时针编号为1,2,3,4,=(,)为第i个托盘目标框角点坐标.当与Ddet接近时,接近于1,关键点回归效果好,补偿比重小;当与Ddet差距较大时,接近于0,关键点回归效果差,补偿比重大.
自动叉车相机与托盘空间关系如图5 所示,坐标系z轴指向相机正前方,y轴垂直向下.因为托盘承载货物一般水平放置于地面,所以设定托盘放置平面与自动叉车相机坐标系xz平面平行.Pi为托盘关键点(i=1,2,3,4),Pi在自动叉车相机坐标系中的坐标为(Xi,Yi,Zi).Pc为托盘中心点,在自动叉车相机坐标系中的坐标为(Xc,Yc,Zc).pi为托盘关键点在归一化平面中的坐标(xi,yi),pc为托盘中心点在归一化平面的坐标(xc,yc).基于针孔相机模型,本文提出基于几何约束的托盘中心点计算方法,通过托盘关键点计算托盘中心点.
图5 叉车相机与托盘空间关系图
其中,K为相机内参矩阵.因为托盘放置平面与自动叉车相机坐标系xz平面平行,在自动叉车相机坐标系中Z1=Z4,Z2=Z3,根据式(11)可得:
托盘中心点Pc与托盘关键点的空间关系为:
将式(12)-式(15)带入式(11)得到托盘中心点坐标(xc,yc):
为了估计托盘水平方向,本文在自动叉车相机坐标系中分析了托盘关键点坐标与水平方向的关系.如图5,定义托盘水平方向的角度θ为托盘正面所在平面P1P2P3与坐标系x轴正方向所成夹角,设定Z1<Z2时θ为正,反之为负.通过托盘关键点p1和p2的y坐标之差Δy=y1-y2来估计托盘水平方向.关键点P1和P2在空间中的关系如式(17),其中W为关键点P1和P2的空间距离,也即托盘正面长度.
将式(17)带入式(11),得到:
在Z1不变的前提下,Δy对θ求导:
由式(18)和式(19)可知,当 θ为0 时,p1和p2的y 坐标之差 Δy为0; 当θ大于0 时,Δy大于0; 当θ小于0 时,Δy小于0.同一距离下 Δy在θ ∈[-0.5π,0.5π]的区间内单调递增,因此通过 Δy可以有效估计托盘水平方向.考虑到关键点检测误差,设Δy∈[-10,10]时,托盘水平方向正对; Δy<-10时,托盘水平方向左偏; Δy>10时,托盘水平方向右偏.
本文采用的数据集为笔者自己采集制作的数据集.笔者使用1920×1080分辨率的RGB 摄像头拍摄了一个数据集.如图6 所示,摄像头安装在自动叉车系统前方的叉齿架上.叉齿架可上升下降,在不同高度拍摄托盘照片.整个数据集拍摄了合力叉车公司2 种类型的托盘,在多个场景中采集了时长60 分钟的视频.从中选取1 251 帧图片,使用coco-annotator 工具标注.将其中80%图片作为训练集,10%用作验证集,10%用作测试集.
图6 数据集采集装置图
实验所用的机器配置如表1 所示.实验有两个评价指标.第1 个是关键点定位精度指标APkp,用以衡量关键点定位的精度,APkp越高代表托盘关键点定位越精确.第2 个指标是笔者提出的托盘中心点定位指标平均定位精度ALP(average location precision),通过托盘定位中心点与托盘实际中心点的欧式距离Dc和托盘真实框面积Abbox得到.
表1 训练所用机器配置表
在ALP中只考虑检测目标框和真实框IOU大于0.5的样本,式(20)中N为样本数量.ALP越高代表对托盘中心点定位越准确.因为数据集规模较小,模型在训练时随机对输入图像进行反转,同时叠加一个服从正态分布的随机白噪声,用以提高模型的鲁棒性.学习率设为0.000 25,训练的epoch 设为120,为了防止过拟合,笔者在验证集Loss 不再下降时停止训练.
为了验证本文对CenterNet 算法提出改进方法的有效性,笔者使用关键点定位精度指标APkp,做了模型自身的纵向对比实验.将关键点位置约束设为改进1,关键点回归自适应补偿设为改进2,实验结果如表2 所示,两项改进均显著提高了APkp,证明了本文方法的有效性.
表2 纵向对比实验表
为了验证本文方法定位托盘中心点的有效性,笔者使用评价指标ALP,与其他目标检测算法进行了横向对比实验.对于其他目标检测算法,笔者使用托盘目标框中心点作为托盘中心点的定位结果.实验结果如表3 所示.可以看到,本文方法对比其他目标检测算法,中心点定位精度均有显著提高.
表3 横向对比实验表
为验证本文方法估计托盘水平方向的有效性,笔者分别选取托盘左偏、右偏与正对3 种具有代表性的情况进行实际测试.结果如图7 所示,图7(a)中,关键点p1和p2的y坐标之差Δy=-75,托盘水平方向左偏;图7(b)中,Δy=1,托盘水平方向正对; 图7(c)中,Δy=59,托盘水平方向右偏.通过 Δy可有效对托盘水平方向进行估计.
图7 托盘方向估计图
本文提出了一种基于关键点检测的托盘定位方法.首先将CenterNet 人体姿态估计引入到托盘定位任务中,完成对托盘外边缘4 个关键点的检测.然后改进关键点分组约束,并提出关键点回归自适应补偿,显著提高了托盘关键点定位精度.在关键点检测的基础上,提出了托盘中心点计算与托盘水平方向估计方法,提高了托盘中心点的定位精度,解决了目前目标检测算法无法有效估计托盘水平方向的问题.与其他托盘检测方法相比,本文提出的方法表现优异,下一步计划将本文方法应用于自动叉车系统中.