ICRA2022 | 数据集:用于移动机器人视觉异常检测_无人机

00  摘要

这篇文章主要关注自主移动机器人的视觉异常检测任务。

本文结构如下:

  1. 对相关类型的视觉异常进行分类,并讨论如何通过无监督的深度学习方法检测它们;
  2. 提出一个专门为此任务构建的新数据集,并在其上测试了一种SOTA方法;
  3. 讨论真实场景中的部署。 

01  介绍

在实际应用中,移动机器人和可能会处于一些危险的环境中。这些危险环境可能导致机器人任务操作的中断,也可能导致机器人崩溃、卡住,从而经常性地导致其任务失败。机器人通常能够感知系统开发过程中预期的危险,因为在设计感知子系统时可以明确考虑这些危险。但是,在实际工作过程中,机器人很可能会遇到系统设计时没有预料到的情况(异常)。

在本文中,我们讨论了与从视觉输入中检测异常相关的挑战,并提供了一个包括许多异常类型的数据集。因为我们没有任何关于这些危险如何出现的模型,所以我们认为任何奇怪、不寻常的东西都是应该避免的潜在危险。一旦检测到异常,我们会根据具体的情况,选择不处理或者进行更适合的操作。

Ruff [1]指出:异常是“一种明显偏离某种常态概念的观察(an observation that

deviates considerably from some concept of normality)”。这个定义强调了背景的重要性:只有当常态的概念存在时,异常才被定义。在文献[1]中,异常根据应用有不同的含义:飞行数据中的异常模式[2],制造产品中的纹理变化[3],耕地时的意外障碍[4]。综述文献[5]、[1]基于两个原则提出了异常的一般分类:一个区分是上下文异常和集体异常;另一个区分是低级感官异常和高级语义异常。

异常分类:

我们建议沿着四个独立的判断依据,对移动机器人在操作过程中遇到的视觉异常进行分类。

第一个依据,遵循Ruff等人[1],区分低层次的感官和高层次的语义异常。低级别的异常依据图像空间的特征描述进行判断,如图像亮度、平滑度、噪声和纹理;这种异常可能会发生在当机器人突然发现自己处于黑暗中或者当它被直射光弄瞎时。高级别异常指的是图像的语义内容:例如观察到压力计报告的值与平常不同,或者观察到地面上有一滩液体。

第二个依据是:异常是否对机器人构成危险。这要针对机器人的特征及其任务的具体情况而定。地板上的油坑可能对地面机器人造成危险,但对无人机不会造成危险;但如果油坑不在机器人的移动路径上,也不会造成危险。

第三个判断依据区分与机器人任务相关的异常和不相关的异常。例如,巡逻机器人可能希望检测并报告观察到通常关闭的门打开的事实,而送货机器人除非影响了它的路径规划,否则便不需要观察门的开关问题。

第四个判断依据是将几何性质的视觉异常与非几何性质的区分开。几何异常在机器人环境中具有明确的3D形状(例如,在正常自由走廊中从未见过的物体),或由环境中某一部分的位置或形状的变化组成(坍塌的墙)。非几何异常像是使用RGB相机可以感知,但是用理想的深度传感器检测不到的地面上的水坑、散落在地板上的灰泥碎石、灰尘、雾或烟雾、隧道中潮湿的天花板等等。

02  机器人视觉异常数据集

任何机器学习模型都需要一个大的、有代表性的用于训练和评估的数据集。因为数据集的制作收集代价很高,所以视觉异常检测相关的文献通常依赖于现有的分类数据集,如MNIST [6],ImageNet [7],CIFAR[8];一组类别被选作正常类别,而其他类别(通常带有综合变化)则代表异常。这种方法有很大的局限性,因为它不能捕捉相对于正常数据的真实异常的视觉特征。不过,这可以通过针对特定任务的数据集(目前已经用于工业检测和医疗保健)来解决。这里,我们引入一个针对移动机器人视觉异常检测特有的新的数据集(https://github.com/idsia-robotics/hazard-detection)。据我们所知,目前在移动机器人领域,没有公开的异常检测数据集。

ICRA2022 | 数据集:用于移动机器人视觉异常检测_异常检测_02

图1 数据集中包含的异常以及每个异常的示例。第一行展示我们的模型在每个场景中的得分。第二行是根据四个判断依据中的三个依据对数据集的异常进行的分类结果。

我们的数据集涵盖了三种不同的场景。每个场景的数据分为三组:一个训练集和一个验证集(全部由正常样本组成),和异常样本组成的测试集(每个异常样本都标注了它所代表的异常的确切类型)。

场景有三种:隧道,工厂,走廊。

隧道,模拟无人机在地下隧道内飞行,有3种异常情况;

工厂,来自工厂内真实无人机的记录,有两种异常;

走廊,一个真正的轮式移动机器人在某大学的走廊内移动,有8种异常类型。

所有的数据集都是从机器人的前置摄像头以每秒30帧的速度记录下来的。对于实验,所有样本都被剪辑为大小为64×64像素的正方形图像。在图1中我们展示了各种异常的例子。我们还根据前面介绍的判断依据对异常类型进行分类。图中没有显示第三个判断依据的结果,因为它与任务相关,而我们的数据集是在没有特定任务的情况下收集的。

03  实验和观点

异常检测可以被定义为二元分类问题,每个样本与两个结果之一相关联:正常样本被分类为阴性,异常样本被分类为阳性。

这个问题可以使用有监督机器学习方法来解决,这种方法依赖于包含两个类的样本的标记训练集。但是,在我们的定义中,异常是罕见的意外事件。因此,收集大量的异常训练集将非常耗时,并且收集所有可能异常的代表性训练集是几乎是不可行的。

所以,我们主要关注无监督的方法。在这种设置中,异常检测器是从专门由正常样本组成的训练集中学习的。用于推断时,异常检测模型将返回每个样本的异常分值,正常样本的异常分值较低,危险样本的异常分值较高。最先进的视觉异常检测模型依赖于深度学习技术来学习相似性度量,该度量表明了正常训练图像中的预期可变性。我们基于Autoencoder [9]和Real NVP[10]开发了一个异常检测器,它将图像作为输入,并产生异常分数。该模型仅在正常样本上训练,并在正常和异常图像上测试。

根据在含有正常和异常样本的测试集上计算的异常分数,我们使用ROC曲线下面积-AUC,作为度量来表示检测器的质量。AUC值的范围从0到1,其中1是理想的异常检测器,0.5等于随机分类器。在图1的第一行,我们显示了通过我们的模型在三种情况下测试获得的AUC。

我们最终将工厂数据集上训练的模型部署在一架自主无人机上,如果检测到异常,它会停止任务并原路返回。图2说明异常检测避免与意外障碍物发生碰撞(无人机障碍物检测套件无法看到的薄磁带)。

ICRA2022 | 数据集:用于移动机器人视觉异常检测_异常检测_03

图2 在工厂场景中的部署:无人机正常前进,直到它检测到异常(一条磁带穿过它的路径);底部报告了先前帧中异常分数的时间序列(参见补充视频https://youtu.be/SylhxUl20C0).

我们目前专注于两个相关主题:通过主动学习和领域适应,允许预先训练的模型快速适应新环境,以及通过异常值暴露利用已知异常的记录[11]。