PointNet 和 PointNet++ 初步尝试

(本文涉及到的 TensorFlow 如无特别说明,均为自行编译版本。因为自行编译版本训练效率比官方提供版本明显要高。编译方法在这里

(此篇文章为长期更新文章。最新更新日期为2018年6月10日)

(具体版本为此页面列出的第 4 项 Linux 下 Python 3.5 环境。)

PointNet:

主页 | 论文 | 源代码

2018年5月28日:

尝试按照自述文档中的用法一节,训练样本数据,并记录了日志(点击下载日志压缩包)。样本数据为运行训练脚本时自动下载。单次训练时长大致为 3.5 小时。

PointNet++:

主页 | 论文 | 源代码

2018年5月29日:

尝试按照自述文档中的用法一节,训练样本数据的 ModelNet40,并记录了日志(点击下载日志压缩包)。本次训练按照自述文档的建议,使用两个显卡同时训练。单次训练时长大约 2 小时 20 分。

样本数据分两部分,即 ModelNet40ShapeNetCore

其中 ShapeNetCore 初次输入太大,实验室并不具备运行条件,遂没有尝试。

日志查看方法

上述提到的日志压缩包均为训练全部过程的记录。查看前将其解压到某个位置,然后使用 tensorboard 指定日志目录并运行即可。

以 pointnet++ 训练 ModelNet40 数据后,查看日志如下:

pointnet++ 下训练 ModelNet40 准确度。

总结(2018年6月1日)

目前还并不十分清楚 TensorFlow 用法,也不明白神经网络图的含义。只是对训练过程有个大致的印象,即初期迭代过程中,学习准确度会有比较明显的提升。之后随着迭代次数的增多,学习准确度提升越来越慢。

下一步工作重点:尝试 TensorFlow 给出的示例。并结合《深度学习》书籍和吴恩达的公开课 合并理解神经网络图。之后尝试逐步理解 PointNet 和 PointNet++。同时,每个学习进度都会把学习过程、心得和遇到的问题及尝试解决办法记录并公布在本网站。重点研究数据如何采集、表示和输入到神经网络中。另外,我也会时刻关注其他博主对这两篇论文的解读和应用。如果遇到特别有价值的内容,也会贴于此。

 

另外要提是来自山东大学的几位作者发表的论文:

PointCNN

论文 | 源代码

PointCNN 是根据点云特征学习的简单通用的框架。据其称在五项点云处理中刷新了纪录。

我打算尝试的是 S3DIS 部分,但由于作者尚未(2018年6月1日)公布具体测试环境,尝试了三天依然没有成功,其中还包括若干源代码错误。我把我根据作者本意能够修改的代码放到了 GitHub,其中我修改的部分在这里

这篇文章并不准备放弃,待作者公布详细运行环境,以及修正部分代码错误后,再行尝试。


2018年6月10日:

PointCNN 训练 S3DIS 分割运行失败的原因已找到:参见《TensorFlow 的 clip_by_value() 函数不同版本间的行为变化

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据