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

单目视觉是Mobileye的看家法宝 , 其实当年它也考虑过双目 , 最终选择放弃 。
单目的测距和3-D估计靠什么?是检测目标的BoundingBox , 如果无法检测的障碍物 , 该系统就无法估计其距离和3-D姿态/朝向 。 没有深度学习的时候 , ME主要是基于BB , 摄像头标定得到的姿态和高度以及路面平直的假设估算距离 。
有了深度学习 , 可以根据3-D的groundtruth来训练NN模型 , 得到3D大小和姿态估计 , 距离是基于平行线原理得到的 。 不久前百度Apollo公布的单目L3解决方案讲的比较清楚了 , 参考论文是:
“3DBoundingBoxEstimationbyDeepLearningandGeometry".
双目当然可以算视差和深度了 , 即使没有检测出障碍物 , 也会报警 。 问题是 , 双目视觉系统估计视差没那么容易 , 立体匹配是计算机视觉典型的难题 , 基线宽得到远目标测距准 , 而基线短得到近目标测距结果好 , 这里是存在折衷的 。
目前市场上ADAS存在的双目视觉系统就是SubaruEyeSight , 据说性能还行 。
为什么双目自动驾驶系统难以普及技术详解+典型案例分析文章插图
百度推出的阿波龙L4摆渡车量产100台 , 就安装了双目系统 。 还有欧盟自主泊车项目V-Charge也采用了前向双目视觉系统 , 另外自动驾驶研发系统BertaBenz也是 , 而且和雷达系统后融合 , 其中双目匹配的障碍物检测算法Stixel很出名 。
以前Bosch和Conti这些Tier-1公司也研制过双目视觉解决方案 , 但没有在市场上产生影响力 , 据说被砍掉了 。
谈到双目系统的难点 , 除了立体匹配 , 还有标定 。 标定后的系统会出现“漂移”的 , 所以在线标定是必须具有的 。 单目也是一样 , 因为轮胎变形和车体颠簸都会影响摄像头外参数变化 , 必须在线做标定修正一些参数 , 比如仰角和偏角 。
双目在线标定就更复杂些 , 因为双目匹配尽量简化成1-D搜索 , 所以需要通过stereorectification将两个镜头光轴方向平行并和基线垂直 。 所以针对获得的gain相比 , 增加的复杂度和成本 , 如果不划算商家就会放弃 。
最近重提双目视觉 , 是因为硅谷芯片公司安霸在2014年收购意大利帕尔马大学的VisLab , 研制了双目的ADAS和自动驾驶芯片 , 去年CES之后就开始进军车企和Tier-1 。 而且 , 安霸目前正在继续研究提升该系统的性能 。
下图就是它在车顶安装6对立体视觉系统的示意图 , 其中它们的基线宽度可以不一样的 , 相应地有效检测距离也就不同 。 笔者曾坐过它的自动驾驶车 , 远处可以看到200米 , 近处20-30米 。 它确实可以做在线标定 , 随时调整一些双目视觉的参数 。
为什么双目自动驾驶系统难以普及技术详解+典型案例分析文章插图
立体匹配
先说立体匹配 , 即视差/深度估计 。 如图假设左右摄像头焦距f , 基线宽B , 3-D点X的深度z , 而其视差即可见视差能够反算深度值 。 但是这里最难的就是左右镜头看到的图像如何确定是同一个目标 , 即匹配问题 。
匹配方法分两种 , 全局法和局部法 , 双目匹配的四个步骤:

  • 匹配成本计算;
  • 成本聚集;
  • 视差计算/优化;
  • 视差修正 。
最著名的局部法就是SGM , 很多产品在用的方法都是基于此的改进 , 不少视觉芯片都采用这种算法 。
SGM就是把一个全局优化近似成多个局部优化的问题组合 , 如下公式是2-D匹配的优化目标函数 , SGM实现成为多个1-D优化路径之和
CensusTransform是将8/24比特的像素变成一个2进制序列 , 另外一个2值特征叫LBP和它相似 。 立体匹配算法就是基于这个变换将匹配变成一个Hamming距离的最小化搜索 。 Intel的RealSense当年就是收购了一个成立于1994年基于该技术的双目视觉创业公司 , 还收购另外几个小公司把他们合在一起做出来的 。
PatchMatch是一个加速图像模版匹配的算法 , 被用在光流计算和视差估计上 。 之前微软研究院曾经做过一个基于单目手机相机3-D重建的项目 , 仿造以前成功的基于RGB-D算法KinectFusion , 名字也类似MonoFusion , 其中深度图估计就是采用一个修正的PatchMatch方法 。
其基本思想就是对视差和平面参数随机初始化 , 然后通过邻域像素之间信息传播更新估计 。 PM算法分五个步骤:
1)空间传播:每个像素检查左边和上边邻居视差和平面参数 , 如果匹配成本变小就取代当前估计;
2)视角传播:其他视角的像素做变换 , 检查其对应图像的估计 , 如果变小就取代;
【为什么双目自动驾驶系统难以普及技术详解+典型案例分析】