【论文阅读】视觉里程计攻击
Adversary is on the Road: Attacks on Visual SLAM using Unnoticeable Adversarial Patch
一、视觉SLAM的不安全因素
根据论文的分析,视觉SLAM由于完全依赖于特征,缺少验证机制导致算法不安全。前端在受到干扰的情况下,会导致误匹配增加,而后端又无法抵抗这类攻击,所以整个框架对攻击图像产生的误匹配十分脆弱。
二、视觉SLAM的AoR攻击
这个攻击策略也是这篇文章的主要研究内容,简单来说作者设计了一种攻击图像的生成方法,并在车辆、室内机器人的定位上进行了测试。攻击的思路和之前设想的内容很像,就是将这个图像放置在相机的视野范围内,通过增加图像的误匹配进而实现SLAM的干扰。作者的关键放在了如何生成攻击图像。

从作者的介绍来看,其实这个攻击图像的生成方法可以理解为一个棋盘格与场景的风格迁移。作者利用FAST角点的提取策略,反过来制作了一个类似于标定板的黑白格图像,也就是上图中的Generated Error Pattern,通过这种方式同时保证设计的攻击图像能够被检测同时也能够容易导入误匹配,由于黑白格具有严重的重复性,这会导致在跟踪或者匹配时,攻击图像上的特征点产生大量的误匹配,从而干扰到后续的定位。

为了让受攻击者察觉不到攻击图像的存在,作者又在黑白格的基础上,使用了类似风格迁移的技术,来将黑白格融入到场景中。作者使用了深度学习的方法,首先将一个黑白格与内容图做融合,内容图可以是广告牌这种路边常见的内容,这一步设计两个优化量:内容损失和特征损失。分别对应内容图像上面的内容差异和融合后特征的差异。除了这两个差异,作者进一步考虑到实际场景中光照等不确定因素对图像的干扰,所以又加了一步动态调整,即通过人为采集的环境图像在进行一次调整,体现为优化公式中的环境损失,让最后的攻击图形同时具有攻击特征、内容以及环境三种风格。

从论文中给的图来看,作者的攻击方法就是将他们框架最后输出的图像放在路边,即可实现SLAM过程的干扰。其干扰的核心就是增加误匹配,实现途径是加入容易产生自身误匹配的图像,让图像中某个区域的误匹配增大,进而干扰前端的计算结果。产生攻击图的方法是人为设计的攻击图通过风格迁移生成一个带有攻击功能的广告牌。
三、攻击检测
作者在文章最后也针对设计的AoR攻击设计了解决方案,主要是三点:纹理提取、异常检测和跨帧优化。纹理检测是针对特征点的产生设计的,因为加入的路牌势必要比周围的纹理更加复杂,不然如何产生特征点,所以这一步作者使用WLD进行纹理的检测,主要是为了检测纹理比周围有异常复杂的位置。之后对这些区域进行异常检测,检测的过程依然是依赖于局部的纹路差异。最后作者还提了一嘴所谓的鲁棒性优化,说白了这个跨帧优化实际上就是在前端的局部优化过程,加入了一个置信度,以此来让检测出来的攻击匹配特征点能够在后续及时消除。
Perceptual Aliasing++: Adversarial Attack for Visual SLAM Front-End and Back-End
一、针对SLAM回环检测的攻击
这篇文章同样也是攻击相关,只不过针对的是视觉SLAM中的回环检测,而对于不使用回环检测的视觉里程计,文章中的攻击方法可能并没有什么用,甚至可能还能提高里程计的准确性。
论文的主要思路就是将纹理特别丰富的图像加入到场景中,尤其是放在本来纹理就不丰富的位置,通过这种方法,让SLAM系统误认为出现了回环,从而破坏整个观测关系。而在攻击图像的选择方面,作者提到并没有特别的设计,其实只要图像的纹理足够清晰,都可以用于这类攻击。

I Can See the Light: Attacks on Autonomous Vehicles Using Invisible Lights
一、使用非可见光进行的视觉攻击
这篇文章使用了红外光对无人驾驶系统中的相机进行攻击,一方面红外光属于非可见光,人看不见,所以这类攻击足够隐蔽;另一方面,红外光并不是不能激发相机,而是会在成像上面出现品红色的光斑,这类点很容易被视觉里程计识别为特征点,从而干扰正常的里程计工作。
根据作者的统计,少部分人能够看到部分的可见光,所以使用这类攻击策略最好的频率是780nm到800nm这段频率。攻击时需要使用一个红外光发射器,可以部署在路边或者安装在无人机上。

作者很大胆选择了特斯拉的model3进行攻击,直接对商用的无人驾驶进行了攻击,从结果来看,特斯拉的定位、物体识别都出现了很大的偏移。一方面作者将红外发射器布置在红绿灯模型上面,利用成像为品红色这一特点,假装是红灯,让车辆的控制产生了偏差。另一方面作者也尝试了利用红外来干扰相机,让车机系统疯狂报警进而影响用户体验。
而对于SLAM的攻击,作者选择在停车场进行测试,在停车场中提前放置了红外光的LED,从作者给的图来看,测试貌似是在光线不好的环境进行,这种场景下加入红外光干扰,由于品红光斑重复性较高且描述子差异小,会增加误匹配进而导致里程计的偏差,从实验来看整个的攻击基本都很有效。

相关文章:
【论文阅读】视觉里程计攻击
Adversary is on the Road: Attacks on Visual SLAM using Unnoticeable Adversarial Patch 一、视觉SLAM的不安全因素 根据论文的分析,视觉SLAM由于完全依赖于特征,缺少验证机制导致算法不安全。前端在受到干扰的情况下,会导致误匹配增加&…...
解决 Git LFS 切换分支失败问题
场景描述 在本地已有分支 A 的情况下,目前工作在分支 B。当尝试从 B 分支切回 A 分支时,由于 A 分支存在 LFS 上传的大文件,导致切换失败。这个问题通常是因为某些 LFS 文件在服务器上不存在或没有权限访问。 报错日志 切换分支时遇到的错…...
BaoStock 的安装
安装 pip3 install baostock使用这个库登录免费帐户时有时候会出现登录失败的问题 import baostock as bs # 登录系统 lg bs.login() # 登出系统 bs.logout()login failed! logout failed!可能是由于高版本的python需要验证ssl,本地将其设置为可信服务器地址可以…...
聚势启新 智向未来 | 重庆华阳通用科技有限公司揭牌成立
助推两江新区汽车产业高质量发展 (以下文字内容转载自两江新区网) 9月26日,重庆华阳通用科技有限公司(华阳通用重庆子公司)在两江新区揭牌成立,将致力于智能座舱、智能驾驶两大领域,不断加大技术研发投入…...
【数据结构与算法】Z算法(扩展KMP)(C++和Python写法)
Z算法(扩展KMP) 文章目录 Z算法(扩展KMP)朴素求法线性求法力扣类型题变种题:[3303. 第一个几乎相等子字符串的下标](https://leetcode.cn/problems/find-the-occurrence-of-first-almost-equal-substring/) 所谓Z算法&…...
免费语音转文字软件全览:开启高效记录新时代
在当今快节奏的信息时代,高效地处理和记录信息变得至关重要。语音转文字技术的出现,为我们带来了极大的便利,今天,就让我们一同探讨这些语音转文字免费的软件的使用方法。 1.365在线转文字 链接直达:https://www.pdf…...
PHP“===”的意义
在PHP中, 运算符被称为“恒等比较运算符”(Identical Comparison Operator),它用于比较两个变量的值和类型是否完全相同。这个运算符与双等号 (等值比较运算符)不同,后者在比较时会对两边的值进…...
Tomcat架构解析
Tomcat: 是基于JAVA语言的轻量级应用服务器,是一款完全开源免费的Servlet服务器实现。 1. 总体设计 socket: 其实就是操作系统提供给程序员操作“网络协议栈”的接口,你能通过socket的接口,来控制协议,实现网络通信,达…...
如何在 Kubernetes 上部署和配置开源数据集成平台 Airbyte?
在 Kubernetes 上部署和配置 Airbyte 是一个复杂但非常有价值的过程,特别是对于需要强大数据集成和数据处理能力的企业或团队。Airbyte 是一个开源的数据集成平台,允许用户从各种来源提取数据并加载到目标存储中。其强大的插件系统支持多种数据源与目标&…...
信息技术与商业变革:机遇与挑战
信息技术与商业变革:机遇与挑战 目录 引言信息技术推动商业变革的主要因素 数字化转型的加速客户需求的个性化创新技术的应用 信息技术在企业中的应用场景 供应链管理的智能化营销与客户关系管理财务与资源管理的自动化远程工作和协作 信息技术带来的挑战 网络安全…...
JavaWeb之过滤器
1. 过滤器的概念 过滤器是Java Servlet规范中定义的组件,用于在请求到达Servlet之前或响应返回客户端之前,对请求或响应进行拦截和处理。过滤器可以实现以下功能: 日志记录:记录请求的详细信息,如URI、参数、时间等。…...
学习 笔记
bin log/redo log/undo log MySQL日志主要包括查询日志、慢查询日志、事务日志、错误日志、二进制日志等。其中比较重要的是 bin log(二进制日志)和 redo log(重做日志)和 undo log(回滚日志)。 慢SQL查询&…...
Flask-1
文章目录 Flask准备创建flask项目flask加载项目配置的二种方式 路由的基本定义接收任意路由参数接收限定类型参数自定义路由参数转换器 终端运行Flask项目http的请求与响应flask的生命周期请求获取请求中各项数据获取请求URL参数获取请求体获取请求头相关信息 响应响应html文本…...
pve 直通硬盘
qm set <vm_id> –<disk_type>[n] /dev/disk/by-id/- b r a n d − brand- brand−model_$serial_number <vm_id> : 为创建虚拟机时指定的VM ID。 <disk_type>[n]: 导入后的磁盘的总线类型及其编号,总线类型可以选择IDE、SATA…...
NLP_情感分类_机器学习(w2v)方案
文章目录 项目背景数据清洗导包导入数据切分评论及标签Word2Vec构造w2v 数据切分模型训练查看结果 同类型项目 项目背景 项目的目的,是为了对情感评论数据集进行预测打标。在训练之前,需要对数据进行数据清洗环节,前面已对数据进行清洗&…...
240929-CGAN条件生成对抗网络
240929-CGAN条件生成对抗网络 前面我们学习了GAN(240925-GAN生成对抗网络-CSDN博客)和DCGAN(240929-DCGAN生成漫画头像-CSDN博客),接下来继续来看CGAN(Conditional GAN)条件生成对抗网络。 流…...
springboot第74集:设计模式
解析 核心线程数与CPU核数相同:避免线程过多导致的上下文切换,提高CPU利用率。无界队列:适合任务量大且任务执行时间短的场景,避免因队列满而拒绝任务。 IO密集型任务 场景描述 适用于执行大量IO操作的任务,如文件读写…...
数字化采购管理革新:全过程数字化采购管理平台的架构与实施
摘要:在数字化转型的浪潮中,采购管理正逐步迈向全流程的数字化。本文将详细解析全过程数字化采购管理平台的技术架构和实施策略,探讨如何通过Spring Cloud、Spring Boot2、Mybatis等先进技术和服务框架,实现从供应商管理到采购招投…...
Webpack 特性探讨:CDN、分包、Tree Shaking 与热更新
文章目录 前言包准备CDN 集成代码分包Tree Shaking原理实现条件:解决 treeShaking 无效方案:示例代码: 热更新(HMR) 前言 Webpack 作为现代前端开发中的核心构建工具,提供了丰富的特性来帮助开发者优化和打…...
Robot Operating System——一组三维空间中的位姿(位置和方向)
大纲 应用场景1. 机器人导航场景描述具体应用 2. 运动规划场景描述具体应用 3. 物体识别和跟踪场景描述具体应用 4. 环境建模场景描述具体应用 5. 仿真环境场景描述具体应用 定义字段解释 案例 geometry_msgs::msg::PoseArray 是 ROS 2 中的一个消息类型,用于表示一…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...
