PointNet++ 源码解读

news2024/11/29 4:00:25

1.从main函数开始:

1.1 确定使用的哪个GPU.

 1.2 保存训练时的参数和日志

 2. 加载数据

 先找到存放训练和测试数据的目录,接下来加载相关的数据参数:

下面是执行的结果:

 接下来为训练样本开始做准备:

 给不同标签做上标记:

 定位每个样本文件:

 3.导入模型

 4.其他参数

4.1使用GPU

 4.2 加载预训练模型

 4.3 

 5.训练部分

 

optimizer.zero_grad()//将梯度清零,如果不加此话,梯度就会一直不断的累加。

接下来将点云转为Numpy的形式,并进行随机点剔除、缩放和平移

以上的内容对于防止过拟合很有帮助,提升模型的泛化能力

接下来就是将numpy转为tensor的数据形式,并将维度中 第2维和第3维进行转置,再放入cuda。

数据发生的变化:16*1024*3---》16*3*1024

进入网络开始训练

数据进入网络后进入  PointNetSetAbstraction 函数:

先将数据16*3*1024---》16*1024*3  因为我将数据 batch_size 设置为了16

16*1024*3:16个样本,每个样本1024个点,每个点3个维度(x,y,z)也可以认为是3个特征。

点云样本被送入 sample_and_group:什么作用

点云变化:

new_xyz:16*512*3   中心点   
new_points:16*3*32*512-->16*64*32*512-->16*128*32*512-->16*128*512

new_points 是在512个点附近查询的32个点,并采用PointNet的思想对32个点进行特征生维,然后计算32个点云的最大值,完成特征计算。

new_xyz:16*128*3
new_points:16*131*64*128-->16*128*64*128-->16*256*64*128-->16*256*128

这里出现131是因为128维特征再加上每个点原有的3个特征。

new_xyz:16*1*3
new_points:16*259*128*1-->16*256*128*1-->16*512*128*1-->16*1024*128*1-->16*1024*1
现在相当于降采样后,在1点查询附近的128个点,并进行特征生维然后,进行MaxPooling
x:16*1024-->16*512-->16*256-->16*10  训练完成,将loss和预测结果返回去

 计算每个样本的最大概率,将其记为预测结果。同时计算Loss,

loss.backward() 反向传播,计算当前梯度;

optimizer.step() 根据梯度更新网络参数

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

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

相关文章

都2023年了,还有人在盲目自学黑客?

背景 经常逛CSDN和知乎,不理解的是,都2023年了,相关资源都这么多了,还有人不知道怎么学习网络安全。 本人从事网络安全工作5年,在几个大厂都工作过,安全服务、渗透测试工程师、售前、主机防御等职位都做过…

如何实现不同的VLAN之间进行通信?VLAN Mapping大作用就体现出来了!

你好,这里是网络技术联盟站。 今天给大家介绍一下VLAN Mapping,包括VLAN Mapping的概念、原理、应用,同时还会介绍华为设备和思科设备如何配置VLAN Mapping。 让我们直接开始 1. 介绍 VLAN(Virtual Local Area Network&#x…

JVM垃圾回收篇之垃圾收集器

五种引用 强引用(不回收) 强引用不会被强制垃圾回收,即使发生OOM也绝对不回收.保护了数据的安全性 软引用(内存不足即回收) 软引用是用来描述一些还有用,但非必需的对象。只被软引用关联着的对象,在系统将要发生内存溢出异常前,会把这些对…

为什么有些情况下需要重写equals()和hashCode()方法?

目录 方法作用实战案例 方法作用 equals():判断对象是否相等,比如判断是否能放入Set集合中 情况1:没有重写equals()方法:由于所有类的默认基类都是Object类,所以默认使用Object类的equals()方法,那就是对象…

局域网内网穿透技术

文章目录 一、内网穿透概述1、传统内网穿透介绍2、ZeroTier和Tailscale 二、ZeroTier1、概述1.1 介绍1.2 相关概念 2、ZeroTier简单使用3、Moon搭建3.1 介绍3.2 部署Moon服务3.3 使用 Moon 服务 4、流量转发与局域网访问4.1 概述4.2 转发服务器配置4.3 客户端配置 三、Tailscal…

vulnhub靶场渗透之SickOs1.2渗透教程(超级详细)

vulnhub靶场渗透之SickOs1.2渗透教程目录 0x01靶机概述 0x02靶场环境搭建 0x03靶机信息发现 0x04渗透靶机 使用第二种方法:msfvenom生成载荷模块curl上传至服务器触发 0x05本地提权 方法一:将当前用户(www-data)加入sudo组 提…

SSM编程---Day 05

目录 一、IOC (一)企业级系统的特点: (二)Spring框架的优点: (三)ApplicationContext的作用: (四)理解IOC原理、掌握IOC的配置 二、AOP&…

三种快速转换PDF为TXT的方法:简单、高效、免费

如何将PDF转换为TXT文件?在日常生活中,PDF和TXT是常见的文本格式。PDF格式文件具有稳定的布局和易于存储的特点。然而,许多在线下载的电子书通常是以PDF格式提供的,而电子阅读器通常不支持PDF格式,这就导致了无法方便地…

【makefile】顶层Makefile向下层Makefile传递参数

一个项目中为了方便管理,每一个模块都会配一个makefile 以便于管理,我们实际在编译的时候,可能只编译其中某一个模块。偶尔下层的Makefile会需要用到上层Makefile文件中的某一个变量或者函数。 下面主要介绍两种方法,分别使用inc…

Innodb底层原理与Mysql日志机制深入剖析

1.MySQL的内部组件结构 客户端执行sql语句,这时mysql会把sql语句发给server层连接器,连接器通过账号密码端口号进行连接数据库,验证成功后,然后在权限表里查询相应的权限,然后依赖于此时读取权限,连接器把s…

【项目】Q-ROBOT移动机器人设计与开发

本文主要记录Q-ROBOT移动机器人的开发流程~ github: GitHub - Qsx567/SLAMCarProject (持续更新中~希望各位铁子走过路过给个小小的star!灰常感谢!) 本项目为我设计的移动SLAM机器人,命名为: Q-Robot 机…

【Python Dash】零基础也能轻松掌握的学习路线与参考资料

Python Dash是一个可视化框架,可以帮助开发者快速构建交互式仪表板和应用程序。它基于Plotly.js库建立,提供了一种易于使用的Python界面,用户可以通过简单的Python代码创建仪表板和应用程序。本篇文章将介绍Python Dash的学习路线&#xff0c…

【学习日记2023.5.30】之 订单处理 订单状态定时处理_来单提醒_用户催单

文章目录 10. 订单处理10.1 Spring Task10.1.1 介绍10.1.2 cron表达式10.1.3 入门案例10.1.3.1 Spring Task使用步骤10.1.3.2 代码开发10.1.3.3 功能测试 10.1.4提交代码 10.2 订单状态定时处理10.2.1 需求分析10.2.2 代码开发10.2.3 功能测试 10.3 WebSocket10.3.1 介绍10.3.2…

互联网产品岗

文章目录 产品岗分类工具类社交类内容类平台类 职级划分工作流程refer: 产品岗分类 注:产品岗的分类并不绝对,因为大部分的产品都有符合属性,这里的分类主要便于理解(越写越觉得很多东西没得分) 工具类 定义&#x…

MySQL查询当前数据和上一行数据比较、业务数据的趋势分析、数据变动的监控和报警

标题: 使用MySQL查询当前数据和上一行数据比较的场景 在MySQL中,我们经常需要对数据进行比较和分析。其中一种常见的需求是查询数据列表并与前一行的数据进行比较。这种场景可以通过使用窗口函数或连接来实现。本文将介绍使用MySQL查询比较数据和上一行数据的场景&a…

【Unity Shader】Plane实现风格化水

写在前面 长文警告!!!!! 很久没更新博客了,,这次是要做一个风格化水效果,是基于Plane着色实现水面效果。 项目:Unity 2017.4.40f1 Build-in,因此实现过程会…

ChatGPT vs Google:谁是答案之王?微软揭示未来搜索的样子

已经习惯了网购的你,有没有想过一旦电子商务行业遭受重创,会对我们的日常生活造成什么影响呢? 我们已经习惯了在生活中碰到什么不懂的事情就 Google 一下或者百度一下,甚至许多人的职业都跟 Google 密切相关,比如自媒…

从外包到转岗华为正式员工月薪17K,这一百多天的心酸谁能懂.....

本人毕业于某普通二本院校非计算机专业,跨专业入行测试,至今有近 5年工作经验。 第一份测试工作是在华为做了两年外包。总体感受就是 这份工作缺乏归属感,心里总有一种落差,进步空间不大, 接触不到核心技术&#xf…

跨端框架+小程序容器:一种让App开发提高效率的思路

WePY(微信小程序开发框架)是一个基于组件化开发思想的微信小程序开发框架。它类似于Vue.js框架,通过封装小程序原生的API,提供了更加简洁、高效的开发方式。 WePY的主要特点包括: 组件化开发:WePY将页面拆…

matplotlib常用功能汇总

文章目录 1.IDE里的1.1 显示模式(plt.ion()和plt.ioff())1.2 backend说明 2 jupyter里的3 通用的3.1 cmap3.2 subplot()相关3.3 绘制动态图(Animation类)3.4 matplotlib利用rcParams配置样式参数 4. 与opencv连用可能遭遇的问题1.…