资讯导读:三维重建的方式主要有两类,一是视觉方式、二是激光雷达。激光雷达的测量方式几乎与视觉方式形成了互补,它的优势在于测量精度高、测量距离远、稳定且对周围环境适应性强,所以激光雷达非常适合在室外场合使用。不过也存在无法感知无距离差异的平面内目标信息、体积较大、价格比较昂贵的缺点。 (图片来源于网络,下同) 一直以来,苹果都以其追求完美的文化和极度保密的风格著称。虽然外界一直努力捕风捉影,但苹果很少对外披露自动驾驶研发的进展或动态。 不过在今年11月,苹果发表了一篇名为VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection 的论文。 在这篇论文中,苹果将神经网络命名为 VoxelNet,苹果通过激光雷达点云训练它执行目标识别任务。论文表明:苹果正在打造一种自动驾驶新方法,通过一个名为“VoxelNet”的全新系统,帮助计算机更准确地识别三维物体。其通过激光雷达传感器读取数据,让自动驾驶汽车理解其他汽车、自行车和行人的精确地理位置。该项研究不仅表明了苹果的自动驾驶汽车研究的确属实,也显示了苹果正在与激光雷达相关公司进行合作。 通过激光雷达研究物体识别的并不只有苹果。 2016年,百度发表了一篇名为 Vehicle Detection from 3D Lidar Using Fully Convolutional Network 的论文。在更早的2015年,百度发表过一篇3D Fully Convolutional Network for Vehicle Detection in Point Cloud 的论文。此外,清华与百度还有一篇论文:Multi-View 3D Object Detection Network for Autonomous Driving。 2015年9月,卡梅隆大学机器人学院的Daniel Maturana 和Sebastian Scherer发表了VoxNet: A 3D Convolutional Neural Network for Real-Time Object Recognition 一文。 2017年10月德国弗赖堡大学机器视觉系发表了Orientation-boosted Voxel Nets for 3D Object Recognition。欧洲机器视觉权威瑞士苏黎世理工学院则有SEMANTIC3D.NET: A NEW LARGE-SCALE POINT CLOUD CLASSIFICATION BENCHMARK。 上述论文都是对激光雷达物体识别的研究。 激光雷达物体识别最大的优点是可以完全排除光线的干扰,无论白天还是黑夜,无论是树影斑驳的林荫道,还是光线急剧变化的隧道出口,都没有问题。其次,激光雷达可以轻易获得深度信息,而对摄像头系统来说这非常困难。再次,激光雷达的有效距离远在摄像头之上,更远的有效距离等于加大了安全冗余。最后,激光雷达也可以识别颜色和车道线。 实际上,激光雷达与摄像头没有本质区别,其最大区别除了激光雷达是主动发射激光,是主动传感器外,只是光电接收二极管不同,摄像头可以做到的,激光雷达都能够做到,只是目前激光雷达的点云密集度还不能和300万像素级摄像头比。 对与固态激光雷达来说,绝大部分固态激光雷达都是提供3D图像的,与其说是激光雷达,不如说是3D图像传感器更为合适。 在清华大学与百度的论文 Multi-View 3D Object Detection Network for Autonomous Driving(2016年11月)中,使用的便是摄像头和激光雷达数据融合做物体探测与识别。 但苹果认为这种做法没有提升,反而带来很多麻烦。因为摄像头需要时间同步和与激光雷达做联合空间标定,摄像头有效距离有限,性能与距离关联密切。两者在中远距离上难以融合,在近距离效果会略好。 与摄像头用像素(Pixel)这个词一样,激光雷达是3D的,因此有Voxel(体素)这个词。Pixel是二维电脑图像的最小单位,Voxel则是三维数据在三维空间分割上的最小单位,很早就应用于三维成像、医学影像(比如CT)等领域。 对物体识别是机器理解人类社会环境的基本能力,人类文明主要是用文字和语言承载的,这是一种完全社会化的概念,因此不得不采用人类的学习方式,也就是深度学习。 激光雷达可以用回波宽度或反射强度信息轻易识别某一类物体,如车道线,草地,建筑物,道路,树木,并且是物理识别,而不是摄像头那样的根据数学概率算法得出的识别,物理识别的准确度远高于概率推算。 但要具体识别,比如物理方式,激光雷达只能识别出行人,具体是成年人、老人、小孩还是婴儿就无能为力。再比如,路边的交通标识,激光雷达只能知道是一块金属牌或塑料牌,但是是牌子什么内容就不知道了,这时深度学习就可以派上用场。 深度学习通俗的理解就像人类训练动物,比如教狗与你握手(爪),狗做对了,就给一点食物奖励或者抚摸奖励,这就是一种强化学习的机制。假如狗没做对,就会挨批。这就像神经网络的训练过程,识别正确就增加这部分的权重值(食物奖励),识别错误就减少权重值(挨批)。 如此不断地强化,最终你一伸手,狗也伸手(爪)跟你握手。 *苹果Voxel Net架构 目标检测与识别领域早期为DPM,2013年11月,目标检测领域公认的大神Ross Girshick推出R-CNN,2015年4月进化为Fast R-CNN,2015年6月进化为Faster R-CNN,成为今日目标检测与识别领域公认最好的方法,也是可以完全端对端地实现。 激光雷达的目标检测与识别自然也是要用Faster R-CNN。Faster R-CNN 从2015年底至今已经有接近两年了,但依旧还是物体探测(Object Detection)领域的主流框架之一,虽然推出了后续 R-FCN,Mask R-CNN 等改进框架,但基本结构变化不大。同时不乏有SSD,YOLO等骨骼清奇的新作,但精度上依然以Faster R-CNN为最好。 从RCNN到fast RCNN,再到本文的faster RCNN,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个深度网络框架之内。所有计算没有重复,完全在GPU中完成,大大提高了运行速度。 faster RCNN可以简单地看做“区域生成网络+fast RCNN“的系统,用区域生成网络RPN(Region Proposal Networks)代替fast RCNN中的Selective Search方法。 不过RPN只能针对密集化的具备张量结构的数据,而激光雷达的云点是稀疏的,因此激光雷达深度学习识别物体的关键就是如何把点云数据转换成具备张量结构的密集的视频或图像数据。 苹果就提出了一种叫VFE(Voxel Feature Encoding)的方案(如上图)。 首先将点云数据转换为体素数据,基本上点云的三维数据就是体素的三维数据。根据体素所在的位置对点(点云)进行分组,把这些分组数据全部一层层堆叠起来,然后通过全卷积神经网络(FCN)形成有4(速度向量、X、Y、Z)张量的数据结构。 接下来看FCN,FCN将传统CNN中的全连接层转化成卷积层,对应CNN网络FCN把最后三层全连接层转换成为三层卷积层。 在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个不同类别的概率。 FCN将这3层表示为卷积层,卷积核的大小 (通道数,宽,高) 分别为 (4096,1,1)、(4096,1,1)、(1000,1,1)。看上去数字上并没有什么差别,但是卷积跟全连接是不一样的概念和计算过程,使用的是之前CNN已经训练好的权值和偏置,但是不一样的在于权值和偏置是有自己的范围,属于自己的一个卷积核。 因此FCN网络中所有的层都是卷积层,故称为全卷积网络。 经过多次卷积后,得到的图像越来越小,分辨率越来越低。其中图像到 H/32∗W/32 的时候图片是最小的一层时,所产生图叫做热图(heatmap),热图就是我们最重要的高维特征图。 得到高维特征的热图之后就是最重要的一步也是最后的一步对原图像进行采样(upsampling),把图像进行放大、放大、放大,到原图像的大小。这就可以看做是RPN。 *百度的云点转换FCN步骤图 *苹果的RPN架构图,可以看出与百度相差无几 最后不能免俗,苹果也得上KITTI上测试一番,也不忘打击百度。 其中22号方案是百度早期的方案,效果确一般。5号方案就是百度和清华合作的方案,BV代表鸟瞰图,FV代表前视图,RGB代表摄像头。HC-baseline的方案也是清华和百度联合提出的。在鸟瞰检测方面,苹果与百度几乎没太多差别,在3D检测方面,苹果领先不少。 而苹果使用的是一个1.7GHz的CPU和顶级显卡TitanX来运行上述算法,Voxel输入特征计算费时大约5毫秒,特征学习网络费时大约20毫秒,卷积中间层费时170毫秒,RPN网络费时30毫秒,合计225毫秒。 但苹果没有说这是一帧的推理(Inference)时间还是30帧的推理时间。如果是一帧的话,那就离实用还差很远,若是做到每帧25毫秒才算比较接近实用。