【深度学习】PointSIFT尝鲜

发布时间:2026/10/22 12:11:02

【深度学习】PointSIFT尝鲜 之前也做过点云处理但用的都是传统的方法比如说进行平面拟和有很老的region grow random seed或者利用层次聚类进行计算对应法线之类的这个PointSIFT首先比较吸引LZ的是好多公众号都在报导在Scannet数据集上效果非常好。二来也有一定时间没接触深度学习了tensorflow之类的了找一个开源的代码读读回忆回忆。有可能再修改改贴出具体论文的信息论文PointSIFT: A SIFT-like Network Module for 3D Point Cloud Semantic Segmentation论文作者Mingyang Jiang、Yiran Wu、Cewu Lu 通讯作者阅读论文arXiv:1807.00652, 2018https://arxiv.org/abs/1807.00652论文主页http://www.mvig.org/publications/pointSIFT.html代码链接https://github.com/MVIG-SJTU/pointSIFT放张论文的效果图先吸引下眼球首先要进行安装基本的环境得有啊看到PointSIFT不禁吸了一口气怕是没有GPU是扛不住了。。。有些README.md有的 LZ就直接粘贴了但是有不一致的地方LZ也会进行补充说明的好久没用tensorflow了好激动O(∩_∩)O哈哈~InstallationIn our experiment, All the codes are tested in Python3.5(If you use Python 2.7, please add some system paths), CUDA 8.0 and CUDNN 5.1. 之前运气很好配置的环境基本都是相同的。正常的安装CUDA 8.0和CUDA 5.1这个是基本配置啦好多博客都有介绍LZ就不再赘述了。唯一不同的是LZ使用的是Python2.7版本的。因为在跑程序所以内存用的比较多Install TensorFlow (We use v1.4.1).安装tensorflow这个很简单因为LZ是python2.7还是习惯使用1.2.0版本的所以安装的是1.2.0.具体的显示如图sudo pip install tensorflow-gpu1.2.0可能会报如下的问题Could not find any downloads that satisfy the requirement tensorflow这个很方便解决的update一下对应的pippip install -U pipInstall other python libraries likeh5py这个看着安装就行缺什么sudo pip install就行了Compile TF operator (Similar to PointNet). Firstly, you should find Tensorflow include path and library paths.importtensorflowastf# include pathprint(tf.sysconfig.get_include())# library pathprint(tf.sysconfig.get_lib())这个主要是查找一下你的机器上tensorflow的路径的。Then, change the path in all the complie file, liketf_utils/tf_ops/sampling/tf_sampling_compile.shFinally, compile the source file, we use tf_sampling as example.cdtf_utils/tf_ops/samplingchmodx tf_sampling_compile.sh ./tf_sampling_compile.sh然后对应改就行了查一下有多少个*.sh,把里面对应的tensorflow的路径改一下就行了这里贴出其中一个tf_sampling_compile.sh#/bin/bash /usr/local/cuda-8.0/bin/nvcc tf_sampling_g.cu -o tf_sampling_g.cu.o -c -O2 -DGOOGLE_CUDA1 -x cu -Xcompiler -fPIC # TF1.2 g -stdc11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /usr/local/lib/python2.7/dist-packages/tensorflow/include -I /usr/local/cuda-8.0/include -lcudart -L /usr/local/cuda-8.0/lib64/ -O2 -D_GLIBCXX_USE_CXX11_ABI0 # TF1.4 #g -stdc11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /home/jmydurant/anaconda3/envs/pointsift/lib/python3.5/site-packages/tensorflow/include -I /usr/local/cuda-8.0/include -I /home/jmydurant/anaconda3/envs/pointsift/lib/python3.5/site-packages/tensorflow/include/external/nsync/public -lcudart -L /usr/local/cuda-8.0/lib64/ -L/home/jmydurant/anaconda3/envs/pointsift/lib/python3.5/site-packages/tensorflow -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI0在运行./*.sh如果报找不到tensorflow的头文件的时候就要考虑一下你的路径写对了O(∩_∩)O哈哈~如报如下的错误tf_grouping.cpp:6:42: fatal error: tensorflow/core/framework/op.h: No such file or directory #include tensorflow/core/framework/op.h全部完成后就可以进行使用了UsageIf you want use our model in your own project. After compiling the TF operator, you can import it easily. Here shows a simple case.(we takebatch_size * num_point * input_dimas input and getbatch_size * num_point * output_dimas output)importtensorflowastf# import our modulefromtf_utils.pointSIFT_utilimportpointSIFT_module# input coordinatesxyztf.tf.placeholder(tf.float32,shape(batch_size,num_point,3))# input featurespoint_featuretf.tf.placeholder(tf.float32,shape(batch_size,num_point,input_dim)# setting phasesis_trainingtf.placeholder(dtypetf.bool,shape())# setting searching radius (0.1 as an example)radius0.1_,out_feature,_pointSIFT_module(xyz,point_feature,radius,output_dim,is_training)LZ暂时还没想好使用这个既然给出了在ScanNet上的train_and_eval_scannet.py那就试一下吧Training and evaluating on ScanNetAll the data can be download from here. They are the same as PointNet.下载对应的数据集比起图片动辄几十个G1.8G对网速的要求还是很仁慈的。解压后如下图所示Train the data:python train_and_eval_scannet.pyIf you have multiple GPU:CUDA_VISIBLE_DEVICES0,1,2,3 python train_and_eval_scannet.py--gpu_num4其实在运行上述脚本还是会出现各种问题No module named tf_utils.provider认真的嘛认真真的会报错LZ估计刚开始这些代码是在一个文件夹下的后来代码公布总得整齐点让小伙伴们也好知道每块代码的作用所以分到不同的文件夹下但是却没有加一个__init__py的文件所以导致tf_utils.provider这个模块没法找到。LZ不会说自己傻傻的一直在pip中找这个模块后来恍然大悟这模块自己文件夹里就有啊( ⊙ o ⊙ )啊Couldn’t import dot_parser, loading of dot files will not be possible.这个是pyparsing和pydot版本不兼容的问题直接卸载了重新安装一下就行//卸载 sudo pip uninstall pyparsing sudo pip uninstall pydot //安装 sudo pip install pyparsing sudo pip install pydot还有有TypeError: load() got an unexpected keyword argument ‘encoding’修改部分python代码修改部分如下import cPickle as pickle #self.scene_points_list pickle.load(fp, encodingbytes) #self.semantic_labels_list pickle.load(fp, encodingbytes) self.scene_points_list pickle.load(fp) self.semantic_labels_list pickle.load(fp)然后就应该没有了至少ScanNet的training和Evaluation是可以跑通的了Resource exhausted: OOM when allocating tensor with shape[32,1024,8,256]报这个错误字面上就可以理解资源耗尽把batch size改小点就行了电脑跑了一下午还在训练中没法给效果啦(≧▽≦)/啦啦啦参考博客1.https://stackoverflow.com/questions/15951748/pydot-and-graphviz-error-couldnt-import-dot-parser-loading-of-dot-files-will2.https://blog.csdn.net/csdn_lisword/article/details/555067653.https://stackoverflow.com/questions/43895013/pickle-loading-cifar-100-data4.https://blog.csdn.net/zsg2063/article/details/74332487
延伸阅读

更多相关文章

2026/10/22 12:05:59

扩张状态观测器与权重因子调节:电机电流预测控制仿真实战

做电机电流预测控制,最头疼的往往不是预测算法本身,而是模型参数一变,预测就跑偏;价值函数里的权重因子,调不好就到处抖。这个标题把两个核心手段放在了一起:扩张状态观测器(ESO)负责…

2026/10/22 12:05:59

零基础备考大模型技术与应用:从概念到实操的高效攻略

说实话,每年带零基础学员冲刺“大模型技术与应用”这门课,我收到最多的开场白基本是同一句:“老师,我连机器学习都没学过,这大模型考点是不是跟我没关系?”我的回答也基本是同一句:“正因为你没…

2026/10/22 22:11:58

GDB调试实战:从崩溃现场到core文件的高效定位指南

大概两年前,我们有个常驻服务总在凌晨三四点崩溃。日志最后一行清清楚楚写着“已建立连接”,后面就再没动静了。当时团队排查手段比较原始,无非是到处插printf,把可疑模块一个个注释掉,结果折腾了三天,连方…

2026/10/22 22:11:58

CityEngine规则库:可编程城市建模的CGA核心实践

简介:本资源为CityEngine建筑规则库,面向城市规划师、三维建模设计师及GIS可视化从业者,解决大规模城市景观快速建模效率低、规则开发门槛高的核心痛点。压缩包含4061个文件,总大小395.68MB,主体为2686张建筑纹理与效果…

2026/10/22 22:11:58

分治算法核心解析:从递归思想到排序实战与调试技巧

分治算法是那种“名字听着高大上,实际天天在用”的东西。很多人以为学会归并排序就算入门分治了,其实离真正理解还差得远;也有人觉得递归思路太难绕,干脆背模板应付面试,结果一换题就露馅。这篇我不做官方定义的复读机…

2026/10/22 22:11:58

Windows下用MinGW-w64编译OpenCV 4.10实战指南

简介:本资源为Windows平台下使用MinGW-w64编译完成的OpenCV 4.10完整开发包,面向C初学者及嵌入式/跨平台视觉开发人员,解决在无Visual Studio环境下构建高性能OpenCV库的核心痛点。压缩包共442个文件,含297个头文件(hp…

2026/10/22 22:11:58

抓包篡改金额原理与防御:Web接口参数校验实战指南

1. 抓包与金额篡改:到底是怎么回事先说结论:标题里说的“抓包网站修改金额”,本质是利用抓包工具拦截浏览器和服务器之间的HTTP/HTTPS请求,把里面跟价格、金额有关的参数改掉,再放行给服务器。如果服务器没有对金额做二…

2026/10/22 22:06:57

LVGL多国语言字库制作全流程:从字符提取到避坑实践

简介:LVGL多国语言字库制作工具是一份面向嵌入式开发者的实用资源,专门针对LVGL图形库定制字库与多语言支持。该工具可处理中、日、韩、阿拉伯文等字符集,将其转换为图形库可识别的字库格式,并支持调整字体大小、样式与颜色&#…

2026/10/22 11:29:28

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目,目标很直白:把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事,逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间,我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依,按理说这类业务代码模式非常固定,应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块,它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑