PanoFlow:学习360°用于周围时间理解的光流
1.摘要:
光流估计是自动驾驶和机器人系统中的一项基本任务,它能够在时间上解释交通场景。自动驾驶汽车显然受益于360提供的超宽视野(FoV)◦ 全景传感器。
然而,由于全景相机独特的成像过程,为针孔图像设计的模型并不能直接令人满意地推广到360◦ 全景图像。本文提出了一种新的网络框架——PANOFLOW,用于学习全景图像的光流。为了克服等矩形投影在全景变换中引入的失真,我们设计了一种流失真增强(FDA)方法,该方法包含径向流失真(FDA-R)或等矩形流失真(FDA-E)。我们进一步研究了全景视频中循环光流的定义和性质,并在此提出了一种循环流估计(CFE)方法,该方法利用球面图像的循环性来推断360◦ 光流和将大位移转换为相对小的位移。PanoFlow适用于任何现有的流量估计方法,并受益于窄FoV流量估计的进展。
此外,我们创建并发布了一个基于CARLA的合成全景数据集FlowScape,以便于训练和定量分析。PanoFlow在公共OmniFlowNet和新建立的FlowScape基准上实现了最先进的性能。我们提出的方法将FlowScape上的终点误差(EPE)降低了27.3%。在OmniFlowNet上,PanoFlow实现了3.17像素的EPE,比最佳公布结果(7.12像素)降低了55.5%的误差。我们还通过户外采集车和公共的真实世界OmniPhotos数据集对我们的方法进行了定性验证,这表明我们的方法在真实世界导航应用中具有强大的潜力和稳健性。代码和数据集可在PanoFlow上公开获取https://github.com/MasterHow/PanoFlow
图1。(a) 由我们的移动感知系统捕获的原始全景环形图像,(b)-(c)针对360的真实世界周围视图提出的全景光流估计◦ 无缝的场景时间理解。
1.引言
光学流量估计是自动驾驶的基本挑战之一[1]-[5]。流量估计提供了有关环境和传感器运动的信息,从而实现对世界的时间理解,这对许多机器人和车辆应用至关重要,包括场景解析、基于图像的导航、视觉里程计和SLAM[6]–[12]。随着球形相机的发展[13],全景图像现在更容易为360拍摄◦ 场景感知[14]-[16],并且由于类似的投影模型[17],可以更好地与激光雷达集成。然而,基于学习的方法一直专注于由基于针孔投影模型的相机产生的传统2D图像[18]–[20]。为具有窄视场(FoV)的相机设计的模型对于全面理解来说通常是次优的。将它们与360连接◦ 激光雷达还将直接导致固有的和领域适应问题[21]。因此,推断相机完整周围的光流的能力激发了360的研究◦ 流量估算。
与经典的线性图像不同,由于球面相机的等矩形投影(ERP),全景内容经常遭受严重失真[22]。
对象将全景图像在不同纬度处发生不同程度的变形,使得目标图像和关注图像之间的流量估计更加困难。另一个关键问题在于球面边界的循环性,这意味着从源点到目标点有不止一条路径,通常有一条更短和更长的路径[23]。这两条路线在球体上形成一个大圈。换句话说,这两条路线的几何意义是相等的。然而,传统的基于学习的模型无法跟踪在图像边界之外移动的像素,因此别无选择,只能推断更难的长距离运动矢量,导致估计不太令人满意。
为了解决这些问题,我们引入了一种新的全景流量估计框架——PANOFLOW,以直接从全景图像中估计密集流场。我们在两个不同的最先进的光流网络[19]、[20]上实现了PanoFlow,以验证所提出的框架的通用性。据作者所知,我们提出了第一种流失真增强(FDA)方法,该方法建立在对ERP引起的失真的深入了解之上,以增强对全景图像变形的鲁棒性。
虽然失真增强用于全景场景解析[24],[25],但尚未在光流估计中进行研究,因为光流是2D矢量,这会带来进一步的挑战。与处理常数性质的传统几何增广方法不同,光流的畸变增广是不平凡的,它必须考虑光流的变化,因为光流的起点和终点会发生不同程度的畸变。通过将参与图像(关注图像和目标图像)和流场实况投影到畸变场上,我们提高了模型推广到变形区域的能力。
我们提出了两种增加流量畸变的变体:径向流量畸变(FDA-R)和等矩形流量畸变(FDA-E)。尽管FDA-E与一般ERP引入的失真一致,但考虑到针孔数据集的FoV较小,真正参与监督的像素数量减少了。
因此,我们还探讨了FDA-R在克服ERP失真中的作用。我们发现,尽管它们的变形模型并不完全相同,但FDA-R也提高了网络处理变形区域的能力。
从另一个失真自适应的角度来看,我们进一步建议通过用可变形卷积层替换编码器的第一层来解决失真[26]。所提出的FDA和可变形卷积使该模型能够处理特征全景图像失真和稳健的流量估计。作为一种新的数据增强方法,FDA是任何基于学习的光流网络的即插即用模块。
此外,我们给出了适用于全景视频流的循环光流的标准定义,分析了循环光流特性,并将其与经典光流进行了比较。然后,我们基于先前的见解设计了一种循环流估计(CFE)方法,以利用全景图像的循环性,并将长距离估计转换为相对较短的距离估计。
CFE很好地缓解了模型在大位移估计中的应力,使模型能够专注于局部细粒度光流估计。CFE是一种通用的光流估计方法,因此可以受益于窄视场流量估计方法的进步。有趣的是,定量和定性结果都表明,与之前在立方体映射平面和二十面体切平面上迭代估计的最佳方法[23]相比,CFE方法简单但非常有效.
我们还计算了使用CFE方法前后精度随水平FoV变化的分布,发现CFE可以显著提高全景垂直边界附近的光流估计精度,这是全景流估计的一个独特困难。
此外,为了克服缺乏可用的全景训练数据的问题,并促进对360的研究◦ 理解后,我们建立并发布了一个新的街景合成全景流量估计基准——FlowScape。我们通过CARLA模拟器生成数据集[27]。FlowScape由6400张彩色图像、光流和像素级语义地面实况组成,由于动态天气、多样化的城市街景和不同类型的车辆,提供了一个与现实世界相似的环境。我们使用这个数据集来学习从全景内容推断流量。当只给出正向光流时,我们还分析了现有光流数据集[22]、[23]、[28]的真实质量,并根据观测结果确定了我们的评估数据集。
我们在已建立的FlowScape基准上进行了广泛的定量实验。与之前的最佳模型相比,PanoFlow在该数据集上的终点误差(EPE)降低了27.3%。此外,我们在公共OmniFlowNet数据集[22]上的方法的EPE与已发表的最佳结果(3.34像素对7.12像素)相比降低了55.5%。此外,一组全面的消融实验证明了所提出的FDA和CFE方法的有效性。我们还对公共的真实世界OmniPhotos数据集[29]进行了定性分析,以在真实世界的环境感知中验证我们的方法。为了进一步证明PanoFlow的泛化能力,我们还组装了一辆安装了全景环形透镜(PAL)系统的户外数据采集车。如图所示,PanoFlow为真实世界的周围场景提供了清晰、干净的全向光流估计。
总之,我们的主要贡献如下:•我们对360提出了严格的理论定义◦ 光流。
•我们介绍了流失真增强,这是一种用于光流网络的新数据增强方法,可以帮助模型学习捕捉变形区域的运动线索。
•我们提出了一种通用的循环流量估计方法,该方法可以根据连续全景的几何性质将大位移估计转换为相对较短的位移估计。
•我们生成FlowScape,这是一个新的公开可用的全景数据集,由各种合成街道场景组成,提供像素级的流量和语义基础真相。我们还评估了现有全景流量数据集的地面实况质量。
•我们的整个框架PANOFLOW在既定的FlowScape基准上以及公共OmniFlowNet数据集。实现了最先进的性能.
•PanoFlow在公共现实世界OmniPhotos数据集和我们捕获的户外全景视频流上都表现出强大的泛化能力。
2、相关工作
A.基于深度学习的光流估计
经典的光流估计方法[30]、[31]使用变分方法,基于亮度恒定性和空间平滑性来最小化能量。自从FlowNet[32]出现以来,已经出现了其他一些基于卷积神经网络(CNNs)[33]-[44]的工作。此外,还有一些自我监督的方法[45],[46]来学习闭塞的光流。这些方法中的大多数通常被设计用于拍摄有限成像角度的针孔相机。
FlowNet[32]首先将光流估计视为一个学习问题。为了进一步提高光流的精度,FlowNet2.0[47]在多个级联的FlowNets之间引入了图像扭曲。由于FlowNet2.0[47]的模型尺寸较大,已经提出了许多方法来同时提高光流精度和减小模型尺寸。其中,PWC-Net[18]将经典的光流估计原理(包括金字塔处理、图像扭曲和成本量)与学习相结合。LiteFlowNet2[48]借鉴了经典变分光流方法中的数据保真度和正则化思想。RAFT[19]使用多尺度4D相关体积迭代更新光学流场,为了更好地将光流估计应用于自动驾驶系统,CSFlow[20]提出了一种新的光流深度网络架构,该架构由交叉带相关模块(CSC)和相关回归初始化模块(CRI)组成。此外,FlowFormer[49]用基于变换器的主干取代了RAFT架构中基于CNN的主干,这进一步提高了光流估计的准确性,同时将参数数量增加了三倍。相比之下,PanoFlow是一个全景光流框架,可以适用于任何具有编码器-解码器架构的光流网络。
B. FoV 以外的光流估计
随着越来越实惠、便携和精确的全景相机进入市场,360◦ 流量估计是迫切需要的,它可以提供广泛的FoV时间理解,为此开发了一些基于深度学习的方法。LiteFlowNet360[50]被设计为一个域自适应框架,以应对360中的固有失真◦ 由球体到平面投影引起的视频。他们在特征金字塔网络中采用卷积层的增量变换,将数据增强和自监督学习与目标域360相结合,以减少网络增长规模和计算成本◦ 视频。
OmniFlowNet[22]建立在专门研究透视图像的CNN模型上,然后应用于全向图像,而无需在新的数据集上进行训练,其卷积运算与矩形投影相统一,优于原始网络。
360投影◦ 图像到ERP图像是一个非线性映射,由此引起的失真将影响360◦ 因此,Yuan等人[23]提出了一种360◦ 基于切线图像的光流估计方法,包括对二十面体和立方体全景的数十次估计和细化。
总体而言,现有的基于学习的全景流方法在模型层面采用了固定的投影范式来处理ERP失真。考虑到细胞神经网络的局部偏向行为,这将降低模型对潜在视觉线索建模的能力,并导致不令人满意的性能。另一方面,切平面上的估计和细化引入了额外的计算成本,导致推理速度有限。最近,一项并行工作[51]也探讨了360◦ 通过siamese表示学习方案的光流,该方案具有精心设计的损耗和旋转增强,以采用现有的流网络。
与这些作品不同的是,我们处理了整个360中出现的图像失真和对象变形◦ 并利用连续全向数据的周期性来增强全景光流估计。
C.光流和全景感知数据集、
全景数据集在各种应用领域都是必需的,包括深度估计[52]-[54]、场景分割[55]-[57]和光流估计[22]、[23]、[28]。Stanford2D3D[58]是一个大型室内空间数据集,由具有实例级语义注释的规则数据和全景数据组成。
360D数据集[21]重复使用已发布的大规模3D数据集,并将其重新用于360◦ 通过渲染进行密集深度估计。PASS[24]提出了一个全景环形语义分割框架和相关的数据集,用于可信评估。DensePASS[59]介绍了一个具有标记和未标记360的数据集◦ 用于从无监督领域自适应的角度对全景语义分割进行基准测试的图像。KITTI360[60]由立体透视相机、一对鱼眼相机和一个用于启用360的激光扫描单元收集◦ 知觉WoodScape[61]包括多个环视鱼眼相机和多个任务,如分割和污垢检测。OmniScape数据集[62]包括语义分割、深度图、摄像头的固有参数和摩托车的动态参数。Waymo Open数据集[63]是一个用于全景图像分割的标记全景视频数据集。
为了提高光流估计的准确性,OmniFlow[64]是一个合成的全方位人类光流数据集,包含FoV为180的家庭活动图像◦. OmniFlowNet[22]使用基于Blender的简单几何模型,渲染全景光流的测试集仅用于验证。Replica360[23]为Replica渲染管道[65]实现了ERP相机模型,并包含用于验证的等矩形格式的地面实况光流,SynWoodScape[28]是一个合成鱼眼环绕视图数据集,具有用于逐像素光流和深度估计的地面实况。OmniPhotos[29]是一款快速360◦ 全景VR摄影方法,使用已发布的户外数据集,但无法获得光学的地面实况流,我们注意到,到目前为止,既没有针对户外复杂街道场景的全向图像数据集,也没有覆盖360◦ 可用于培训和评估。本文试图通过提出一个虚拟环境来填补这一空白,在这个虚拟环境中,一辆带全景摄像头的汽车在假设行人和车辆按照交通规则行驶的情况下行驶。表一关联并总结了当前包含地面实况光流的全景数据集。第四节将详细分析光流的地面实况质量。
表一:用于光流估计的现有全景数据集的比较
图2。循环光流示意图。(a) 光流和循环光流在球面坐标系上形成一个互补的大圆,(b)等矩形图像上的循环光流具有相对较小的位移,并跨越全景的水平边界
3、 PANOFLOW:提出的框架
A. 360°的定义 光流
球形图像不包含任何边界,并且坐标在图像上的任何方向上都是连续的[22]。然而,在将球面图像展开为等矩形图像的过程中,自然会引入平行于子午线的边界,如图所示2。给定球体上的任何一个点A,它在时间t后移动到另一个点B。由于球体本身的循环性质,这两个点之间实际上有无限的弧轨迹,现在我们只考虑两个弧和
相关文章:

PanoFlow:学习360°用于周围时间理解的光流
1.摘要: 光流估计是自动驾驶和机器人系统中的一项基本任务,它能够在时间上解释交通场景。自动驾驶汽车显然受益于360提供的超宽视野(FoV)◦ 全景传感器。 然而,由于全景相机独特的成像过程,为针孔图像设计…...
C# - 常用API
Assembly.GetCallingAssembly 方法 获取当前方法的调用程序集: Console.WriteLine("FirstMethod called from: " Assembly.GetCallingAssembly().FullName); Assembly.GetExecutingAssembly 方法 获取包含当前执行的代码的程序集: //获取当前执行的代码的程序集…...

新式茶饮品牌如何写出生活感软文
居民消费水平的提升使新式茶饮品牌的市场不断扩张,在竞争激烈的茶饮市场中,品牌提高知名度的主要方式之一就是软文营销,而生活感软文是茶饮软文中较为常见的类型,它能有效拉进品牌与消费者之间的距离,那么新式茶饮品牌…...

使用c++视觉处理----canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测
使用c视觉处理canny 边缘检测、sobel边缘检测、scharr 滤波边缘检测 #include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image cv::imread("1.jpg", cv::IMREAD_GRAYSCALE); // 转为灰度图像if (image.empty()) {std::cerr << "无法加…...

gogs和drone如何配合使用
上篇介绍了drone和gogs安装方法,这次介绍这两个如何使用,此篇文章主要介绍在物理机上进行发布。 此处用到的java项目地址:https://gitee.com/huningfei/demo-test 一 配置gogs 1.1 在Gogs中配置指定仓库的”.drone.yml“文件 1.2 ssh-drone…...
Feign客户端的配置与使用
feign Feign的基本使用Feign客户端抽取 Feign的基本使用 Feign是一个声明式的Web服务客户端,它使得编写Web服务客户端变得更加简单。 1、首先,需要在项目中引入Feign的相关依赖。在Maven项目中,可以添加以下依赖: <dependen…...

【数据结构】队列(Queue)实现详解
🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:数据结构 🔥该文章主要了解实现队列的相关操作。 目录: 🌍 队列🔭概念🔭结构&…...
23.10.13数据库升级流程记录
23.10.13数据库升级流程记录 hello,我是阿昌,今天记录一下数据库升级的流程,内容如下: 一、升级的内容 将之前的数据库升级为8.0版本,切只涉及一个分库; 二、升级的时机 涉及到数据库升级,…...

【three.js】结合vue进行开发第一个3d页面
一、创建vue项目 新建一个项目目录,在集成终端打开,输入 npm init vitelatest 回车后,依次输入项目名,选择vue和js开发 然后安装依赖并运行项目 二、安装three 接下来我们开始安装three npm install three 三、Three.js 的…...
【Vue】同一个页面多次复用同一个组件数据相互干扰问题
文章目录 问题描述解决方法 问题描述 第二个child会受到第一个child的影响而线上666的值 <template><child :value"666" /><child /> </template> <script> import child from ./child; export default {components: {child,},data(…...

【深度学习实验】卷积神经网络(八):使用深度残差神经网络ResNet完成图片多分类任务
目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. 构建数据集(CIFAR10Dataset) a. read_csv_labels() b. CIFAR10Dataset 2. 构建模型(FeedForward&#x…...

HarmonyOS学习 -- ArkTS开发语言入门
文章目录 一、编程语言介绍二、TypeScript基础类型1. 布尔值2. 数字3. 字符串4. 数组5. 元组6. 枚举7. unknown8. void9. null 和 undefined10. 联合类型 三、TypeScript基础知识条件语句if语句switch语句 函数定义有名函数和匿名函数可选参数剩余参数箭头函数 类1. 类的定义2.…...

早安心语|不委屈不将就,让生活充满仪式感
1、让自己的生活多一种可能,给自己的未来多一份惊喜,人生所有的机会和惊喜,都是在你全力以赴的道路上遇到的。 2、推开自己喜欢的人叫成长,留住自己喜欢的人叫本事,总有人嫌你不够好,也有人觉得你哪都好&am…...
[Python进阶] 操纵键盘:pyuserinput
6.3 操纵键盘:pyuserinput 6.3.1 说明 在安装pyuserinput库时会自动安装PyMouse和PyKeyboard库。前者主要用来操作鼠标,包括鼠标的点击、移动等。后者主要用来操作键盘,包括键盘按键的按下、弹起等。这两个库还可以同时对鼠标和键盘的事件进…...

解析Moonbeam的安全性、互操作性和市场竞争力
Moonbeam依托Polkadot Substrate框架构建,用Rust程序设计语言创建的智能合约区块链平台,在继承Polkadot安全性的基础上为项目提供以太坊虚拟机(EVM)的兼容性和原生的跨链互操作性优势。Moonbeam的EVM兼容性表示开发者无需学习Subs…...
RPA是什么?怎么成为RPA高手?
RPA(Robotic Process Automation,机器人流程自动化)是一种技术,通过软件机器人模拟人类在计算机上执行重复性任务,从而提高生产力、减少错误并降低成本。RPA 可以广泛应用于金融、医疗、制造、零售等多个行业ÿ…...

Apache Shiro 漏洞复现
文章目录 Apache Shiro 漏洞复现1. Apache Shiro 1.2.4 反序列化漏洞1.1 漏洞描述1.2 漏洞原理1.3 漏洞复现1.3.1 环境启动 1.4 漏洞利用1.5 修复方案 Apache Shiro 漏洞复现 链接地址:Vulhub - Docker-Compose file for vulnerability environment 1. Apache Shi…...

炒现货白银的最佳时间
天时地利人和是我们进行现货白银投资最关键的因素。天时是指我们因时而动,在适合的时机出击。地利,就是我们对市场的定位,对自己入场的定位有清晰的了解,并且这些位置对我们有利。人和就是指投资者的状态很好,对如何进…...

C# OpenVINO 人脸识别
效果 耗时 Preprocess: 1.41ms Infer: 4.38ms Postprocess: 0.03ms Total: 5.82ms 项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Text; using Syste…...

ESP32-WROOM-32无法进入下载模式进行程序上传的问题
结论 先说结论,ESP32-WROOM-32无法进入下载模式通过串口进行程序上传,可能是GPIO2引脚没有通过下拉电阻拉低,导致无法进入正确的启动模式。 启动模式 ESP32启动时会打印rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) 复位源rs…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...