1、攻击为什么可以成功?
(1)这篇论文的攻击之所以可以奏效,是因为自动驾驶系统在很大程度上只依赖于相机来检测周边障碍物,基于这种前提,只要攻击了相机,就可以影响车辆对周边的判断。所以作者提出来的防御模型就是,加一个验证模块来验证相机的检测结果。
(2)计算机视觉算法无论是在训练还是测试的时候,主要关注的都是物体的几何信息,但是并不会去关心context信息,以及去关心这个物体是不是真实的。而且训练出来的模型也并不知道一个幻影是长啥样的。这里我的理解是,在训练的时候,并没有考虑到这部分幻影图片,没有把类似幻影的图片作为模型训练的负样本的话,那如果碰到一个幻影,模型自然就很难识别成假的。因为按照模型已经学到的几何特征来说,这种幻影图片应该就是跟正常的图片没有区别。如果模型把上下文context特征以及一些物体表面的特征学到,那就可以抵御这种攻击了,这也是作者后面防御模型的思路。
(3)better safe than sorry策略在自动驾驶中很盛行。大家一般都会愿意相信前方有一个障碍物,而不是打赌前面肯定没有。
2、为什么防御部分选择用交通标示牌来做防御?
因为作者说,交通标示牌识别方面有8个典型的检测器,可以方便跟防御模型做对比。
防御模型中一个重要组成部分是context model,为什么已有的目标检测模型不能通过扩充数据集的方式来让模型知道在哪些位置的标识牌应该是假的呢?
作者说这是因为交通标示牌在日常生活中可以位于很多地方,所以你要是把标识牌放在一些不太常见的位置,模型会认为这也是正常的。所以作者实验的时候选用标识牌,可能也是基于这一点,更容易攻击成功。
3、可以做的点:
(1)可以把这些幻影图片输入到Apollo系统中看看是否也可以欺骗到Apollo系统。那这里我不禁开始想,如果我可以找到其他的视觉检测模型忽略掉的特征信息,是不是也可以做类似的攻击。
4、防御的步骤?
首先要把交通标识牌图片输入到目前主流的8个目标检测器中,得到相应的cropped image。(图像crop就是指从图像中移除不需要的信息,只保留需要的部分)然后再使用作者自己的防御模型来检测crop之后的图像。但是如果只建立一个CNN网络,就会使得模型过分关注其中某一个特征(比如光线light,或者表面surface等)。作者采用的解决方案是使用三个model,最后在使用一个combined model。这是一种专门的方案,叫做The Committee of Experts Approach,我在网上没有查到更多的解释,维基百科上的解释也是跟论文里面是一样的,没有更多补充。其实3个模型就相当于是从三个视角去看一个物体,学到不同的知识knowledge,再输入到combined model中。
从fig 16可以更加好的看到整个过程。最左边是一张原始的输入图片,通过目标检测器可以crop裁剪到对应三个model的输入图片,相当于是只裁出来每个model需要的部分。最上面就是只有标识牌周围情况的图片,中间就是只有标识牌的表面信息,下面就是只有光线信息。三张cropped image分别输入到三个CNN网络中,每个网络都会输出一个2×1的向量(为什么是2×1呢,正常不应该是0 1二分类问题吗),每个网络可以输出一个结果,判断这张图片的上下文是否符合正常的context,以及表面surface,光线light是否正常。但是这三个网络的输出还不是我们最终的输出,因为之后会把三个model的倒数第二层的向量embedding到一个12×1的向量输入到combined model中,最后再输出2×1的向量,判断图片是否是幻影,此时的输出才是我们想要的输出。
5、模型的训练和测试过程是怎样的?
训练集和测试集的划分是按照80%和20%的比例,这个也是比较常用的一个比例。上面的context model接收三种图片输入,一个是Rg和Rd,是正常没有被攻击的数据集,一个是中间的Rn,从图上可以看到,Rn上面和下面分别有两个虚线箭头,表明Rn是把Rg和Rd图片上的没有标识牌的部分crop下来得到的一个单独的数据集(这样才可以让模型知道哪些部分是不能有标识牌的)。下面的三个model接收Rd和Fd数据集作为输入,一个表示正常数据集,一个表示被攻击的数据集。图上的蓝色圆圈表示原始图片输入,蓝色正方体表示检测器,橙色圆圈表示经过检测器后的cropped image。图中的数字应该表示每部分数据集的大小。
6、为什么一定要用combined model而不能单独使用其中一个model?
作者用了一张图片来说明这一点。可以看到图上列出来的就是不同模型有歧义的图片。也就是说,很多图片,可能在context model看来是假的,在light model看来又是真的。不同模型识别出来结果不一样说明我们不能单独用一个model,因为不准确。
7、为什么前面的MOBILEYE的实验都是跟标识牌sign有关的,但是后面的SEMI-AUTONOMOUS CAR的实验都是跟行人,车辆等有关?作者为什么要这样布置实验?
或许是因为对于辅助驾驶系统来说,它的作用是辅助驾驶员驾驶,如果直接投影行人,车辆等欺骗,或许可以欺骗到辅助驾驶系统,但是不容易欺骗到驾驶员。但是对于自动驾驶系统而言,全部的决策都由系统来做,那么欺骗了自动驾驶系统,自然就欺骗到了整个的车辆。此时肯定要拿平时碰到最多,危险性最高的行人,车辆来做实验才能使得攻击的伤害性大。
8、为什么后面的实验部分也就是防御模型是以交通标示牌作为输入进行训练和测试?
按照作者在论文中的解释,是说基于交通标示牌的检测模型比较多,便于比较。但是实际会不会是因为交通标示牌幻影攻击的防御更好做??