KPConv论文笔记

《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七八个点。

提出了新的卷积方式:

  1. 用输入特征、关联算式附加在卷积核点上作为卷积核权重。
  2. 可以用不定个数的卷积核点进行训练,因此很灵活。

KPConv能比较快速地训练很深的网络结构。

刚性卷积在简单任务(物体分类或者小场景分割数据集)上表现更好,可变形卷积在复杂任务(大场景分割数据集)上表现更好。

KPConv在数量少的kernel points上显示了鲁棒性。

可变形kernel能更好地拟合场景对象。

贡献点

是第一个提出空间可变形点卷积的工作。
先前用MLP做点卷积的方法让卷积运算变复杂,导致网络收敛比较困难。而本文定义了一个能够直接学习权重的显式卷积核,不需要用MLP做中间表达。

思想

rigid kernel points的位置

作者先通过求解优化来放置不同数量的Kernel Points,希望K个Kernel Points在球面上离得足够远,又离球心不要太远。
限制其中一点为中心点,每个点对其他点有一定的斥力。球心对其他点有一定的引力。最终,周围的点被限制在平均半径1.5σ内,以确保每个Kernel Points之间的影响有小幅度的重叠。(是kernel points的影响距离,由输入密度决定,

总结一下核心点卷积的大概思路:

  1. 以点x为球心确定一个球体;
  2. 内确定若干个核心点,每个核心点带一个权重矩阵;
  3. 在球体范围内的任意点,用核函数,计算出该点的权重矩阵,用该矩阵对这个点的feature进行变换;
  4. 在球体内的每个点,都用上一步的方法,得出一个新的feature,最后将feature累加起来,作为点x的feature。

用优化求出的K个kernel点位置:
求出的kernel points位置
有足够多K覆盖g的球形区域的时候,刚性kernel尤其有效。

Deformable Kernel Point Convolution

借鉴了微软亚研ICCV 2017的《Deformable convolutional networks》的思想。

如果kernel points的位置不是固定的而是学习到的,表达能力会更强。
(?作者考虑到对每个卷积层学习一个全局的kernel points集合,但是这种不会比固定位置的kernel points更有表达力。)
因此提出可变形卷积,让网络对每个卷积层的所有点位置学习一个有K个局部位移向量的集合,去适应点云结构。
deformable conv示意图

直接引入deformable效果并不好,因此还对可变形卷积加了两个正则化损失项:

  1. 引入一个拟合正则化损失,让任何一个kernel point和最近的输入点距离不能太大。
  2. 对覆盖区域重复的kernel points加了一个排斥正则化项,令kernel points彼此之间的距离不能太小。
    loss公式

Kernel Point Network Layers

为了保证点采样位置的空间一致性,用网格下采样方法进行下采样。
选择每一层的支撑点作为原始输入点云的中心,让这些点携带特征位置。

  1. Pooling layer
    每层pooing都加倍cell的大小,每个新位置的池化用最大池化或者KPConv实现。KPConv的池化被叫做strided KPConv,类似于二维图像的strided convolution(是为了去除冗余信息,取代pooling层。pooling可以看作2x2的核以步长为2进行跨步)。

  2. KPConv layer
    强制邻域有维,多余的shadow neighbors在计算时被忽略。

  3. 网络参数
    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传递中间层特征,用最近邻上采样策略去得到最终的点向特征。将特征与上采样结果级联,再用一元卷积进行处理。

实验结果

  1. 简单任务(分类+部件分割)
    result 1

  2. 复杂任务(真实场景分割)
    result 2

本文总阅读量

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×