3D(立体)视觉计算的目的是利用3D传感器所拍摄到的信息,来侦测物件或是识别应用场景。例如自驾车使用LiDAR精确掌握人、车、障碍物位置;机器手臂使用立体镜头侦测正确的抓取点、涂胶位置等。需要3D信号是因为多了立体空间信息,有机会超越单使用2D平面影像。所以各种崭新的应用包括AR(增实境)/VR(虚拟实境)、自驾车、 医疗、安全、机械制造、机器人(手臂)等都仰赖3D视觉计算的精进。
在过去,我们并未全然掌握如何计算这些3D数据,所以就沿用2D影像上的做法。比如图a,这是个利用网格表示的标准3D模型,为了计算方便,就将立体模型投影到多个2D视角上,利用2D影像的计算(例如卷积网络CNN)识别各个2D投影,接着汇集多个视角计算结果(通常是采用最大池化法max pooling)。这方法最具代表的就是MVCNN,可此法会受制于过多计算量(多视角影像)、视角取样等问题。
另一常用的做法是只利用深度图(depth map),即3D镜头拍摄时画面中各位置相对镜头的距离,可以表示物件位置的远近。因为是2D画面,可以沿用过去2D影像上的计算方式,甚至与RGB三个频道结合,成为RGBD四个频道来计算。但是未真正利用全部的立体空间信息,所以称为2.5D的算法。其他缺点在于深度值的估算本来就有误差,而且3D传感器因为软硬件的限制,深度图在某些环境材质、或是物件接缝处会有疏漏,影响正确率。
立体像素(voxel)则延伸2D的做法来使用3D信息。它使用3D的小区块(可以想像类似乐高积木)来表示3D物件(如图c)。因为有了这些规则的立体像素(可以与2D上的像素做比较),可以进行系统化的视觉计算。所以近几年可以看到卷积网络开始在voxel上大行其道。类似2D的做法,只是输入变为3D,增加一个维度,所以运算资源(存储器、特徵图、卷积核等)也得再加上一个维度,计算量庞大。为了平衡运算资源,一般使用低分辨率的voxel(颗粒较大)。另一个局限是无法全然克服实际物体旋转所造成的识别错误。
3D视觉计算的突破,来自于近来发现可以设计适合点云(point cloud)(如图b)的算法,直接在众多的点云中计算。每个点都有空间中3D位置信息、RGB颜色值,有些还有物体表面的反射量(如LiDAR点云中由金属反射回来的信号较强)。点云计算在过去是非常困难的,因为这些点云不像2D像素或是立体像素般规则排列,每个拍摄到的点云并没有特定的顺序。举例来说,每台车子上所侦测到的点云并没有特定的顺序,所以虽然保有丰富空间信息量,却不知如何有系统的计算。
2017年发表在电脑视觉顶会CVPR的PointNet算法开启了这个机会。他们发现透过使用「对称函数」,可以保有重要的「排列不变性」的特质,也就是解决同样物件中,侦测出的点云排列却不同的问题。深度学习中常使用的最大池化法刚好就是对称函数,因此开启深度学习技术使用在点云上的机会,可以更精细的利用3D中丰富的空间信息。接下来延伸的一系列点云算法,更大大提升点云运算效率、正确性等。
当然在实际解决问题时,我们会将RGB、voxel、点云等混搭使用,目的是为了发挥各个做法的优点或是善用更丰富的信息。我们将在接下来的各种立体视觉应用文章中继续解析这些前瞻算法以及可能的产业情境。
徐宏民(Winston Hsu)现任富智捷(MobileDrive)技术长暨副总经理以及台大信息工程学系教授。哥伦比亚大学电机博士,专精于机器学习、大规模影像视讯查找与识别。为讯连科技研发团队创始成员,慧景科技(thingnario)共同创始人,NVIDIA AI Lab计划主持人;曾任IBM华生研究中心客座研究员、美国微软研究院客座研究员。习惯从学术及产业界的角度检验技术发展的机会;十余年产学合作及新创经验。曾获2018 IBM Research Pat Goldberg Memorial Best Paper Award 、2018伪装人脸识别冠军、杰出信息人才奖、吴大猷先生纪念奖等国内外研究奖项。