经典文献阅读之--Bidirectional Camera-LiDAR Fusion(Camera-LiDAR双向融合新范式)

2023-05-16

0. 简介

对于激光雷达和视觉摄像头而言,两者之间的多模态融合都是非常重要的,而本文《Learning Optical Flow and Scene Flow with Bidirectional Camera-LiDAR Fusion》则提出一种多阶段的双向融合的框架,并基于RAFT和PWC两种架构构建了CamLiRAFT和CamLiPWC这两个模型。相关代码可以在 https://github.com/MCG-NJU/CamLiFlow.中找到。下面我们来详细的看一看这篇文章的详细内容。

1. 主要贡献

本文关注Camera和LiDAR的多模态融合问题,具体的任务是2D光流和3D光流(3D光流又称为场景流,Scene Flow)的联合估计。文中存在四个主要贡献点:

  1. 我们提出了一种双向和多阶段的相机LiDAR融合流程用于光流和场景流估计。我们的流程是通用的,并且可以应用于各种网络架构。
  2. 我们实例化了两种双向融合流程类型,一种基于金字塔粗到细架构(称为CamLiPWC),另一种基于递归全对场变换(称为CamLiRAFT)。
  3. 我们设计了一个可学习的融合运算符(Bi-CLFM),通过可学习的插值和双线性采样以双向方式对图像和点特征进行对齐和融合。还引入了梯度分离策略,以防止一种模态主导训练。
  4. 在FlyingThings3D和KITTI上,我们的方法在相机-LiDAR 3和仅LiDAR设置中均实现了最先进的性能。Sintel上的实验也展示了其强大的泛化性能和处理非刚体运动的能力。

2. 相关工作

这篇文章是比较新的工作,作者认为需要回顾一下相关工作,以便于读者了解这个领域是如何发展的。

2.1 光流法(2D)

光流估计法旨在从一对帧中为每个像素预测密集的2D运动。我们粗略地将相关的光流估计方法分为两类:传统方法和基于卷积神经网络(CNN)的方法。
传统方法:传统方法将光流估计公式化为能量最小化问题。Horn和Schunck [18]提出了变分方法来通过在数据项和正则化项之间施加权衡来估计光流。Black和Anandan [5]引入了一个稳健的框架来解决过度平滑和噪声敏感性问题。其他方法改善了数据项[68]和匹配成本。

基于CNN的方法:自Krizhevsky等人[27]展示卷积神经网络在大规模图像分类上表现良好以来,许多研究人员开始探索基于CNN的方法来处理各种计算机视觉任务。FlowNet [13]是第一个用于光流估计的端到端可训练CNN,采用编码器-解码器架构。FlowNet2 [21]将多个FlowNet堆叠成一个更大的网络。PWC-Net [50]和其他一些方法[19],[20],[46],[63]使用由粗到细的金字塔迭代细化。这些从粗到细的方法往往会错过那些在粗略级别上消失的小型和快速移动的对象。为了解决这个问题,RAFT [51]为所有像素对构建4D成本体积,并在高分辨率上迭代更新光流。在本文中,我们基于两种典型的光流架构:PWC-Net [50]和RAFT [51],实现了我们的双向融合管道。

2.2 场流法(3D)

场流法类似于光流法,只是场流是在3D空间中定义的运动场,而光流是在2D空间中定义的。一些方法从RGB-D输入中估计像素级稠密的场流,而其他方法则侧重于从点云估计稀疏的场流。

RGB-D帧的场流:RGB-D场流是指从成对的立体或RGB-D帧中为每个像素估计密集的3D运动与光流类似,传统方法探索变分优化和离散优化,并将场流视为能量最小化问题。最近的方法将场流估计分为多个子任务,并为每个子任务建立一个或多个子模块的模块化网络。具体而言,DRISF [36]从两个连续的立体图像中估计光流,深度和分割,并使用高斯-牛顿求解器找到最佳3D刚性运动。RigidMask [65]预测背景和多个刚体移动对象的分割掩模,然后通过3D刚性变换进行参数化。尽管取得了显着进展,它们的子模块彼此独立,无法利用不同模态的互补特征。RAFT-3D [52]探索了特征级融合,并在早期阶段将图像和深度映射连接到RGB-D帧中,然后使用统一的2D网络迭代更新像素级SE3运动的密集场。然而,这种“早期融合”使得2D CNN难以利用3D结构信息。

点云的场流:PointNet是对点集进行深度学习研究的先驱性工作,可以直接处理3D点(例如来自LiDAR)。从那时起,研究人员[15],[26],[32],[33],[41],[55],[56],[59]开始探索基于点的场流估计方法。基于PointNet ++ [44],FlowNet3D [32]使用流嵌入层来表示点的运动。FlowNet3D ++ [55]通过添加几何约束获得更好的性能。受双边卷积层启发,HPLFlowNet [15]将点投影到Permutohedral格上。PointPWCNet [59]引入可学习的点云成本体积,并以粗到细的方式估计场流。FLOT [41]将场流估计视为相邻帧中对应点之间的图匹配问题,并使用最优传输解决该问题。PV-RAFT [56]提出点-体素相关场来捕获点对的局部和长程依赖性。FlowStep3D [26]设计了一种递归架构,学习迭代地细化场流预测。然而,这些方法没有利用图像提供的颜色特征,这限制了性能。

2.3 相机-LiDAR融合

相机和LiDAR具有互补的特性,方便许多计算机视觉任务,例如深度估计,场流估计和3D物体检测。这些方法可以分为结果级别和特征级别的融合。

结果级融合:一些研究人员构建了模块化网络并进行了结果级融合。FPointNet [42]使用现成的2D物体检测器来限制3D物体检测的搜索空间,从而显着减少计算量并提高运行时间。IPOD [66]用2D语义分割替换2D物体检测器,并使用基于点的建议生成。PointPainting [54]将LiDAR点云投影到图像的语义分割网络的输出中,并将类别得分附加到每个点。然而,结果级融合的性能受到子模块的限制,因为整个网络取决于其结果。相比之下,我们的方法利用特征级融合,可以以端到端的方式进行训练

特征级融合:另一种方法是特征级融合。PointFusion [60]利用2D物体检测器生成2D框,然后使用基于CNN和点的网络将图像和点特征融合用于3D物体检测。MVX-Net [49]使用预训练的2D Faster R-CNN提取图像特征和VoxelNet生成最终框。点或体素投影到图像平面上,并将相应的特征与3D特征融合。Liang等人[30]利用连续卷积将图像特征融合到不同分辨率的BEV特征图上。BEVFusion [34]使用升降射击操作将相机特征转换为BEV空间,并使用BEV编码器融合两种模态。TransFusion [2]遵循两阶段流水线:查询从LiDAR特征生成,并分别与2D和3D特征交互。CMT [62]探索了跨模态变压器,使用坐标编码隐式地对齐多模态特征。与以往工作不同的是,我们提出了一个多阶段双向融合流程,不仅充分利用每种模态的特点,而且最大化了模态间的互补性。

3. Bidirectional Camera-LiDAR Fusion Module(Bi-CLFM)详细方法

本节介绍双向相机-LiDAR融合模块(Bi-CLFM),它可以以双向方式(2D到3D和3D到2D)融合密集的图像特征和稀疏的点特征。如图3所示,Bi-CLFM将图像特征 F 2 D ∈ R H × W × C 2 D F_{2D}∈\mathbb{R}^{H×W×C_{2D}} F2DRH×W×C2D、点特征 G 3 D = { g i ∣ i = 1 , . . . , N } ∈ R N × C 3 D G_{3D}=\{g_i|i=1,...,N\}∈\mathbb{R}^{N×C_{3D}} G3D={gii=1...N}RN×C3D和点位置 P = { p i ∣ i = 1 , . . . , N } ∈ R N × 3 P=\{p_i|i=1,...,N\}∈\mathbb{R}^{N×3} P={pii=1...N}RN×3作为输入,其中 N N N表示点的数量。输出包含融合后的图像和点特征。因此,Bi-CLFM在不改变输入特征的空间结构的情况下进行双向融合,可以轻松地插入任何点-图像融合结构中。对于每个方向(2D到3D或3D到2D),首先使用双线性网格采样和可学习插值将特征对齐具有相同的空间结构。接下来,基于选择性核卷积[29]自适应地融合对齐特征。此外,我们引入了梯度分离策略,解决了尺度不匹配梯度的问题。

3.1 特征对齐

由于图像特征是密集的而点特征是稀疏的,因此我们需要在融合之前对两种模式的特征进行对齐。具体而言,需要对图像特征进行采样以变得稀疏,而需要对点特征进行插值以变得稠密。

在这里插入图片描述

2D->3D:对于2D到3D方向的对齐,我们首先将点投影到图像平面来sample相应的2D特征,其中,非整数坐标的情况使用双线性插值来处理。接着使用一个1×1卷积将sample得到的特征的通道维度与输入点特征dim对齐。

3D->2D:3D到2D方向的对齐也是类似,我们将点投影到图像平面,利用一个新的可学习的插值模块(下面有讲)从稀疏点特征中得到密集的特征图。接着也使用一个1×1卷积将插值点特征的通道维度与输入图像特征dim对齐。

可学习插值:对于密集特征图的每一个像素,我们在图像平面中寻找k个离它最近的投影后的点。接着,我们用一个ScoreNet根据坐标偏移量为相邻特征生成权重,ScoreNet会给每一个特征赋予一个(0,1)区间的分数。最后再根据分数赋予相邻特征权重,并使用max或sum这类对称运算进行聚合。

3.2 自适应特征融合

对齐了特征之后,我们需要对他们进行融合。最简单的方法就是concat或者add,不过它们不够adaptive。这里我们使用了基于SKNet的方法进行adaptive的特征融合,它能够自适应地挑选出需要融合的channel。
在这里插入图片描述

图4. 可学习插值的细节。对于每个目标像素,我们找到其周围的k个最近点。接着使用轻量级MLP,并跟随一个Sigmoid激活函数来加权邻近特征。

3.3 梯度截断

在进行多模态融合时,可能会遇到两个模态梯度尺寸不匹配的问题。如果不进行处理,可能会导致一种模态主导训练。我们对两个模态的梯度进行分析,发现2D的梯度比3D大了约40倍!因此,我们在Bi-CLFM中截断了来自另一个模态的梯度,使模态间不会受到相互影响。

4. PWC pipeline(CamLiPWC)

PWC-Net [50] 是根据简单和成熟的原则设计的,包括金字塔处理、变形和使用代价体积。在粗略级别计算的光流被上采样并扭曲到更精细的级别。如图6所示,我们引入基于PWC架构的两个分支网络,即CamLiPWC。

4.1 基本架构

我们将IRR-PWC [20]用作图像分支。唯一的区别是我们用可学习的凸上采样模块[51]替换双线性上采样,从期望的级别产生最终预测。点分支基于PointPWC-Net [59],有两个主要修改。首先,我们增加了金字塔的级别以匹配图像分支。因此,点金字塔分别具有8192、4096、2048、1024、512和256个点的6个级别。其次,解码器的权重在所有金字塔级别之间共享。根据IRR-PWC,具有权重共享的迭代式残差细化可以减少参数数量并增加准确性。

…详情请参照古月居

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

经典文献阅读之--Bidirectional Camera-LiDAR Fusion(Camera-LiDAR双向融合新范式) 的相关文章

  • Pipeline 核心语法

    常用开发工具 选择任意pipeline类型的作业 xff0c 点击 流水线语法 即可进入pipeline开发工具页面 1 片段生成器 流水线代码片段生成器 xff0c 非常好用 xff0c 在这里可以找到每个插件以及Jenkins内置的方法
  • Pipeline Groovy 语法

    Groovy是一种功能强大 xff0c 可选类型和动态 语言 xff0c 支持Java平台 旨在提高开发人员的生产力得益于简洁 xff0c 熟悉且简单易学的语法 可以与任何Java程序顺利集成 xff0c 并立即为您的应用程序提供强大的功能
  • Jenkins 共享库应用

    1 创建一个共享库 1 xff09 创建共享库 可以直接在github中创建一个公开类型的仓库 xff0c 也可以创建私有类型的gitlab仓库 xff0c 需要提前配置好仓库的认证凭据 xff0c 这里使用gitlab创建了一个名为jen
  • Generic WebHookTrigger 自动触发

    1 安装配置 Generic WebHookTrigger 目的 xff1a 为Jenkins作业添加触发器 xff0c 便于其他系统调用 安装配置Generic WebHook xff0c 插件名称 xff1a Generic Webho
  • Jenkins 权限管理与凭据

    权限管理 安装插件 Role Based Strategy 可以对Jenkins用户进行权限管理 xff0c 如果在Jenkins控制台安装插件失败 xff0c 可以去Jenkins官网下载插件然后再上传 Role based Author
  • 部署Maven环境

    JDK xff1a 在maven3 3 以上的版本需要JDK版本1 7 43 xff0c 内存 xff1a 没有最低限制 磁盘 xff1a 1G 43 可用磁盘空间 操作系统 xff1a 没有限制 下载地址 xff1a Maven Down
  • Maven 集成

    先在执行节点上安装Maven xff1a 部署Maven环境 lovely nn的博客 CSDN博客 JDK xff1a 在maven3 3 以上的版本需要JDK版本1 7 43 xff0c 内存 xff1a 没有最低限制 磁盘 xff1a
  • 哪些技术好书值得一读再读?阿里大牛列了一份经典书单

    喜爱读书 xff0c 就等于把生活中寂寞无聊的时光换成巨大享受的时刻 有了书 xff0c 各个领域的智慧 xff0c 几乎触手可及 我们能有幸站在前辈 巨人的肩膀上 xff0c 看更远的风景 4月23日世界读书日 xff0c 阿里九位技术大
  • JDK 环境部署

    环境Centos 7 6 卸载旧的 查看旧的java版本 java version 查看jdk信息 rpm qa grep i jdk 卸载jdk rpm e nodeps jdk信息 安装新的 rpm安装1jdk rpm ivh jdk
  • Docker部署Gitlab

    这里用docker部署gitlab ce 14 0 0 ce 0版本 xff1a docker pull gitlab gitlab ce 14 0 0 ce 0 mkdir p gitlab1 config data logs docke
  • Pipeline 部署K8S应用

    概述 提前在K8S集群中部署jenkins和gitlab应用 xff0c gitlab用于存放应K8S的资源清单Yaml文件 xff0c Jenkins用于拉取gitlab上的Yaml文件并将其部署到K8S集群中 将所有Yaml文件放在Gi
  • curl https方式访问kubernetes集群API

    使用curl https方式访问kubernetes集群的api 认证方式需要用到token xff0c 这里使用变量赋予APISERVER 和TOKEN的值 apiserver xff1a APISERVER 61 kubectl con
  • Deployment 回滚

    更新Deployment资源时 xff0c pod状态为Pending xff0c 使用delete命令是删不掉Pending的pod的 xff0c 因为Deployment会无限创建 xff0c 这时候需要用到Deployment的回滚功
  • 在Pod中执行目录操作,提示Permission denied

    问题 xff1a 进入Pod执行创建文件的操作 xff0c 出现如下报错 kubectl exec it jenkins 5b688ddcc7 h72f2 n cicd bash touch test touch cannot touch
  • Copy宿主机文件到Docker容器中

    1 查找容器名 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 67686c68c78c keycloak v3 34 opt keycloak bin k 3
  • K8S中部署Grafana

    官方部署文档 xff1a Deploy Grafana on Kubernetes Grafana Labs 以下Yaml从官方copy下来的并做了些修改 xff0c Service使用Nodeport方式是为了便于本地访问 cat gra
  • 在 AlertManager 报警通知中展示监控图表

    参考原文档 xff1a 在 AlertManager 报警通知中展示监控图表 Promoter 是一个用于 AlertManager 通知的 Webhooks 实现 xff0c 支持在消息通知中展示实时报警图表 xff0c 也支持定制消息通
  • Github添加SSH keys

    问题 xff1a 在本地 xff08 linux系统 xff09 下载github仓库源代码时 xff0c 执行git clone 命令时出现以下报错 xff1a git clone git 64 github com hh hub pro
  • 阿里技术大牛最爱的“闲书”,你看过多少?

    在忙碌的写代码 修bug生活里 xff0c 你有多久没有闲下来 xff0c 读读 闲书 xff0c 取悦自己了呢 xff1f 正如梁文道所说 xff0c 读一些无用的书 xff0c 做一些无用的事 xff0c 花一些无用的时间 xff0c
  • blackbox_exporter 黑盒监测

    一 简介 blackbox exporter blackbox exporter是Prometheus 官方提供的 exporter 之一 xff0c 可以提供 http dns tcp icmp 的监控数据采集 xff0c blackbo

随机推荐

  • Python 与Django环境搭建

    系统 xff1a Windows 10 python环境搭建 1 python安装步骤 python包下载链接 xff1a https www python org downloads windows 下载版本 xff1a python 3
  • prometheus图

    Prometheus Server 框架图 xff0c 只要能提供对应的metrics接口 xff0c promehteus就能接入监控 xff0c prometheus会把抓取到的指标数据持久化到本地磁盘中 xff0c 跟其它数据库一样它
  • 经典文献阅读之--BEVDistill(BEV蒸馏)

    0 简介 之前作者前段时间在研究BEV的相关算法 xff0c 当时就觉得BEV算法好是好 xff0c 但是所需要的内存以及计算资源实在是太大了 xff0c 无法实时在真实场景中运行 我们知道多视图 xff08 multi view 三维目标
  • 经典文献阅读之--FastFlowNet(轻量光流估计)

    0 简介 密集的光流估计在许多机器人视觉任务中起着关键作用 随着深度学习的到来 xff0c 已经比传统方法以令人满意的精度预测了它 然而 xff0c 当前的网络经常占用大量参数并且需要沉重的计算成本 这些缺点阻碍了在功率或内存受限的移动设备
  • Matlab与ROS(1/2)---Message(三)

    0 简介 消息是ROS中交换数据的主要容器 主题和服务使用消息在节点之间传输数据 为了标识其数据结构 xff0c 每条消息都有一个消息类型 例如 xff0c 来自激光扫描仪的传感器数据通常以sensor msgs LaserScan类型的消
  • Matlab与ROS(1/2)---发布者和订阅者数据通信(四)

    0 简介 我们在前面一节介绍了Matlab与Message的通信 xff0c 而我们这一节主要来介绍发布者和订阅者在Matlab中的操作 这部分我们主要来看一下ROS1和ROS2中分别是如何使用Topic的 1 ROS1的消息订阅与发布 1
  • Matlab与ROS(1/2)---服务端和客户端数据通信(五)

    0 简介 在前几讲我们讲了Matlab中的Message以及Topic的相关知识 而ROS主要支持的通信机制还有服务这一类 服务通过允许请求以及响应的通信方式 xff0c 来给整个系统完成更紧密的耦合 服务客户端向服务服务器发送请求消息并等
  • Matlab与ROS---Action与Gazebo(六)

    0 简介 对于ROS1而言 xff0c 其在Matlab当中相较于ROS2还有一些比较高级的用法 xff0c 比如说我们接下来要说的Action和Gazebo仿真 1 ROS Action ROS的Action行为模式当中也存在有一个客户端
  • Matlab与ROS---TF坐标系(七)

    0 简介 我们上面讲了最基础的通信机制以及在Matlab中如何使用这些通信 xff0c 下面我们这一讲来主要介绍ROS当中最常用的TF坐标系在Matlab中的使用 tf是分布式的 xff0c 因此所有的坐标帧信息对ROS网络中的每个节点都是
  • OCR如何读取皱巴巴的文件?深度学习在文档图像形变矫正的应用详解

    阿里妹导读 xff1a OCR作为智能审核的重要环节 xff0c 其识别准确率影响着最终审核效果的好坏 xff0c 而来自扫描仪 智能手机的文档图像多存在卷曲 折叠 本文旨在利用深度学习算法对文档图像的形变进行矫正 xff0c 从而提高OC
  • 经典文献阅读之--VGICP(体素化的ICP匹配)

    0 简介 之前我们在以前的文章中介绍了很多有关于点云匹配相关的知识 xff0c 最近两年处理GICP这一大一统的ICP匹配方法以外 xff0c 还有一个工作对体素化和ICP这两者打起了心思 xff0c Voxelized GICP for
  • 经典文献阅读之--Orbeez-SLAM(单目稠密点云建图)

    0 简介 对于现在的VSLAM而言 xff0c 现在越来越多的工作开始聚焦于如何将深度学习结合到VSLAM当中 xff0c 而最近的这个工作就给出了一个比较合适的方法 Orbeez SLAM A Real time Monocular Vi
  • 经典文献阅读之--NORLAB-ICP(重力约束ICP)

    0 简介 最近几年IPC相关的文章也出了不少 xff0c 最近作者有看到了一篇比较有意思的ICP论文 Gravity constrained point cloud registration xff0c 这篇论文将传统的ICP考虑了重力因素
  • 常见的3d bounding box标注工具

    0 简介 对于3d bounding box而言 xff0c 近几年随着自动驾驶的火热 xff0c 其标注工具也日渐多了起来 xff0c 本篇文章不讲具体的算法 xff0c 这里主要聚焦于这些开源的3d bounding box标注工具 x
  • 经典文献阅读之--A Lifelong Learning Approach to Mobile Robot Navigation(终生学习轨迹导航)

    0 简介 终生学习作为近年来比较火的一种深度学习方式 xff0c 导航终身学习 LLfN 旨在解决标准导航问题的一种新变体 xff0c 在该问题中 xff0c 智能体在有限的内存预算下 xff0c 通过学习提高在线经验或跨环境的导航性能 而
  • 避免使用第三方工具完成电脑环境检测

    0 简介 在之前配置各种深度学习环境的时候经常需要先检测一下电脑的软硬件环境 xff0c 其实整个过程比较重复和固定 xff0c 所以我们是否有可能一键检测Python版本 PIP版本 Conda版本 CUDA版本 电脑系统 CPU核数 C
  • 经典文献阅读之--PCAccumulation(动态三维场景构建)

    0 简介 多波束激光雷达传感器 xff0c 常用于自动驾驶汽车和移动机器人 xff0c 获取三维范围扫描序列 xff08 帧 xff09 由于角度扫描分辨率有限和遮挡 xff0c 每帧只稀疏地覆盖场景 稀疏性限制了下游过程的性能 xff0c
  • Linux中的算法分离手段

    0 简介 参数分离对于绝大多数算法开发来说收益是非常大的 xff0c 因为我们都知道 xff0c 随着平台的更替 xff0c 很多时候如果说数据流和算法交叠在一起 xff08 即接口与实现合在一起 xff09 这将有可能会导致在迁移平台时候
  • 经典文献阅读之--Evaluation of Lidar-based 3D SLAM algorithms (激光SLAM性能比较)

    0 简介 我们在日常使用激光SLAM算法的时候 xff0c 常常会发现现有的算法只会和一些比较经典或者前作去进行比较 xff0c 很多时候我们更希望对主流的激光SLAM方法进行性能比较 之前作者转载过一篇文章 常见不同3D激光SLAM方案对
  • 经典文献阅读之--Bidirectional Camera-LiDAR Fusion(Camera-LiDAR双向融合新范式)

    0 简介 对于激光雷达和视觉摄像头而言 xff0c 两者之间的多模态融合都是非常重要的 xff0c 而本文 Learning Optical Flow and Scene Flow with Bidirectional Camera LiD