点云深度学习系列1——PointCNN代码阅读心得

本文详细解读PointCNN代码,探讨其核心的X变换在特征提取和邻域排序问题上的应用。作者通过非传统的卷积操作解决K邻域排序,避免了maxpooling,并使用密集层与可分卷积。尽管训练X变换矩阵相对复杂,但其创新思路为点云处理提供了新视角。点云处理领域的后续研究如SONet试图解决中心点选择问题,以提高模型鲁棒性。
摘要由CSDN通过智能技术生成

先是一点题外话,作者的Github维护的很好,经常更新,而且对读者的答疑也很及时,大赞。下面进入正题。

看过代码的同学都知道,作者的核心思想X变换在代码pointcnn.py中,里面主要包含两部分,特征提取和X矩阵训练。下面分开来说。

用于提取邻域特征的只有两个dense层(也叫fc层/MLP),很简单地将尺度为(P,K,C)的邻域结构升维到了(P,K,C’)。

    # Prepare features to be transformed
    nn_fts_from_pts_0 = pf.dense(nn_pts_local_bn, C_pts_fts, tag + 'nn_fts_from_pts_0', is_training)#fc1, (N, P, K, C_pts_fts)
    nn_fts_from_pts = pf.dense(nn_fts_from_pts_0, C_pts_fts, tag + 'nn_fts_from_pt', is_training)#fc2, features, f_delta
    if fts is None:
        nn_fts_input = nn_fts_from_pts
    else:
        nn_fts_from_prev = tf.gather_nd(fts, indices, name=tag + 'nn_fts_from_prev')
        nn_fts_input = tf.concat([nn_fts_from_pts, nn_fts_from_prev], axis=-1, name=tag + 'nn_fts_input')

接下

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值