赞
踩
本文介绍一篇想要更高效的处理点云识别的文章,思路比较新颖
论文
代码
自PointNet问世以后,基本所有的点云处理模型都要使用大量的MLP。
本文认为大量的的MLP操作是redundant, 提出一种sparse convolution的操作
提出了一种基于 group convolution 的卷积方法,并且为了完成group之间的特征传递,又提出了shuffle操作。
Group convolution
先给出group convolution 的示意图。
可以得到结论,group convolution 大幅减少了计算量和参数的个数。
Channel shuffle
为了实现各个group之间的特征传递,本文提出了channel shuffle。
下面贴下代码来理解一下
def channle_shuffle(edges, neighbors, group=2): """Shuffle the channel Args: inputs: 4D Tensor group: int, number of groups Returns: Shuffled 4D Tensor """ inputs = tf.concat([neighbors, edges], axis=-1) in_shape = inputs.get_shape().as_list() h, w, in_channel = in_shape[1:] assert in_channel % group == 0 l = tf.reshape(inputs, [-1, h, w, group, in_channel // group]) l = tf.transpose(l, [0, 1, 2, 4, 3]) l = tf.reshape(l, [-1, h, w, in_channel]) return l
主体还是延续了PointNet++的结构,将DGCNN的EdgeConv也加了进去,作为对PointNet++缺点的改进。
可以看出分类精度还是不错的,而且参数量减少很多。
再来看分割的结果
感觉分割的结果很差,个人推测原因是channel shuffle而导致的。在分割时,局部的特征是很重要的,shuffle 之后,造成了局部信息的混乱,破坏了encoding 信息。这里应该可以相应的改进一番。
文章思路比较新。
目前看来这篇文章好像没有中顶会,不知道作者有没有继续完善一下。可能赶时间,论文的写作是比较粗造的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。