深度学习 相机标定_基于深度学习的多传感器标定

64139e170703e446ee5fe72b4f4ba071.png

标定是确定不同坐标系的相互转换关系,是传感器数据融合的前提,特别是激光雷达和图像数据。这里以深度学习的方法训练CNN模型去回归坐标系转换的参数。

主要是两个CNN模型:RegNet和CalibNet。

RegNet应该是第一个深度卷积神经网络(CNN)推断多传感器的6自由度(DOF)外参数标定,即激光雷达(LiDAR)和单目摄像头。RegNet将标定的三个步骤(特征提取、特征匹配和全局回归)映射到单个实时CNN模型中。在训练期间,随机对系统进行重新调整,以便训练RegNet推断出激光雷达投影到摄像头的深度测量与RGB图像之间的对应关系,并最终回归标定外参数。此外,通过迭代执行多个CNN,在不同程度失标定(decalibration)数据上进行训练。如图是一个例子。

1906645f906df141d99dcb1f882abc33.png
失标定

238adc103a3e694b1bf22b347ccf5dfd.png
标定基础事实(GT)

3b53f0c90d374aa97bc7dd4d2c104217.png
RegNet标定结果

首先,传感器坐标系中给出的点x变换为世界坐标系中的点y,定义为一个仿射变换矩阵H,即y = Hx。估计变换矩阵H的任务称为外标定。应用深度学习,需要重新定义外标定的问题,在给定初始标定Hinit和基础事实标定Hgt的情况下,确定失标定矩阵φdecalib,其定义如下

48fbfa5d86c81769051ca5a7b8b28977.png

然后可以随机改变Hinit以获得大量的训练数据。为了能够建立标定过程可观测的对应关系,用Hinit和摄像头内参数矩阵P将激光雷达点投影在摄像头图像平面上,即

532849002bea098d3015acdeaa44064b.png

在每个像素(u,v),如果没有投射的激光雷达点,则存储投影点的逆深度值(摄像头坐标)zc或者为零。 由于相比图像像素的数量大多数常见的激光雷达传感器仅提供少量测量数据,因此深度图像非常稀疏。为了对付这种稀疏性,在输入深度图使用最大值池化(Max Pooling)对投影的激光雷达深度点上采样。

下面图展示的是Regnet的结构框图,其实现深度和RGB图像之间的标定。 使用初始标定Hinit将深度点投影在RGB图像上。在CNN网络的第一和第二部分,使用NiN(Network in Network)块来提取丰富的特征以进行匹配,其中索引显示NiN块的第一卷积层的核大小k。 特征通道的数量显示在每个模块的右上角。 CNN网络最后一部分通过使用两个全连接层收集全局信息来对失标定进行回归。(注:NiN块由一个k×k卷积,然后是几个1×1卷积组成。)在训练期间,失标定矩阵会被随机排列,形成深度点的不同投影数据。

8f97b89669a79094cb67550124922d76.png

如下图所示,深度点的投影随给定的初始标定值而强烈地变化。当初始校准从标定的基础事实(GT)旋转偏离20°平移偏离1.5米的时候,可能导致激光雷达点云的投影的大多数点在图像区域之外,难以与RGB图像建立对应关系。

b82af3543a7006b4331cb35bb4fdd409.png

2544a1129f60c4677cd89cd6719bbff8.png

e2ec18808d30728726b449b001078423.png

即使在这些情况下,训练的CNN网络仍然能够改进标定。使用新的估计标定参数可以再次投影深度点,从而产生更多供相关计算的深度点。 然后,该步骤多次迭代即可。

7d1e54d43f2b606b9c3a9c99ca361b6f.png
初始化

e276a9aa439ce17f934901c5a75d54fa.png
结果

CalibNet是一个自监督的深度网络,能够实时自动估计激光雷达和2D摄像头之间的6-自由度刚体转换关系。在训练时,不进行直接监督(例如不直接回归标定参数);相反,可以训练网络去预测标定参数,以最大化输入图像和点云的几何和光度一致性。

下图是CalibNet的流程图:(a)来自标定摄像头的RGB图像;(b)原始激光雷达点云作为输入,并输出最佳对齐两个输入的6-自由度刚体变换T;(c)显示错误标定设置的彩色点云输出;(d)显示使用CalibNet网络标定后的输出。

e6557442674845d7987afe286bd69485.png

该网络将RGB图像、相应的误标定(mis-calibration)的激光雷达点云和相机标定矩阵K作为输入。作为预处理步骤,首先将点云转换为稀疏深度图,将激光雷达点云投影到图像平面即可。由于初始误标定的不准确,将误标定点投影到图像平面会导致稀疏深度图与图像(严重)不一致,如上图(c)所示。 将RGB输入图像和稀疏深度图标准化为±1的范围,然后用5 x 5最大池化窗将稀疏深度图最大池化为半致密深度图。

虽然网络的输出可直接预测平移,但需要将so(3) 中的输出旋转矢量转换为其对应的旋转矩阵。一个元素ω ∈ so(3) 可以通过使用指数图(exponential map)转换为SO(3)。

一旦将网络预测的标定参数转换为T∈SE(3)中的刚体变换,就会使用3-D空间变换器层(Spatial Transformer Layer),通过预测变换T对输入深度图进行变换。这里扩展了原始的3D空间变换器层以处理稀疏或半致密的输入深度图,如上图(d)。

下图是CalibNet的网络结构图。网络主要由”RGB”和”深度”2个不对称分支组成,每个分支执行一系列,因此”深度”流的滤波器在每个阶段都会减少。然后两个分支的输出沿着信道这个维度连接并通过一系列附加全卷积和批规则化(Batch Norm)层,用于全局特征聚合。将旋转和平移的输出流分离,以捕获旋转和平移之间可能存在的模态差异。网络的输出是1×6矢量ξ=(v, ω)∈ se(3), 其中v是平移速度矢量,ω是旋转速度矢量。

981b431930fa95b37a38aff0f16f3bce.png

下面是损失函数的定义:

1. 光度损失:在通过预测的T变换深度图之后,检查预测的深度图和正确的深度图之间的密集像素误差,误差定义为,

8880b1be1903eb2fcfc0b355a60dad19.png

2. 点云距离损失:3D空间变换器层允许在反投影(back projection)后的点云转换。 在这个阶段,尝试度量尺度最小化未校准的变换点和目标点云之间的3D-3D点距离。距离测量有

a) Chamfer 距离

04918e83845c07fb6bc9be6f4b83266c.png

b) 推土机距离(Earth Mover’s Distance):

5879fc843b6f3746b51de469a15941d2.png

c) 质心ICP距离

fc5dfb47684001a28c51afcc72dc23a1.png

最后,整个损失函数定义为:

fc5dfb47684001a28c51afcc72dc23a1.png

下图是CalibNet标定的一些结果。第一行显示输入的RGB图像,第二行显示投影到图像上的相应的误标定的激光雷达点云。 第三行显示使用网络预测变换投影的激光雷达点云,最后一行显示相应的基础事实结果。 第二行中的红色框表示未对齐,而在第三行中,红色框表示标定后的正确对齐。

ecd259feabb8a721dfa7db9ae2bea94f.png

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

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

相关文章

前端学习(505):垂直居中的第一种方式的优点和缺点

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>居中布局一</title><style>.parent{wid…

实现推拉ui样式_这推拉门隔断,我从没见过!直角设计同时划分3大功能区,太牛了...

这位业主要是说自家装修第二名&#xff0c;我想大概不会有人愿意称第一。就说这个操作我就没见过&#xff0c;推拉门隔断内部&#xff0c;再装大白墙拼接推拉门隔断&#xff0c;形成一个直角设计&#xff0c;同时划分3大功能区&#xff0c;属实是太牛了&#xff01;这和邻居想让…

前端学习(506):垂直居中的第二种方式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>居中布局一</title><style>.parent{wid…

绘制半圆_Android Canvas 绘制小黄人

❝学习往往是枯燥的&#xff0c;如果能用一个有趣 Demo 来学习和练习技术&#xff0c;那对知识的掌握就会更牢固。我在学习 Canvas 绘制 API 的时候就是这样做的。❞截图镇楼效果图我觉得这个绘制小黄人的自定义 View 就很有意思&#xff0c;也为我后来工作中的自定义 View 实现…

利用旧手机自建anki服务器,废旧手机变身服务器,打造私人云盘

前提条件安装Linux Deploy 并安装系统1.点开左上角选择设置点击左上角进行初始设置1.勾选锁定wifi,防止休眠时wifi断开2.勾选cpu保持唤醒3.勾选开机启动 (可选)4. path变量设置&#xff0c;网上大部分都说手机上安装busybox后填写busybox安装命令包后的路径&#xff0c;其实Lin…

关于返回结构体的函数

【前言】写作本文&#xff0c;源于最近回复的 《汇编中函数返回结构体的方法》 一文。在网络上也已经有一些相关文章和相关问题&#xff0c;有的文章已经给出了一部分结果&#xff0c;但总体而言还缺少比较重要的结论。本文以分析 VC6 编译器&#xff0c;32 位架构为主来重复性…

无法确定当前的订阅失效日期_元器件失效率与失效分布

在汽车电子进行可靠性计算时&#xff0c;首先需要分析各个元器件的失效率与失效分布。元器件真实的失效率与失效分布应该是基于大量的实际数据统计得到的&#xff0c;但由于汽车电子没有专门的失效数据库&#xff0c;通常采用的是预估失效率的方法。目前业界公认的可以参考的标…

易邮服务器com组件注册失败,com组件注册失败有什么办法可以解决

COM组件实际上是系统内一些比较小的二进制可执行程序&#xff0c;它们能为应用程序&#xff0c;操作系统以及其他组件提供一定的服务。所以注册COM组件是一个重要的事情&#xff0c;但这同时也是win7系统的一个硬伤&#xff0c;win7系统注册COM组件总是失败&#xff0c;让人烦心…

前端学习(508):水平和垂直居中第一种方式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>居中布局一</title><style>.parent{wid…

修改无效_解决docker部署gitlab时,clone地址无效和修改默认端口

部署&#xff1a;docker run -d -p 444:443 -p 88:88 -p 222:22 --name gitlab --restart always -v /usr/local/docker/gitlab/config:/etc/gitlab -v /usr/local/docker/gitlab/logs:/var/log/gitlab -v /usr/local/docker/gitlab/data:/var/opt/gitlab gitlab/gitlab-cevim …

如何实现服务器转发客户端消息,socket 怎么实现服务器与客户端不停的互发消息呢?...

在 java Socket应用的 3-4节 我把老师的代码修改了一下可以手动输入文字让对面的服务器/客户端接受&#xff0c;下面是代码&#xff1a;//客户端package 通讯;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStrea…

前端学习(509):水平和垂直居中第二种方式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>居中布局一</title><style>.parent{wid…

pg高性能服务器,Pgpool-II 负载均衡对PG的性能影响

Pgpool-II相当于中间件&#xff0c;Pgpool-II与PG是解耦合的&#xff0c;基于这样的机制&#xff0c;Pgpool-II可以搭建在已经存在的任意版本的PG主从结构上&#xff0c;主从结构的实现与Pgpool-II无关&#xff0c;可以通过slony等工具或者PG自身的流复制机制实现。一、拓扑结构…

股上涨和下跌天数比_面对下跌,如何信心十足地逢低买入?

大众总是错的&#xff0c;对吗?也许大部分时间都是这样。但在股市“逢低买进”的想法&#xff0c;可能是金融市场中群策群力的一个罕见例子。这是一个有大量学术支持的老想法。但这并不是说股票市场总是在上涨&#xff0c;事实上&#xff0c;当下跌来临的时候&#xff0c;它们…

前端学习(511):两列布局的第一种方式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>两列布局</title><style>.left{width: …

5g存储服务器是什么项目,5G时代对服务器有什么要求?

5G是什么?5G,其中字母G代表generation(代、际)。即第五代移动电话行动通信标准&#xff0c;也称第五代移动通信技术。5G的应用范围很广&#xff0c;大致可以包括以下几个方面&#xff1a;1、5G综合产业链分析2、5G与物联网3、5G与车联网4、5G与无线医疗5G对服务器的要求“云端…

压缩命令_Linux gzip命令:压缩文件或目录

gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,通过此命令压缩得到的新文件,其扩展名通常标记为“.gz”。 再强调一下,gzip 命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件。 gzip 命令的基本格式如下: [root@localhost ~]…

前端学习(512):两列布局的第一种方式的优缺点

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>两列布局</title><style>.left{width: …