• SoilingNet: Soiling Detection on Automotive Surround-View Cameras 个人总结


    SoilingNet:汽车环视摄像头的污染检测

     

    摘要

    摄像头是自动驾驶传感器套件的重要组成部分。环视摄像机直接暴露在外部环境中,很容易被弄脏。与其他传感器相比,由于脏污,相机的性能下降幅度要大得多。因此,准确检测摄像头上的脏污至关重要,尤其是对于更高级别的自动驾驶而言。我们创建了一个新数据集,其中包含多种类型的污渍,即不透明和透明。它将作为我们 WoodScape 数据集 [15] 的一部分公开发布,以鼓励进一步的研究。我们使用基于卷积神经网络 (CNN) 的架构展示了高精度。我们还表明,它可以与多任务学习框架中的现有对象检测任务相结合。最后,我们利用生成对抗网络 (GAN) 生成更多图像用于数据增强,并表明它成功地工作于类似于风格迁移。

    一、 介绍

    通过使用各种不同的传感器,自动驾驶系统正在变得成熟。 摄像头仍然是关键传感器之一,因为道路基础设施是为人类视觉传感器设计的。第一代系统主要使用单个摄像头,最近更多的摄像头用于全面覆盖车辆周围,以处理更复杂的驾驶场景[5]霍根等人概述了深度学习时代和Sistu[6]等人之前的各种视觉感知任务。[12] 从深度学习的角度提供了概述。

    在恶劣的环境条件下,计算机视觉算法的质量会因雨、雾、雪等恶劣天气而显着下降。当相机镜头暴露在雨中或冬天结冰时,这种情况尤其严重。此外,外置摄像头也会暴露在泥土和灰尘中。因此,重要的是检测相机镜头何时被弄脏,以便系统意识到视觉算法将严重退化。在2级[8]等自动化程度较低的上一代系统中,进行了污染检测以让人类驾驶员知道视觉算法不太可靠。对于4级等更高级别的自动化,自动驾驶系统需要自动检测污染并进行纠正,例如 通过使用清洁系统。

    图1 从左到右:a) 安装在车身上的脏相机镜头; b) 先前图像中被污染的相机的图像质量; c) 被大雨弄脏的图像示例。

    相机镜头脏污也发生在手机中,现代手机检测到它们并要求用户手动清洁。然而,可用于污染检测的文献和数据集非常少。与文献中提到的污染检测最接近的问题是 Porav 等人最近的工作[10]他们创建了一个设置来捕捉相机镜头上的水滴,并有一个没有水滴的平行设置。 然而,根据我们对水污染的经验,雨滴会猛烈地溅到镜头上,如图 1 (c) 所示,而缓慢的滴水则无法捕捉到它。一个相关的问题是设计稳健的算法来隐式处理这些场景,例如 Sakaridis 等人[11]开发了一种鲁棒的语义分割算法来处理有雾的场景。 另一种方法是图像恢复以提高图像质量,例如在 [3]、[1] 和 [9]中提出了去雾方法。最近,计算机视觉会议 CVPR 2019 组织了一场名为UG2[17]的竞赛,以评估自动驾驶在低能见度条件下的视觉算法。

    本文的主要贡献如下:

    1)汽车场景脏污检测任务的介绍和正式定义。 2)高精度脏污检测算法和实验结果的实现。 3)结合基于生成对抗网络 (GAN) [4] 的数据增强以改善结果。 4)在我们的 WoodScape 数据集论文[15]中简要介绍了第一个公共污染数据集的发布。

    本文的结构如下。第二节正式定义了脏污检测任务,讨论了自动清洁系统和污染数据集的设计。第三节讨论了实验设置、提出的卷积神经网络 (CNN) 架构和基于 GAN 的数据增强。第四节介绍了实验结果和分析。最后,第五节总结和总结了论文。

    二、 脏污检测任务

    A. 动机

    如简介中所述,脏污的镜片会降低视觉算法的性能,因此通知系统和或驾驶员潜在的退化影响至关重要。更具体地说,脏污检测输出用于下面讨论的自动驾驶系统的三个方面。

    清洗系统

    图2 我们的相机清洁系统的插图

    环视摄像机通常直接暴露在不利的环境条件下。因此,人们无法避免一种情况,例如溅起的泥土或其他类型的污垢击中相机。另一个更常见的例子是大雨,水滴经常撞击相机镜头表面。随着视觉感知的功能显着下降,检测脏相机对于实现更高水平的自动驾驶是必要的[8]。图2展示了我们的清洁系统,该系统通过喷洒温水来清除冰块。一些系统另外有一个鼓风机来清理剩余的水。由于清洗系统是水基的,它的水箱需要定期补充。因此,重要的是要有一种具有低误报率的算法来减少重新填充。

    算法退化

    污染检测可用于估计算法退化以部分禁用或降低输出的置信度。简单的降级机制是如果镜头上有任何脏污,则关闭所有算法。然而在实践中,支持算法的部分降级是很重要的。例如,脏污检测算法可以输出脏污的严重程度,这可以用来降低视觉感知算法的置信度,以便输出仍然有用。定位污点而不是图像级污点检测也很有用,因为图像的某些部分可能仍然是干净的,并且感知算法可能工作正常。许多经典的计算机视觉算法都是本地操作符,因此可以针对某些脏污区域选择性地禁用。然而,CNN是全局算子,文献中没有研究它们对部分污染的行为。

    图像恢复

    图像恢复用于自动驾驶,以提高运动模糊、弱光和其他环境恶化(如雨、雾等)的质量。一些恢复技术包括去雨[10]、去雾[11]和去雾[9]。特别是在镜片脏污的情况下,修复技术可以专门用于特定的脏污类型,因此脏污检测可能很有用。例如,当检测到透明污染时,可以通过利用部分可见性来使用专门的修复技术来修复这些区域。

    B. 正式定义

    据我们所知,到目前为止,我们之前的论文[14]仅简要描述了污染检测任务。然而,在那篇论文中,我们只概述了这个问题,并描述了将GAN[4]应用于与脏污图像相关的高级数据增强的可能性。在本文中,我们想定义脏污检测/分类的问题,并提出解决方案并报告经验结果。

    我们将相机脏污检测任务定义为多标签分类问题。 每个图像都可以用一个二进制指示符数组来描述,其中 0 和 1 分别对应于特定污染类别的不存在或存在。 我们定义的污染等级是 C = {opaque,transparent}。每个类别的定义如下:作为“不透明”类别,我们在图像中标记这样的区域,在这些区域中,如果没有污染,就不可能说会看到什么,即用不透明颜色着色的区域防止 看看背后是什么;作为“透明”类,我们标记明显模糊或与预期外观变形的区域,但是可以将颜色与原始风景区分开来,即可以看到“后面”。请注意,这样的定义使一些看似不自然的结构成为可能,例如“不透明”的水污染。然而,从我们为此目的记录的数据中,我们可以说这种结构经常被观察到,这证明了我们的定义是正确的。

    给定单个图像 I ∈ I,我们对分类器 g : I → C 2 感兴趣,其中 C 表示类标签集:C = {opaque,transparent},其中标签应该是二进制的,指定是否 给定类型的污染(即不透明或透明)是否存在(在这种情况下,值为 1)或不存在(值为 0)。那么很明显,向量 c1=[0,0]表示干净的图像,而c2=[1,1]表示存在两种类型的污染类别的图像。所寻求的分类器 g 在误差最小化方面应该是最佳的,误差是通过污染类别的错误分类数量来衡量的。我们通过人工标注标签的二元指标数组的汉明距离和分类器返回的预测来测量错误分类:

    公式一

    其中 c 表示预测的二进制编码类别,c GT 是相应的地面实况标签。 最后,ham(·,·) 表示汉明距离。 整体误差测量为整个测试集上 ε cat (c GT ,c) 的平均值。

    图3 使用多边形(顶部)和从多边形(底部)派生的瓦片级地面实况生成进行污染注释

    上述图像级别分类的定义可以推广到图块级别,以提供更高级别的检测空间分辨率,如图 3(底部图像)所示。当tile大小为 1x1 时,它专门用于像素级标注语义分割任务。当图块大小等于图像高度乘以图像宽度时,它就成为图像分类任务。在经典的特征提取加分类器设置中,可以独立处理每个图块,但使用深度学习模型,全局上下文可用于每个图块的输出

    三、 数据集设计和提议的架构

    本节在以下三个小节中总结了本文的主要贡献。首先,我们创建了一个数据集,该数据集将部分公开共享,因为它是自动驾驶中新定义的任务。我们展示了基于 GAN 的数据增强技术的成功应用。最后,我们讨论了用于污染检测的监督 CNN 模型并展示了良好的准确性。

    A. 数据集创建

    我们总共收集了 76,448 张图像,我们的采样策略只是从短视频记录中提取每10帧。这样做主要是为了降低数据集中图像的自相似性。注释是手动创建的,通过单击图像中包含的污垢的粗多边形分割点以及关于污垢质量的附加信息(如果它是透明的或不透明的)。请注意,这种类型的注释允许我们对基于全帧和基于图块的检测实验使用相同的表示,因为多边形注释可以直接转换为请求的注释向量格式,即多边形注释(其中每个 polygon 被标记为完全透明或完全不透明)被转换为基于tile的标签1,其中每个污染类别的存在是根据瓦片与相应多边形重叠的百分比来计算的。

    为了对训练后的分类器进行训练、模型选择和最终实验评估,我们将数据集拆分为不重叠的训练集、验证集和测试集。我们使用60/20/20比率的黄金标准来获得这些拆分,并且我们使用分层抽样方法来保留拆分之间类的基本分布。该过程分别针对基于全帧的方法和基于图块的方法独立完成。

    这导致以下统计数据。我们分别收集了45,868和15,291张图像用于训练和评估目的。训练数据集注释统计如下:22,015 帧是干净的(即它们的注释是向量 [0,0]),11,704 帧仅包含不透明污点(注释为 [1,0]),4,623 帧仅包含透明污点([0,1]),最后,7,526 包含两种污染等级([1,1])。测试数据集注释统计如下:7,339 帧是干净的,3,902 帧仅包含不透明污点,1,541 帧仅包含透明污点,最后,2,509 帧包含两种污点。 我们计划向社区提供 5,000 张图像的子集,以鼓励对该主题的进一步研究。

    B. 基于GAN的数据增强

    获取脏污分类任务的相关数据是一项非常繁琐的任务。第一个问题是增加脏污事件甚至可能发生的概率的合适条件。这使得问题变得困难,但仍然可以解决,只需要找到一种方法如何手动“弄脏”相机镜头,同时保留逼真场景的特征外观。另一个问题是此类图像的注释,这非常昂贵且耗时。

    由于上述原因,我们使用 GAN 来缓解相关数据的缺乏。这个想法很简单,我们想使用GAN机器从干净的图像中创建脏图像,并将这个概念用于数据增强。此外,GAN 的使用具有半监督和无监督学习的潜力,这是我们希望在未来工作中追求的。

    由于注释昂贵的问题,我们首先尝试了CycleGAN[16]方法。由于CycleGAN只需要将数据简单分类为2个类别。图像可以完全不对齐(由于优化标准中涉及的循环一致性损失),这是另一个好处,因为人们可以很容易地预处理他的数据。在我们的例子中,这些类别分别是“干净”和“脏”的图像。因此,我们实验的CycleGAN输出是2个生成器,一个尝试将污染引入图像,另一个尝试将其去除并使图像“干净”。

    CycleGAN 实验的主要问题是无法产生可变输出。因此,我们几乎无法控制生成的图像。这导致我们使用 MUNIT[7]方法进行另一项实验。多模态无监督图像到图像转换 (MUNIT) 将图像中的内容与其样式分开,通过这种方式,我们可以通过更改图像生成步骤中提供的样式来控制图像外观。

    C. 提出的 CNN 架构

    图4 集成到多任务对象检测和分割网络中的污染图示。

    我们的目标是设计一种高效的脏污检测架构,该架构可以部署在具有1Tera OPS 计算处理能力的低功耗嵌入式平台上。脏污检测是自动驾驶平台中的一个附加模块,它已经包含基于 CNN 的对象检测和分割以及其他经典的计算机视觉模块,如深度估计。因此,我们建议通过在图 4 所示的多任务网络中共享污染解码器的编码器来利用系统中现有的CNN特征。我们表明,相对于具有单独的网络,这将在整个系统中提供更高的效率。基线多任务网络的细节在我们之前的论文 [13] 中共享。它由一个简化的 ResNet10 类编码器和两个解码器组成,即用于对象检测的简化YOLO V2和用于分割的简化FCN8。

    在这项工作中,我们建议添加新的脏污解码器作为第三个任务。 脏污解码器的输出是平铺污染类输出。tile的数量是在训练时设置的。我们使用了两种配置,一种是平铺大小为 64 × 64,另一种是输出为图像分辨率。使用加权平均将三个损失标量为一个损失,并通过使用网格搜索的超参数调整优化权重。作为一项在没有多任务网络的情况下自行评估污染检测器的消融研究,我们移除了其他解码器并评估了网络的污染任务。污染解码器有两个卷积层和一个最终的网格级软符号层,它为每个网格产生污染类型的预测。在图像级污染实验的情况下,解码器具有相同的卷积层,但步幅更大,以减少空间维度的逐渐减少。我们使用每个类的二元交叉熵作为损失函数。该实现是使用Keras[2]完成的。使用 Adam 优化器是因为它以 0.0005 的学习率提供更快的收敛。输入图像分辨率为 1280x800。

    个人总结

    属于比较早期的一篇论文吧,提出了一些概念,其中的概念作者后期差不多都分别写了论文进行了详细的介绍,这篇论文整体阅读性不高,有些过时

    这篇论文感觉没有啥太多的东西,整个篇幅大多数都是一些概念性的、介绍类的东西,没有啥实质的创新。唯一提出的创新可能就是图4,图4啥意思呢,就是脏污检测可以和其他的模块融合到一起,比如说目标检测或者是语义分割,脏污检测使用他们的backbone然后自己再做一些操作,然后进行脏污检测,损失多个模块加和。

    数据集相关可以参考论文:

    WoodScape: A multi-task, multi-camera fisheye dataset for autonomous driving

    下载地址:

    https://arxiv.org/pdf/1905.01489.pdf

    GAN数据增强方向可以参考论文:

    Let’s Get Dirty: GAN Based Data Augmentation for Camera Lens Soiling Detection in Autonomous Driving

    下载地址

    https://arxiv.org/abs/1912.02249

    下载地址

    https://arxiv.org/abs/1905.01492

  • 相关阅读:
    002讲:CAD2024下方任务栏不显示坐标解决方案——CAD知识讲堂
    Codeforces Round #804 (Div. 2) 题解(简)
    【网络原理】| 应用层协议与传输层协议 (UDP)
    淘宝详情源数据接口解析
    perl 对 xml 和 json 的简单应用
    java入门,记一次微服务间feigin请求的问题
    【SpringCloud学习07】微服务保护之Sentinel(1)
    Oracle SQL执行计划操作(5)——分区相关操作
    HTML <th> 标签
    Android studio 常用的插件
  • 原文地址:https://blog.csdn.net/XDH19910113/article/details/126760435