我们可能会经常听到在三维领域深度学习的参数量会非常庞大,以至于三维卷积的深度学习方不太适用。那么三维深度学习的参数量究竟是什么情况,本文将进行具体分析。
上一节,我们研究了深度学习神经网络中参数量、模型大小和显存大小之间的相互关系和详细的计算方法,具体内容请参考:【深度学习】参数量、模型大小、显存_Coding的叶子的博客-CSDN博客。
1 前提条件
我们仍然就一层卷积来进行说明,假设输入通道为C1=256,输出通道C2=512,卷积核尺寸为4,batch size为16,特征图尺寸为128。
2 计算过程
那么,对于1维情况来说,训练阶段的显存占用为:
对于2维情况,训练阶段的显存占用为:
对于3维情况,训练阶段的显存占用为:
以上关于显存的计算方式请参考上一个章节中的介绍内容。从上述计算结果可以看到,三维情况下的参数量和显存会显著增加。增加因素主要来源于卷积核增加了一个维度,以及特征图增加了一个维度。相比于卷积核维度的增加,特征图维度增加的影响程度要明显大得多。
显存计算公式如下:
模型总的参数量为各个卷积层参数量之后,每一层参数量用C2xC1xKxK计算。
训练阶段总的参数为模型参数量与输出参数量之和,即C2xC1xKxK+NxC2xHxWx2。
推理阶段总的参数为模型参数量与输出参数量之和,即C2xC1xKxKx2+C2xHxW。
3 简要结论
因此,三维情况下参数量和显存大小的增加主要来源于特征图维度的增加。在三维点云深度学习实际处理过程中,算法经常会采用分组(如PointNet)、体素化(如VoxelNet)、多视图投影(MV3D)等策略来降低计算量。如果深度特征图的某个维度较少,则仍然可以采用三维卷积的方式进行特征提取,例如VoxelNet的深度方向的特征图维度仅为10,所以在其CML层采用了三位卷积的方式进行特征提取。