何瑞函 ,蔡 勇 ,张建生
(1.西南科技大学 制造科学与工程学院,四川 绵阳 621010;2.制造过程测试技术省部共建教育部重点实验室,四川 绵阳 621010)
随着激光扫描技术的发展,点云作为最能表现物体三维特征的数据深受研究者热爱。深度学习、卷积神经网络(Convolutional Neural Network,CNN)[1-2]近几年引领计算机视觉领域的研究趋势,并且CNN 网络在二维图像分类与识别上显得高效。点云在空间中的无序性、旋转不变性、非结构化数据,导致其不能直接作为CNN 网络的输入[3]。因此,使用深度学习对点云进行研究的方法有3 种:多视图[4]、体素法[5]、直接对点云[6-7]。
基于二维多视角3D 识别的方法,本文通过优化采集数据集的方式提升CNN 神经网络[8]的分类效果。本文对点云模型进行不同视角投影,得到多组2D 图像数据集。首先用多个VGG16 卷积模型[9-10]提取单独视角数据集,得到多个映射了图像特征的卷积神经网络模型;然后将多个包含特征的VGG16 模块加上自定义层后“并联”连接分类层作为分析网络模型,混合视角图像数据集作为网络输入;最后通过分析多个特征提取模块的权重,优化多视角图像的采集密度,提升二维多视角3D 识别效率,即分类效果。
文献[4]提出的多视角卷积神经网络(Multi-View CNN,MVCNN)将物体的三维数据通过多视角的“观察”得到二维图像,再将二维图像作为输入数据带入传统的二维图像卷积网络中进行训练。相比于一些直接用三维数据训练,所用的二维图像卷积网络非常成熟,其训练效果还能超过大量三维数据训练的结果。文献[5]的体素法的核心是基于三维数据的“立体栅格化”,将点云数据表示为30×30×30 大小的“立体栅格”,通过将空间中的点云划分为体素,用体素来表示三维物体,然后再对空间中的体素进行三维卷积。其卷积类似二维图像深度学习的卷积神经网络,所以计算在空间和时间上都很复杂。文献[6]直接将三维点云放入网络进行训练,基本思想是对输入点云每个点的空间编码进行学习。
多视图方法最大化利用了CNN 的优点,文献[4]中提出MVCNN 模型最有代表性。作者指出使用二维图像表示三维数据会丢失三维特征,为了减少特征的丢失,用多张不同角度的二维图像来代替三维模型。尽管将三维模型转为二维图像的这种方式很巧妙,但也存在未知因素,例如:是否某种视角的图像最重要,或者是否有某种图像包含了主要的特征信息。在文献[4]中,作者尚未阐述这些问题,因此本文将针对此问题进行分析。
观察三维物体有几种典型的视角,即从正上方俯视、斜上方俯视和侧面侧视,本文通过使用Blender 软件在空间中设置虚拟相机对ModelNet10 数据集的点云模型(.off)依次进行“拍照”提取2D 图像,相机工作时指向3D网格数据的中心。
ModelNet10 为标记朝向的ModelNet[11]数据集子集,共10 类,训练集共有3 991 个点云文件,测试集908 个点云文件,本文数据集对ModelNet10 所有点云文件进行采集。
如图1 所示,每个虚拟相机分别以α=0°,45°,90°不同角度绕Z 轴每隔36°生成一个2D 视角渲染图,每一个视角三维模型获得10 个图像,一共得到3 个子数据集Data_0、Data_45、Data_90。子数据集用单独 视角的10 张二维图像表示一个点云。3 个子数据集微调3 个VGG16 卷积神经网络,分别储存不同α 角度投影图像的特征信息。将3 个子数据集打包为混合数据集(Data_mix),作为调试模型的数据集,用共计30(即3×10)张二维图像表示一个点云模型。
图1 数据集采集
通过对Blender 软件生成2D 图像多次对比,最终在软件渲染中选择快照材质光照,颜色为纹理,像素为300×300。用“resize_image_with_crop_or_pad”对数据集预处理,将图片裁剪为224×224 的图像。
本文研究目的为,通过改变30 张二维图像在3 个不同视角中的采集密度,提高神经网络对点云的分类准确率。
以文献[9]中VGG16 模型作为基础网络模型,包含13个卷积层、3 个全连接层,一共16(即13+3)层。在本文中使用到的包含13 个卷积层、5 个池化层和ReLU 激活函数。
通过卷积层、池化层和激活函数等操作,将原始数据集的特征信息映射到隐含层,再通过全连接层将隐含层的特征信息映射到样本标记空间进行分类[12]。本文用Imagenet 数据集权重作为VGG16 的预训练参数,再使用采集的数据集微调,最后用Sotfmax 回归算法与交叉熵代价函数配合调节网络中的权重等参数[13]。
以VGG16 特征提取网络为基础,提取图像特征信息,将特征信息保存在VGG16 的卷积层中。模型结构如图2(a)所示,采集的3D 模型子数据集输入到隐含层VGG16(除全连接层),图中的全连接层为分类空间,最后两层施加权重正则化防止网络过拟合。使用单视角投影数据集对VGG16_α 模型进行微调,将单组视角2D 图像的特征映射到VGG16_α 的卷积层空间,3D 模型子数据集图像的特征信息储存在该卷积层空间,本文称之为特征匹配模块。
图2(b)中用混合角度数据集(Data_mix)作为特征分析模型(VGG16_dbg)的输入;隐含层为特征匹配与调试空间,由3 个VGG16 卷积空间加上自定义层通过并联的方式组成。3 个特征匹配模块(VGG16_α)的权重等参数,通过迁移学习[14]的方式载入特征分析模型(VGG16_dbg)中。
自定义层(如图2(c)所示)对每个特征匹配模块的输出上施以权重,在微调中评判每个特征匹配模块的权重大小,神经元表达式形如下:
concatenate 层(如图2(d)所示)将3 个1×10 的神经元连接为一个(1×30)的网络层,如式(2)所示:
图2 卷积网络模型
最后与分类层相连。
为了使得自定义层中权重,与3 个特征匹配模块在特征分析模型(VGG16_dbg)中的权重等价。将自定义层中权重初始值设置为相等(0 或1),3 个特征匹配模块(VGG16_0、VGG16_45、VGG16_90)在初始工作时具有一样条件,通过用“concatenate”连接层对自定义层的输出进行拼接时,自定义层中的权重不会被其他层的激活函数、损失函数影响[15],自定义层中权重初始值设置为相等不会造成梯度消失、梯度爆炸或神经元输出始终不变等问题[16]。
该实验计算机环境为:Intel-酷睿 i7-9750H 的CPU,16 GB DDR4 内存,在Windows 10 64 位操作系统下使用GTX2060 6 GB 的GPU,使用TensorFlow 框架实现。
文中采用两种评价标准,第一种为单张图像分类准确度,第二种为点云投影集合分类准确度。其中,第二种方式在点云识别中更具有说服性,将投影集合中预测的最大类(label)作为预测结果。本文以第二种评价方式作为最主要的评价标准。
从表1 中可见,当相机与竖直方向夹角为45°时,二维投影识别效果最好,在图1 中α=45°的图像也具有明显特征;相反α=0°视角投影图像中包含较少特征,分类预测结果也是最差。
表1 不同视角数据集准确率比较
调试VGG16_dbg 模型共有313 个可训练参数,包括3 个自定义层权重和分类层310 个参数。多次实验发现,调试模型在第5 个epoch 时准确率达到峰值66%,避免引起过拟合,特征分析模型epoch=5。
从表2 中的平均权重发现w0的平均值最小,w45最大。α=45°视角的模型特征较为重要,按照权重的比例,对不同角度图像的数量进行增减,通过计算得到每一个视角的投影数I,公式如下:
表2 分析模型中各视角卷积网络的权重变化
式中,Iall为总投影数,为α视角特征匹配模块的权重绝对值均值,为权重绝对值均值总和。
由式(3)得到视角0°、45°、90°的视图分别为7、12、11 张,共30 张二维图像。按照此数量优化本文的训练集,最终ModelNet10 数据集在VGG16 网络模型上识别准确率准约为93.6%,对比未优化的数据集约提高1.8%。表3 中,本实验方法与其他网络相比也达到了良好的分类准确率。
表3 本文方法与其他算法的分类准确率比较
本文优化3D 模型投影图的采取方式,使VGG16 网络模型对指定点云测试集的识别效果得到提升。构建特征网络权重,分析不同视角3D 投影图的特征在同一个CNN 网络下的差异性,并根据权重比例优化数据集的采集密度,使得VGG16 网络学习到3D 模型投影图的更多特征。实验结果证明,通过优化输入数据采集可以使网络模型学习到更多特征,达到更好的分类效果。