文章导读


本文讨论的核心思想来源于如何将车辆等障碍物的目标检测和车位识别统一在一个神经网络中处理,这一过程存在几个问题:1、多任务网络的必要性;2、数据输入形式的统一性;3、三维信息的表达形式。通过两篇鱼眼感知的文章和小编个人想法带着粉丝们进行算法分析。

1

引言

感知模块中往往不仅仅只有一个目标检测或者语义分割任务,如何通过鱼眼图像感知车辆周围的环境,研究人员需要做目标检测识别障碍物的类型和位置;需要做深度估计计算障碍物的横纵向距离;需要做语义分割划分车辆可行驶区域;需要做污渍检测监控图像质量等等工作,所以多任务的视觉感知网络成为一种不错的选择,网络可以共享编码阶段减少计算量,并在解码阶段多任务相互信息流通。从多任务的角度往往需要思考以下几个问题?

2

环视多任务感知需要做哪些事?

根据《OmniDet: Surround View Cameras based Multi-task Visual Perception Network for Autonomous Driving》这篇文章提供的思路,环视感知系统包含深度估计、语义分割、运动分割、目标检测、污渍检测、视觉里程计六大任务。

环视感知网络的多任务和单任务之争_3d

如何适应不同相机的径向失真?

考虑到多颗鱼眼摄像头具有不同的内参和视角,读者们可以考虑基于相机几何的自适应机制在训练和推理过程中编码鱼眼畸变模型,从而提升卷积神经网络对不同相机模型的适应能力。通俗点说就是假设一个虚拟相机,其他各个相机模型都转换到该虚拟相机后再输出结果。

如何权衡不同任务之间的权重?

由于不同任务的复杂程度存在差别,简单的损失相加必然会造成最终结果在某些任务上达到较好的效果,但是在其他任务上误差较大。早在目标检测的外接框回归中就存在中心点和长宽偏移的损失权衡,该问题与多任务之间的损失权衡具有同一个思想,需要炼丹师们在实际训练中根据不同任务损失下降的程度尝试性的给与权重进行测试。

如何表征鱼眼图像中的目标?

如下图所示,(a)中的标准矩形框会增加目标的冗余区域,当我们对目标位置进行2D转3D后,会增加测距误差,因此不适合鱼眼镜头图像的目标表示。(b)中的旋转矩形框较好的弥补了标准框的缺陷,但是在鱼眼图像中做外接框的检测存在畸变因素,所以真实的直线在图像中是弯曲的,因此旋转矩形框未能表征这一特性。(c)中的外接框形式在旋转矩形框的基础上引入了图像畸变特性,能够较好的表征鱼眼图像中的物体。(d)(e)(f)三种形式均以一定数据的点来约束物体轮廓,极端情况就是语义分割。

环视感知网络的多任务和单任务之争_多任务_02

3

多任务感知系统真的香吗?

随着AI技术的发展,深度学习越来越多的被应用在各种感知任务中,比如通过双目或激光雷达得到的真值采用深度学习训练像素深度:

环视感知网络的多任务和单任务之争_3d_03

用深度学习进行相机的失明/图像的污渍、模糊等失效检测:

环视感知网络的多任务和单任务之争_3d_04

用深度学习进行连续帧的运动物体分割:

环视感知网络的多任务和单任务之争_3d_05

还有深度学习做图像拼接、学习融合参数、姿态识别、去雾去雨去模糊等等应用。在大数据的加持,与传统算法进行各自性能对比可能有一定的提升,但是从融合成多任务的角度来说有以下几个考虑因素:

  • 融合成多任务的必要性
  • 子任务之间的权重设置
  • 硬件单元的算力分配
  • 网络输入形式的统一性

是否需要神经网络来处理所有视觉任务?

根据所开发功能的不同,感知任务也会存在差异。在环视系统中,由于鱼眼相机的有效检测范围只有20米以内,所以可行驶区域的分割就显得没那么重要。

再者相机的失明或图像的污渍检测应该在检测算法之前就对数据的有效性进行判断,而非和目标识别等功能并行输出。

再比如环视泊车场景中对车位的距离要求往往精确到厘米级别,采用神经网络进行深度估计很难达到工程要求。

是否用一块计算单元处理所有感知算法?

如果将所有子任务都放在一个神经网络中进行处理,那么有可能造成算力资源的浪费,许多硬件厂商对外宣称的芯片算力是各个计算单元的总和,如TDA4x中就包括多块DSP。从最大化资源利用角度上应该将不同算法分散部署同时运行。

是否能统一多任务网络的数据输入形式?

虽然很多视觉任务是针对单帧来处理的,但是视角可能存在差异,目标主流的环视系统中对车位线的检测是将四颗鱼眼采集的图像拼接成鸟瞰图后输入网络,而障碍物检测的视角往往是前视图形式。

4

如何用单任务识别物体和车位?

这里所说的环视感知系统的单任务仅针对神经网络部分,环视感知最关心的是3D障碍物的识别和车位的识别。我们将相机的失明检测,目标的距离估计,平面的假设方程等任务剥离出神经网络,只关心障碍物和车位的目标检测;然后统一输入数据的视角;并在车位线识别中使用检测方法取缔分割任务。

鱼眼图像中如何检测2.5D或3D的障碍物信息?

首先我们知道在感知系统中,2D框的检测基本没有太大的意义,如果无法得到车辆的朝向信息,就无法精确的计算目标车辆距离本车的实际距离。所以炼丹师们一般会考虑在2D框的基础上增加朝向角的预测是否就可以得到一个2.5D的目标形式了呢?如下图所示:

环视感知网络的多任务和单任务之争_多任务_06

以及更加端到端的做法是否可以直接回归出3D立体框呢?如下图所示:

环视感知网络的多任务和单任务之争_深度学习_07

当然根据实际操作经验,直接回归3D框目前还不太稳定,不过基于2.5D的预测在加上后处理等功能已经能实现辅助驾驶中L2+的功能需求了。

障碍物的检测毫无疑问采用鱼眼图像进行处理,但是车位线的检测是否也能在该视角下进行呢?

读者可以参考这篇文章:《Real Time Detection Algorithm of Parking Slot Based on Deep  Learning and Fisheye Image》。算法大意分成三步:

  1. 检测车位的外接框和角点框
  2. 将目标的位置转换到真实3D坐标
  3. 通过车位和角点之间的位置约束过滤结果

环视感知网络的多任务和单任务之争_深度学习_08

在图像中检测到车位和角点后,由于图像畸变和透视投影的关系,角点之间的距离无法通过像素坐标直接判断,所以需要根据平面模型和相机参数等外部输入将2D的像素坐标转换成3D的世界坐标中。

最后通过判断车位框和角点框的包含关系以及角点框之间的距离约束过滤掉部分误检信息。如下图所示:

环视感知网络的多任务和单任务之争_3d_09



环视感知网络的多任务和单任务之争_多任务_10