极智嘉研发总监陈超32页PPT深入讲解智能叉车托盘检测算法与VXSLAM技术【附PPT下载】

出品 | 智东西公开课

讲师 | 陈超 极智嘉研发总监

课件 | 关注智东西公开课公众号,并回复关键词“英特尔03” ,即可获取课件(www.bbmb.com.cn)。

回放 | https://appoSCMf8kb5033.h5.xeknow.com/st/8Nl2ftuYV

导读:

4月7日,极智嘉研发总监陈超在智东西公开课进行了一场的直播讲解,主题为《物流机器人视觉感知和定位技术的创新和实践》,这也是英特尔AI百佳创新激励计划系列专场的第3讲。

在本次讲解中,陈超老师围绕物流机器人对视觉感知与定位的要求、智能叉车托盘检测算法、利用OpenVINO加速托盘检测算法部署,以及极智嘉VXSLAM定位技术与实践,进行深入地讲解。

本文为此次专场主讲环节的图文整理:

正文:

晚上好,我是来自极智嘉的陈超,今天很高兴能跟大家一起分享物流机器人视觉感知和定位技术的创新和实践。本次分享主要包含4个方面:

1、物流机器人对视觉感知与定位的要求

2、极智嘉的智能叉车托盘检测算法的解析

3、利用OpenVINO加速托盘检测算法部署

4、基于VXSLAM的AMR定位技术与实践

物流机器人对视觉感知与定位的要求

对于普通的消费者,接触比较多的是电商快递,实际上一个完整的物流场景包含工厂物流、仓储物流、快递物流以及商业物流。除了电商之外,几乎所有的实体产业都有一套非常完善的物流体系,它们都需要去解决自己的原材料、半成品的存储运输问题。

物流是一个非常很大的产业,它有很多环节,因此形成了很多智慧物流的场景,比如智能分拣、智能搬运、智能叉车、智能仓储和智慧工厂。对于很多电商后台的仓库来说,就是一个典型的智能拣选的场景。这里我们可以采用一些货架到人的机器人,把货架搬到固定地点,进行人工拣选。智能搬运更多的用在工厂产线上进行一些物料、原材料的配送。分拣机器人主要是用在一些邮政以及快递的系统进行包裹的投递分拣。智能叉车主要是进行一些比较大重量的物品的短途转移运输,还有智能仓储以及智慧工厂。在多种不同的物流场景的背后,就是多种形态机器人起到的支撑。

那对这些机器人的感知定位有怎样的要求呢?首先,由于物流场景非常多样化,这对机器人提出不同种类的要求,比如有机械臂类的机器人,它需要对商品进行识别定位;辊道机器人,它需要把货物对接到指定的一些流水线上;还有一些搬运机器人、无人叉车等,不同的机器人会去完成一些特定的任务。

下面一个是叉车,叉车的负载能力非常强,但是它的危险性也会比较高。在叉车的工作环境中,无论是前面的叉耙碰到人也好,货物也好,都会是比较严重的事故,那么就需要高可靠性的算法来保证机器人的安全性。

对于稳定性,相对于其他机器人,物流机器人对稳定要求可能是7×24小时的,在武汉的邮政系统的分拣场景里一共有数百台机器,不同类型的机器人紧密的协作进行包裹快递的投送。我们可以想象一下,如果在这么一个密集的场景内,机器人发生故障,将某些区域锁死,那会造成重大面积的作业区域的瘫痪,会造成订单的堆积。

右上角是日本丰田的产线,机器人可以进行一些零部件的对接,在这方面对精度的要求非常高。

极智嘉的智能叉车托盘检测算法的解析

除了上面提到的高可靠性、安全性的需求外,智能叉车还有一些独特的特点,叉车的托盘有很多类型,有欧标的、国标的,还有非标的,还有一些是客户定制的,它们有不同的材质,比如塑料的、铁的、木头的,它们有不同的形状,有单孔的,双孔的、多孔的,那就需要我们对多种类型的目标进行适配。在精度方面可以看到,其实叉车的叉耙还是比较厚的,相对于插孔,留给它定位的余量其实就非常小,这就要求我们检测算法具有非常高的精度。

叉车上用的是深度相机,对于点云的处理,现在已经有一些比较典型的方法,比如说早期的PointNet、VoxelNet,后期的 Point-GNN等,在这里我们重点介绍下PV-RCNN,通常来讲基于Voxel方法的计算效率比较高,但是它的定位精度偏低,基于Point方法感受野可变,一般具有较高的精度,PV-RCNN就是结合两者的优点,它利用3D Voxel先做一个初定位,然后再关联到其中的keypoint,做一个精细的定位。具体来说它其实包含两个大的分支,第一是对原始的点云进行3D Voxel的处理,得到一些候选的3D框,在另外一个方面进行一些原始点采样,把关键点稀疏化,之后通过索引的方式关联刚才Voxel所提取的多层级的特征,进行融合,再进行目标的精细化。其实基于点云的方法对我们来说是最直接的,但在实际使用中,托盘对于3D点云数据的标注成本非常高,可能是图像标注的10倍以上,所以我们还是采用了基于图像的方法。

上图左上角是获取的深度图,转化成图像之后,可以用一些大家熟知的两阶段的处理方法如Faster-RCNN和R-FCN,一阶段的Yolo与RetinaNet等,在这里介绍一个比较典型FSAF,我们知道在目标检测里尺度是一个比较大的问题,为了解决尺度问题,现在主流的检测器都采用了FPN的结构,然后再基于anchor在不同的层上去布置anchor,那么就需要提前的去设置anchor的位置,以及它的各种尺寸与宽高比,那具体设置方法很多时候是基于一些启发式方法,简单来说,把一些目标的size框和各个特征层上的anchor框进行一个IoU的计算、排序。IoU最大的,我们就认为是检测层,这其实并不是一个最优的结果。FSAF主要针对特征的选择问题,它在RetinaNet的基础上构建了SAF的分支,我们可以采用一个anchor-free的分支,输出目标检测的热图,然后用这个热图去指导anchor-base的方法的进行目标检测,这样可以通过学习训练的方式得到最优,最终我们能够选取什么样的尺寸,什么样尺度的目标,应该在什么样层上去检测。FSAF它有一个很大的优点是它是一个模块化的方法,它可以直接的集中在很多的主流的检测算法之后,对算法的性能都有一定的提升。

最后看下我们的检测方法,首先,大家知道主流的目标检测都是基于bounding box的形式,简单来说就是拿一个bounding box无论是anchor也好,或者是其他方式,在整个图像里去密集的采样,然后最终回归出目标的类别和它的位置。后来诞生了一些基于关键点的方法,因为anchor的方法,我们要对anchor进行更加精细的设计,要预先有很多的先验在里面,有很多的超参数。后来基于关键点的方法主要有两类,一类是像基于这种左右 left top和right bottom的 CornerNet的方法。还有一类是基于CenterNet的方法,是基于目标的中心点,先把目标的中心检测出来,然后再去回归它的属性,包括它的边界。这里我们结合两种方法的特点,采用的是5点去描述,因为前面也提到我们对目标的精度要求非常高,那么大家可以想象在图像的视野里,其实托盘并不是一个真正的矩形框,它其实是一个四边形,我们用额外的4个点去检测会取得更高的精度。其实也是先通过一个Encoder-Decoder网络生成一个目标的中心点的热图,热图中的热度就代表了目标的概率,得到概率之后进行筛选,我们再进行关键点的回归。

该方法有一些特点,首先是一阶段的方法,它没有RPN的过程,没有了信息阻塞,前端的特征可以直接传递到最终的检测层,我们相信这一类的方法将来可能会有比较高的天花板。另外,由于是非bounding box的方式,没有NMS的操作,所以速度会更快。此外,由于采用的是编解码的形式,我们可以直接在高分辨率图上检测,所以不像一般的目标检测可能会在低分辨率或者是FPN的结果上去检测,所以也会有更高的精度。

最后对于另外一个分支,我觉得也是非常重要的一个分支,它支持整个托盘检测算法设计的一个重要目标:高可靠性。那具体怎样做?我们会建立另外一个Verification的分支,它同时接受网络检测的输出与托盘先验模型。因为事先有一些托盘模型的数据库,那么我们可以拿数据库里的托盘模型和我们检测的结果做一个相似性的判断,判断出我们检测的置信度,还是像刚才提到的在实际应用中,我们宁愿检出率低一点、漏掉一些目标,但是一定不能让叉车进行错误的叉取,以免造成伤害。这其实是我们结合类似于领域知识来对网络性能的一个提升。

利用OpenVINO加速托盘检测算法部署

首先,在服务器端训练网络模型,然后基于OpenVINO对模型进行优化以及转化,最终利用VINO的部署引擎,在Core i3的计算平台上,在机器人端进行部署。

可能有的朋友对OpenVINO并不太熟悉,在这里我们简单介绍下,OpenVINO是英特尔推出的一款针对深度学习和传统视觉的加速优化框架。它可以支持英特尔目前绝大多数的计算平台,包括CPU、集成显卡等等。它提供了统一的API让我们的算法一次编译、一次优化,快速的在不同的平台上进行移植。我们重点看一下Deep Learning部分的模型优化和推理引擎两部分,模型优化部分可以接收好训练好的模型,然后转化成内部特有的IR格式,然后部署推理引擎部分有一些硬件指令级层面的优化,它是一个非常轻量、高效的部署框架,可以快速的轻量级的部署在我们的嵌入式平台上进行模型的推理。在Deep Learning部分其实里面还提供了很多预训练好的模型,更重要的是提供了很多非常实用的工具,比如calibration tool可以进行一些量化,后面我们也会讲到,包括模型性能分析,一些可视化的工具等等。在传统视觉方面,也对大家都熟悉的Opencv和OpenVX做了一些指令集的优化,同时也提供了构建一个视觉处理完整pipeline 所需的一些底层的media SDK。

接下来讲下模型优化这部分,模型优化器是整个OpenVINO的框架里最核心的部分之一,它目前支持几乎所有主流的框架,我们用的是TensorFlow,但是它也支持Pytoech、Caffe等,它可以对模型的拓扑结构进行分析,然后进行一些优化操作,然后转化。

下面重点看下模型优化技术,其实可以看一下右边这张图,在很多的网络里需要有BN层,BN层大家知道其实就是一些bias和scale的先行操作,在这里单独做一层,其实计算效率并不高。是模型优化器,可以自动的去根据拓扑结构对这些网络进行一些合并,可以把的BN层往前合或往后移。可以看到网络的结构大为精简,更重要的是推理的速度会大幅的提高。

另外还有一些stride的优化操作,像在Resnet等一些结构里有很多1×1的卷积,同时它的stride可能是大于1的,对于这些操作,我们可以把stride进行前移,比如可以看下上图右下角的例子,前面是56×56的输入,然后两个分支都是在这里进行了kernel_size为1,但stride为2的操作,其实很多先前的一些计算被丢掉了,我们可以把它往前移,在前面的分支上构stride为2,kernel_size为1的操作,让输入特征图从前面就大幅的缩减,那么整个效率的提升是可想而知的。

最后看下推理引擎,推理引擎其实可以针对不同的平台进行优化。我们重点讲一下INT8的推理,我们知道INT8相对于普通的FP16的方式有很多优点,它的能效更高,单指令执行产出更多,带宽更高,内存消耗更低等。

这里面我们可以利用calibration tool进行一些模型的量化。具体过程是可以先在校准数据集上运行训练好的模型,然后记录下在float32下每层的激活数据,接下来可以对所有可能转化的转化成INT8的层级进行转化推理,然后收集一些精度下降的数据,比如某些层转换完之后,它的精度可能下滑了一个点是不能接受的,而有些层可能是几乎没有什么变化,我们就去转化它。

在进行这些模型的直接量化标准之后,我们可以让32位的模型可以以INT8的方式进行推理。不同的平台不一样,此项操作大概会有30%的性能的提升。基于前面的模型优化与推进引擎,我们还需要构建整个检测流程的一个pipeline。那就用到了我们之前提到的英特尔的底层的一些媒体处理库,比如media SDK做一些编解码的操作,包括Opencv的前端的预处理,包括后端的后处理等等,中间是我们的IE部分的推理框架。采用了OpenVINO与我们基于传统Opencl等等手工优化的方式来比,整体性能有了4倍的提升。

最后看下我们的一些落地案例,左图是疫情期间在欧洲某国际巨头医药厂商的仓库里落地的叉车。货物里头装的都是药品,我们可以想象对叉车的安全性要求非常高,药品是非常昂贵的。右图是一个石膏板厂的项目,大家看到这里的托盘类型就比较多了,这里头是双孔的,其实严格意义来讲,它并不是托板,这是客户就地取材,用他们石膏板的板材进行切割,做成了托盘的样子。我们看到上面有一些缠绕膜,他们会有一些垂落,所以这个项目对我们的定位精度提出了非常大的挑战。最终我们也是通过以5毫米的定位精度,满足了客户的要求,成功的部署。

基于VXSLAM的AMR定位技术与实践

首先,简单的介绍下AMR,AMR是自主移动机器人的简称,与我们所熟悉的AGV相比,它有一些不同,最重要的一点是定位和导航的方式的不同,传统的AGV主要是基于在地面上的一些引导线,比如一些色带或者一些磁条或者是一些电线等进行导航,后期有一些在地面上布置二维码的方案,还有一些在墙壁贴反光板的方案。

但无论怎样,传统AGV的导航的路径一般都是比较固定的。与之对应AMR主要是基于SLAM的定位方式,它无需对环境的基础设施进行改造,事先建立一个环境地图之后就可以进行定位。基于不同的定位和导航方式,他们有以下的不同,比如说AGV更适合执行相同的任务,它更适合传统的业务,而AMR我们可以对它进行灵活的配置,无论是线路也好还是任务也好,它更适合敏捷性的业务。比如制造业一个典型的场景,它具有作业点位比较多,业务变化频繁,人机混行的情况,那AMR可能是一个更适合的方案。

SLAM技术,传统SLAM包含激光SLAM、视觉SLAM,甚至有超声波的SLAM和防撞条的SLAM,但无论是哪种SLAM,本质上都是一个状态估计的问题。载有传感器的机器人在环境中运动,通过对地标点进行观测,来估计自身的一个位置变化。同时我们把所有的地标拼接起来,构建一幅地图,这就是SLAM。

传统的视觉SLAM,可能有一些比较好的方案,比如RTAB-Map, LSD-SLAM, VINS-Fusion等。近些年来随着深度学习技术的引入,对于传统SLAM性能有了一定的提升。这里我可能举一个比较有代表性的HF-NET的例子,这里也是分为离线的建图和在线的定位两个部分,在离线建图部分,我们对于输入的图像序列,通过HF-NET来提取它的local feature,这里用的是super point,然后通过SFM的方式来构建整个场景的地图,这里主要是把特征点进行三角化。

另一方面,通过HF-NET来提取一些全局的特征,之后对特征进行聚合,这里主要是用于后续的地点识别。在线定位阶段,根据机器人端输入的图像,HF-NET可以先提取它的全局特征,然后基于地点识别的模块,在整个场景中选取一些候选的位置。另外一个分支提取一些local feature,将local feature的位置与候选的一些3D点进行2D到3D的匹配来恢复位置。目前HF-NET的方法对于一些大场景以及包括一些变化,比如说光照变化比较大的场景的效果还是不错的。

目前VSLAM有一些成功的案例,比较有代表性的就是谷歌的VPS,它基于手机上的一个摄像头拍摄的单张的图像,就可以进行室内和室外的定位,进而导航。另一家是Facebook,最近几年 Facebook汇集了全世界做VSLAM领域比较有名的人才,包括收购了Zurich Eye / Oculus等等,做成了一套视觉定位的方案,效果还是比较稳定的。

VSLAM还存在很多挑战,最重要的可能是动态环境方面带来的挑战,上图是一个典型的仓库里的环境,可以看到右上角都是纸箱,随着作业时间的不同或者是任务的不同,这些摆放的料箱都会发生巨大的变化,比如机器人搬东西过去的时候可能会有三个货箱,等再回来搬时可能一个都没有。另外是光照的变化,通常产线上都是开灯的,但是有的时候有些作业点位会随着时间进行排班等一些变化,导致AMR需要穿过一些关灯的区域。另外在仓库或者是厂房里,有些区域有巨型的天窗或者侧窗,阳光的变化也会影响定位。另一方面是空旷场景下定位精度的问题。其实在很多的仓库里,固定目标很少,只有几个大的柱子,这些货品都是随着时间变化的,在如此空旷的场景下进行精确的定位,也是一个比困难的问题。

最后讲下VXSLAM方案。首先说明下X的含义,可以从两个维度来看,第一个维度是有多种不同的视觉元素,除了最典型的point、edge之外,更重要的是引入了object这种含有语义的信息。从另外一个维度来看,进行了异构传感器融合,首先最基本的是camera,此外还有IMU、Odom、激光。

我们整个系统设计最重要的目标就是高鲁棒性,这点和前面提到的叉车是一致的。上图是整个算法的框架,最主要的是建图和定位以及地图管理。首先,建图部分接受传感器输入的图像以及各种数据之后,进行BA优化来构建地图,同时比较特殊之处在于我们有一个object estimation模块进行动态目标的去除和一些静态目标的位置估计,把它加到地图里。另外地点识别模块可以用来进行回环的校正,在地图管理模块里,我们维护了各种异构的地图,比如刚才提到的各种feature的地图。从另外一个角度看,地图是多层的,后面会向大家介绍。在定位阶段,基于已经建立好的地图及地点识别模块给到的一些结果,综合来对位机器人的位置进行估计。

首先讲下异构地图,大家知道激光SLAM,特别是单线激光SLAM,在机器人领域还是比较成熟的,它有很多的优势。首先要融合的是激光的grid map,在这里融合其实有很多的问题,可以看到两种异构的传感器,他们的帧率不同、数据类型不同、特性不同,比如对于激光,它的全局一致性非常好,但是他在局部的却存在抖动的情况,而视觉局部其实精度非常高,非常平滑,但是却存在尺度漂移等问题。我们采用联合优化的方式,能够把激光的grid map和视觉的feature map做一个很好的融合,这样在集成定位时,提升定位的鲁棒性与精度。

另外一方面是object map,基于OpenVINO的平台,其实还运行着一个目标检测与pose estimation的模块,对于人包括临时摆放目标,会进行一些去除,来防止对于建图和定位的干扰。对于一些静态目标,还会进行位置的估计。比如在产线上有一些固定的重型设备,包括一些柱子、墙面、消防栓等,我们会把它加到地图里面。

基于目标的定位精度并不是很高,但是对鲁棒性的提升却非常大,在很多时候特别是动态场景下,我们可以仅基于一个目标,就对位置进行估算,或者是对整个位姿进行一些不完全的约束。这对于提升机器人整体定位的鲁棒性至关重要。

还有多层地图,刚才已经提到一些地图可能面临的几个比较重要的挑战,其中第一个是动态环境,动态环境包括布局的变化,光照的变化,在仓库里可能早晨、中午和晚上的光照非常不同。另外包括不同的作业区域,货物的摆放可能也是随着时间在发生变化,我们需要去建立一种多层的地图,上图是在不同时间段对同一个区域建立的地图,我们可以把它放到一起进行联合的优化。在整个地图里我们构建了静态的参考地图,在集成定位阶段,可以根据各自的匹配程度与一些先验来判断基于哪个地图进行定位。

最后看下客户现场的落地,上图左边是它的一条产线,可以看到在产线的两边堆了很多的物料箱,每天清晨的时候,这些物料箱就会被机器人搬运到此处,随着作业的进行,这些物料箱会被搬运至其他地点进行补货,所以这个场景的动态性非常高。中间上面的图像是建立的激光地图,下面是视觉地图,红线是视觉定位的结果。

基于可靠稳定的感知和定位技术,AMR机器人可以实现1-3个月的快速部署,对产线的物流有2-3倍的效率提升,凭借高投资回报率、高可靠性和敏捷性,我们相信在物流领域及AMR将会有更广泛的应用。

最后总结下,以AI技术为核心,实现高可靠性的AMR感知与定位。我们一再强调可靠性与智能是我们在技术方面的两个最重要的目标。基于此,我们希望打造高效、稳定的智能物流机器人解决方案,赋能全球企业实现物流智能化升级。

主营产品:收缩机,打包机