【论文阅读】Adversarial Examples for Handcrafted Features

ops/2024/11/22 22:24:11/

一篇针对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写的,实现难度应该不大,后面有时间自己复现一下。


http://www.ppmy.cn/ops/135899.html

相关文章

RedHat Linux服务器Redis三主三从集群部署(普通用户启动)

一、安装redis: 先查看是否安装c的编译器; 执行 sudo yum -y install gcc-c(否则直接安装redis没依赖环境) 第一步:上传安装包 第二步:在/mpjava路径下解压sudo tar -zxvf redis-6.2.5.tar.gz 第三步:进入 …

【Android、IOS、Flutter、鸿蒙、ReactNative 】自定义View

Android Java 自定义View 步骤 创建一个新的Java类,继承自View、ViewGroup或其他任何一个视图类。 如果需要,重写构造函数以支持不同的初始化方式。 重写onMeasure方法以提供正确的测量逻辑。 重写onDraw方法以实现绘制逻辑。 根据需要重写其他方法&…

C#之WPF的C1FlexGrid空间的行加载事件和列事件变更处理动态加载的枚举值

列变更,EnumDataItemStackClassTypeList数据源是枚举配置,实时查询到VM缓存的,如果是定义的枚举就不用这个麻烦了,直接在对象里面获取枚举值匹配,即 public string ApplyStatusName { get { retur…

【Oracle篇】SQL性能优化实战案例(从15秒优化到0.08秒)(第七篇,总共七篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

计算机网络 第三章:数据链路层(关于争用期的超详细内容)

数据链路层要干的是:解决在一组网络上(一段链路上)传输的问题。 (在第一章我们讨论过数据是如何经过五层传输的,但在本章我们只考虑数据链路层之间传输数据的问题,所以就先想象成是两个链路层之间在直接传输…

【K8S系列】Kubernetes 中如何调试imagePullSecrets配置详细步骤介绍

调试 imagePullSecrets 配置是确保 Kubernetes 能够成功拉取私有镜像所需的关键步骤。以下是详细的调试步骤和建议。 1. 确认 imagePullSecrets 配置 首先,确保在 Pod 的 YAML 配置中正确引用了 imagePullSecrets。其基本结构如下: apiVersion: v1 kin…

【如何用更少的数据作出更好的决策】-gpt生成

如何用更少的数据作出更好的决策 用更少的数据作出更好的决策是一种能力的体现,需要结合有效的方法、严谨的逻辑以及对问题的深刻理解。以下是一些可以帮助你实现这一目标的策略: 明确目标 在收集和分析数据之前,先明确你的决策目标是什么…

JMeter 性能测试计划深度解析:构建与配置的树形结构指南

Apache JMeter 的 TestPlan .jmx 文件是采用树形结构进行组织的,这种结构使得测试计划的构建和配置更加直观和易于管理。以下是对 JMeter GUI 配置内容的详细描述: 一、一级目录:jmeterTestPlan jmeterTestPlan:这是整个测试计…