【论文阅读】Adversarial Examples for Handcrafted Features

一篇针对SLAM中图像特征匹配的攻击方法

一、攻击定义

这篇论文的目的是设计一种方法,使得图像在被攻击之后能够在尽可能不影响外观的情况下,干扰匹配的过程。针对这个目标,作者首先指出了对于这篇文章,什么是一个成功的攻击。这篇文章中攻击被分为两种:对特征提取器的攻击和对描述子的攻击。其中提取器的攻击针对的是特征的提取过程,要求在受到攻击之后,原本能够提取到的特征提取不到了。描述子的攻击则可以理解为减少正确匹配,要求在受到攻击之后,原来能够正确匹配的特征点无法与原来的特征点产生匹配关系。

二、攻击方案

①高斯模糊攻击

文章首先使用了纯高斯模糊进行攻击,即使用不同的高斯核大小以及sigma值,对提取到特征点的位置进行攻击。从结果来看,作者认为这种方法极大程度地降低了图像的质量,并不能属于一个成功的攻击。

②结合图像修补技术的攻击

既然纯高斯模糊会导致图像质量下降,那么完全可以在攻击后使用图像修补(Image Inpainting)技术对图像进行一次优化,由此诞生了这一攻击方法。这类攻击又被细分为两种实现方案。

ASM攻击

这类攻击首先需要在特征点提取的基础上,对特征点周围的固定区域(3x3、5x5)进行处理,固定区域内部的像素灰度值取平均,通过这种方法将像素的梯度调低。之后再使用图像修复技术对这个区域进行修复,相当于一定程度上的再涂抹,让这个区域不是那么明显。下图所示就是这类攻击的过程,可以看到如果只进行梯度平均,攻击后图像会显得很奇怪,而在使用了图像修补之后,这个原本很奇怪的区域像是被涂抹过一样,并不是那么突出了。

DD攻击

DD攻击是在ASM攻击的基础上,对第一步取平均的区域进行了调整,不再使用特征点周围的矩形区域,而是沿特征点的主方向和垂直方向产生的十字,之后再对这个区域进行修复,整体效果如下图所示,当然这个例子选的并不好,不仔细看的话基本看不出来攻击的效果。

③离散化攻击

这类攻击也采用了局部区域取平均的方法,但是不使用图像修复技术,而是只依赖于邻近区域,而且是范围更小的邻近区域,由于取平均的范围比较小,所以并不会大幅增加图像的差异性,也就不需要图像修复。

P2P攻击

P2P攻击是对一个区域内的所有像素,取左下和右上两个像素取平均然后赋值给当前像素,在区域边缘时则使用区域外的像素进行处理,效果如下图所示:

PPS攻击

PPS攻击属于是离散的P2P攻击,使用时沿邻近区域内横向和竖向的像素进行调整,对周围八个像素取平均然后赋值给中心。同时,并不是区域内的每个像素都进行攻击,被攻击的像素有点像空洞卷积的形式。攻击的方法如下图所示:

B2B攻击

这类攻击中的B指的是block区块,本质上就是把P2P攻击中的pixel像素换为了区块。具体来说,对于一个提取到的特征点,首先对其邻近区域进行划分,划分出左上、左下、右上、右下四个大小为2x2的区块,之后取区块内的灰度值的和作为这个区域的指标,选取四个区块中指标最高的作为参考区块,剩下的区块中如果指标与参考区块的指标差异超过阈值,则认为是需要被攻击的区块。攻击过程依然是取平均,是对区块内部的每个像素进行取平均,取临近的区块外的三个像素的灰度值进行求平均。整体流程如下图所示:

带有尺度的攻击

由于一些特征点在提取时还考虑了尺度问题,所以作者进一步将邻近区域的大小和尺度挂钩。当尺度小于5时,使用5x5的区域。尺度在5到10之间使用7x7大小的区域。而尺度大于10的时候使用9x9大小的区域。而进行攻击的方法和前面介绍的五种方法保持不变。

三、效果验证

作者在验证攻击效果时,首先单独验证了对图像特征匹配的影响,使用了三个指标:SSIM、PSNR、PFMD。前两个指标来自别的两篇论文,作者自己提出的是最后一个,计算公式如下:

从公式的定义可以看出,这个指标衡量的实际上就是攻击之后匹配的减小程度。这个值越大表明攻击的效果越好。作者对比了五种特征点,效果都比较明显。而对于使用了尺度的SURF特征点,在使用了尺度之后的效果也有了比较明显的提升。

之后作者又对SLAM系统进行了攻击测试,测试时使用了带有尺度的P2P攻击,攻击的框架包括SVO、ORBSLAM。攻击时采用的是对整张图进行攻击,即抹除整张图的特征。在对VO进行攻击时,随机选择连续的12帧进行攻击。从结果来看即使是没有使用特征点的半直接法SVO,攻击的效果都十分明显。

作者同时也验证了在回环检测任务中的攻击效果,攻击时对回环帧附近进行攻击,对于使用了词袋模型的回环检测算法,攻击的效果还是比较明显的。

总的来说这篇文章讲了一种图像攻击的方法,利用对特征点位置的涂抹,在保证尽量不改变原图内容的情况下,减少特征点的提取和正确匹配,从而影响到基于特征点的相关上层算法,比如SLAM和VO。但是从具体细节来看,算法的设计又一些缺陷,比如攻击时需要对整张图像进行攻击,这种方法在现实中实现难度太大,只改变图像的局部我们可以使用在场景中布置遮挡等方法实现,但要改变整张图像,那就只能对系统内部进行攻击,替换相机的感知内容,这明显难度高多了。代码是用matlab写的,实现难度应该不大,后面有时间自己复现一下。

相关推荐
七夜星七夜月1 天前
时间序列预测论文阅读和相关代码库
论文阅读·python·深度学习
WenBoo-1 天前
HIPT论文阅读
论文阅读
chnyi6_ya1 天前
论文笔记:Buffer of Thoughts: Thought-Augmented Reasoning with Large Language Models
论文阅读·人工智能·语言模型
Jude_lennon2 天前
【论文笔记】结合:“integrate“ 和 “combine“等
论文阅读
LuH11242 天前
【论文阅读笔记】HunyuanVideo: A Systematic Framework For Large Video Generative Models
论文阅读·笔记
lalahappy2 天前
Swin transformer 论文阅读记录 & 代码分析
论文阅读·深度学习·transformer
开心星人2 天前
【论文阅读】Trigger Hunting with a Topological Prior for Trojan Detection
论文阅读
图学习的小张2 天前
论文笔记:是什么让多模态学习变得困难?
论文阅读·神经网络·机器学习
Maker~2 天前
28、论文阅读:基于像素分布重映射和多先验Retinex变分模型的水下图像增强
论文阅读·深度学习
小嗷犬3 天前
【论文笔记】CLIP-guided Prototype Modulating for Few-shot Action Recognition
论文阅读·人工智能·深度学习·神经网络·多模态