《KPConv: Flexible and Deformable Convolution for Point Clouds》的论文笔记。
《KPConv: Flexible and Deformable Convolution for Point Clouds》 ICCV 2019
Author: Hugues Thomas, Charles R. Qi et.al.
From: Mines ParisTech, Facebook AI Research, Stanford University
paper地址:点击这里
源码地址:
https://github.com/HuguesTHOMAS/KPConv
KPConv == Kernel Point Convolution)
简介
这是PointNet作者作为二作的一篇文章,超过了当前的SOTA七八个点。
提出了新的卷积方式:
- 用输入特征、关联算式附加在卷积核点上作为卷积核权重。
- 可以用不定个数的卷积核点进行训练,因此很灵活。
KPConv能比较快速地训练很深的网络结构。
刚性卷积在简单任务(物体分类或者小场景分割数据集)上表现更好,可变形卷积在复杂任务(大场景分割数据集)上表现更好。
KPConv在数量少的kernel points上显示了鲁棒性。
可变形kernel能更好地拟合场景对象。
贡献点
是第一个提出空间可变形点卷积的工作。
先前用MLP做点卷积的方法让卷积运算变复杂,导致网络收敛比较困难。而本文定义了一个能够直接学习权重的显式卷积核,不需要用MLP做中间表达。
思想
rigid kernel points的位置
作者先通过求解优化来放置不同数量的Kernel Points,希望K个Kernel Points在球面上离得足够远,又离球心不要太远。
限制其中一点为中心点,每个点对其他点有一定的斥力。球心对其他点有一定的引力。最终,周围的点被限制在平均半径1.5σ内,以确保每个Kernel Points之间的影响有小幅度的重叠。(是kernel points的影响距离,由输入密度决定,)
总结一下核心点卷积的大概思路:
- 以点x为球心确定一个球体;
- 内确定若干个核心点,每个核心点带一个权重矩阵;
- 在球体范围内的任意点,用核函数,计算出该点的权重矩阵,用该矩阵对这个点的feature进行变换;
- 在球体内的每个点,都用上一步的方法,得出一个新的feature,最后将feature累加起来,作为点x的feature。
用优化求出的K个kernel点位置:
有足够多K覆盖g的球形区域的时候,刚性kernel尤其有效。
Deformable Kernel Point Convolution
借鉴了微软亚研ICCV 2017的《Deformable convolutional networks》的思想。
如果kernel points的位置不是固定的而是学习到的,表达能力会更强。
(?作者考虑到对每个卷积层学习一个全局的kernel points集合,但是这种不会比固定位置的kernel points更有表达力。)
因此提出可变形卷积,让网络对每个卷积层的所有点位置学习一个有K个局部位移向量的集合,去适应点云结构。
直接引入deformable效果并不好,因此还对可变形卷积加了两个正则化损失项:
- 引入一个拟合正则化损失,让任何一个kernel point和最近的输入点距离不能太大。
- 对覆盖区域重复的kernel points加了一个排斥正则化项,令kernel points彼此之间的距离不能太小。
Kernel Point Network Layers
为了保证点采样位置的空间一致性,用网格下采样方法进行下采样。
选择每一层的支撑点作为原始输入点云的中心,让这些点携带特征位置。
Pooling layer
每层pooing都加倍cell的大小,每个新位置的池化用最大池化或者KPConv实现。KPConv的池化被叫做strided KPConv,类似于二维图像的strided convolution(是为了去除冗余信息,取代pooling层。pooling可以看作2x2的核以步长为2进行跨步)。KPConv layer
强制邻域有维,多余的shadow neighbors在计算时被忽略。网络参数
kernel point影响度量设为: .
对于第层网络,单元大小为。
对于刚性kernel,卷积半径是,平均kernel point半径是是。
对于可变形kernel,卷积半径为。
对于所有的实验,, , 。
网络设计
分类网络 KP-CNN:
有五层网络,每层都有两个卷积block,除了第一层都用一个KPConv加一个strided KPConv(用pool而非neighbors,这样就类比于2维图像里的strided conv?)。
最后通过一个全局平均池化,一个全连接层,一个softmax层进行分类。
可变形卷积只对最后5个KPConv block用可变形卷积。
分割网络 KP-FCNN:
用skip links传递中间层特征,用最近邻上采样策略去得到最终的点向特征。将特征与上采样结果级联,再用一元卷积进行处理。
实验结果
简单任务(分类+部件分割)
复杂任务(真实场景分割)