【深度学习】为什么三维卷积数据量大

        我们可能会经常听到在三维领域深度学习的参数量会非常庞大,以至于三维卷积的深度学习方不太适用。那么三维深度学习的参数量究竟是什么情况,本文将进行具体分析。

        上一节,我们研究了深度学习神经网络中参数量、模型大小和显存大小之间的相互关系和详细的计算方法,具体内容请参考:【深度学习】参数量、模型大小、显存_Coding的叶子的博客-CSDN博客

1 前提条件      

        我们仍然就一层卷积来进行说明,假设输入通道为C1=256,输出通道C2=512,卷积核尺寸为4,batch size为16,特征图尺寸为128。

2 计算过程

        那么,对于1维情况来说,训练阶段的显存占用为:

(C2\star C1\star K+N\star C2\star 128)\star 2\star 4/1024/1024MB==(256*512*4+16*512*128)*2*4/1024/1024MB=12MB

         对于2维情况,训练阶段的显存占用为:

(C2\star C1\star K\star K+N\star C2\star 128\star 128)\star 2\star 4/1024/1024MB=1040MB\approx 1GB

        对于3维情况,训练阶段的显存占用为:

(C2\star C1\star K\star K\star K+N\star C2\star 128\star 128\star 128)\star 2\star 4/1024/1024MB=131136MB\approx 128GB

        以上关于显存的计算方式请参考上一个章节中的介绍内容。从上述计算结果可以看到,三维情况下的参数量和显存会显著增加。增加因素主要来源于卷积核增加了一个维度,以及特征图增加了一个维度。相比于卷积核维度的增加,特征图维度增加的影响程度要明显大得多。

        显存计算公式如下:

模型总的参数量为各个卷积层参数量之后,每一层参数量用C2xC1xKxK计算。
训练阶段总的参数为模型参数量与输出参数量之和,即C2xC1xKxK+NxC2xHxWx2。
推理阶段总的参数为模型参数量与输出参数量之和,即C2xC1xKxKx2+C2xHxW。

3 简要结论

        因此,三维情况下参数量和显存大小的增加主要来源于特征图维度的增加。在三维点云深度学习实际处理过程中,算法经常会采用分组(如PointNet)、体素化(如VoxelNet)、多视图投影(MV3D)等策略来降低计算量。如果深度特征图的某个维度较少,则仍然可以采用三维卷积的方式进行特征提取,例如VoxelNet的深度方向的特征图维度仅为10,所以在其CML层采用了三位卷积的方式进行特征提取。

猜你喜欢

转载自blog.csdn.net/suiyingy/article/details/125175697