Voxel-Based Models: Cubically-Growing Memory
一个高效的三维深度学习模型需要减少内存的使用和内存的随机访问。
传统方法将三维点云进行栅格化,将其转换为三维的格点(二维图像像素的扩展)
三维格点的每一个位置0,1,表示该格点位置是否被占用。
因此,随机混乱的点云转为规整的三维存储方式,模型设计简单化,通过堆叠三位卷积设计模型。
但该方法难以处理高分辨率的数据,因为内存和计算开销都会和分辨率成三次方增长。
同样不适合使用低分辨率,在栅格化过程中,较多点会聚合合并在一起,无法区分开,造成输入信息丢失。
Point-based Models:Sparsity Overheads
如PointNet、PointCNN、DGCNN等直接处理点云,节省内存开销。
point-based取代voxel-based最大的问题就是点云本省的不规则性
查找每个点最近的若干个临近点,并对该些临近点使用卷积,但这些点在内存上并非是连续存放的,导致引入大量的随机访问。
若干临近点相对于中心点的坐标也并非固定的,需要根据每个临近点的相对坐标来动态生成卷积核的权重,导致额外开销。
常规模型需要花销80%处理点云的不规则性,而非计算。
Point-Voxel Convolution
将物体的整体结构和细节用两个独立的模块来捕捉。点云分支和格点分支
存在一个点云分支,在该点云分支内,对每一个单独的点进行独立的变换,因为不需要邻近点的信息,该分支的变换可以高效进行实现。
可以将分支看作二维卷积神经网络中1×1的卷积,高效但无法的捕捉邻近区域信息。
将捕捉邻近区域信息部分留给格点分支。
在格点分支中,将点云先转换为分辨率较低的格点,然后使用三维卷积,最后在运算结束后,将格点转化为点云,并和点云分支合并在一起。
此处之所以可以使用较低的分辨率(计算高效),是应为在点云分支内保存了完整的点云,并不需要担心点云信息的丢失。
PVConv整合了Voxel-based和Point-based模型的两种优点,具有较小的内存开销和较好的数据规整度。