为什么双目自动驾驶系统难以普及?技术详解+典型案例分析

2023-05-16

作者 | 黄浴 编辑 | 焉知汽车

链接地址:https://zhuanlan.zhihu.com/p/10990657

编辑:九章智驾

单目视觉是Mobileye(ME)的看家法宝,其实当年它也考虑过双目,最终选择放弃。

单目的测距和3-D估计靠什么?是检测目标的Bounding Box(BB),如果无法检测的障碍物,该系统就无法估计其距离和3-D姿态/朝向。没有深度学习的时候,ME主要是基于BB,摄像头标定得到的姿态和高度以及路面平直的假设估算距离。

有了深度学习,可以根据3-D的ground truth来训练NN模型,得到3D大小和姿态估计,距离是基于平行线原理(single view metrology)得到的。不久前百度Apollo公布的单目L3解决方案讲的比较清楚了,参考论文是“3D Bounding Box Estimation by Deep Learning and Geometry".

双目当然可以算视差和深度了,即使没有检测出障碍物(因为有附加的深度信息,检测器会比单目好),也会报警。问题是,双目视觉系统估计视差没那么容易,立体匹配是计算机视觉典型的难题,基线宽得到远目标测距准,而基线短得到近目标测距结果好,这里是存在折衷的。

目前市场上ADAS存在的双目视觉系统就是Subaru EyeSight,据说性能还行。

9b94e2e5b4edd4f5b083b2dcd1ac0f93.jpeg

百度推出的阿波龙L4摆渡车量产100台,就安装了双目系统。还有欧盟自主泊车项目V-Charge也采用了前向双目视觉系统,另外自动驾驶研发系统Berta Benz也是,而且和雷达系统后融合,其中双目匹配的障碍物检测算法Stixel很出名。以前Bosch和Conti这些Tier-1公司也研制过双目视觉解决方案,但没有在市场上产生影响力,据说被砍掉了。

谈到双目系统的难点,除了立体匹配,还有标定。标定后的系统会出现“漂移”的,所以在线标定是必须具有的。单目也是一样,因为轮胎变形和车体颠簸都会影响摄像头外参数变化,必须在线做标定修正一些参数,比如仰角(pitch angle)和偏角(yaw angle)。

双目在线标定就更复杂些,因为双目匹配尽量简化成1-D搜索,所以需要通过stereo rectification将两个镜头光轴方向平行并和基线垂直。所以针对获得的gain相比,增加的复杂度和成本,如果不划算商家就会放弃。

最近重提双目视觉,是因为硅谷芯片公司安霸(Ambarella)在2014年收购意大利帕尔马大学的Vis Lab,研制了双目的ADAS和自动驾驶芯片,去年CES之后就开始进军车企和Tier-1。而且,安霸目前正在继续研究提升该系统的性能。

下图就是它在车顶安装6对立体视觉系统的示意图,其中它们的基线宽度可以不一样的,相应地有效检测距离也就不同。笔者曾坐过它的自动驾驶车,远处可以看到200米,近处20-30米。它确实可以做在线标定,随时调整一些双目视觉的参数。

ddee3b12afc85067af2b97a7fe7f7367.jpeg

1.立体匹配

先说立体匹配,即视差/深度估计。如图假设左右摄像头焦距f,基线(两个光心连线)宽B,3-D点X的深度z,而其视差(投影到左右图像的2-D点,其坐标差)即

c5b2a8c370f830d859fd9f825f22a0ae.jpeg 522867d9a026b696de757ad6f89eb9be.jpeg

可见视差能够反算深度值。但是这里最难的就是左右镜头看到的图像如何确定是同一个目标,即匹配问题。

匹配方法分两种,全局法和局部法,双目匹配的四个步骤:

  1. 匹配成本(matching cost)计算;

  2. 成本聚集(aggregation);

  3. 视差(disparity)计算/优化;

  4. 视差修正(refinement)。

最著名的局部法就是SGM(semi-global matching),很多产品在用的方法都是基于此的改进,不少视觉芯片都采用这种算法。

SGM就是把一个全局优化近似成多个局部优化的问题组合,如下公式是2-D匹配的优化目标函数,SGM实现成为多个1-D优化路径之和

877418da88a69f59d9ca1809f456a40c.png

下图是沿着水平方向的路径优化函数

049dc6a17fe283098f58a3957f5dd7dd.png

Census Transform是将8/24比特的像素变成一个2进制序列,另外一个2值特征叫LBP(local binary pattern)和它相似。立体匹配算法就是基于这个变换将匹配变成一个Hamming距离的最小化搜索。Intel的RealSense当年就是收购了一个成立于1994年基于该技术的双目视觉创业公司,还收购另外几个小公司把他们合在一起做出来的。

下图是CS变换的示意图:

652edcfd49e046c49a6281a0a09bd372.jpeg

PatchMatch是一个加速图像模版匹配的算法,被用在光流计算和视差估计上。之前微软研究院曾经做过一个基于单目手机相机3-D重建的项目,仿造以前成功的基于RGB-D算法KinectFusion,名字也类似MonoFusion,其中深度图估计就是采用一个修正的PatchMatch方法。

其基本思想就是对视差和平面参数随机初始化,然后通过邻域像素之间信息传播更新估计。PM算法分五个步骤:

  • 1) 空间传播(Spatial propagation): 每个像素检查左边和上边邻居视差和平面参数,如果匹配成本变小就取代当前估计;

  • 2) 视角传播(View propagation): 其他视角的像素做变换,检查其对应图像的估计,如果变小就取代;

  • 3) 时域传播(Temporal propagation): 前后帧考虑对应像素的估计;

  • 4) 平面细化(Plane refinement): 随机产生样本,如果估计使匹配成本下降,更新。

  • 5) 后处理(Post-processing): 左右一致性和加权中值滤波器去除出格点(outliers)。

下图是PM的示意图:

92a443d63aef0af09dea04353d375225.jpeg

2.在线标定

再说在线标定。

这是一个利用路上标志线(斑马线)的标定方法:已知斑马线的平行线模式,检测斑马线并提取角点,计算斑马线模式和路面实现匹配的单映性变换(Homography)参数,得到标定参数。

08852f3693913bfcb8670131dac8fa37.jpeg

另外一个方法基于VO和SLAM,比较复杂,不过可以同时做基于地图的定位。采用SLAM做在线标定,不适合高频率操作,下图是其算法的流程图:1-4步, 通过立体视觉SLAM获取全局连续地图;第5步给出双目相机变换初始估计,第6步把所有立体相机的地图聚合成一个地图;7-8步获取多个相机之间的姿态。

8458984ac6b45e1ceb0ede1bb715fcfd.jpeg

和单目方法类似,采用车道线平行和路平面这个假设可以快速完成在线标定,即消失点(vanishing point)理论:假设一个平坦的道路模型,清晰的纵向车道线,没有其他目标的边缘和它们平行;要求驾驶车辆速度慢,车道线连续,左右相机的双目配置要左摄像头相对路面的仰角/斜角(yaw/roll angles)比较小;这样跟初始化的消失点(与线下标定相关)比较可以算出双目外参数的漂移量(图5-269),其算法就是从消失点估计摄像头仰角/斜角。

11ccbfebde99199775f1f0795395f3a6.jpeg

3.典型的双目自动驾驶系统

下面介绍几个典型的双目自动驾驶系统。

Berta Benz采用的障碍物检测算法Stixel基于以下假设:场景中的目标描述为列,重心的原因目标是站立在地面上,每个目标上的上部比下部的深度大。下图(a-d) 介绍了SGM视差结果如何生成Stixel分割结果:

9119c1881ffbd35661aa278996fedcc0.jpeg

下图是Stixels 计算的示意图:(a)基于动态规划的自由驾驶空间计算 (b) 高度分割中的属性值 (c) 成本图像 (灰度值反过来) (d) 高度分割。

7a2d33e55ad2aaf3fde45b3c7b294146.jpeg

这是他们加上深度学习做视差融合之后再做Stixel的框图和新结果:

f7d0dec480af101b5d8245a213deb574.jpeg c96efdd5276c1573a2ab6b7c51231d08.jpeg

介绍一个VisLab早期双目障碍物的算法,Generic Obstacle and Lane Detection system (GOLD)。基于IPM(Inverse Perspective Mapping),检测车道线,根据左右图像的差计算路上障碍物:

a3ed7a6a37350a400b17c473db94f867.jpeg

(a) Left. (b) Right (c) Remapped left. (d) Remapped right. (e) Thresholded and filtered difference between remapped views. (f) In light gray, the road area visible from both cameras.

2861074b5ede0b08914586d2eb6dc2db.jpeg

(a) Original. (b) Remapped. (c) Filtered. (d) Enhanced. (e) Binarized.

70c3c1820b0be1d951aed7df962e96c4.jpeg

GOLD system architecture

这是VisLab参加自动驾驶比赛VIAC (VisLab Intercontinental Autonomous Challenge)的车辆,除了双目摄像头以外,车上还有激光雷达作为道路分类的辅助。

24257a4025418cda5b782c606cb24c74.jpeg

这是其双目障碍物检测流程图:视差估计利用了SGM算法和基于SAD的相关算法。

c6aa4962ef2ace48fa1e8aac692cfa35.png

后处理中加了两个DSI(Disparity Space Image)空间的滤波器,见图5-274,一个是平滑处理,另一个是基于惯导(IMU)的运动轨迹处理。

22b306af24e761ab7ef80a07cecb0952.jpeg

障碍物检测算法采用了JPL的方法,基于空间布置特性以及车辆的物理特性聚类得到障碍物。物理特性包括最大的高度(车辆),最小高度(障碍物)和最大道路可通过范围,这些约束定义了一个空间截断锥(truncated cone), 如图所示,那么在聚类过程中凡是落在截断锥内的点划为障碍物。

91c90674c3865e68419e80824e91246a.jpeg

为加速视差估计算法,采用了划分DSI的方法:

ec0e11492bb0f66a045c50d4cd1ddb58.jpeg

另外一种经典的方法是根据路面方程(立体视觉)得到路面视差,基于此计算出路面的障碍物:

ebe397eda186dbff0c906d4880b65025.jpeg 0412d28d3599ec18dfb171cc4f7d1912.jpeg

4.总结

总的看,双目检测障碍物的方法基本基于视差图,基于路面视差的方法较多。也许随着深度学习发展的突飞猛进,加上计算平台的增强,双目自动驾驶系统也会普及起来。

添加小助理微信:dddvisiona,点击进入「立体视觉」交流群。

c78908e4acb35443318cb5842dbe9085.png

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

为什么双目自动驾驶系统难以普及?技术详解+典型案例分析 的相关文章

  • 使用SSH公钥(id_dsa.pub)实现免密码登录

    使用SSH公钥 id dsa pub 实现免密码登录 博客分类 xff1a linux shell ssh 免密码 公钥 首先 xff0c 在本地机器上产生公钥 xff1a Java代码 root 64 localhost ssh ssh
  • 6.1、startx命令怎么不能进入图形界面

    命令行界面输入startx命令怎么不能进入图形界面 复制链接 发表于 2010 1 29 12 55 来自 51CTO网页 只看他 楼主 我在虚拟机 xff08 vmware xff09 上新安装的red hat linux 9 0在命令行
  • 7.1、mysql mha 主从自动切换 高可用

    是这个博主写的 xff0c 但是找不到地址了 写了他的另一个MHA地址 感谢原创的贡献 mysql mha 主从自动切换 高可用 mha xff08 Master High Availability xff09 目前在MySQL多服务器 x
  • 7.3、mysql主主循环备份数据库

    绿色部分是我根据需要自己写的 mysql 主主互备 双机热备的概念简单说一下 xff0c 就是要保持两个数据库的状态自动同步 对任何一个数据库的操作都自动应用到另外一个数据库 xff0c 始终保持两个数据库数据一致 这样做的好处多 1 可以
  • 7.4、Slave_SQL_Running: No mysql同步故障解决方法

    Slave SQL Running No mysql同步故障解决方法 2010 02 21 16 31 30 标签 xff1a mysql 数据库 同步 双机 休闲 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文
  • 7.5、mysql破解密码

    找不到原创了 xff0c 百度了一下 xff0c 这个比较像 感谢原创的贡献 vi etc my cnf 在配置文件中加入 s kip grant tables mysqld safe skip grant tables amp 最佳答案
  • Scrum实践系列之三--敏捷教练的修炼之路

    敏捷教练与项目经理 在被奉为 项目管理圣经 的PMBOK中 xff0c 对项目经理在各阶段的职责有着清晰的界定 xff0c 比如项目经理制定规则 安排进度 监控执行中的各项风险并实时汇报状态 xff0c 等等 然而在敏捷的世界里 xff0c
  • 知识图谱_概述:课程PPT+个人理解

    2019 05 08 一 概念 xff08 是什么 xff09 1 知识 xff1a 有不同的解释 xff0c 可以是 不变的真理 经验 背景 解释 交工的信息 xff08 1 xff09 分类 陈述性知识 gt 描述客观事物的性状和关系等
  • chatgpt

    transformer GitHub Topics GitHub
  • Apollo:source cyber/setup.bash的作用

    source cyber setup bash 是在使用Apollo开发过程中 xff0c 用于加载Apollo软件的配置以及环境变量的脚本 Apollo是一款自动驾驶开发平台 xff0c cyber是其中的一个核心模块 xff0c 提供了
  • 什么样的人当不好程序员?

    什么样的人当不好程序员 xff1f 2016 01 21 程序员之家 来源 xff1a 36Kr 译文 xff1a http 36kr com p 5042433 html 原文 xff1a https goo gl jLfUFq 软件蚕食
  • java基础语法(顺便回顾cpp语法并比较与java的异同)

    变量 标识符 关键字与数据类型 1 标识符命名风格约定 xff1a 不能以数字开头 xff0c 也不能有 等符号 可以有 和 但不用作开头 方法名 变量名首单词小写 xff0c 其余单词首字母大写 如anyVariableName 类名 接
  • 刷leetcode,锻炼编程能力(c++)

    力扣20 xff0c 有效的括号 xff0c 栈 span class token macro property span class token directive keyword include span span class toke
  • 华为笔试题库之困难--难度

    题记 xff1a 若立志投身算法研究 xff0c 可精研理论算法 xff1a 动态规划 递归 深度搜索等 xff1b 若以解决问题为目的 xff0c 主要为了工作内容 xff0c 当尝试快而简单的方法 xff0c 这该是学习的本意 1 素数
  • C++ - opencv应用实例之矩形框检测

    C opencv应用实例之矩形框检测 现阶段下 目标检测在实际应用场景中的表现颇为重要 工业质检 移动机器人视觉伺服 作业 交通监控 安防领域等均需要通过目标检测来实现对目标的定位 测量或者统计 辅助控制等 目前目标检测主要分为两个方向的发
  • cpp-5 : Depends: gcc-5-base (= 5.3.1-14ubuntu2) but 5.4.0-6ubuntu1~16.04.11 is to be installed

    在5 4 0 6ubuntu1 16 04 11 cpp 5 amd64 Xenial 16 04 Ubuntu上下载对应的版本 xff0c 国 内源的版本都是5 4 0 6ubuntu1 16 04 12 xff0c 最后一位是12 xf
  • Questasim SystemC 指令sccom

    QuestaSim sccom 10 6c 1 compiler 2017 09 Sep 15 2017 Usage sccom options CPP compiler options lt CPP files gt General Op
  • MacOS 安装curl和wget

    目录 1 什么是curl和wget1 1 curl1 2 wget1 3 curl和wget的区别 2 安装curl2 1 利用wget安装curl2 2 直接下载curl源码编译安装 推荐 3 安装wget3 1 利用Homebrew安装
  • linux tty core 源码分析__tty_read,__tty_write,__tty_poll,

    转载 xff1a http blog csdn net sirzjp article details 6134489 前面分析了open操作 xff0c 现在分析读操作tty read tty read直接调用线路规程中的读操作从tty g
  • D触发器二分频电路

    D触发器二分频电路 有时真的要感慨一下自己电路学的够烂的 xff0c 啥都不会 xff0c 做示波器要学习分频电路 xff0c 学呗 将D触发器的Q非端接到数据输入端D即可实现二分频 xff0c 说白了就是CLK时钟信号的一个周期Q端电平反

随机推荐

  • 自动驾驶系列(十)编写电动车ROS节点(刹车)

    一 硬件控制协议 对于不同的设备 xff0c 底层的通讯方式都不一致 xff0c 因此需要根据具体硬件具体分析 本系统 采用了1个CAN盒子控制转向 xff0c 1路DA控制油门 xff0c 另外一路DA控制刹车 1 xff0c 转向协议
  • 【Mapreduce】利用单表关联在父子关系中求解爷孙关系

    首先是有如下数据 xff0c 设定左边是右边的儿子 xff0c 右边是左边的父母 Tom Lucy Tom Jack Jone Lucy Jone Jack Lucy Mary Lucy Ben Jack Alice Jack Jesse
  • 【C++】Split

    如果要将类似 aa ss ff 的字符串按空格分割成一个个字符 xff0c Java C PHP或者python等其它语言写多的人 xff0c 就会认为split一个理应存在的方法 xff0c 实际上C 43 43 中并没有这个方法 xff
  • TX2模组镜像备份与刷机

    1 环境搭建 1 1 下载驱动包和根文件系统 进入https developer nvidia com embedded linux tegra r3251下载两个文件 xff0c L4T Driver Package BSP 和Sampl
  • STM32——Keil5的编译警告和错误订正

    这是第一次写博客 xff0c 这里都是我在修改stm32代码遇到的一些警告和错误的改正 xff0c 其中有很多解决方法都是在网上找的 xff0c 也有一些还没解决的 xff0c 望指点 513 D HARDWARE 1U src Uart
  • stm32堆栈的认知

    flash和SRAM的区别 flash可以像硬盘一样存数据 xff0c 也可以直接像RAM运行 xff0c 一般在里面放bootload xff0c 程序执行代码 1 stm32中的堆栈 单片机是一种集成电路芯片 xff0c 集成cpu r
  • Liunx使用apt安装本地deb软件包

    平常都是用 dpkg i 来安装本地deb软件包 但是 dpkg 不会自动安装依赖包 xff0c 因此安装很容易出现依赖相关的错误 之后需要通过运行 sudo apt get install f 来安装依赖 可以直接通过 apt apt g
  • NeRFLiX,NeRF新高度!

    作者丨小张Tt 来源丨计算机视觉工坊 论文题目 xff1a NeRFLiX High Quality Neural View Synthesis by Learning a Degradation Driven Inter viewpoin
  • 研究生,真的“太多”了?

    来源丨软科 2023年毕业季已经临近 xff0c 据人力资源和社会保障部的数据显示 xff0c 今年我国高校毕业生人数将达到1158万 xff0c 继去年之后 xff0c 国内高校毕业生数量再次破千万 在毕业生人数创新高的同时 xff0c
  • 迟来的2023秋招总结

    作者丨藤和艾莉欧 64 知乎 来源丨https zhuanlan zhihu com p 622571550 编辑丨3D视觉工坊 点击进入 gt 3D视觉工坊学习交流群 首先 现在是2023年四月中旬 xff0c 毕业的事情暂时告一段落 x
  • 6位数字密码滚动破解

    gt File Name password c gt Author sea gt Mail 623535724 64 qq com gt Created Time 2017年07月20日 星期四 16时00分14秒 include lt s
  • 最新|事件相机SLAM综述

    Arxiv链接 https arxiv org abs 2304 09793 Github 链接 https github com kun150kun ESLAM survey 视觉SLAM vSLAM 是指移动机器人通过相机感知外部世界并
  • 还在为投稿发愁吗?ICCVIT 2023,一个计算机、视觉与智能技术国际会议

    ChatGPT热潮带来的行业革新大行其道 xff0c 相关区块链 信息安全 视觉 机器学习 产业必将带来诸多变革 本文为大家梳理了近期可投的4则EI检索的国际会议 xff0c 均可推荐发表SCI xff0c 还有超多IEEE Fellow主
  • ikd树:激光雷达SLAM中高效的点云数据结构

    点击上方 3D视觉工坊 选择 星标 干货第一时间送达 作者丨小飞飞 来源丨计算机视觉工坊 作者机构 HKU 项目主页 https github com hku mars ikd Tree git k d树是一种常用的多维数据结构 它可以用于
  • 招聘|三维点云算法总监

  • 杂谈光场相机的不足、优势、应用和展望(中)

    来源丨光场视觉 文章的上篇 xff0c 主要是简单回顾了光场相机的起源历史 极大地推动了它发展的Lytro公司的发展轨迹 xff0c 并简要分析了这个相机在To C端市场表现疲软的三大技术性原因 也正如前文指出的那样 xff0c 光场相机因
  • 企业招聘SLAM工程师,今年普遍要求这2种特质

    VIO即视觉惯性里程计 xff0c 是融合相机和IMU数据实现SLAM的算法 VIO不仅能够弥补纯视觉SLAM本身无法克服的缺陷 xff0c 例如尺度问题 累计误差等缺陷 xff0c 是一种低成本 高性能的导航方案 目前 xff0c VIO
  • 颜宁首谈回国科研工作是否受影响:时间被挤压得厉害,但....

    本文来源 xff1a 南都记者 韦娟明 每日经济新闻 xff0c 编辑 xff1a 募格学术 据南都记者报道 xff0c 5月5日 xff0c 深圳医学科学院 xff08 筹 xff09 创始院长 深圳湾实验室主任颜宁 xff0c 发文谈现
  • 如何实现面向三维点云的信息丰富的旋转不变特征

    论文题目 xff1a SpinNet Learning a General Surface Descriptor for 3D Point Cloud Registration 作者 xff1a Sheng Ao Qingyong Hu B
  • 为什么双目自动驾驶系统难以普及?技术详解+典型案例分析

    作者 黄浴 编辑 焉知汽车 链接地址 xff1a https zhuanlan zhihu com p 10990657 编辑 xff1a 九章智驾 单目视觉是Mobileye xff08 ME xff09 的看家法宝 xff0c 其实当年