论文阅读《LargeKernel3D: Scaling up Kernels in 3D Sparse CNNs》
论文地址:https://arxiv.org/pdf/2206.10555.pdf
源码地址:https://github.com/dvlab-research/LargeKernel3D
前言
3D 大核 CNN 设计难点主要分为两个方面:
- 模型计算效率: 增大3维卷积核时,参数量和计算负担的增长速度比 2D CNN 快得多。如,卷积核从 3 × 3 × 3 3×3×3 3×3×3 增加为 7 × 7 × 7 7×7×7 7×7×7 时,模型参数量剧增;
- 模型参数优化: 3D数据集合数据稀缺,且点云数据在空间上为稀疏形式,导致在训练过程中大卷积核模型的参数得不到足够寻优而造成过拟合。
概述
本文针对 3D 卷积过程中深度分离卷积与大卷积核卷积难以有效应用的难题,提出了空间分区卷积与与适用于3D卷积过程的大卷积核卷积方式,通过在空间上相邻的位置之间共享权重来将大卷积核重新映射为小卷积核,与普通大卷积核相比,该方法的延迟更短,而且空间维度之间的权重共享可以克服过拟合问题,实验数据表明该方法在多个下游任务中有较好的性能表现,它在 ScanNetv2 语义分割任务上实现了 72.8% 的mIOU,在 NDS nuScenes 目标检测基准上达到了 73.9% 的 mIoU,在 nuScenes LIDAR 排行榜上排名第一。通过简单的多模式融合,性能进一步提升至 74.2% NDS。
模型架构
给定通道为
c
i
n
c_{in}
cin 的输入特征
{
x
p
∈
P
}
\{\mathbf{x}_p\in P\}
{xp∈P},使用一个卷积核为
w
∈
R
∣
K
∣
×
c
i
n
×
c
o
u
t
w\in \mathbb{R}^{|K|\times c_{in} \times c_{out}}
w∈R∣K∣×cin×cout 进行卷积操作, 不妨设卷积核大小为3,
∣
K
∣
=
27
|K|=27
∣K∣=27, 则有:
y
p
ˉ
=
∑
k
∈
K
w
k
⋅
x
p
ˉ
+
k
(1)
\mathrm{y}_{\bar{p}}=\sum_{k \in K} \mathrm{w}_{k} \cdot \mathrm{x}_{\bar{p}+k}\tag{1}
ypˉ=k∈K∑wk⋅xpˉ+k(1)
其中
k
k
k 为 3D 空间中到
p
ˉ
\bar{p}
pˉ 的偏置距离,
p
ˉ
+
k
\bar{p}+k
pˉ+k 为
p
ˉ
\bar{p}
pˉ 点邻域中离散的位置。
Spatial-wise Partition Convolution
标准卷积核可以视为一个 3D 矩阵,它由输入通道
C
i
n
C_{in}
Cin、输出通道
C
o
u
t
C_{out}
Cout 和空间卷积核维度
∣
K
∣
|K|
∣K∣ 组成。取卷积核大小为
k
k
k,2D 卷积核维度的维度
∣
K
∣
=
k
×
k
|K|=k×k
∣K∣=k×k ,3D 卷积的卷积核为
k
×
k
×
k
k×k×k
k×k×k。深度分离卷积沿着通道维度共享权重,其中组数等于输入通道数、点卷积的卷积核大小为1。
本文提出的3D 大卷积核空间卷积在空间维度
K
K
K 而非通道维度上进行权值共享。与 SGC 不同,后者根据输入特征来划分空间组,而本文的方法在邻近的空间上共享权值来将原始大卷积核从
7
×
7
7\times 7
7×7 分解为
3
×
3
3\times 3
3×3。在推理的过程中使用小卷积核层,并将其特征分配区域扩大到大卷积核范围,由于权值共享操作,可以大大节省了卷积过程中的乘法计算,从343次计算降低到27次。如图所示:
Kernel-wise Position Encoding
针对卷积过程中卷积核权值共享引起的局部细节模糊问题,提出了 Kernel-wise 位置编码,该方法通过将相对位置的信息添加到输入特征中来解决共享权重引起的位置不敏感问题。首先初始化位置权重
e
∈
R
K
×
c
i
n
e\in \mathbb{R}^{K\times c_{in}}
e∈RK×cin,在卷积过程中让输入特征根据位置信息权重进行加权求和:
y
p
ˉ
=
∑
k
∈
K
w
k
⋅
(
x
p
ˉ
+
k
+
e
k
)
.
(2)
\mathrm{y}_{\bar{p}}=\sum_{k \in K} \mathrm{w}_{k} \cdot\left(\mathrm{x}_{\bar{p}+k}+\mathrm{e}_{k}\right) .\tag{2}
ypˉ=k∈K∑wk⋅(xpˉ+k+ek).(2)
实验结果