看过漫威电影的同学都知道,钢铁侠在装甲里一眨眼,就通过眼球追踪操控人机互动,集黑科技于一身的装备简直不要太炫酷。
如今,我们再回头看钢铁侠的AI识别系统,不禁思考这背后的视觉技术。如何让机器人像人类一样获取视觉能力?有请优必选研究院副院长程骏为我们介绍今天的重要课题——机器视觉技术在服务机器人上的应用。
什么是机器视觉技术
在讲视觉技术应用方案之前,我们首先弄清楚一个问题:什么是机器视觉技术?
我们都知道,机器人本身并不具有视觉感知能力,因此需要通过机器视觉技术赋予机器人一双“眼睛”,让机器人像人一样具备检测、判断、识别等能力。
机器视觉技术,就是指用计算机来模拟人的视觉功能,但这并不仅仅是人眼的简单延伸,更重要的是具有人脑的一部分功能一一从客观事物的图像中提取信息,进行处理并加以理解,最终用于实际检测、测量和控制。
为什么要赋予机器人“视觉”
通过视觉感知世界是服务机器人必不可少的能力。
对于目标物体,不仅要知道是什么,而且要知道在哪里;在自主导航过程中,机器人会遇到人、车、植物等影响行走的障碍物,目标检测可以作为导航避障的一种手段;看护类机器人,需要有跟随看护人的功能,只有检测并识别到了人,才能进行跟随以及进一步交互…
更进一步地说,服务机器人常用的视觉技术主要有三种 ▼
· 检测:将一张图片中的所有目标检测出来,并输出目标的位置和大小,通常以bounding box的形式输出结果。
· 识别:识别出图像中的物体的种类或者人的身份。
· 跟踪:通常讲将各个视频图像序列中各个目标之间的轨迹关联起来,就形成了目标跟踪。
在实际应用中常常需要应用多个技术。比如,在物体识别中,服务机器人常常在检测多种物体的同时也输出被检测到的物体的种类。而人脸识别则通过人脸检测和人脸比对或者识别两个主要步骤来完成。在人体姿态估计中,服务机器人则检测来确定人体各个关节点,并在检测中利用各个关节点之间的相互关系来提高精度。
接下来,让我们从3个方面看看视觉技术在服务机器人中的应用:口罩佩戴识别、人体姿态估计、物体识别。
口罩佩戴识别
2020年初一场疫情,让“戴口罩”模式彻底流行起来。针对这道“健康防线”,优必选科技根据不同情况训练出了三类AI算法:佩戴口罩、未佩戴口罩、口罩没戴好,协助疫情管控人员进行监测。
一般来说,口罩识别分三步进行(读入视频图像→人脸检测跟踪→口罩佩戴识别),在人脸检测的基础上,重新训练了分类模型来识别是否戴口罩。
当落地到防疫机器人上,除了正常的视频读入与人脸检测跟踪外,我们还新增了姿态估计和语音提醒,当检测到口罩不规范戴法,机器人会及时发出语音提醒用户戴好口罩。
划重点,为什么要加入姿态估计呢?因为在口罩识别的过程中,大多数需求是偏向正脸的,由于侧脸口罩信息不全,容易造成误识,因此融入人脸姿态估计,来抓住人脸轨迹中的正脸,实现口罩状态的精准判断及推送。
在姿态精估上,优必选科技自研适用于机器人端的轻量级神经网络,结合关键点和姿态做出多层侧脸过滤,从而优化侧脸误报体验,实现复杂场景下的人脸姿态精确估计。
但是在口罩识别的场景中,如果每一帧都要算精确的姿态估计,在多人情况下,对计算的考验非常大。
为了避免这种情况,可以采用姿态粗估的方法。直观地说,就是通过一种基于关键点位置信息的策略来判断人脸正侧。比如双眼距离定义为d1,眼睛到嘴巴的距离定义为d2。当正脸旋转到侧脸时,容易发现d2基本不变,而d1却在显著减小。这样就能通过姿态的粗估,抓取正脸的图像。
除了姿态信息不全外,移动端的人脸检测也常常带来很多误检,其中误检概率较高的情况有后脑勺、手、人脸检测不全、衣服等。
为了改善误检的情况,设计了极其轻量的网络来做人脸校准,通过对人脸的筛查,误检的过滤率可达99%以上,能有效规避误检带来的误报。同时加入人脸跟踪,实现跟踪去重推送,1个人只推送1个状态。
人体姿态估计
这是几十年来一直受到计算机视觉社区关注的重要问题,也是了解图像和视频中人物的关键步骤。人体姿态估计,是指从单张RGB图像中,精确地识别出多个人体的位置以及骨架上的稀疏的关键点位置。
· 2D姿态估计:从RGB图像估计每个关节的2D Pose(x,y)坐标。
· 3D姿态估计:从RGB图像中估计每个关节的3D Pose(x,y,z)坐标。
从广义的角度看,人体姿态估计其实是基于视觉的人体活动分析的技术之一,又分为全身、头部和人手的研究方向。
有什么难点?比如强大的关节,小而几乎不可见的关节,柔性的人体,各种衣物遮挡和灯光变化都使人体姿态估计面临不少挑战:
· 人体是柔性的,人体任何一个部位的微小变化都会产生新的姿态。
· 关键点的可见性受衣着、姿态、视角影响很大。
· 图像分辨率,较难识别远处人像的姿态。
· 面临遮挡、光照的环境因素等影响。
其实在取名上,我们就已经看到“估计”二字,所谓的估计就代表着有很多“不可见”的东西。在标注方法上,学术界有不同的状态说法(如下图),这些在训练当中都会有不同的策略去对待。
对于人体姿态估计的常见方法,近几年比较火的是一些基于热图的方法。比如说像卷积姿态机,通过不同的Stage,计算出不同的热图,然后从这些热图上拿到关键点。再通过后面的几步Stage,把关键点关联上。因为人体关节点的相对位置是有一定固定关系的,通过这种关联可以减少误差。
那么,做好人体姿态估计分析有什么用呢?你可以在一段时间内追踪一个人姿态的变化,在动作、手势和步态识别上都有不同的应用场景:
· 安防监控:人的异常行为动作检测识别,如斗殴、驾驶打电话等。
· 娱乐:人形机器人动作模仿、交互、动作打分、体育视频处理、控制游戏中人物动作、AR。
· 教育:学生写字、低头、举手等动作识别。
· 服务类:特殊人群(老人、小孩、孕妇)体态分析,如摔倒等。
· 多任务学习(MTL)。
在教育机器人Yanshee上,我们将2D人体姿态估计与3D人体姿态估计应用于动作模仿。
通过Yanshee头部RGB相机采集图像发送给计算设备(云端或笔记本),利用跟踪方法处理得到的2D或3D关键点信息,再将位置信息发送给运动控制模块解算关节运动角度,进而模仿人的运动。
物体识别
我们的物体识别是基于检测的,物体检测和目标检测就是找出图像中所有“感兴趣目标”,包括目标定位和目标分类两个子任务,同时确定的类别和位置。
由于目标具有不同姿态、运动具有不规则性,传感器的景深、分辨率、天气、光照等条件和场景也呈现多样性,摄像头所拍出来的图像千差万别。
作为CV重要技术,目标检测算法的结果直接影响后续的跟踪、动作识别和行为描述的效果。因此,目标检测这一基本任务仍然非常具有挑战性,尤其是在机器人身上做目标检测,存在很大的提升潜力和空间。
目前主流的目标检测算法主要是基于深度学习模型,方法从Two-Stage发展到One-Stage ,从Anchor based到Anchor Free检测算法。
· Two-Stage目标检测算法
这类检测算法将检测问题划分为两个阶段,第一个阶段首先产生候选区域(Region Proposals),包含目标大概的位置信息,然后第二个阶段对候选区域进行分类和位置精修,这类算法的典型代表有R-CNN,Fast R-CNN,FasterR-CNN等。
· One-Stage目标检测算法
这类检测算法不需要Region Proposal阶段,可以通过一个阶段直接产生物体的类别概率和位置坐标值,比较典型的算法有YOLO、SSD、CornerNet和CenterNet等。
以智能机器人悟空为例,在目标检测中就有非常多的需求。比如说通用的物体识别,将物体放置悟空面前,触发关于物体内容的进一步语音交互;拖动积木条进行编程,通过对图像主体的分类结果返回对应的值,也就是当识别到某样东西,才能做下一步的行动,触发编程条件。
知乎视频www.zhihu.com通过物体检测算法,悟空能够检测出包含水果花卉等多种生活中常见的物体。从算法层面,在CenterNet的基础上,使用轻量级的网络模型提取物体的特征,输出物体的检测框。与之前的物体检测算法不同之处在于:该算法输出一张物体中心热力图,通过对该热力图的分析处理,直接输出待检测的物体中心点以及物体的长和宽。
但是如果训练样本不足、训练数据中样本不够丰富、训练样本类别不均衡等,视觉上相近的物体也很容易误识别。
那该怎么办呢?比如针对难区分的苹果和桃子,就可以利用预测置信度和后验概率来作后处理。设置一个阈值,当第一类是苹果,且苹果的预测置信度(confidence score)不够大时, 就在top3 score中找有没有桃子,当二者之间的预测置信度相差不大时,我们就认为该预测结果是桃子。
其实机器人身上可以应用的视觉技术,远不止于上面提到的几个应用,还有视觉导航、语义地图、物体抓取、视频分析等等……
相信结合深度学习算法和机器视觉技术,机器人将更好地帮助人做更有价值的事情,为社会带来持续不断的动能!
想了解防疫机器人背后的AI技术,请戳下面链接:
在你的领域或者专业里,AI 可以带来哪些革新与进步?www.zhihu.com