接上面的文章,聊聊存在的几点疑问。
1
首先是分类任务的准确率
论文中的ssg版本能够达到90.7%。但是笔者以及问过的同学,都只能达到90.2%左右。于是笔者仔细思考了原因,参考文章告诉我们的信息,觉得问题有可能出在以下几点:
1、数据集的选择。用的官方数据集(2048点)对应90.7%,换成作者自备数据里(10000点)的话,准确率达到91.9%。笔者测试的是前者。所以这里没问题。
2、领域选取方法。两种方法KNN/ball query ,也会对准确率带来影响。代码里默认的是后者。所以问题也不是出在这。
3、运行evaluate.py的时候,要有votes = 12,这个也会对结果有影响。
其余的参数设置,比如学习率、batch_size都是默认的,与论文中所提的没差别,所以不会出什么问题。
但是最终结果还是达不到论文里的90.7%。
与作者沟通也未能获得很好的回馈。
2
另一个困扰的问题,是参数量的计算。从PointNet到PointNet++,这个参数量笔者始终没搞明白,这里把计算过程放上来,希望有同学一起看看。
1、PointNet++中分类任务ssg版本的计算。
笔者把特征提取部分和分类任务部分分开算。特征提取部分主要是1*1卷积,需要注意weight+bias,公式里的绿色的‘+1’表示bias的数量。
特征提取部分:
conv_num= (3+1)*64+(64+1)*64+(64+1)*128+ (128+3+1)*128+(128+1)*128+(128+1)*256+ (256+3+1)*256+(256+1)*512+(512+1)*1024=
分类部分:
fc_num = (1024+1)*512+(512+1)*256+(256+1)*40=
总参数内存:
bytes_num = (conv_num+fc_num)*4=5,876,128bytes(即5.8MB,不到论文说的8.7MB)
这里需要注意一点,计算conv_num的公式里,用红字标出来的‘+3’,这是代码里提到的,pointnet_sa_module首先进行sample_and_group运算,来看代码做了什么:
有一个concate的操作,把特征和坐标进行了拼接,所以最终输出的channel层个数是channel+3。注释部分也提了。
所以计算conv_num的公式里有红色的‘+3’,所以这部分需要注意。
但是即便注意到了这点,最终结果也与论文提的8.7MB不符。
2.这里还想提一点,上一张图中,我们注意到作者说pointnet的Model size是40MB,但是pointnet论文里是这么写的:
3.5MB。
不知道两个数字为什么不一致。这个我没有去计算,因为T-net确实太繁琐了,暂时挖个坑吧。
疑问就先抛出来了,笔者会继续关注,也欢迎同学们帮忙解决。
到此这篇pointnet+(pointnet++与PCL的区别)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/cjjbc/23673.html