Pointnet++分类和分割数据集准备和实验复现

5.分类数据集Modelnet40及可视化

Modelnet40分类数据集

原始的modelnet40是off文件,是cad模型

OFF文件是一种用于存储三维对象信息的文件格式,全称为"Object File Format"。它主要用于存储几何体的顶点、边和面信息,以及可能的颜色和纹理数据,从而描述了一个或多个三维模型的结构。OFF文件格式因其简洁明了的结构而被广泛用于学术研究和三维图形应用中,特别是在计算机图形学、三维建模和可视化领域。

OFF文件的结构相对简单,通常以"OFF"作为文件的开头,随后是顶点(vertices)、面(faces)和(可选的)边(edges)的数量。之后的部分包含了每个顶点的坐标(通常是X、Y、Z三维坐标)以及每个面的信息,包括组成该面的顶点数和这些顶点在文件中的索引。面的部分还可以包含颜色信息。

一个简单的OFF文件示例如下:

OFF
# 顶点数 面数 边数
8 6 0
# 顶点坐标列表
-0.5 -0.5 0.5
0.5 -0.5 0.5
0.5 0.5 0.5
-0.5 0.5 0.5
-0.5 -0.5 -0.5
0.5 -0.5 -0.5
0.5 0.5 -0.5
-0.5 0.5 -0.5
# 面的列表,每个面的第一个数字是该面的顶点数,后面是顶点的索引
4 0 1 2 3
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0

这个示例描述了一个立方体,其中包括8个顶点和6个面。OFF格式的一个重要特点是其灵活性和简单性,它允许快速读写三维几何数据,而无需处理复杂的文件结构或解析算法。

ModelNet40是一个广泛使用的三维物体识别和分类的标准数据集。它由普林斯顿大学的研究小组创建,旨在促进三维形状识别和检索领域的研究。ModelNet40包含了从网络上收集的各种三维CAD模型,这些模型代表了40个不同的类别,如桌子、椅子、飞机、植物等。总共包括12311个模型,其中有9843个用于训练,而剩下的2468个用于测试。

ModelNet40的三维模型主要以网格的形式提供,每个模型都是由一系列顶点和构成表面的多边形(通常是三角形)组成的。这些三维模型被用来训练和测试计算机视觉算法,特别是深度学习模型,以实现对三维形状的自动识别和分类。

使用ModelNet40数据集的研究可以帮助改进三维对象的自动识别技术,这对于机器人视觉、自动驾驶汽车、增强现实和许多其他应用都非常重要。数据集的设计旨在提供足够的多样性,以确保算法可以学习到从基本几何形状到复杂物体结构的广泛特征。

ModelNet40数据集的发布促进了三维计算机视觉领域的研究和发展,许多先进的模型和算法,如PointNet和PointNet++,都是在这个数据集上进行训练和评估的,显示出了在处理三维数据方面的突出能力。

meshlab可视化

我们使用的txt文件是经过采样的,meshlab设置如下:

image-20240328194431635

打开后,这是10000个点的点云

image-20240328194514584

cloudcompare可视化

用cloudcompare打开

image-20240328194735957 image-20240328194703219

6.Pointnet++形状分类训练和测试

百度网盘下载链接:
链接:https://pan.baidu.com/s/15hYqo3leOFXBKekFq561_w 提取码:thek
从百度网盘下载modelnet40分类数据集文件modelnet40_normal_resampled.zip并放置到data目录下
解压后产生文件夹:data/modelnet40_normal_resampled

训练命令

训练时可选择不同的model

##Check model in ./models##E.g. pointnet2_msgpython3 train_classification.py --model pointnet2_cls_msg --use_normals --log_dir pointnet2_cls_msg 

如有显存溢出情况,如: RuntimeError: CUDA out of memory. Tried to allocate 1.41 GiB (GPU 0;
11.91 GiB total capacity; 9.99 GiB already allocated; 999.81 MiB free; 104.72 MiB cached)
训练命令改为:

python3 train_classification.py --model pointnet2_cls_msg --use_normals --log_dir pointnet2_cls_msg --batch_size 8

训练完会自动生成log文件夹,里面保存了日志文件和网络参数

训练结果

image-20240328202118499

因为时间关系,我只测试了3个epoch,用小的batch-size可能会导致accuracy降低,

以下是官方测试结果

image-20240328201247320

测试命令

python3 test_classification.py --use_normals --log_dir pointnet2_cls_msg

测试结果

image-20240328202257655

7.物体部件分割数据集ShapeNet及可视化

数据准备(Data Preparation)
数据集:Preprocessed ShapeNetPart dataset (XYZ, normal and part labels)
从百度网盘下载shapenetcore_partanno_segmentation_benchmark_v0_normal.zip,并解压到:
data/shapenetcore_partanno_segmentation_benchmark_v0_normal

文件格式

X Y Z Nx Ny Nz Scalar

image-20240328204943595

meshlab无法打开以上数据格式,用

cloudcompare打开

image-20240328205134165 image-20240328205350724

能看到红绿蓝三种颜色

8.PointNet++物体部件分割训练

Run

## Check model in ./models 
## e.g., pointnet2_msg
python train_partseg.py --model pointnet2_part_seg_msg --normal --log_dir pointnet2_part_seg_msg
python test_partseg.py --normal --log_dir pointnet2_part_seg_msg

image-20240329192514645

训练结果

image-20240329192639146

9.场景语义分割(Semantic Segmentation)任务

数据准备(Data Preparation)

下载3D indoor parsing dataset (S3DIS)数据集Stanford3dDataset_v1.2_Aligned_Version.zip并解压
到 data/s3dis/Stanford3dDataset_v1.2_Aligned_Version/ .

cd data_utils
python collect_indoor3d_data.py

处理后的数据被保存在 data/stanford_indoor3d/ .

image-20240329194553887

处理后的数据是npy,产生这样的文件后

image-20240329194324025

这个训练任务需要很高的显存,这里就不做了

执行训练命令

Check model in ./modelsE.g. pointnet2_ssgpython train_semseg.py --model pointnet2_sem_seg --test_area 5 --log_dir
pointnet2_sem_seg

可视化结果保存在 log/sem_seg/pointnet2_sem_seg/visual/ ;这些.obj文件可以用MashLab软件
可视化。
执行测试命令

python test_semseg.py --log_dir pointnet2_sem_seg --test_area 5 --visual

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

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

相关文章

面对复杂多变的网络攻击,企业应如何守护网络安全

企业上云,即越来越多的企业把业务和数据,迁移到云端。随着云计算、大数据、物联网、人工智能等技术的发展,用户、应用程序和数据无处不在,企业之间的业务边界逐渐被打破,网络攻击愈演愈烈,手段更为多。 当前…

uni app 扫雷

闲来无聊。做个扫雷玩玩吧&#xff0c;点击打开&#xff0c;长按标记&#xff0c;标记的点击两次或长按取消标记。所有打开结束 <template><view class"page_main"><view class"add_button" style"width: 100vw; margin-bottom: 20r…

Docker容器监控之CAdvisor+InfluxDB+Granfana

介绍&#xff1a;CAdvisor监控收集InfluxDB存储数据Granfana展示图表 目录 1、新建3件套组合的docker-compose.yml 2、查看三个服务容器是否启动 3、浏览cAdvisor收集服务&#xff0c;http://ip:8080/ 4、浏览influxdb存储服务&#xff0c;http://ip:8083/ 5、浏览grafan…

如何利用CSS实现文字滚动效果

1. 使用CSS3的animation属性 CSS3的animation属性可以让元素在一段时间内不停地播放某个动画效果。我们可以利用这个特性来实现文字滚动效果。 我们需要定义一个包含所有需要滚动的文本的容器元素。比如&#xff1a; <div class"scroll-container"><p>…

JAV八股--redis

如何保证Redis和数据库数据一致性 关于异步通知中消息队列和Canal的内容。 redisson实现的分布式锁的主从一致性 明天继续深入看这个系列问题 介绍IO复用模型

【机器学习300问】59、计算图是如何帮助人们理解反向传播的?

在学习神经网络的时候&#xff0c;势必会学到误差反向传播&#xff0c;它对于神经网络的意义极其重大&#xff0c;它是训练多层前馈神经网络的核心算法&#xff0c;也是机器学习和深度学习领域中最为重要的算法之一。要正确理解误差反向传播&#xff0c;不妨借助一个工具——计…

代码随想录算法训练营第24天|理论基础 |77. 组合

理论基础 jia其实在讲解二叉树的时候&#xff0c;就给大家介绍过回溯&#xff0c;这次正式开启回溯算法&#xff0c;大家可以先看视频&#xff0c;对回溯算法有一个整体的了解。 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法&#xff08;理…

深入理解数据结构——堆

前言&#xff1a; 在前面我们已经学习了数据结构的基础操作&#xff1a;顺序表和链表及其相关内容&#xff0c;今天我们来学一点有些难度的知识——数据结构中的二叉树&#xff0c;今天我们先来学习二叉树中堆的知识&#xff0c;这部分内容还是非常有意思的&#xff0c;下面我们…

前端秘法番外篇----学完Web API,前端才能算真正的入门

目录 一.引言 二.元素的获取和事件 1.获取元素 2.各种事件 2.1点击事件 2.2键盘事件 三.获取&修改操作 1.获取修改元素属性 2.修改表单属性 2.1暂停播放键的转换 2.2计数器的实现 2.3全选的实现 3.样式操作 3.1行内样式操作 3.2类名样式操作 四.节点 1.创…

记录Xshell使用ed25519公钥免密链接SSH

试了半天&#xff0c;Xshell好像没办法导入linux生成的ssh公钥,因此需要以下步骤实现免密登录 结论&#xff0c;在linux公钥文件中&#xff0c;将客户端生成的ed25519公钥加上去即可(一个公钥单独一行) 1.使用Linux生成秘钥文件(不需要输入私钥密码passphrase)或者直接创建一…

【Servlet】继承关系以及service方法

文章目录 一、继承关系二、相关方法 一、继承关系 Servlet接口下有一个GenericServlet抽象类。在GenericServlet下有一个子类HttpServlet&#xff0c;它是基于http协议。 继承关系 javax.servlet.Servlet接口​ javax.GenericServlet抽象类​ javax.servlet.http.HttpServ…

生产制造园区数字孪生3D大屏展示提升运营效益

在智慧园区的建设中&#xff0c;3D可视化管理平台成为必不可少的工具&#xff0c;数字孪生公司深圳华锐视点打造的智慧园区3D可视化综合管理平台&#xff0c;致力于将园区的人口、经济、应急服务等各项业务进行3D数字化、网络化处理&#xff0c;从而实现决策支持的优化和管理的…

C++多线程:Atomic原子类与CAS锁详解(十)

1、原子操作的概念 什么是原子操作&#xff1a; 原子被认为是构成物质最小的单位&#xff0c;是不可分割的一个东西。而在程序中原子操作被认为是不可分割的一个步骤或者指令其实我们很简单的程序&#xff0c;在高级语言中被认为是一个步骤的操作&#xff0c;编译成汇编指令之…

Redis从入门到精通(三)Jedis客户端、SpringDataRedis客户端

文章目录 前言第3章 Redis的Java客户端3.1 Jedis客户端3.1.1 快速使用3.1.2 连接池 3.2 SpringDataRedis客户端3.2.1 快速使用3.2.2 自定义序列化3.2.3 StringRedisTemplate 3.3 小结 前言 在上一章【Redis从入门到精通(二)Redis的数据类型和常见命令介绍】中&#xff0c;学习…

Springboot+MybatisPlus+EasyExcel实现文件导入数据

记录一下写Excel文件导入数据所经历的问题。 springboot提供的文件处理MultipartFile有关方法&#xff0c;我没有具体看文档&#xff0c;但目测比较复杂&#xff0c; 遂了解学习了一下别的文件上传方法&#xff0c;本文第1节记录的是springboot原始的导入文件方法写法&#xf…

docker-compse安装es(包括IK分词器扩展)、kibana、libreoffice

Kibana是一个开源的分析与可视化平台&#xff0c;设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。 Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等&#xff0c;直观的展示数据&#xff0c;从而达到高级的数据…

MySQL 优化及故障排查

目录 一、mysql 前置知识点 二、MySQL 单实例常见故障 故障一 故障二 故障三 故障四 故障五 故障六 故障七 故障八 三、MySQL 主从故障排查 故障一 故障二 故障三 四、MySQL 优化 1.硬件方面 &#xff08;1&#xff09;关于 CPU &#xff08;2&#xff09;关…

Reversing Linked List

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K3, then you must output 3→2→1→6→5→4; if K4, you must output 4→3→2→1→5→6. Input Specifi…

网络基础——ISIS

名词 ISIS&#xff1a;中间系统到中间系统&#xff0c;优先级是15集成化ISIS&#xff1a;这是在优化后&#xff0c;可以使用在OSI模型上的NET地址&#xff1a;由区域ID、系统ID和SEL组成&#xff0c;一台设备上最多配置3个NET地址&#xff0c;条件是区域号要不一致&#xff0c;…

Intel FPGA (7):adc adc128s102

Intel FPGA (7)&#xff1a;adc adc128s102 前提摘要 个人说明&#xff1a; 限于时间紧迫以及作者水平有限&#xff0c;本文错误、疏漏之处恐不在少数&#xff0c;恳请读者批评指正。意见请留言或者发送邮件至&#xff1a;“Email:noahpanzzzgmail.com”。本博客的工程文件均存…