经过了多年来科技的发展,今天我们的机器几乎可以感知世界上所有空间,在这其中包括了对马里亚纳海沟的「探底」以及对人们胃肠道中幽门螺旋杆菌的「窥视」。科技发展带来了消费电子、生物医学、土木工程和航空航天等等行业的剧变。但纵观汽车行业,却好像跟年前还没发生太本质的变化。随着图像识别、AI神经网络、软件算法、光学、半导体以及通信技术的高速发展,我们欣喜地发现它们最终都指向了交通出行最美好的终局「AutonomousDriving」,也就是自动驾驶。在通向这么个美好终局的道路上,还是有着重重阻碍,那么阻碍到底是什么,方法又有哪些?这篇文章希望纯粹地从技术角度来完成一次对终局的探索。现在开始,全文大概5,字,如果可以,请坚持到最后。机器的视觉人之所以看世界是五彩斑斓的,是因为人看到的全是来自外界物体的反射光。白天的时候,我们眼睛接收到的其实是物体对于太阳光反射后,透过眼球,汇集在晶状体上,映射在视网膜上的「像素点」,然后再经过大脑「神经元细胞」提取出颜色分布、纹理特征、轮廓以及细节信息。最后大脑将分析出的图像信息与固有的抽象概念进行比对,从而做出判断以及选择。这也是我们偶尔会认错人的原因,这是因为我们看到的这个人的长相与脑子中的抽象概念很相像。在一点上,机器「模仿」了人类,摄像头采集道路图像信息,交由芯片运算处理,也就是说机器的「眼睛」以及「大脑」都有了,缺的就是「深度思考」能力了。因此人们赋予了机器「卷积神经网络」,也称CNN,原理跟人类思考模式相似。但不同的是机器并没有「视网膜」,因此「产生视觉」的方式跟人类有所差异。机器采用的方法是把图片变成「数字矩阵」,也就是把一张张图片从最底层的RGB开始识别,输出机器能够理解的数字0与1。在这之中不同的图像对应着不同的数字矩阵,也就是说图像识别的本质是基于数值矩阵的分类问题。然后会用到的是「卷积」,也就是类似人类神经元的功能,在同一物体的不同表现形式之间建立多层结构,找出相同的特征,以此来判断。在这其中会用到的是一个设定提取逻辑的「卷积核」。我们可以简单把图片理解成10X10的大方格,那么卷积核就是2X2的小方格,把小方格放入大方格中,那么这个小方格就获取了新的图,也就是「特征图」。为了方便大家理解,举个不恰当的例子。大家可以看下现在有三台车,卷积核设定的提取逻辑是具有「车灯」特征的数字矩阵,那么卷积核就会扫描提取有这个特征的图像区域。比如通过图像识别得出有6个车灯,加入逻辑算法告诉机器2个车灯等于1台车,那么机器就会输出图片上有3台车。那么需要说的是,单张图片可以设置多个「卷积核」,一般卷积会从图像的长、宽、深三个维度来提取图像特征,因此得到的图片通常是三维的。然后把提取到的特征图再「池化」和「激活」。所谓「池化」是夹在连续卷积层之间的,也就是把特征图中有用的信息放大,不必要的信息缩小,然后把输出数据加起来。这么做的目的是为了压缩数据和参数的量,在保留原图像特征的同时还减少了机器的计算量。如果再拿上面的图来举例,这个时候就是要把「宝马车灯」这个特征凸显出来,把与宝马车灯无关的背景信息去掉。而「激活」,则是在图像池化后通过「激活函数」图片特征用0-1之间的数值来更加清晰地展现,越接近1则代表特征越明显。然后再把图片多次卷积、池化、激活后,加入我们设定的算法逻辑,就又可以让机器通过「宝马车灯」的数字特征,在图中识别出哪台车是宝马了。综上所述,卷积神经网络主要是抓取图像特征,再通过不断地数据训练以及强化然后形成对物体的识别以及判断。这里补充说一下万像素高清摄像头的作用,其实跟人眼的原理类似,但有一定的区别。因为在图像识别是通过提取数字来判断特征,这里面有个「感知阈值」。简单来说高像素摄像头相比低像素摄像头,在捕捉远处物体输出的图像信息时,像素点更密,特征更加明显,这有助于更早识别到远处的物体。翻译成人话就是,假设识别一头牛的感知阈值是需要个像素点组成的特征,那么万像素的可能需要米的距离才能采集到足够的像素点。而万像素在米外就可以采集完成。因此高像素摄像头在算法以及训练程度相同的情况下,测距肯定会更远,当然在这个过程中是需要高算力来支持的,因为要从更多的像素点中提取所需的特征。而在辅助驾驶过程中,一旦摄像头已经识别到远处的障碍物,这个时候需要做的是保持「追踪」,而不是再一次去识别。「追踪」的过程其实又并不会消耗太多的算力,多出来的算力可以去检测其他远处障碍物。因此这也是高像素摄像头的必要性,不仅是前方摄像头,后方摄像头也同样重要。例如在不限速的高速公路上变个道,如果能够更远地识别到后车,可以更加充分地保证安全性。但可惜的是目前再强大的神经网络也不如人脑效率高,万像素也不如人眼3.24亿像素高。况且「硬件配置」更高的人类也会像上文提到的一样偶尔「认错人」,而且即便是在全神贯注地驾驶,也会发生一些意外交通事故。因此自动驾驶的多传感器融合方案,看起来走的更对。这不是简单的叠加那么除了摄像头,现在行业内比较主流采用的是传统毫米波雷达来满足测距功能,毫米波雷达具备体积小、质量轻、成本低、穿透能力强、传输效率高且稳定等优点,但其实缺点也是有的,例如缺失了高度信息。当然最近比较火的解决方案是4D毫米波雷达。据傲酷亚太区总裁郄建军介绍,他们的4D毫米波雷达通过运用软件算法在原来的物理天线基础上可以虚拟出5-10倍的天线。这样可以达到根天线的效果,在同为单芯片且FOV度时,角分辨率可以达到1度,实现高达米的探测距离。看起来似乎解决了识别高处障碍物的问题,但我认为其实对于车企来说,还是没有从根上解决问题。因为毫米波另一特点就是对金属物体敏感,这有好有坏。好处就是对于前后方车辆的检测非常稳定且准确。但缺点也是同样的,在正常的道路环境中,含有金属元素的物体除了车辆以外,还有电线杆、窨井盖、路边的防护栏等等。这意味着毫米波反馈回来的数据对于车企来说,虽然可移动的金属物体反射回来电磁波的信息是可靠可信的,但静止物体反射回来的电磁波其实他们很难给到一个较大的辅助驾驶决策权重。因为毫米波并不知道那到底是什么。为了避免频繁出现急刹的情况,原则是需要过滤掉这部分数据的。可是又因为马路上经常会出现一些真的有静止障碍物的场景,导致车企又不敢%过滤掉这部分数据。因此对于车企来说,即便上了4D毫米波雷达,由于毫米波的特性,我认为汽车厂商在实际过程中依然是个「来回调整」的纠结问题。再来说激光雷达。随着成本大幅降低,激光雷达开始逐渐变成车企的「宠儿」。激光雷达可以解决的问题是,脉冲带来的点云信息不仅可以弥补摄像头的长尾效应,还有就是脉冲测量与物体的绝对距离,对于芯片来说,运算量较低,可以说是「即插即用」。因此对于车企来说,他们是愿意在辅助驾驶中,给到有能力3D建模的激光雷达较大的决策比重。这是因为摄像头看不懂它没见过的,毫米波太敏感导致可用信息不确定,这两个传感器的特性注定了在极端场景下,激光雷达的数据相对更加可信。举个并不恰当的比喻。假设前方斑马线上有一只斑马,由于两者之间像素点有比较大的重合,而且摄像头也并没有大量地训练过斑马的图像,没识别出斑马。而此时毫米波对静止物体的回波又被算法过滤了,那么碰撞就是大概率的事情。激光雷达在这种场景下,虽然现阶段可能也并不能非常清楚地知道障碍物到底是什么,但可以检测到前方斑马线上有障碍物。因此车辆还是可以做出相应的减速或刹停决策,避免事故的发生。而且激光雷达是可以对物体进行分类识别的,因为发射与反射回来的脉冲信号是有区别的。因此在点云算法中加入卷积神经网络,激光雷达也可以实现对物体特征的判断以及识别的,现阶段能做到的是针对一些具备高反光的物体,例如雪糕筒、反光锥之类的,会比较容易。另外,脉冲带来的绝对距离信息,也解决了现阶段对于摄像头来说挑战比较大的景深问题。这里多说几句,特斯拉AI高级总监AndrejKarpathy提到过特斯拉是采用的是「BirdsEyeView」的方式。简单来说就是利用车身5个方向的摄像头采集2D画面测算出像素景深,由于5个摄像头位置采集到的画面有一定的时延,这时候再去做「时空同步」,模拟出一个3D环境,再计算与障碍物的相对距离,得到类似激光雷达的点云信息。从原理上看,这一套方式是可以行得通的,虽然做好不同车速状态下的各摄像头信息的「时空同步」以及对多个摄像头2D画面做3D建模,对算力以及算法都有了更高的要求。但我认为对于特斯拉来说,这只是他们「攀登珠穆朗玛峰」的一个过程而已。那是不是特斯拉一定不会用激光雷达,我认为未必。虽然从很长期来看,我认为视觉方案也有机会可以做成L4,原因主要有两点。一是摄像头受到极端天气的影响,这个很难从技术上解决。例如浓雾天气,以特斯拉如此「阳刚」的企业风格,他们肯定不希望在这种天气下通过限制使用ODD场景来规避。二是别忘了,我们现在L2辅助驾驶与L4自动驾驶最大的区别在于法律责任从人类转移到汽车厂商。据业内人士透露,哪怕就目前的技术水平nm激光雷达如果大批量采购的话,成本降到-美元也不是梦想。这里要思考的是如果要在短期内实现L4自动驾驶,-美元的成本与法律责任转到厂商后的风险成本,两者之间谁更低的问题,毕竟「降本」才是特斯拉的核心思想。当然我认为随着视觉方案进一步发展,会弱化当前激光雷达的地位,但很难取代。这里我比较赞成的是小鹏自动驾驶产品总监黄鑫说的,「激光雷达,从长期来看被高估,从短期来看被低估。个人看法,也许是错的。」最后我想说的是,如果大家都只是L2,法律责任还在于人类,特斯拉何必要上激光雷达。但现阶段从安全冗余的角度来说,我认为视觉方案需要付出成本是要比多传感器融合要高的。选择题多传感器融合,简单来说就是车辆采集多方面的信息后进行决策以及判断。但是因为多个传感器在采集信息的时间频率、空间以及速度信息上是有误差的,所以这里的融合算法就显得比较重要了。先说时间误差,这是因为传感器的「采样速率」不同导致的。激光雷达每秒出点数可达几十万甚至几百万个,而车用摄像头一般每秒是30帧画面左右,彼此之间存在着比较大的时间隔阂。就比如,上个0.01秒回传的50万个激光脉冲到底应该与哪一帧画面去对应起来呢?再说空间信息,由于摄像头、毫米波以及激光雷达摆放位置不同,感知区域也并不同。我们要形成一个机器能够理解的感知世界,就需要将摄像头采集到的目标物体要与毫米波采集到的信息在同一坐标体系中做融合。就比如,上个0.01秒回传的50万个激光脉冲到底应该与画面的哪个像素区域去对应起来呢?关于速度,由于毫米波直接根据多普勒效应是可以直接给出距离以及速度信息的,而摄像头也可以根据追踪到的特征像素区域变化幅度以及「卡尔玛滤波」获得距离以及速度信息,但彼此之间也存在着误差。很明显毫米波由于是电磁波测速会更及时,而摄像头在拍摄时速为公里的车辆时,假设是每秒30帧,每一帧的画面之间车辆实际上已经是移动了1米空间距离的。因此为了解决上述问题,首先我们要采用「融合算法」去做时空同步的事。但是做成「时空同步」后,新的问题又来了。除了上述摄像头以及毫米波的例子,其实每个传感器采集的信息都存在一定的误差,到底该信谁的呢?那么我们现在的做法是「后融合」也就是,让摄像头、毫米波以及激光雷达等传感器先进行信息采集,然后各自生成信息列表。这个时候再依据传感器不同的特性在不同的场景去分「权重」,然后再采用「卡尔曼滤波器」等方法来计算得出不同感知信息之间相对准确的预估值。提了两次「卡尔玛滤波法」,稍微解释一下这个原理。大概的意思就是会依据各传感器采集到的信息,依据比例权重去做一个「预估」。举个不恰当的比喻,假设同一台车,通过摄像头景深测算得知与前方障碍物有30米距离,然而毫米波传输回来的信息显示与前方障碍物实际只有26米。这时候套用「卡尔玛滤波法」。因为在测距方面,虽然毫米波对金属敏感,导致信息不可全信,但相比摄像头还是更加准确的,这时候这套「滤波」会给予毫米波雷达更多的权重,把摄像头的信息作为参考,套用公式得出预估与前方障碍物的距离为27.32米。其实「卡尔玛滤波法」有一个具体公式,但实在比较复杂,复杂到我怀疑可能有很大一部分算力都消耗在这个上面了。在这个过程中,本意是为了更好地将感知信息「确定化」,但会不可避免的出现回传的真实感知信息被卡尔玛滤波法「过滤」了,也就是现在阶段辅助驾驶很多决策数据,本质上是由机器是「预估」出来的。但行业其实几年前就已经有了传感器「前融合」的方法。只不过从技术门槛上来说是比后融合要更加高,就光是「要掌握所有传感器的原始数据」这一项,就让很多车企「望而却步」了。因为在「前融合」中,需要做的是让其他传感器也跟摄像头一样学会「深度学习」的能力,而且大家都采用同一套「算法」去做判断。简单来说就是我们人类无论是用视觉看到一台车,还是鼻子嗅到尾气味道,还是耳朵听到了车辆的排气声,在我们大脑子都会输出同一个信息「有车经过」,而不是要三者信息再融合一遍,在做去判断和选择。需要说明的是,前融合做的也是把「低水平」特征融合,并不是全部。重点是在于把摄像头、毫米波、激光雷达等传感器的原始数据用同一套算法都融合在一起后,那么对于承担处理信息的芯片处理器就好像变成了「天眼」一般的存在。由于「天眼」的存在,这时候机器对于外界的感知信息已经非常清楚了,那么在这个基础上再去做进一步的感知以及控制算法。如此一来,就能通过提升传感器输出信息的一致性、减少运算次数,从而达到提升感知系统效率以及准确性的目的。这样,机器也能获得更多的冗余算力,就算跟人类一样开车偶尔开个「小差」,但并不影响最终的安全性。写在最后如果你看到这里了,其实文章也已经略微超出5字。但我想说的其实并没有说完,在自动驾驶方面,还有关于芯片、控制冗余以及还是「期货」的相控激光雷达等等,其实还可以聊很多。进入年以来,最大的感触是被电动车行业不断推着向前狂奔,没有一刻停止过。每一天认知都在被行业所刷新,很多事情的发生也比预期的早了很多。如果你和我们一样