除此之外,在室外的一些定位当中,可以用关键点回归的方法去回归路牌的定点。可以通过这个点反馈在地图上,更加精确地知道我们实时的位置。对路牌来说,2D 目标检测并不能全面描述其信息,因为图像中有很多倾斜的路牌。通过点回归的方式,可以清晰地得到它在图像中的真实形状与位置。通过一些摄像机的成像原理,或其他的修正手段,可以把这个位置信息投影到真实的三维信息当中去,更好地帮助我们确定车辆自身在三维世界当中的位置。
在图象当中做二维 bounding box 之或做三维bounding box 的目标检测,点和点之间的关系后剩下的顶点其实就可以看做是关键点,去掉的这个关系就是它的框,也就是它的连接关系。所以,去掉连线之后,就可以看成一个点回归的问题。做目标检测或者是做三维目标检测当中,比较重要的研究问题是如何把这个点回归的问题做得更精确。有很多人用一些模板的方式,比如说像目前百度的 Apollo 2.5 当中,其实有一个模式是相当于把这边真实的三维的候选做了很多匹配,看哪个跟检测出来的更相近或者更相匹。
这个方法,其他公司也有类似的状况,在做点回归的时候,都是直接在图片当中做三维的点回归,因为二维的点回归是比较相似的。我们可以看到在比较远处时候,就直接二维回归,在稍微近一点的时候,可以做三维的点回归。因为在远处的时候,这个侧面是很难看出来的,在相对比较近的时候,可以精确地描述。目标车辆下面这个斜边代表着它的航向角,这个航向角和公共的航向角定义不太一样,相当于这个车身的航向角,这个航向角对我们来说很主要的,可以判断出或者是辅助我们判断出前方车辆运动的趋势或者是运动的范围。
因为结合多帧信息,这个航向角会有变化的曲线,我们根据这个曲线可以预测出这个车辆是否有变道,或者是否有急转这样的趋势。通过这样的信息,可以帮助决策模块做一些重要的决策。比如预测出前方车辆要变道插队了,防插队也是我们自动驾驶当中遇到的很重要的问题;比如很多车,做 L1 和 L2 的方案当中,在尝试编程当中,前方车辆如果要插队,对我们自动驾驶的车辆来说很难识别。前面的车有没有插队的趋势,一般都是是有一定经验的司机能够准确或者是最高精度地判断出来。因为是否能够判断出前方车辆司机有插队趋势,对于我们正常的人类司机来说,也造成了很多的事故。因为判断不出来前面的车辆是否有插队的趋势,而前面的很多新手司机突然变道,这样就会发生一些比较经典的擦碰或者是追尾事故。这类事故放在自动驾驶车辆上来说,理论上可以做到比人类更高的精度。
用点回归的方式,可以去解决在一些场景当中三维目标检测的问题。对于点回归来说,需要根据周围的关系去判断这个点是不是应该在这里。而在三维检测的时候,经常会出现目标不全或者是目标存在一定遮挡的问题,这就需要我们去增加它的感受范围,或者是增强它在这方面的处理能力,这是可以去有效规避的事情。
可以用一些小的网络去做,比如说这张表当中描述的是用不同的方法去回归点不同的任务,如人体、箭头、车位线、路牌、车辆等,还有很多其他类型的点回归任务,都可以用这种方法,总体上来说,都是可以去解决,但是处理的能力是有限的。比如在车辆的关键点上来说,车辆的关键点回归的时候,整体回归的效果一般,因为车辆本身也是一个比较难的问题,整体的精度也比 2D 的要低很多。目前精度比较高的方法仍然是以激光雷达数据为辅助的方法,以视觉为主的方法目前还没有打进前三名,甚至只能排前十。
另外一方面,在用经典的 mask-rcnn 方法去做这类问题的时候,也受限于刚才所说的精度问题,下采样的倍数越高,回归得到的结果精度就越难以保证。这方面用到了很多级联的方法来提高精度,比如先用一个 28 x 28 的,再用 56 x 56 的,再用一个 112 x 112 的,这样精度逐渐提高了,但是它的运算量并没有被提高,或者复杂度并没有被提高,不是乘的关系而是加的关系,用两者的策略做的事情。这在我们的算法工程师或者是同行业当中,应该不是什么难的问题。