基于深度学习的三维图像识别技术研究
2023-12-04高瞻宇
高瞻宇
(华为技术有限公司 广东 深圳 518129)
0 引言
深度学习作为图像识别领域的一项重要技术,常被用于二维图像的特征识别和分类,而三维图像采集数据主要以点云格式为主,点云作为一种特殊的数据存储结构,具有无序性、旋转不变性、非结构化等特点,原有的深度学习框架很难直接应用于三维图像的特征识别,因此本文提出了一种基于PointNet 网络的深度学习模型架构,专用于三维图像点云数据的特征识别和分类,以有效改善三维图像的识别效果。
1 关键技术概述
1.1 点云
点云是描述三维对象空间结构和表面特征信息的一种数据格式,每一个点云都包含有三维坐标、颜色、漫反射强度等信息[2],用于标记三维对象任意点上的特征信息。点云数据的获取主要是通过三维扫描设备,三维扫描设备又分为接触式扫描设备与无接触式扫描设备,接触式扫描设备是将设备探头与对象表面进行接触,以采集对象表面的反射信号获得信息;无接触式设备是由设备探头周期性隔空发射激光光束,光束经过对象表面产生漫反射,设备通过采集这些漫反射信号记录对象的空间结构,具有采集速度快、精度高等特点。
通过上述设备获取的原始点云具有以下特点:
(1)无序性:点云是一个N×3 的矩阵,表示一个对象具有n个点云,每个点云都包含一个三维坐标信息,而这n个点云的排列顺序可以是任意的,无论如何排列,都不会改变其在三维空间投影中对对象形状的特征表示。
(2)旋转不变性:是指在三维空间坐标系中,对象发生旋转后,即使所有点云的三维坐标信息都发生了改变,都不会影响其对对象形状的几何性质的描述,例如形状大小、缩放比例等。
(3)非结构化:点云是一个非结构化的数据格式,包含三维坐标、颜色、反射强度等多种信息,是区别于二维图像的一个明显特征,因此也无法用二维图像的常规方法进行图像处理。
(4)分布不均、局部缺失:受限于外部环境、硬件设备性能等条件,原始点云大都存在分布不均、局部缺失等特点,特别是曲面复杂的对象更为明显。
(5)高冗余性:是指点云之间描述信息的重复性较高,存在大量冗余信息,在图像识别时还需要进行去重处理。
1.2 深度学习
深度学习来源于人工神经网络的研究,是通过构建多层神经网络,建立前向学习与反向传播的深层学习模型,多用于图像识别、音频处理、自然语言处理等领域[3]。 深度学习基于数据源的标识特征可以分为有监督学习与无监督学习两种,针对带有特征标识数据源所构建的学习模型,通过已知特征进行数据规律分析,以实现对未知数据的特征预测和分类,即为有监督学习[4];对未知特征数据集,通过潜在规律挖掘与分析,进行模糊分类和预测,为无监督学习。 其中卷积神经网络是深度学习最为典型的一种算法,可用于有监督学习,也可用于无监督学习,并被广泛地应用于二维图像识别和分类当中。 但针对三维图像处理,传统的卷积神经网络受到点云特征的影响很难满足相应需求,因此需要一个构建多层权重共享卷积神经网络,即PointNet 网络以实现三维图像的特征处理。
1.3 PointNet
PointNet 卷积神经网络是专用于处理三维图像点云的深度学习模型[5],解决问题的核心思路是通过多个神经网络层(multi-layer perceptron, MLP)的卷积,实现对点云特征的扩维。 再在此基础上进行最大值池化操作,特征提取和全局连接,最终获得一个1×1024 维的全局特征矩阵,作为图像识别和分类的依据。 PointNet 特点如下:
(1)权重的共享性:PointNet 允许在多个MLP 之间共享部分权重,以确保点云之间的关联特征不被损失,避免因特征分布不均导致的分析误差;
(2)可扩维性:通过MLP 多层卷积进行特征扩维,从而确保点云特征足够丰富,便于精确信息的提取和分析,尽可能弥补局部特征缺失导致的图像信息描述不准确。
(3) 最大池化对称性: PointNet 采用最大池化Maxpooling 方法进行特征提取,通过对称函数构建可以有效解决点云无序性对特征提取的干扰,即无论输入点云的排列顺序如何变换,最终输出的都是一个确定结果。
(4)数据对齐性:为了网络模型能够匹配点云的旋转不变特性,PointNet 增加了训练网模块(training net,TNet),该模块可以通过数据对齐操作解决点云旋转后刚体不变的问题,以确保同一对象在不同旋转角度下,网络模型都能得到相同的特征分析结果。
2 PointNet 网络架构
PointNet 网络架构主要包括MLP、T-Net 训练网、Maxpooling 池化和Softmax 分类器四个模块,如图1 所示:
MLP 模块通过一个三层卷积网络[6],对直接输入的原始点云进行扩维卷积,逐层将点云维度从原始的N×3维扩展至N×64、N×128、N×1024,PointNet 最多可将点云维度扩展至1024 维。 原始点云最初只包含了三维特征向量,即三维坐标信息,通过扩展可以获取更多的图像隐含信息以及各个点云之间的关联特征,为了确保这些关联特征不会丢失,各层MLP 之间需要共享部分权重。
为了避免点云旋转不变性对特征提取造成误差,在每层MLP 之间都增加了T-Net 训练网用于数据的对齐处理,通常需要两个T-Net,一个用于对原始点云进行对齐,一个用于对特征矩阵进行对齐。 T-Net 通过学习模型的训练,可以模拟三维对象在特定空间下的旋转不变性,因此将其训练结果作为点云和特征矩阵的对齐依据,能够有效提高PointNet 网络对点云旋转识别的鲁棒性。
Maxpooling 最大池化是解决点云无序性的有效策略,工作在卷积神经网络的池化层,池化层的主要作用是对升维后的特征进行降维提取,Maxpooling 是一个对称函数,在特征提取时确保了无序输入对最终输出结果的唯一性。
Softmax 分类器连接在卷积神经网络的输出端,用于将提取的特征值映射在(0,1)区间内,且所有输出值累加总和为1。 Softmax 分类器主要用于解决多分类问题,PointNet 网络经过Softmax 分类器,最终会输出一个具有K个类的分类分数。
3 PointNet 网络核心模块的功能设计与实现
3.1 MLP
MLP 是一个多层感知机模型,各层MLP 之间通过共享权重实现卷积关联[7],首先PointNet 网络将输入的原始点云看作是一个N×3 的单通道图片,即第一层卷积核的大小为1×3×1,对应一个点的三维坐标信息,然后通过定义卷积核数量就可以任意指定该层MLP 的通道输出数量,也就是将三维坐标信息作为三个输入神经元,通过第一层MLP 进行信息整合后传递到下一层MLP。 之后每个MLP 层的卷积核均为1*1*OpChannel,OpChannel 用于指定点云待转换的维度,每个输入的神经元都会对应一个1*1*OpChannel 的卷积核,以实现其维度的扩展,如此每个特征提取层都仅针对单个点建立特征连接,在经历64 维、128 维的特征空间映射后,最终可对每一个点提取到1024 维特征。
实现该模型的核心函数为tf_util. conv2d()[8],该函数的调用形式如下:
其中input_img 为输入图像的原始点云数据集;output_channels 用于指定当前MLP 层的卷积核数量,设置值为64;kernel_sizes 指定当前MLP 层的卷积核的高度、宽度与通道数量。 通过output_channels 与kernel_sizes 参数指定将要构建的卷积核高度为1、宽度为3、图像通道为1,卷积核数为64,因此卷积核的大小可表示为[1,3,1,64]。 pad用于设置特征矩阵的填充模式,设置值为VALID,表示有效填充,即不会用零填充;step 表示步长,值为[1,1]代表卷积核在垂直方向与水平方向每一次均移动一步;is_tra用于区分模型的操作类型,当值为True 时,表示为训练模型,值为False,表示为测试模型;bent_dec 用于设置模型训练时的衰减率,取值范围通常在(0.5,0.99)。
3.2 T-Net
T-Net 可以理解为是一个缩小版的微型PointNet 网络,它的结构与PointNet 相似,包括三层MLP,但在MLP卷积过程中要完成对旋转后点云、特征矩阵的规范化操作,并通过学习最终能够输出一个3*3 的旋转矩阵,依据该旋转矩阵即可对PointNet 网络中输入的数据进行对齐,从而保证了点云数据在特定空间的旋转不变性。 其工作流程如图2 所示:
图2 T-Net 的工作流程
T-Net 网络首先将待对齐图像的N×3 点云矩阵作为输入的原始特征矩阵,N 表示点云中的点数据的数量,3仍表示三维空间坐标(x,y,z)的值;其次通过三层MLP 的权重共享,依次将N 个点云数据的三维特征分别映射到64 维、128 维、1024 维空间,即N×1024。 由于升维后会存在大量的冗余特征,还需经过池化层降维提取,才能获取最终的全局特征,池化层主要采用了最大池化算法Maxpooling,Maxpooling 是一个对称函数,其数学表达式如式(1)所示:
其中xi表示点云,f(x)为映射函数,用于描述点云从低维空间到高维空间的映射,P(x)为对称函数,在输入点云的任意排序下,始终可以保持输出特征的一致性。 经过Maxpooling 最大池化后,即可获取点云的1024 个全局特征,而这一过程实质是特征的降维,Maxpooling 将扩维后的图像特征进行等大小的区域分割,通过在区域之间滑动,提取各个区域内权重占比最大特征值作为当前区域的唯一特征,从而实现特征的降维。 再通过全连接层实现全局特征的映射,提取到1024 个全局特征,1024 个全局特征经过降采样转换为9 个特征值,并最终输出一个3×3 的变换矩阵。
T-Net 网络模型在实际训练时,主要会用到两个函数:
(1)input_transform_net()函数,用于进行点云矩阵的对齐训练[9],其参数定义如下:
input_transform_net(point_cloud, is_training, bn_decay=None, K=3)
其中point_cloud 表示输入的点云矩阵,bn_decay 为学习率,该参数在初始化后会随着模型训练过程按照指数递增,K 表示卷积核的初始维度,该函数最终会返回一个K维的3×3 变换矩阵。
(2)feature_transform_net()函数,用于进行特征矩阵的对齐训练,其参数定义如下:
feature_transform_net(inputs, is_training, bn_decay =None, K=64)
该函数参数定义功能与input_transform_net()类似,输入特征矩阵作为模型训练的数据源,最终会返回一个K×K 维的变换矩阵。
4 结论
综上所述,本研究设计与实现了一个专用于三维图像识别的PointNet 网络模型,通过MLP 多层感知机模型,实现了点云特征的高维扩展,以确保图像特征提取精度,避免特征缺失造成图像局部细节的失真;通过T-Net 网络获取一个经过学习和训练的变换矩阵,用于规范旋转后的点云矩阵与特征矩阵,使其旋转变换后仍可提取到相同特征,解决了点云的旋转不变性问题;通过最大池化,对点云特征进行降维和特征提取,采用对称函数很好地解决了点云无序性问题。