在自动驾驶中,环境感知是一个非常重要的环节,它不仅可以帮助无人驾驶汽车进行定位,还可以告知障碍物等信息以帮助决策模块去调整驾驶行为。在视觉感知任务中,实际上有很多细分的任务类型,比如目标检测、目标跟踪、语义分割、实例分割、关键点检测等,而这些细分任务在我们的环境感知中都有着非常重要的应用。
1、关键点检测技术简介
在图像处理中,关键点本质上是一种特征。它是对一个固定区域或者空间物理关系的抽象描述,描述的是一定邻域范围内的组合或上下文关系。它不仅仅是一个点信息,或代表一个位置,更代表着上下文与周围邻域的组合关系。
比如在人脸关键点检测任务当中,有 28 个关键点,或是现在比较流行的 64 个、128 个关键点,这里面每个点在不同的人脸当中,代表了一类的特征,且具有一定的通用性。这一类特征不仅包含了像素的一些特性,比如嘴唇的特征点,包含了嘴唇与面部的位置关系。
右边的图片是前段时间比较火的阿里推出的服饰关键点比赛,比如在这件服饰中提供了 13 类关键点,每个关键点之所以被定位为一类关键点,因为它代表了服饰当中某一个特定的位置,或者某一个特定的位置所能代表的周围的关系。而在人体姿态检测当中,这个关键点不仅代表一个关节,还代表着这个关节和其他关节之间的关系,比如这个关节能跟其他哪些关节联系得比较紧密。
2、关键点检测在自动驾驶中的应用
在自动驾驶当中,有一些关键点检测的应用。
比如箭头的检测,检出箭头的同时,可以把它的关键节点回归出来,不同的颜色的点代表不同的类型,并且不同的点有它的位置信息。通过这些点,作为地图上的坐标,可以实时、精确地告诉车辆,告诉自动驾驶的大脑,我们现在的位置。箭头的关键点检测,也是用了类似的方法,虽然它的网络模型已经改得面目全非了,但是它的原理是一样的,通过不同等级的金字塔级别,可以把不同级别的点信息融合起来,从而提高它的精度,另一方面提高它的检测率。
在箭头或者是其他的一些关键点当中,也是需要知道每个点和另外一个点之间连接的关系,也就是它关系的回归。
并不是所有的点回归都能够很精确。比如有些点在图像上,车辆运行过程中,有些箭头的关键点可以准确地回归出来,有些可能识别出来错误,这受限于我们之前学习到的经验等。这类问题可以通过一些后续的改进,比如说网络的改进、摄像本身的改进。另外也可以通过后期的其他公式、其他算法上用的多一帧或是匹配的方式,去修正一下错误。
另外在自动泊车或者自主泊车当中,需要先检测出车位,我们用点回归的方式可以把车位的顶点回归出来。在一个图象当中,可以回归出车位当中的一些关键点,这个关键点是有不同类型的。通过车位的关键点,我们可以精确获知到我们实车或者是车辆自身距离这些关键点和车位之间距离是多少,我们相对的要调整控制模块,使得我们能够自动泊进去这个车位。所以,回归的车位顶点信息,对我们自动泊车或者是自主泊车来说是非常重要的信息。
另外,利用点回归的方式,同时结合语义分割的手段,可以给出一个信息更加丰富的结果,网络可以输出这方面的结果,相当于是分割出来的车位信息、车库当中车辆数的信息、车位是不是空车位、这个区域是不是空车位的信息。
同时通过点回归的方式,在网络的另一个分支,可以得到关键点的位置在哪里。比如我们知道这个地方是个空车位,我们也知道它车位的位置,这样对我们自动泊车来说,就可以直接去停,这是很好的感知功能。