PyTorch复现PointNet——模型训练+可视化测试显示

因为项目涉及到3D点云项目,故学习下PointNet这个用来处理点云的神经网络
论文的话,大致都看了下,网络结构有了一定的了解,本博文主要为了下载调试PointNet网络源码,训练和测试调通而已。

我是在Anaconda下创建一个新的虚拟环境空间部署项目测试
大概用到的就这些了,后面调试项目时候缺少安装啥就行了

torch                     2.0.0+cu117
torchvision               0.15.0+cu117
python                    3.8.19
numpy                     1.24.3
matplotlib                3.7.5
opencv-python             4.10.0.84

一、下载源码和数据集

论文:《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》
GitHub源码:pointnet.pytorch
数据集下载:shapenetcore_partanno_segmentation_benchmark_v0.zip

大致的源码结构如下:
在这里插入图片描述

二、PyCharm打开项目

拿到项目,第一件事是要看下README.md
在这里插入图片描述
没啥高级词汇,大概能看出来啥意思就行

三、下载数据集

.sh文件是Linux下的脚本文件夹,我这是Windows操作系统,先打开看看这里面都写了啥
可视化工具在build.sh文件中,数据集在download.sh中,我这边就只用到必须的数据集

看下download.sh
在这里插入图片描述
知道了数据集下载的链接
数据集下载:https://shapenet.cs.stanford.edu/ericyi/shapenetcore_partanno_segmentation_benchmark_v0.zip
也就是第一部分中提到的数据集下载链接

四、分类任务

训练的话,通过README.md可以看出有两种,一种是分类任务,一种是分割任务

cd utils
python train_classification.py --dataset <dataset path> --nepoch=<number epochs> --dataset_type <modelnet40 | shapenet>

4.1 分类模型训练:train_classification.py

1,文件在utils文件夹下

在这里插入图片描述

2,README.md也说明了要配置的参数

python train_classification.py --dataset <dataset path> --nepoch=<number epochs> --dataset_type <modelnet40 | shapenet>

我把要配置的参数给整理到一块了,方便进行修改测试,其他的参数根据情况去修改即可
在这里插入图片描述

3,右击运行(Ctrl + Shift + F10),报错

在这里插入图片描述
修改进程数为0,parser.add_argument('--workers', type=int, help='number of data loading workers', default=0)
在这里插入图片描述

4,再次右击运行(Ctrl + Shift + F10)报错

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

在这里插入图片描述
按要求加入,os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE" ,允许程序在存在多个 libiomp5md.dll 副本的情况下继续执行,但这可能会导致不稳定的行为,包括程序崩溃或产生不正确的结果,所以它只是一个临时的解决方案

import os                                  
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"  

在这里插入图片描述

5,再次右击运行(Ctrl + Shift + F10),开始训练

在这里插入图片描述
让它跑着吧先~~也就5个epoch

6,因为这里训练的epoch为5,每个epoch都会存下来一个模型

可以看到在utils下的cls文件下有五个模型
在这里插入图片描述

4.2 分类模型测试:show_cls.py

1,utils文件夹下的show_cls.py文件用于分类模型测试

在这里插入图片描述

2,指定两个参数即可

模型路径:parser.add_argument('--model', type=str, default = './cls/cls_model_4.pth', help='model path')
数据集的路径:root='../dataset/shapenetcore_partanno_segmentation_benchmark_v0'
在这里插入图片描述

3,右击运行(Ctrl + Shift + F10),测试成功

可以看到测试的损失和准确率,目前作者没有提供可视化结果展示
在这里插入图片描述

五、分割任务

能把分类任务跑通,分割任务都是类似的

5.1 分割模型训练:train_segmentation.py

python train_segmentation.py --dataset <dataset path> --nepoch=<number epochs>

1,文件在utils文件夹下

在这里插入图片描述

2,看README.md指定配置参数

python train_segmentation.py --dataset <dataset path> --nepoch=<number epochs>
在这里插入图片描述

3,右击运行(Ctrl + Shift + F10),开始训练

开始训练
在这里插入图片描述
epoch为25

4,epoch为25,会保存25个模型

可以看到在utils下的seg文件下有二十五个模型
在这里插入图片描述

5.2 分割任务测试:show_seg.py

1,utils文件夹下的show_seg.py文件用于分割模型测试

在这里插入图片描述

2,右击运行(Ctrl + Shift + F10),报错

在这里插入图片描述
找了一下原因,show_seg.py用到了show3d_balls.py里面的showpoints函数
show3d_balls.py又用到了一个dll文件,dll = np.ctypeslib.load_library('render_balls_so', '.')而这个是.so不是.dll(原文是在Linux下跑的)
在这里插入图片描述
故需要转换一下,通过Visual Studio创建一个动态链接库(DLL)项目,生成render_balls_so.dll放到utils文件下即可
在这里插入图片描述
我这边就不搞了,抓紧时间学习下PointNet++
参考博客:https://blog.csdn.net/qq_45369294/article/details/121041403

3,直接拿来用

render_balls_so.dll免费下载
下载是一个压缩包,里面是一个完整的Visual Studio项目,但是用不到,咱们就用到了里面的一个dll文件
在这里插入图片描述

4,再次右击运行(Ctrl + Shift + F10),报错

在这里插入图片描述
还是之前遇到的问题,导入

import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

和分类任务一样,进行简单配置即可
在这里插入图片描述

5,再次右击运行(Ctrl + Shift + F10),测试成功

对Airplane进行分割,效果展示
在这里插入图片描述

六、完结

目前只是实现了代码的跑通,后续还得认真学习原理以及去修改模型架构适配自己的工作任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/870025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python——使用Seaborn钻石数据可视化分析(1)

目录 🧾 1、数据集(部分数据) ✏️ 2、导入数据集与必要模块 1️⃣ 导入数据 📍 通过info函数查看所有列数据的类型信息 2️⃣ 导入Seaborn工具包 📍 set_context 设置图形绘制时的上下文参数 📍 set_style 设置绘图风格 📍 set_palette 设置图标全局颜色…

CentOS 设置手动同步指定NTP时钟服务器

1. 文件上传至服务器 2.进入文件路径 3.查看文件名称 4.安装rpm包 注意执行顺序 1&#xff0c;3&#xff0c;2 5.启动ntp并设置开机自启 6.配置ntp配置文件 修改为时间服务器ip&#xff08;同时要删除或注释掉其他三个server开头的外网的配置&#xff0c;防止因为外网不通导致…

C++基础学习笔记

1.命名空间(namespace) 1.什么是命名空间&命名空间的作用 1.在C/C中&#xff0c;变量、函数、类都是大量存在的&#xff0c;这些变量等的名称将都存在于全局作用域中&#xff0c;就会导致很多的命名冲突等。使用命名空间的目的就是对标识符的名称进行本地化&#xff0c;以…

自动驾驶革命:商汤科技突破性大模型UniAD震撼登场

自动驾驶革命&#xff1a;商汤科技突破性大模型UniAD震撼登场&#xff01; 在人工智能的浪潮中&#xff0c;自动驾驶技术一直是科技巨头们竞相追逐的圣杯。而今&#xff0c;商汤科技联合上海人工智能实验室与武汉大学&#xff0c;以一篇名为"Planning-oriented Autonomou…

AI in Finance 金融领域AI应用-基于DeepNLP AI App Store 真实用户评论打分和排名

AI在金融领域应用 AI in Finance 金融服务领域的AI应用和传统的金融智能应用不同。传统金融智能应用包括如风险评估 (Risk assessment), 风险管理&#xff08;Risk management), 欺诈检测 (Fraud Detection&#xff09;等等。 通用AI大模型和人工智能应用如ChatGPT&#xff0c…

p12初步认识c语言

1.初识c语言 什么是c语言 c语言是一门计算机语言 计算机语言是什么 人和计算机交流语言 c/c/JAVA/python 语言发展&#xff1a; 二进制语言 硬件-电-正电/负电 1010001010101010101010101010手册 科学家 1010100010-ADD -助记符-汇编语言 B语言 C语言 C、---高级…

大白话讲解AI大模型

大白话讲解大模型 大模型的发展重要大模型发展时间线 大模型的简单原理-训练⼤模型是如何训练并应⽤到场景中的&#xff1f;如果训练私有化模型 模型&#xff1a;model 语料库&#xff1a;用于训练模型的数据 大模型的发展 详细信息来源&#xff1a;DataLearner 2022年11月底…

关于 RK3588刷镜像升级镜像”没有发现设备“ 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140287339 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

企业资产管理系统带万字文档公司资产管理系统java项目java课程设计java毕业设计

文章目录 企业资产管理系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档&#xff08;9.9&#xffe5;带走&#xff09; 企业资产管理系统 一、项目演示 企业资产管理系统 二、项目介绍 语言&#xff1a;java 数…

javaweb学习day1《HTML篇》--新浪微博(前端页面的创建思路及其HTML、css代码详解)

一、前言 本篇章为javaweb的开端&#xff0c;也是第一篇综合案例&#xff0c;小编也是看着黑马程序员的视频对里面的知识点进行理解&#xff0c;然后自己找一个新浪微博网页看着做的&#xff0c;主要还是因为懒&#xff0c;不想去领黑马程序员的资料了。 小编任务javaweb和ja…

力扣-dfs

何为深度优先搜索算法&#xff1f; 深度优先搜索算法&#xff0c;即DFS。就是找一个点&#xff0c;往下搜索&#xff0c;搜索到尽头再折回&#xff0c;走下一个路口。 695.岛屿的最大面积 695. 岛屿的最大面积 题目 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相…

华为HCIP Datacom H12-821 卷33

1.判断题 缺省情况下&#xff0c;华为AR路由器的VRRP运行在抢占模式下 A、对 B、错 正确答案&#xff1a; A 解析&#xff1a; 无 2.判断题 一个Route-Policy下可以有多个节点&#xff0c;不同的节点号用节点号标识&#xff0c;不同节点之间的关系是"或"的关…

禁用华为小米?微软中国免费送iPhone15

微软中国将禁用华为和小米手机&#xff0c;要求员工必须使用iPhone。如果还没有iPhone&#xff0c;公司直接免费送你全新的iPhone 15&#xff01; 、 这几天在微软热度最高的话题就是这个免费发iPhone&#xff0c;很多员工&#xff0c;收到公司的通知。因为&#xff0c;登录公司…

如何指定多块GPU卡进行训练-数据并行

训练代码&#xff1a; train.py import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, Dataset import torch.nn.functional as F# 假设我们有一个简单的文本数据集 class TextDataset(Dataset):def __init__(self, te…

Nginx中文URL请求404

这两天正在搞我的静态网站。方案是&#xff1a;从思源笔记Markdown笔记&#xff0c;用MkOcs build成静态网站&#xff0c;上传到到Nginx服务器。遇到一个问题&#xff1a;URL含有中文会404&#xff0c;全英文URL则正常访问。 ‍ 比如&#xff1a; ​​ ‍ 设置了utf-8 ht…

【Python基础】代码如何打包成exe可执行文件

本文收录于 《一起学Python趣味编程》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、安装PyInstaller三、使用PyInstaller打包四、验证打包是否成功五、总结 一、前言 本文介绍如何…

Linux C语言基础 day8

目录 思维导图&#xff1a; 学习目标&#xff1a; 学习内容&#xff1a; 1. 字符数组 1.1 二维字符数组 1.1.1 格式 1.1.2 初始化 1.1.3 二维字符数组输入输出、求最值、排序 2. 函数 2.1 概念 关于函数的相关概念 2.2 函数的定义及调用 2.2.1 定义函数的格式 2.3…

数据采集:如何使用八爪鱼采集BOSS直聘职位数据

大家好&#xff0c;我是水哥&#xff01; 今天给大家分享的是数据采集实战&#xff1a;使用「八爪鱼」第三方工具来采集 BOSS 直聘上的数据分析职位数据。 接下来&#xff0c;我们详细看一看。 不重复造轮子 在工作中&#xff0c;我们一定要形成一个认知&#xff0c;能用第…

最新浪子授权系统网站源码 全开源免授权版本

最新浪子授权系统网站源码 全开源免授权版本 此版本没有任何授权我已经去除授权&#xff0c;随意二开无任何加密。 更新日志 1.修复不能下载 2.修复不能更新 3.修复不能删除用户 4.修复不能删除授权 5.增加代理后台管理 6.重写授权读取文件 7.修复已经知道漏洞 源码下…

土壤分析仪:解密土壤之奥秘的科技先锋

在农业生产和生态保护的道路上&#xff0c;土壤的质量与状况一直是我们关注的焦点。土壤分析仪&#xff0c;作为现代科技在农业和环保领域的杰出代表&#xff0c;以其高效、精准的分析能力&#xff0c;为我们揭示了土壤的奥秘&#xff0c;为农业生产提供了科学指导&#xff0c;…