鱼眼相机变普通相机,利用Transform进行球面变换

news2024/9/23 7:24:43

Abstract

高分辨率广角鱼眼图像在自动驾驶等机器人应用中变得越来越重要。然而,使用普通的卷积神经网络或视觉变换器处理这类数据时会遇到问题,因为在将其投影到平面上的矩形网格时会引入投影和失真损失。为了解决这个问题,我们引入了HEAL-SWIN变换器。HEAL-SWIN将天文学和宇宙学中常用的高度均匀的Hierarchical Equal Area iso-Latitude Pixelation (HEALPix)网格与Hierarchical Shifted-Window (SWIN)变换器结合,创建了一个高效灵活的模型,能够在高分辨率、无失真的球面数据上进行训练。在HEAL-SWIN中,利用HEALPix网格的嵌套结构来执行SWIN变换器的补丁和窗口操作,使网络能够以最小的计算开销处理球面表示。我们展示了我们的模型在合成和真实汽车数据集以及其他图像数据集上的优越性能,包括语义分割、深度回归和分类任务。

代码地址:

https://github.com/JanEGerken/HEAL-SWIN

Introduction

作为同时解决所有这些问题的一种新方法,我们提议将经过调整的视觉变换器与Hierarchical Equal Area iso-Latitude Pixelisation (HEALPix) 网格结合起来 [23]。HEALPix 网格是为了捕捉 MAP 和 PLANCK 卫星对宇宙微波背景高分辨率测量而开发的,具有在球面上均匀分布的网格点,使每个像素区域相等。这与文献中使用的大多数其他网格如 Driscoll–Healy 网格或二十面体网格形成对比。
在我们的模型中,我们称之为 HEAL-SWIN,我们使用修改后的 Hierarchical Shifted-Window (SWIN) 变换器直接在HEALPix 网格上进行学习,计算开销极小。SWIN 变换器在称为窗口的像素块上执行注意力操作,这与 HEALPix 网格的嵌套结构非常匹配(见图1)。为了全局分布信息,SWIN 变换器在每一层中移动窗口,创建重叠区域。在 HEAL-SWIN 中,我们采用相同的原则,但将其调整以适应 HEALPix 网格的结构。特别是,我们提出了两种不同的球面窗口移动策略:一种是与 HEALPix 网格的分层结构对齐,另一种是从一个极点到另一个极点的螺旋移动。

图片

Method

3. HEAL-SWIN

我们提议将SWIN-transformer与HEALPix网格结合,形成能够在球面上进行高分辨率图像训练的HEAL-SWIN-transformer。在本节中,我们详细描述HEAL-SWIN模型的结构。

3.1. SWIN transformer

SWIN-transformer是一种计算效率高的视觉变换器,它关注从层到层移动的窗口,能够全局分布信息,同时减少了注意力在像素数量上的二次扩展。在SWIN-transformer的第一层中,像素的方块被组合成称为补丁的标记,以降低输入图像的初始分辨率。每个后续的SWIN层包括两个变换器块,这些块在称为窗口的补丁方块上执行注意力操作。在计算第二个变换器块的注意力之前,窗口沿着补丁网格轴移动半个窗口大小。通过这种方式,信息分布跨越窗口边界。为了降低空间分辨率,补丁方块的两乘两块周期性合并。
在此设置中的一个重要细节是,在图像边界处,移位会导致部分填充的窗口。在这里,SWIN-transformer使用来自其他部分填充窗口的补丁填充窗口,然后执行一个掩码版本的自注意力,该自注意力不会关注来自原始图像不同区域的像素对。
对于本文中考虑的深度估计和分割任务,我们使用SWIN-transformer的UNet变体,它通过跳跃连接连接编码层和对应的解码层。解码层与编码层相同,只是补丁合并层被补丁扩展层替换,该层将一个补丁扩展为两乘两块补丁,使整个模型的输出分辨率与输入相同。

3.2. The HEALPix grid

在HEAL-SWIN-transformer中,补丁不像原始的SWIN-transformer那样与底层的矩形像素网格相关联,而是与球面上的HEALPix网格相关联。HEALPix网格由十二个相等面积的不同形状的四边形(四边形)构成,这些四边形将球面分割(在图1左上方的球体中用红色绘制)。网格的像素然后放置在这些四边形的中心。得到的位置按照嵌套顺序排列,从基本分辨率四边形的迭代子分割中依次降序(如图3所示),或者按照从一个极点到另一个极点的等纬度环顺序排列。为了处理这种数据结构,我们使用一维版本的SWIN变换器,它操作这些HEALPix像素位置的有序列表。为了检索特定分辨率下的HEALPix像素位置,转换嵌套和环索引,并在HEALPix网格中进行插值,我们使用Python包healpy。

图片

3.3. HEAL-SWIN

在HEAL-SWIN中,我们调整了SWIN变换器的补丁、窗口和移位机制,以适应HEALPix网格,使变换器能够在数据的球面表示上进行操作。

3.3.1 补丁和窗口HEALPix网格的嵌套结构与SWIN变换器的补丁、窗口、补丁合并和补丁扩展操作非常匹配。因此,对SWIN变换器的修改导致了最小的计算开销。输入数据按照上文3.2节中描述的嵌套顺序提供为列表。因此,我们从模型的一维版本开始(与通常用于图像的二维版本相反)。然后,将输入像素的补丁操作转换为将连续像素连接成补丁。由于HEALPix网格的嵌套顺序和均匀性,得到的补丁覆盖了球面上相同大小的四边形区域。

3.3.2 移位

如上所述,为了在图像中全局分布信息,SWIN变换器在每第二个注意力层沿着图像的两个轴线上移动半个窗口大小。我们在HEALPix网格中尝试了两种不同的执行移位的方式。在原始SWIN-transformer的像素网格中移位的最直接推广是在HEALPix网格中沿着基本分辨率像素的四边形轴线进行移位,参见图3和图4(左侧)。我们称之为网格移位,并在两个方向上移动半个窗口。类似于原始SWIN的移位方案,在由网格覆盖的半球边缘存在边界效应。此外,由于基础像素相对位置的对齐,移位在图像内部的某些基础像素边界处必然会发生冲突。与原始SWIN变换器类似,这些效应通过重新排列问题像素以填充所有窗口,并随后屏蔽注意机制以不处理源自球体不同区域的像素对来处理。图4中用黄色突出显示了相应的像素。

图片

在螺旋移位方案中,我们首先将嵌套顺序转换为环顺序,然后在该列表上执行nshift个单位的滚动操作。

最后,我们再转换回嵌套顺序。

通过这种方式,窗口沿着方位角按nshift像素移动,由于恒纬度圆的长度减小,极向逐渐变大,导致轻微的畸变,参见图4(右侧)。

与网格移位方案类似,我们遇到边界效应。

在螺旋移位中,这些效应发生在极点和由网格覆盖的半球边界处。

这些效应再次通过重新排列像素并适当地屏蔽注意机制来处理。

在这种方案中,图像内部没有边界效应。

这两种移位策略都可以被实现。

Experiments

图片

图片

图片

图片

图片

图片

总结

本的主要贡献如下:

1.我们构建了HEAL-SWIN变换器,它通过将球面HEALPix网格与调整后的SWIN变换器结合,可以处理高分辨率的球面表示数据。通过利用HEALPix和SWIN中类似的层级结构,我们为HEALPix网格构建了窗口和移位机制,有效处理仅覆盖球面部分区域的数据。

2.我们首次将汽车应用中的鱼眼图像视为无畸变的球面信号。我们展示了这种方法在合成和真实汽车数据集上进行深度估计和语义分割的优越性。

3.为了将HEAL-SWIN与其他处理球面表示的模型进行比较,我们在Stanford 2D-3D-S室内鱼眼数据集上进行了基准测试,发现我们的模型优于可比较的球面模型。

引用CVPR2024文章:

HEAL-SWIN: A Vision Transformer On The Sphere

关注我的公众号auto_driver_ai(Ai fighting), 第一时间获取更新内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1934125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

强化学习的数学原理(2)

Value iteration & Policy itreation Value iteration algorithm 之前我们已经讲过怎么去求解贝尔曼最优公式,是利用contraction mapping theorem 来进行求解,我们知道这个contraction mapping theorem是一个迭代算法,实际上这个算法他有…

在mybatis-plus中关于@insert注解自定义批处理sql导致其雪花算法失效而无法自动生成id的解决方法

受到这位作者的启发 > 原文在点这里 为了自己实现批量插入&#xff0c;我在mapper层使用insert注解写了一段自定义sql //自定义的批量插入方法 Insert("<script>" "insert into rpt_material_hour(id,sample_time,rounding_time,cur_month,machine_no…

【技术追踪】TeethDreamer:从 5 张口腔照片实现三维牙齿重建(MICCAI-2024)

三维重建搞起来~ TeethDreamer&#xff1a;一种3D牙齿重建新框架&#xff0c;旨在恢复上下牙齿的形状和位置&#xff0c;引入大型扩散模型的先验知识和3D感知特征注意力机制&#xff0c;重建性能表现SOTA&#xff01; 论文&#xff1a;TeethDreamer: 3D Teeth Reconstruction f…

elasticsearch 聚合 : 指标聚合、桶聚合、管道聚合解析使用总结

❃博主首页 &#xff1a; <码到三十五> ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a; <搬的每块砖&#xff0c;皆为峰峦之基&#xff1b;公众号搜索(码到…

FedAvg的简单实现(详解)

对于联邦学习正在学习中&#xff0c;下文中若有错误出现&#xff0c;望指正 介绍 本文在简单实现联邦平均算法时&#xff0c;使用客户-服务器架构&#xff0c;其基本流程是&#xff1a; 1、server初始化模型参数&#xff0c;所有clients将这个初始模型下载到本地 2、clien…

RK3568笔记三十六:LED驱动开发(设备树)

若该文为原创文章&#xff0c;转载请注明原文出处。 记录使用设备树编写一个简单的 LED 灯驱动程序 一、编程思路 程序编写的主要内容为添加 LED 灯的设备树节点、在驱动程序中使用 of 函数获取设备节点中的 属性&#xff0c;编写测试应用程序。 • 首先向设备树添加 LED 设备…

Python基础语法篇(下)+ 数据可视化

Python基础语法&#xff08;下&#xff09; 数据可视化 一、函数&#xff08;一&#xff09;函数的定义&#xff08;二&#xff09;函数的调用和传参 二、文件操作&#xff08;一&#xff09;文件读取和写入&#xff08;二&#xff09;文件对象及方法&#xff08;三&#xff09…

探寻大模型回答9.9和9.11犯错的根本原因

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

WinOS下获取dll中的方法列表

开发的Windows应用程序的安装环境从Win11 23H2切换到24H2时&#xff0c;出现获取电源模式不正确的问题&#xff0c;通过debug代码发现获取电源模式的方法是走的方法编号。由于Win11 24H2中增加了对外提供的方法&#xff0c;而增加的方法放在方法列表中间&#xff0c;导致其后面…

生成式AI的未来:对话的艺术与代理的实践

生成式 AI 的发展方向&#xff0c;是 Chat 还是 Agent&#xff1f; 随着生成式AI技术的不断进步&#xff0c;关于其未来发展方向的讨论也愈发激烈。究竟生成式AI的未来是在对话系统&#xff08;Chat&#xff09;中展现智慧&#xff0c;还是在自主代理&#xff08;Agent&#x…

图片太大怎么压缩变小?交给这4个方法就能行

在钱塘江畔&#xff0c;一场罕见的“蝴蝶潮”翩然而至&#xff0c;不仅带来了自然奇观&#xff0c;也预示着好运的降临。然而&#xff0c;当我们将这份美好瞬间分享给更多人时&#xff0c;却遇到了一个小小难题——高分辨率的照片占据了大量的存储空间&#xff0c;上传至社交平…

访问控制系列

目录 一、基本概念 1.客体与主体 2.引用监控器与引用验证机制 3.安全策略与安全模型 4.安全内核 5.可信计算基 二、访问矩阵 三、访问控制策略 1.主体属性 2.客体属性 3.授权者组成 4.访问控制粒度 5.主体、客体状态 6.历史记录和上下文环境 7.数据内容 8.决策…

推荐3款堪称神器的工具软件,实用强大颜值高,你不能错过

Flameshot Flameshot是一款功能强大且易于使用的开源屏幕截图软件&#xff0c;广泛应用于Linux、Windows和macOS等平台。它不仅支持图形界面&#xff08;GUI&#xff09;操作&#xff0c;还提供命令行接口&#xff08;CLI&#xff09;&#xff0c;使得用户可以根据自己的需求选…

SPINDILOMETER:用于多导睡眠图的睡眠纺锤波模型

摘要 通过对近年来睡眠脑电(EEG)信号分析方法的研究&#xff0c;本文提出了一种可集成到多导睡眠图(PSG)设备中的SPINDILOMETER模型&#xff0c;以供PSG电生理信号研究人员、临床睡眠医生和技术人员使用。为此&#xff0c;通过分析PSG中的脑电信号&#xff0c;开发了一个测量睡…

Qt界面假死原因

创建一个播放器类&#xff0c;继承QLabel&#xff0c;在播放器类中起一个线程用ffmpeg取流解码&#xff0c;将解码后的图像保存到队列&#xff0c;在gui线程中调用update()刷新显示。 当ffmpeg打开视频流失败后调用update()将qlabel刷新为黑色&#xff0c;有一定概率会使得qla…

【踩坑日记】【教程】嵌入式 Linux 通过 nfs 下载出现 T T T T [Retry count exceeded: starting again]

文章目录 1 本篇文章解决的问题2 问题解决原理3 问题环境4 开启 ubuntu-20.04 的 nfs24.1 确认 nfs2 是否已经开启4.2 开启 nfs2 5 卸载 iptables5.1 卸载 iptables5.2 禁用 ufw5.3 尝试重新下载 6 原理分析6.1 nfs2 开启部分6.2 卸载 iptables 部分 7 后记7.1 拓扑结构一7.2 拓…

2024辽宁省数学建模B题【钢铁产品质量优化】原创论文分享

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024 年辽宁省大学数学建模竞赛B题钢铁产品质量优化完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 B题论文…

C++ 几何计算库

代码 #include <iostream> #include <list> #include <CGAL/Simple_cartesian.h> #include <CGAL/AABB_tree.h> #include <CGAL/AABB_traits.h> #include <CGAL/AABB_segment_primitive.h> #include <CGAL/Polygon_2.h>typedef CGAL…

数学建模(1)

论文&#xff1a;做流程图 论文查重不能高于30% 论文 分模块备战 摘要不能超过一页的四分之三 数学建模的六个步骤: 【写作】---学术语言 团队练题

【hadoop大数据集群 2】

【hadoop大数据集群 2】 文章目录 【hadoop大数据集群 2】1. 虚拟机克隆2. 时间同步3. 环境变量配置、启动集群、关闭集群 1. 虚拟机克隆 克隆之后一定要重新生成新虚拟机唯一的MAC地址和UUID等&#xff0c;确保新虚拟机与源虚拟机在网络拓扑中不发生冲突。 注意1.生成新的MA…