3视觉图怎么看
接下来具体说说
机器之心原创
作者:陈萍
不同于人类,计算机「看待」世界有自己的方式。为了达到类似人类的视觉水平,各种算法层出不穷,本篇就来窥探其冰山一角。
我们生活的世界是一个三维物理空间。直观而言,三维视觉系统有助于机器更好地感知和理解真实的三维场景。三维视觉作为计算机视觉的一个比较重要的研究方向,在过去几十年间得到了扎实和系统地发展,形成了一套完整的理论体系。近年来,随着三维成像技术如激光雷达、TOF 相机及结构光等的快速发展,三维视觉研究再次成为研究热点。
在上一篇文章中,我们对 3D 视觉基础相关内容进行了概括性总结,本文我们将进行比较深层次的介绍,主要涉及 3D 视觉算法及其应用领域。
3D 目标检测多模态融合算法
基于视觉的目标检测是环境感知系统的重要组成,也是计算机视觉、机器人研究等相关领域的研究热点。三维目标检测是在二维目标检测的基础上,增加目标尺寸、深度、姿态等信息的估计。相比于二维目标检测,三维目标检测在准确性、实时性等方面仍有较大的提升空间。
在目标检测领域,2D 目标检测方面发展迅速,出现了以 R-CNN、Fast RCNN、Mask RCNN 为代表的 two-stage 网络架构,以及以 YOLO、SSD 为代表的 one-stage 网络架构。然而由于 2D 图像缺乏深度、尺寸等物理世界参数信息,在实际应用中存在一定局限性,往往需要结合激光雷达、毫米波等传感器实现多模态融合算法,以增强系统的可靠性。
因此,研究者们提出了许多 3D 目标检测方法, 根据传感器的不同大致可分为视觉、激光点云以及多模态融合三大类 。其中视觉又包括单目视觉和双目视觉(深度视觉)两类;激光点云包括三维点云投影和三维空间体素特征;而多模态融合实现了激光点云与视觉的融合。下面将对现阶段比较流行的 3D 目标检测多模态融合算法研究进行介绍。
论文 1 《3D-CVF: Generating Joint Camera and LiDAR Features Using Cross-View Spatial Feature Fusion for 3D Object Detection》提出了 voxel-based 的多模态特征融合 。
论文地址:https://arxiv.org/pdf/2004.12636
该研究提出的网络整体结构如下所示。可以看出上下两层分别是对激光雷达点云信息的特征提取 (voxel-backbone) 和对多张图像信息的特征提取与模态转换。这里需要提及的是由于图像信息仅仅只有一个方向的视野,但是多个摄像头的图像存在视野重叠,所以多张图像的信息融合是为了保证整个环视点云场景的特征都被涉及到。
论文 2 《PI-RCNN: An Efficient Multi-sensor 3D Object Detector with Point-based Attentive Cont-conv Fusion Module》提出了 point-based 的多模态融合方法 。
论文地址:https://arxiv.org/pdf/1911.06084.pdf
该研究提出了一种新颖的融合方法——基于点的 Attentive Cont-conv Fusion(PACF)模块,该模块将多传感器特征直接融合在 3D 点上。除了连续卷积外,该研究还添加了 Point-Pooling 和 Attentive Aggregation 等组件,以使融合特征更具表达力。
此外,基于 PACF 模块,研究人员提出了一个叫做 Pointcloud-Image RCNN(PI-RCNN)的 3D 多传感器多任务网络,该网络负责图像分割和 3D 目标检测任务。PI-RCNN 使用分段子网从图像中提取全分辨率语义特征图,然后通过功能强大的 PACF 模块融合多传感器特征。受益于 PACF 模块的效果和分段模块的有表达力的语义特征,PI-RCNN 使 3D 目标检测的性能大大改善。在 KITTI 3D 检测基准测试中的实验揭示了 PACF 模块和 PI-RCNN 的有效性,并且该方法可以在 3D AP 的度量标准上达到最新水平。
网络框架如上图所示,实现过程可分为以下四步:
论文 3 《EPNet: Enhancing Point Features with Image Semantics for 3D Object Detection》提出了一种新的融合模块,在不需要任何图像注释的情况下,对具有语义特征的点特征进行逐点增强 。该研究设计了一个端到端的可学习框架 EPNet 来集成两个组件。在 KITTI 和 SUN-RGBD 数据集上进行的大量实验表明,EPNet 优于当前最优方法。其网络结构点云分支是 point encoder-decoder 结构,图像分支则是一个逐步 encoder 的网络,并且逐层做特征融合。
论文地址:https://arxiv.org/pdf/2007.08856.pdf
网络整体框架如下图所示:
点云特征和图像特征融合过程如下图所示:
融合过程由三部分组成:grid generator、image sampler 和 LI-Fusion layer。
论文 4 《CLOCs: Camera-LiDAR Object Candidates Fusion for 3D Object Detection》提出了一种新颖的 Camera-LiDAR 目标候选(CLOC)融合网络 。CLOC 融合提供了一种低复杂度的多模态融合架构,显著提高了单模态检测器的性能。CLOC 在非最大抑制 (NMS) 之前对任意 2D 和任意 3D 的组合输出候选项进行操作,并被训练利用它们的几何和语义一致性,以产生更准确的最终 3D 和 2D 检测结果,最后采用 maxpooling 的方式选择最终的融合结果。
论文地址:https://arxiv.org/pdf/2009.00784.pdf
网络架构图如下所示:
该网络由三个阶段完成:1)2D 和 3D 的目标检测器分别提出 proposal;2)将两种模态的 proposal 编码成稀疏张量;3)对于非空的元素采用二维卷积做对应的特征融合。
3D 人脸检测基本流程
人脸识别技术在**、军事安全、金融安全、共同安全等领域具有广泛的应用前景。人的大脑具备天生的人脸识别能力,可以轻易地分辨出不同的人。但是计算机自动识别人脸技术却面临着巨大的挑战。由于二维人脸识别不可避免地受到光照、姿态和表情的影响,这些因素已成为二维人脸识别技术向前发展的最大障碍。
随着结构光和立体视觉等三维成像技术的日益成熟,越来越多的人脸识别研究人员将目光投向了三维人脸识别技术领域。
目前 3D 人脸识别技术的主要技术流程如下:
目前 3D 人脸识别算法分为如下几个类别:
3D 数据集简介
目前 3D 公开数据少,远少于 2D 图片;3D 高精度数据集只能靠昂贵的设备采集,过程繁琐。这里我们来了解一下现有的 3D 数据集。
1. BU-3DFE (Binghamton University 3D Facial Expression) 数据集:该数据库目前包含 100 位受试者(女性 56%,男性 44%),年龄从 18 岁到 70 岁不等,包含各种种族,包括白人、黑人、东亚人、中东人等。
下载地址:http://www.cs.binghamton.edu/~lijun/Research/3DFE/3DFE_Analysis.html
2. KITTI 数据集:由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。该数据集用于评估 3D 目标检测和 3D 跟踪等计算机视觉技术在车载环境下的性能。
下载地址:http://www.cvlibs.net/datasets/kitti/raw_data.php
3. Cityscapes 数据集:这是一个较新的大规模数据集,它包含 50 个不同城市的街道场景中所记录的各种立体视频序列,除了一组较大的 20000 个弱注释帧外,还具有 5000 帧的高质量像素级注释。
下载地址:https://www.cityscapes-dataset.com/
4. Matterport 3D 重建数据集:该数据集包含 10800 个对齐的三维全景视图(RGB + 每个像素的深度),来自 90 个建筑规模场景的 194400 个 RGB + 深度图像。
下载地址:https://matterport.com/
5. 3D 人脸重建相关数据集:该数据集包含用 iPhone X 拍摄的 100 名受试者的 2054 张 2D 图像,以及每个受试者的单独 3D 头部扫描。
下载地址:https://ringnet.is.tue.mpg.de/challenge
6. TUM 数据集:主要包含多视图数据集、3D 物体的识别分割、场景识别、3D 模型匹配、vSALM 等各个方向的数据。
下载地址:https://vision.in.tum.de/
人脸数据库汇总官网指路:http://www.face-rec.org/databases/
面部 3D 重建
人脸重建是计算机视觉领域中一个比较热门的方向,3D 人脸相关应用也是近年来短视频领域的新玩法。不管是 Facebook 收购的 MSQRD,还是 Apple 研发的 Animoji,底层技术都与三维人脸重建有关。
面部 3D 重建,可以理解为从一张或多张 2D 图像中重建出人脸的 3D 模型。对于面部 3D 重建,我们先来直观地感受一下效果。
如下动图所示,最右边的重建人脸除了没有皱纹以外,身份特征和面部表情都和原图相当一致,阴影效果也高度还原。只是眼睛部分似乎不太对,显得浑浊无神。
论文《FML: Face Model Learning from Videos》效果展示
下图中的合成效果也很不错,表情动态很到位。只是可能实验者的眼神实在太有戏,AI 表示无力模仿。
论文《FML: Face Model Learning from Videos》效果展示
论文《3D Face Reconstruction from A Single Image Assisted by 2D Face Images in the Wild》效果展示
论文《Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network 》效果展示
直观感受完面部 3D 重建效果后,我们再来探究模型背后的算法。
传统 3D 人脸重建方法,大多立足于图像信息,如基于图像亮度、边缘信息、线性透视、颜色、相对高度、视差等一种或多种信息建模技术进行 3D 人脸重建。
三维变形模型(3DMM)
随着技术的发展,研究者们又提出了基于模型的 3D 人脸重建方法,这是目前较为流行的 3D 人脸重建方法。3D 模型主要用三角网格或点云来表示,现下流行的模型有通用人脸模型(CANDIDE-3)和三维变形模型(3DMM)及其变种模型,基于它们的 3D 人脸重建算法既有传统算法也有深度学习算法。
三维变形模型(3DMM)是一个通用的三维人脸模型,用固定的点数来表示人脸。其核心思想是人脸可以在三维空间中一一匹配,并且可以由其他许多幅人脸正交基加权线性相加而来。三维空间中的每一点 (x, y, z) 实际上都是由三维空间三个方向的基量 (1, 0, 0),(0, 1, 0),(0, 0, 1) 加权相加所得,只是权重分别为 x,y,z。
每一个三维人脸都可以在一个数据库中的所有人脸组成的基向量空间中进行表示,而求解任意三维人脸的模型,实际上等价于求解各个基向量的系数问题。每一张人脸可以表示为形状向量和纹理向量的线性叠加。
任意人脸模型均可以由数据集中的 m 个人脸模型进行加权组合,如下:
其中 Si、Ti 表示数据库中第 i 张人脸的形状向量和纹理向量。但是我们实际在构建模型的时候不能使用这里的 Si、Ti 作为基向量,因为它们之间并非正交相关,所以接下来需要使用 PCA 进行降维分解。
上式可以转换为下式:
其中靠前项是形状和纹理的平均值,而 si、ti 则是 Si、Ti 减去各自平均值后的协方差矩阵的特征向量,它们对应的特征值按照大小进行降序排列。
等式右边仍然是 m 项,但是累加项降了一维,减少了一项。si、ti 都是线性无关的,取其前几个分量可以对原始样本做很好地近似,因此能够大大减少需要估计的参数数目,并不损失准确率。
基于 3DMM 的方法都是在求解这几个系数,随后的很多模型在这个基础上添加了表情、光照等系数,但是原理与之类似。
参考链接:
https://zhuanlan.zhihu.com/p/101330861
https://my.oschina.net/u/4304462/blog/4557678
https://cloud.tencent.com/developer/article/1419949
https://blog.csdn.net/u011681952/article/details/82623328
https://huailiang.github.io/blog/2020/face/
https://yongqi.blog.csdn.net/article/details/107679240
目前深度学习已经在2D计算机视觉领域取得了非凡的成果,比如使用一张图像进行目标检测,语义分割,对视频当中的物体进行目标跟踪等任务都有非常不错的效果。传统的3D计算机视觉则是基于纯立体几何来实现的,而目前我们使用深度学习在3D计算机视觉当中也可以得到一些不错的效果,目前甚至有超越传统依靠立体几何识别准确率的趋势。因此咱们现在来介绍一下深度学习在3D计算机视觉当中的应用吧!本博文参考了前几天斯坦福大学最新出的 CS231n 课程(2020/8/11新出),新课增加了 3D计算机视觉 和 视频/动作分类 的lecture,同时丰富了 生成对抗网络(GAN) 的内容,但暂时国内还无人翻译,因此小编将其翻译整理成博文的形式供大家参考,如有错误之处,请大家见谅,同时欢迎大家讨论。
在3D计算机视觉当中,我们可以采用于训练的模型共有以上几种,分别是:
1.Depth Map(深度图)
2.Voxel Grid(翻译过来很奇怪,因此就保留原英语)
3.Implicit Surface(隐表面)
4.PointCloud(三维点云)
5.Mesh
那么什么是Depth Map(深度图)呢?咱们来看看
深度图的图像如下所示:
在左上角有一张关于斯坦福大学寝室的图片,我们可以将其**为右上角的深度图,其中深度图当中不同的颜色表示了不同物体距离摄像头的距离,距离摄像头的距离越大,则显示出来的颜色则越红。我们假设有一个神经网络,我们只需要输入一张图片,就可以得到图片当中的所有位置距离摄像头的距离,这样是不是很酷呢?那么我们如何使用神经网络对一系列的图片训练成为深度图的形式呢?一些研究人员便立马想到可以使用 全卷积神经网络(Fully convolutional Network) 来实现这个过程, 全卷积神经网络(Fully convolutional Network) 是我们之前在2D计算机视觉当中所采用的用于图像分割的神经网络,之前图像分割得到的是每一个像素点显示的是属于某一个物体类别的概率值,而现在我们把同样的神经网络用于深度图当中就可以得到图像当中某一个像素距离摄像头的远近大小。这样就可以完美得到咱们的深度图训练模型了,我们甚至可以把这个全卷积神经网络替换成 U-net 以期在一些特定数据集上得到更好的效果。模型如下所示:
这个模型首先也是输出一个3通道的彩色图片,经过一个全卷积神经网络(FCN)然后对深度图进行估计,输出的深度图仅仅具有两个维度,因为第三个维度为1,意味着我们输出的深度图实际上是黑白的,用黑色或者白色的深度来表示距离摄像头的距离,图像当中使用了彩色仅仅是因为看起来更加方便。同时这里的loss使用了L2距离进行损失函数的编写。
但是!!!!细心的同学肯定会发现其中有一定的问题,那就是同一个物体,拥有不同的大小,他们如果仅仅通过一张图片来判定他们离摄像头的距离是不一定准确的。因为图片当中并没有包含物体有关深度的信息。
比如我们有两只形状完全相同的鸟,但是其中一只鸟是另一只鸟大小的2倍,我们把小鸟放到离摄像头更近的位置,将大鸟放到离摄像头更远的位置,那么仅仅通过一张图片我们就会认为这两只鸟离我们的摄像头距离是一样大的!如下图所示:
那么这样我们又该如何解决呢?聪明的研究人员设计了一个具有尺寸不变特征的的loss function来解决了这个问题,这个loss function的写法如下:
至于这个公式为什么会让图片的深度信息得以保留,这里不再赘述,感兴趣的同学可以翻看一下提出这个loss的论文,在2016年的 世界顶级人工智能会议论文 NIPS上发表,于纽约大学(New York University)提出,论文的链接如下:https://papers.nips.cc/paper/5539-depth-map-prediction-from-a-single-image-using-a-multi-scale-deep-network.pdf
同时呢,在深度图当中还有一种图叫做 垂直表面法向量图 ,它的图像如下所示:
最后输出图像当中的不同颜色代表了这个物体的表面所朝空间当中的方向,比如绿色代表这个物体的表面是朝向右边的,而红色则代表这个物体的表面是朝向左边的。我们也可以使用 全卷积神经网络(Fully convolutional Network) 对这种输出的图像进行处理,其中的结构如下所示:
最后的Loss采用了(x*y)/(|x|*|y||)的方法,因为我们所预测的图像具备图像的方向和深度的信息,而图像的方向和大小正好可以由向量表示,岂不美哉?每一个训练集当中的图片的其中一个像素点都可以由一个向量来表示,同时具备深度(长度)和方向的信息。而原图当中某个像素点的大小可以表示为向量 x, 通过神经网络推测之后的同一个像素点则可以表示为向量 y, 因此我们可以使用公式(x*y)/(|x|*|y||)来衡量这两个向量之间的差距,其中(x*y)中的乘法使用了点乘,因此上下相除可得cos(theta)也就是图片当中某个像素点所具备的loss的大小,将整个图片当中所有像素点的大小加起来则可以得到整个图像当中loss的大小了。
如上图所示,我们可以将一张二维的图片转为一张三维的Voxel grid图,什么是Voxel grid图呢?Voxel grid图就是在一个三维的,大小为V*V*V的空间立体当中,由一系列1*1*1正方体网格堆砌出来的三维立体图形,Voxel grid图当中的每一个网格只具有两个值,1或者0,1表示这个地方有正方体,0表示这个地方没有正方体。一个Mesh图当中只保留物体的 形状和大小 信息,而不保留物体的颜色以及纹理的信息。
我们先来看一个有趣的问题,用什么方法可以对三维Voxel grid图进行分类呢?我们暂时不考虑将二维图像恢复到三维Voxel grid图的情况的话,常见的手段是使用立体 3D卷积 ,如下图所示:
3D立体卷积和我们的2D卷积有一点不同之处,那就是卷积核的神奇之处是它竟然是一个正 立方体 !而不是一个二维的平面!在上图当中,我们的输入是一个四通道的 1*30*30*30 的Voxel grid图,输入的图像可能是一个椅子,也可能是一个床。我们通过三维卷积,不断地进行卷积以及池化的操作,接着使用全连接神经网络将其展开,最后使用softmax函数将其继续拧分类。我们使用3D卷积能够对立体图像的特征进行更为有效的检测,因为一个立体的图像不仅仅有长和宽上面的信息,还有其有关深度的相关信息,因此需要采用3D卷积。3D卷积的动态图如下所示,这个例题动态图当中卷积核的大小为 3*3*3 :
再回到我们刚才的问题,如何将一个二维的图像**为Voxel grid图呢,我们可以采用的卷积神经网络如下所示:
首先我们将二维的图像首先送入到一个2D卷积神经网络当中,用于提取这个二维图像的特征,然后通过全连接神经网络或者Flatten层将其展平一个一维的向量,这样就可以更加方便地**reshape为四通道进行三维卷积的形式,前面我们已经说过三维卷积能够更好地抽象地还原和提取到图像在三维空间上的个特征,因此我们对刚才二维图像抽象出来的特征通过三维卷积进行还原,这是一个通过三维卷积进行 上采样 的过程。最后输出的结果就可以得到我们的Voxels grid图啦!
但是使用三维卷积常常就会用更为昂贵的代价来换取更为准确的结果,因为三维卷积使用的参数过多,如下图所示:
我们仅仅储存1024^3个Voxels grid网格就需要电脑4GB的显存,实在是太大了!好多电脑的显存还没有这么大呢!因此有些研究人员则直接使用二维卷积对图像进行三维的还原,当然效果肯定没这么好啦,如下图所示:
这个思想就很和我们的 自编码器(Auto-Encoders) 很像了。
我们还可以采用物体在三维空间当中的函数图像来表示一个立体物体,我们再用神经网络来重新拟合出这个函数就好啦,个人觉得在这种方法不太合理,如下所示:
采用3D点云应该是目前比较靠谱的方案,
在3D点云当中每一个点,都有三个参数,分别是每个点在x,y,z轴上的位置,对3D点云进行分类的话和对Mesh分类的方法差不多,也是经过一定的神经网络再经过softmax函数就可以得到最后的分类了!如下图所示:
这就是今天小编给大家分享的全部内容啦!
文章来源: 博客园 作者:Mike
原文链接: https://www.cnblogs.com/geeksongs/p/13498145.html
End
以上就是3视觉图怎么看?的详细内容,希望通过阅读小编的文章之后能够有所收获!