面向移动机器人的道路环境感知

news2024/10/2 1:39:11

分享嘉宾 | 范睿

文稿整理 | William

自动驾驶感知

首先,三维几何模型背后的机理是多视图几何学,多视图几何学是指想要得到对应模型的三维几何架构,则必须要用相机在两个不同的位置进行拍照。如图1,可以通过利用两个相机在不同位置拍照的方式,去得到三维几何模型;同样,也可以利用单个相机不断的移动,然后不断的进行三维的重建。

主要原理是:利用左相机平面和右相机平面去计算R、T。通常做slam的时候,先需要对图像中的对应点进行匹配,然后利用至少八个对应点去利用SVD来求解出外参矩阵,再利用这个外参矩阵进行分解得到R、T,得到两个相机的相对位姿之后,就可以得到对应三维点的坐标。

图1 深度估计

对于双目来讲,需要先对图像的平面进行一定的变换,因为如果是刚刚的方法,在做特征点匹配的时候,往往是一个二维匹配的问题,计算量是比较大。

因此对于双目相机需要变换为图2中红色的平面,将对极点拉到无限远之后,对应点的匹配则变成了一维搜索问题,即从左相机选择一个点,然后要在右相机去选择对应点的时候,只需要在同一行上进行搜索。

利用双目去做深度估计的好处在于通过相机标定可以得到固定的baseline,之后,进行一维搜索可以节省大量的计算量,得到稠密的视差图,从而对应得到稠密的深度图,最后得到稠密的三维点位。

图2 立体匹配

随着深度学习的发展,现在有很多网络是基于一些深度学习的网络去得到视差图,但现在深度学习的方法大多是基于数据驱动。数据驱动存在一个很大问题是有时并不知道ground-truth是多少。

当然现在是可以利用Lidar进行同步,之后把雷达点云投到双目相机上,然后利用深度进行反推视差。这种方案虽然可以得到真值,但它的真值受限于相机和激光雷达标定的精度。

基于此,探索了很多自监督方式,从而设计了PVStereo结构,如图3所示。

图3 PVStereo结构

可以看到是利用了不同层级的图像进行一个传统方法的匹配,当时假设是对应图像点的视差可靠,那不管是它对应的不同的pyramid都是可靠的,这跟深度学习的假设是一致的。然后,利用传统的pyramid voting可以得到一个相对比较准确,但比较稀疏一点的视差图。 

受到了KT数据集的启发,在想能够用一些稀疏的真值去训练出来一个比较好的网络,所以利用传统方法去猜测视差的真值,避免了利用真值去训练网络的过程。

基于循环神经网络的方法提出了OptStereo网络,如图4所示。首先构建多尺度成本量,然后采用循环单元迭代更新高分辨率的视差估计。这不仅可以避免从粗到细范式中的误差累积问题,而且由于其简单而高效,因此可以在准确性和效率之间实现很大的权衡。

实验结果相对来说还是比较鲁棒的,但是像一些场景会出现离群值。

图4 视差图生成

既然ground-truth比较难获得,一种方法是利用传统方法去猜一些真值来作为假的ground-truth,然后去训练网络;另外一种方式是基于无监督的方式进行训练。于是基于之前的工作,提出了CoT-Stereo,如图5所示。

利用两个不同的网络,一个network a和network b,这两个网络类似于去模拟了两个学生,且初始化不同,但网络结构完全相同。在初始化时, network a和network b掌握了不同的知识,然后a再把自己认为对的知识分享给b,b也同理分享给a。通过这样的方式不断的去进行互相的学习和进化。

图5 CoT-Stereo架构

无监督双目估计的结果也同许多方法进行了比较,虽然ground-truth结果无法与全监督的方法做媲美,但是该网络整体的influence time和对应的L平衡比较好,如图6所示。

图6 实验结果

如何利用深度或视差变成法向量信息?在做一些感知任务时,发现有的时候深度并不是一个非常好用的信息,而如果用RGB-D信息进行训练的时候,则存在另外的问题。那如果使用法向量信息,不管近还是远,最后给到的信息都是差不多,且法向量信息,对于很多任务是有一些额外的辅助。

调研发现并没有太多的工作或是几乎没有工作去研究如何把深度图或视差图快速的变成法向量信息,于是这里研究了此类工作,初衷在于能够在几乎不占用任何计算资源的情况下,进行深度到法向量的translation,大概框架如图7所示。

图7 Three-Filters-to-Normal框架

可以看到这是最基本的一个透视变换过程,即把一个3D坐标利用相机的内参,可以变成一个图像坐标。如果已知局部点满足平面特性方程,可以很惊奇的发现,如果把这两个方程联立,就可以得到Z分之一这样的公式表达。

通过一系列的计算后,可以看到1/V对u方向的偏导在图像处理领域很容易处理,1/V对应视差,但跟视差是差一个倍数,因此,若对1/V求偏导,就是对视差图进行卷积。所以,其实法向量估计的方法不需要像传统方法一样,将深度图转化为三维点云,再进行KNN,再进行局部平面拟合,这个过程非常复杂。但这个方法可以很简单的通过已知Z或是已知深度图或视差图转化得到法向量。

利用这个方法去做了一系列的相关实验,结果如图8所示。和当时最主流的方法进行了比较,发现本文方法在速度和精度的平衡非常好,虽然精度可能稍微差一些,但是已经超越了几乎大多数的方法,速度使用C++带单核CPU可以达到260Hz,如果是CUDA则可以达到21kHz,对应图像分辨率为640 乘480。

图8 实验结果

在得到上述信息后,要进行场景解析,目前比较主流的方法是语义分割,目标检测和实例分割。对于场景理解,尤其是语义分割及一些传统方法是基于RGB信息进行处理。

这里主要关注的是RGB-X,即如何对RGB加depth或normal进行特征提取。主要应用关注于可行有序检测,即开车时看到的可行区域,目前是提出了如图9所示的框架。

图9 网络结构

这里是利用双路结构分别进行特征提取,其中一路是从RGB信息去提取特征,另外一路是从deepth或者normals去提取特征,如果是depth则需要转化为normal。然后,可以把这两个不同信息的特征进行融合,最后得到一个更好的特征,既包含了RGB信息中的纹理特性,又包含deepth图像中的几何特性。最后,通过connection去得到更好的语义分割结果图。

针对上述的版本进行一些改进,如图10所示。由于网络的融合结构比较复杂,所以有进一步提升的空间,所以这里做了这样的工作:首先,利用深监督的方式在不同的通道添加一些约束,然后再去学习,这样可以解决梯度爆炸的问题。其次,由于之前网络收敛过快,这里设计了一套新的SNE+算法,效果比SNE要更好。

图10 改进网络结构

前面一直是基于特征层级的融合,这里也研究了一些数据层级的融合。如何通过多个视角和单ground-truth去提升性能,这里是提出了如图11所示的网络结构。

主要是基于平面的单应性,单应性是对应点可以通过四对点进行单应矩阵估计,并且若已知单应矩阵和left-right的图像,可以通过ground-truth变成另外一个图像的视角。可以看到这里对应给定一个 reference image,给定一个targetimage,然后通过对应点去估计出对应的homegra-marix,然后可以直接把target image变成generated image。

generateimage看起来跟对应的reference image很像,但存在一个问题是它只是在道路区域看起来很像,但其实在网络训练时两个图像会共用了一套ground-truth,因为在非路面区域存在一些偏差,所以最后让网络学出来,能够更好的识别路面。

图11 多视角分割网络

道路质量检测

地面移动机器人可以显著改善人们的舒适度和生活质量。在移动机器人的所有视觉环境感知任务中,可驾驶区域和道路的联合检测像素级的异常是一个关键问题。准确高效的可行驶区域和道路异常检测可以有助于避免此类车辆发生事故。然而,现有的基准测试大多是为自动驾驶汽车设计的,地面移动机器人缺乏基准,而道路状况会影响到驾驶的舒适性和安全性。

基于这些问题,研究如何去评估道路的质量,另外最早的时候是交通和土木的人在关注的事情,因为他们做道路评估,更多是为了去修补道路或是道路养护。最早期数据采集是用一些雷达车去进行,价格昂贵,随意在想能否用比较低成本的方式去做道路数据采集。

这里设计了一套实验设备和网络框架如图12所示,网络输入left frame和right frame,主要经过三个流程,第一个是 perspective transformation,第二个是SDM,最后一个是global finement。

图12 实验设备及网络

第一步是最有意思的一个创新,因为很直观的传统印象是:如果用双目进行三维重建,baseline越大,效果应该越好,精度越高。但存在一个问题是baseline越大的时候,盲区越大,并且这两个图像的视角差异会越大。进行相关研究发现,有时角度虽然大了,但从理论上来讲,会得到一个更好的三维几何模型,但导致匹配的效果可能会下降,所以,将左图变换成右图的样子,进而实现处理,从而在速度和精度方面实现更好的视差估计。

在驾驶场景的时候,经常会看到道路的视差是渐变的,但障碍物的差异保持不变。因此,在算法中首先估计如图13中最下面一行的差异,然后使用三个相邻像素从底部向顶部传播搜索范围,再进行迭代估计差异,最后视差图的可视化结果如图14所示。

图13 视差变化

图14 可视化结果

后面也基于一些网络去做图像分割,比如单模态网络或是一些数据融合的网络操作。如图15所示,基于图神经网络,设计了一些新的框架。这个框架并没有像图神经网络一样去设计一套新的图网络,而是结合图网络去进行一些公式推导,发现图网络对于一些语义分割的情况,并不需要复杂的一些情况,只需要修改参数和变量,就可以去进行一些操作。

 图15 网络框架

这个网络可以放入任何一个CNN架构去提升性能,简而言之,提取特征之后,对特征进行细化,之后把旧特征和新特征拼接在一起再重新输入进去。与当时几个主流的网络进行了验证,发现加入这个模块后都能够去提升分割的性能,如图16所示。

然后,也做了一些实验去验证它不光能够去应用这种特殊道路场景的识别的任务,而且能够去应用在广义的无人驾驶的语义分割或者室内的场景理解的语义分割的一些任务当中。

 图16 实验结果

总结

(1)由于不再需要标记的训练数据,卷积神经网络和传统计算机视觉算法的结合为无监督/自监督的场景理解提供了一种可行的解决方案

(2)数据融合方法提供了更好的场景理解准确性

(3)使用现代深度学习算法进行路况评估是需要更多关注的研究

(4)在资源有限的硬件上实现人工智能算法时,我们还需要考虑计算复杂性,因为今天讨论的应用程序通常需要实时性能

来源:深蓝学堂EDU

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

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

相关文章

【HarmonyOS】【JS】小白的鸿蒙学习之路2--小小的图片啊,动呀动起来

【关键字】 image组件、动画 【介绍】 今天和大家分享下,我在官网上学习的一篇Codelab。这篇帖子通过一个代码示例,实现image组件的平移、缩放、旋转和透明度变化效果。话不多说,我们一起学起来吧! 【成果展示】 【开发步骤】 …

FE_VUE路由 细致解读router/index.js的配置

1 安装vue-router插件 安装vue-router,命令:npm i vue-router 【npm i vue-router3】,在main.js 中引入路由文件: import router from ./router, 注意router 不要变且为小写;注册路由(因为main…

商场室内地图导航如何实现?商场室内导航地图怎么做?

商场室内地图导航如何实现?现在,消费者的消费观念和消费心理日趋成熟,对于购物商场的要求也愈加挑剔。电子地图作为大家最喜闻乐见的高效应用形式,能够在顾客购物的过程中带来非常大的帮助和体验,对于在大型的综合商场…

抖音电商的新增量在哪里?

“抖音电商涨不动了,才提出做货架”,“抖音做不好货架”……去年,抖音电商提出做“全域兴趣电商”,当时业内外有鼓励,也有不看好的声音。一年过去,5月16日,抖音电商总裁魏雯雯回应了质疑&#x…

Python可视化工具分享

今天和大家分享几个实用的纯python构建可视化界面服务,比如日常写了脚本但是不希望给别人代码,可以利用这些包快速构建好看的界面作为服务提供他人使用。有关于库的最新更新时间和当前star数量。 1、 streamlit (23.3k Updated 2 hours ago) Streamlit…

看完这篇文章你就彻底懂啦{保姆级讲解}-----(I.MX6U驱动GPT定时器中断实现高精度延时) 2023.5.19

目录 前言整体文件结构源码分析(保姆级讲解)初始化延时函数部分:微秒(us)级延时部分毫秒(ms)级延时部分主函数main部分 编译下载结束语 前言 在上一讲过程中我们使用了EPIT定时器来实现了定时器中断,从而解决了按键消抖的问题。但…

ChatGPT与深度学习的完美融合:打造智能化推荐系统新时代

PNN | AutoRec | 推荐算法 NFM | ChatGPT | 深度学习 新技术如ChatGPT、LLM、AIGC等的兴起,使推荐系统拥有更强的学习和预测能力。然而,推荐算法仍然是深度学习推荐系统中不可或缺的关键技术。推荐算法和这些技术应相辅相成,相互补充。推荐…

五大向量数据库入门横评

本文内容节选自 Paxi.ai 文章分享,Paxi.ai是一个基于GPT-4打造的帮助用户快速使用AI的AI工具,对内容感兴趣的朋友可以上他们官网查看。 从OpenAI发布GPT以来,AI尤其以LLM为代表的项目发展迅速,相信大家已经了解到大语言模型的魅力…

apk 作为资源提供 aar 的过程

1:参考:Android将APK项目封装为SDK(AAR) https://blog.csdn.net/weixin_51522235/article/details/128216091 四大点:1: apply plugin:com.android.library 2:去掉:applicationId 3:去掉:applicationVariants.all…

MySQL:触发器、权限管理

一、学习目标 了解什么是触发器掌握创建触发器的方法掌握查看触发器的方法掌握触发器的使用技巧掌握删除触发器的方法熟练掌握使用触发器的方法和技巧了解什么是权限表掌握权限表的用法掌握账户管理的方法掌握权限管理的方法掌握访问控制的方法熟练掌握新建用户的方法和技巧了…

小程序加weui或者TDesign安装

WeUI样式库展示:https://weui.io/ 微信官方WeUI相关文档:https://wechat-miniprogram.github.io/weui/docs/ WeUI-wxss 项目地址:https://github.com/Tencent/weui-wxss 安装 ,1.先安装node.js 2.建立或者打开已经有的项目。…

【SolVES 模型】生态系统服务功能社会价值评估(基于多源环境QGIS、PostgreSQL、ArcGIS、Maxent、R语言)

SolVES模型(Social Values for Ecosystem Services)全称为生态系统服务社会价值模型,是由美国地质勘探局和美国科罗拉多州立大学联合开发的一款地理信息系统应用程序,开发该模型的目的主要是对生态系统服务功能中的社会价值进行空…

敏捷与瀑布:哪种项目管理方法适合你的企业?

​良好的项目管理可以改变企业的工作流,在减少混乱因素的同时注入方向和组织性。 同时,"项目管理 "对每个人来说并不意味着完全相同的事情。在企业及其客户中,最重要的两种项目管理方法是敏捷和瀑布。而这两种风格之间的差异很大&…

Redis是单线程还是多线程?揭开性能之谜!

大家好,我是小米,在这个充满技术乐趣的小天地里,今天我们来探讨一个备受争议的话题——Redis是单线程还是多线程?这个问题一直困扰着Redis的用户,让我们一起揭开性能之谜吧! Redis作为一款高性能键值存储系…

交换机故障恢复

通常情况下,可以为交换机设置enable密码来提供安全,在没有enable密码的情况下,无法对交换机修改任何配置,因此,在忘记enable密码的时候,就意味着无法改动交换机信息。但是,如果能够物理上接触到…

实施办公自动化系统需要注意什么?

办公自动化系统的好处很容易理解。几乎每个企业都会欢迎更高的准确性、效率和利润率。办公自动化这个过程似乎势不可挡,那么该如何实现和管理呢? 决定自动化的内容 在实施办公自动化系统之前,企业将需要花时间研究哪些具体的流程需要自动化…

Go语言核心编程-基本数据类型篇

第 3 章 Golang 变量 3.1 为什么需要变量 3.1.1一个程序就是一个世界 3.1.2变量是程序的基本组成单位 不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位,比如一个示意图: func getVal(numl int, num2 int) (int, int) {sum : num1 n…

【数字敏捷性】上海道宁与​SolarWinds为您提供全面的可观察性、IT 服务管理和数据库管理

SolarWinds Platform是 业界先进的统一监控 可观察性和服务管理平台 它是新一代SolarWinds 可观察性解决方案的基础 并提供了我们如何 为客户解决可观察性挑战的架构 网络管理工具 从配置和流量智能到 性能监控和拓扑映射 可以轻松查看、理解和解决问题 一种集成的多…

【数据结构】--单链表力扣面试题②反转链表

目录 法一:直接反转法 法二:头插法 题述:给你单链表的头结点head,请你反转链表,并返回反转后的链表。 题目已知链表创建,并给了reverseList的函数头。 struct ListNode* reverseList(struct ListNode* he…

Maven属性与版本管理

文章目录 1 属性1.1 问题分析1.2 解决步骤步骤1:父工程中定义属性步骤2:修改依赖的version 2 配置文件加载属性步骤1:父工程定义属性步骤2:jdbc.properties文件中引用属性步骤3:设置maven过滤文件范围步骤4:测试是否生效 3 版本管理 在这一章节内容中,我们将学习两个…