自动驾驶环视感知:多任务学习
前言
近期,随着特斯拉等一众智能车厂发力,智能驾驶已成为消费者在选购车型中重要的考量维度。在智能驾驶技术研发中,受到关注度最高的是远场感知系统,非常容易获取到相关的技术资料。相对而言,近场感知受到的关注少很多,但是技术复杂度并没有因此降低,尤其是在泊车场景,近场感知能力尤为重要。缘于此,笔者近期会分享关于环视近场感知技术的系列工作,希望对该领域的技术同僚有所帮助。
附赠自动驾驶最全的学习资料和量产经验:链接
背景
环视鱼眼相机在汽车中使用已有十来年的历史,从周边场景可视化到为自动泊车提供近场感知等等。其中的关键器件–鱼眼相机具有较大的径向畸变,即使采用校正算法仍会有比较大的副作用,包括视场角减小以及重采样扭曲缺陷等。因此,同一物体因为成像空间畸变破坏了表观特征位移不变性,给下游感知算法带来了巨大挑战。本文将阐述基于原始鱼眼图像的多任务感知技术,绕开畸变校正环节;其中多任务包括:深度估计、视觉里程计、语义分割、移动分割、物体检测以及镜头污染检测等六个主要感知任务。
智能驾驶场景(包括自动泊车场景)为了覆盖各种奇葩的工况,往往需要一个非常健壮的感知系统。采用各类方法并行实现物体检测是一种比较好的提升准确率的方案。例如,基于外观、移动、深度估计等特征来实现精确的物体检测。在设计一个比较完备的车载感知系统中,除了算力部分,模型架构的优化也是至关重要的。多任务学习就是一种非常好的设计范式,其中多个任务可以共享大部分计算从而节约算力。除此之外,从多任务中学习特征本质上也是引入了正则化,提升了模型泛化能力。
感知任务及损失函数
图1 基于原始鱼眼图像的实时感知评估结果。(a)后视镜采集的图像,(b)深度估计,(c)语义分割,(d)移动分割,(e)24多边形的物体检测,(f)镜头污染分割
如上图1所示,环视感知系统主要包括语义任务、几何任务以及镜头污染检测。其中标准的语义任务包括物体检测(行人、车辆以及自动车)和语义分割(路、车道、路沿)。另外,鱼眼镜头安装的位置偏低,容易受到泥土或水渍的污染,影响成像质量;因此需要镜头污染检测以提高感知系统的鲁棒性和置信度。对于语义任务来说,往往需要标注大量的数据来覆盖各类场景,但实际上是不可能做到覆盖所有可能物体。因此,采用移动和深度这样的几何信息来实现长尾物体的检测,与标准语义任务相互辅助,从而实现更健壮的感知系统。在智能驾驶场景中,移动信号非常重要,一般采用连续帧或者光流来进行计算。之外,为了衔接后续规控任务,往往需要基于视觉里程计来实现检测物体建图。
几何任务
基于自监督的距离和姿态预估网络
基于SfM框架构建了一个自监督的深度估计网络,如下图所示。
几个关键损失函数如下:
距离函数:
判别损失:
收敛损失:
通用物体检测
由于鱼眼镜头存在大的径向畸变,常规的bbox表征会失效,尤其是在鱼眼成像边缘位置。针对不同的检测框表征也进行了探索,包括有向bbox、弯曲box、椭圆框以及多边形。在多任务学习框架中,采用了一个24边的多边形框表征方法,基于YOLOv3检测头的检测效果如下图所示。
图2 在WoodScape数据集中24边多边形检测器的检测效果。
分割任务
污染物分割
对于智能驾驶系统来说,镜头污染物检测是非常重要的,主要用于触发镜头清洁并改善镜头成像质量。污染物分割采用监督学习方式训练,并使用Lovasz-Softmax损失函数。典型的镜头污染物分割结果如下图所示。
图3 WoodScape数据集上污染物分割定量效果
移动分割
移动分割基于连续两帧图像输出一个二值化的移动或静态掩码。 在训练过程中,网络通过Lovasz-Softmax损失函数进行监督学习,为了改善类别不均衡问题,一般会采用Focal loss替代交叉熵损失。典型的移动分割效果如下图所示:
图4 WoodScape移动分割的典型样例
多任务学习的网络架构
常见的密集预测通常都采用encoder-decoder结构来实现,是非常容易在共享同一个encoder结构基础上实现多任务预测。图5展示了一个基于环视相机的多任务感知系统框架,在encoder结构中引入了矢量注意力机制。在移动预测网络头,采用了孪生网络来拼接源图像帧和目标帧的特征并传递给下游的超分辨解码器。由于孪生网络权重参数共享,之前帧的编码特征得以保存并重复利用。在单视图重建任务中,采用了一个额外的自注意力自编码器。之外,在解码器中还引入了跨任务连接来相互提升。
图5 OmniDet网络结构框架图
大部分之前的多任务学习工作都采用硬参数共享技术,在同一个encoder基础上引出多分支任务预测头。而本文中,则采用了松耦合的方式既可以保持各任务之间的独立性,同时在跨任务之间进行了融合。例如,语义分割由于不规则的纹理缺陷预测路面存在一个坑洞,而深度估计则可以修正这个缺陷。下图6展示了多任务之间的融合过程。
图6 OmniDet框架中的多任务融合
联合优化
在多任务学习中各个任务之间的loss平衡是非常重要的,为此本文评估了多种任务加权策略,包括Kendall不确定loss、梯度幅度归一化GradNorm、动态化的任务优先级调节DTP、动态权重平均DWA以及几何损失。
本文还提出了一个方差归一化VarNorm,在最后n epochs中根据方差来对每一个loss进行归一化,公式如下所示:
如下表所示,平均加权的效果是最差的;即使采用任何动态任务加权方法,多任务网络都比单任务网络表现更好。最后,采用VarNorm加权方法的效果是最佳的。
表1 在WoodScape数据集上各类多任务加权方案效果对比
实验结论
单任务与多任务对比
表2 多任务学习与单任务学习在三类数据集上的对比研究
消融实验
表3 OmniDet模型在WoodScape数据集上的消融实验
KITTI上的SOTA对比
表4 在KITTI数据集上深度估计的对比
表5 在KITTI视觉里程计数据集上姿态估计的效果对比
表6 各类物体检测框表征的效果对比
结论
本文探讨了鱼眼环视感知中6任务学习方案,采用了共享encoder和融合decoder。虽然主流的智能驾驶技术研发通常关注单任务设计,但在多任务设计和训练方面已有显著的突破。本文介绍了一些创新的方案,包括基于几个张量来编码径向畸变、基于方差的任务权重归一化以及通用物体检测表征。同时选择KITTI和Cityscapes数据集来对比和评估各类方案。当然,在扩展更多任务的方向上仍有比较大的挑战,包括如何建设一个多样且均衡的数据集、corner case挖掘、稳定训练机制以及设计一个统一的映射表示来融合各个任务减少后处理等。