大家好。

PointNet++是PointNet的升级版本,增加了对局部信息的感知能力。体现到代码上的话,变化还是比较多的,我们以分类为例,对结构和代码进行分析。
网络结构
首先是网络结构方面,复习前任PointNet网络结构的,请点这里
改进版去掉了T-net,在网络层次上变多了,但是更加组织有序。

def get_model(point_cloud, is_training, bn_decay=None):
""" Classification PointNet, input is BxNx3, output Bx40 """
batch_size = point_cloud.get_shape()[0].value
num_point = point_cloud.get_shape()[1].value
end_points = {}
l0_xyz = point_cloud
l0_points = None
end_points['l0_xyz'] = l0_xyz
# Set abstraction layers
# Note: When using NCHW for layer 2, we see increased GPU memory usage (in TF1.4).
# So we only use NCHW for layer 1 until this issue can be resolved.
l1_xyz, l1_points, l1_indices = pointnet_sa_module(l0_xyz, l0_points, npoint=512, radius=0.2, nsample=32, mlp=[64,64,128], mlp2=None, group_all=False, is_training=is_training, bn_decay=bn_decay, scope='layer1', use_nchw=True)
l2_xyz, l2_points, l2_indices = pointnet_sa_module(l1_xyz, l1_points, npoint=128, radius=0.4, nsample=64, mlp=[128,128,256], mlp2=None, group_all=False, is_training=is_training, bn_decay=bn_decay, scope='layer2')
l3_xyz, l3_points, l3_indices = pointnet_sa_module(l2_xyz, l2_points, npoint=None, radius=None, nsample=None, mlp=[256,

本文深入分析PointNet++,它是PointNet的增强版,增强了对局部信息的捕捉。网络结构上,PointNet++去除了T-net,采用多层MLP和Set Abstraction Layers进行特征提取。点云通过三个pointnet_sa_module进行处理,每个模块包括3层1x1卷积的全连接层和一个池化层。分类任务部分与PointNet类似。虽然在ssg版本的代码测试中达到90.2%准确率,但未能复现论文中的90.7%结果。
最低0.47元/天 解锁文章
1848

被折叠的 条评论
为什么被折叠?



