利用pvnet训练自制数据集

本文指导如何使用ODT方法创建PVNet的custom数据集,包括文件结构调整、参数修改、模型校准和训练过程,以实现6D位姿估计的定制化训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对6D位姿估计感兴趣的小伙伴可以加我,拉到位姿估计交流群,群里会不定期组织文献、代码和技术的视频交流分享

传送门

1.利用ODT方法生成数据集

在这里插入图片描述

2.在pvnet的data文件夹下新建一个文件夹,名为custom

在这里插入图片描述

3. 调整custom文件格式

(1)将1中的JPEGImage、mask、transforms、Gold6.ply、intrinsics.json复制到custom文件夹下;

(2)将JPEGImage文件夹名称修改为rgb

(3)将transforms文件夹名称改为pose

(4) ① 新建diameter.txt文件
	  ② 跑diameter.py文件,得到diameter,并把这个数值填入diameter.txt中
	
(5) ① 新建camera.txt文件
	  ② 把intrinsics.json中相机内参复制到camera.txt中

(6)把1中的Gold6.ply改为model.ply,注意用meshlab打开一下,观察目标是不是在坐标系中心,同时打开作者提供的小猫的ply文件,对比一下模型的尺度是否在一个数量级上

(7)此时custom文件夹下面的文件如下图所示

原intrinsics.json文件

在这里插入图片描述

custom文件夹内容

diameter.py

from plyfile import PlyData
import os
import numpy as np
model_path = os.path.join('./Linemod_preprocessed/models/model.ply')
ply = PlyData.read(model_path)
data = ply.elements[0].data
x = data['x']
y = data['y']
z = data['z']
x_size = np.max(x)-np.min(x)
y_size = np.max(y)-np.min(y)
z_size = np.max(z)-np.min(z)

print("Diameter:", np.sqrt(x_size**2 + y_size**2 + z_size**2))

4.修改handel_custom_dataset.py文件参数

(1)将pose_path = os.path.join(pose_dir, "pose{}.npy .format(ind))修改为pose_path = os.path.join(pose_dir, "{}.npy .format(ind))
(2)在pose = np.load(pose_path)下面一行添加
	  pose = pose[:3,:]   # 因为pose中的最后一行为0 0 0 1,pvnet代码中只需要输入前三行

在这里插入图片描述
在这里插入图片描述

5.修改helper.py中的路径,并运行,查看位姿是否正确

6.运行README.md中Training on the custom object下的如下代码,生成fps.txt和train.json文件

python run --type custom

在这里插入图片描述

7. 运行README.md中Training on the custom object下的

python train_net.py --cfg file configs/custom.yaml train.batch size 4

在这里插入图片描述

8.训练的权重存储在data/model/pnvet/custom文件夹下

在这里插入图片描述

9.通过运行运行README.md中Training on the custom object中如下代码可以查看训练结果

python run.py --type visualize--cfg_file configs/custom.yaml

在这里插入图片描述

10.需要注意的是pvnet中的测试集和训练集是一个数据集,所以在测试的时候,还需要重写输入文件。

### 清理或卸载PVNet配置、缓存或安装 对于清理或卸载特定软件如PVNet的相关配置、缓存或安装文件,通常涉及几个方面的工作。具体操作取决于PVNet的部署方式及其依赖项管理工具。 #### 使用包管理器移除PVNet 如果通过Python环境下的pip或者conda来管理和安装PVNet,则可以尝试如下命令: 对于pip安装的情况: ```bash pip uninstall pvnet ``` 对于conda环境下安装的情况: ```bash conda remove pvnet ``` 需要注意的是,在某些情况下,可能由于权限不足或者其他原因导致无法正常卸载指定库[^3]。此时应当确认当前工作目录以及是否有足够的管理员权限执行这些指令。 #### 手动删除残留文件 有时自动化的卸载过程不会彻底清除所有的关联数据。为了更干净地完成这一目标,还需要手动查找并删除一些潜在路径中的遗留物。这主要包括但不限于以下几个位置: - **虚拟环境中**:如果是基于某个项目创建了独立的virtualenv或者是venv来进行开发测试的话,可以直接考虑重新构建一个新的纯净版虚拟环境。 - **全局站点包内**:检查位于`/usr/local/lib/pythonX.Y/site-packages`(Linux/MacOS) 或者 `%PYTHON_HOME%\Lib\site-packages`\ (Windows),其中X.Y代表具体的版本号,看是否存在pvnet相关的模块文件夹,并将其安全删除。 - **用户级配置文件**:部分应用可能会保存自定义设置于用户的家目录之下,比如`.config/pvnet`, `.cache/pvnet`等隐藏文件夹里;另外还需留意可能存在於`.bashrc`, `.zshrc`这类shell初始化脚本内的PATH变量修改记录。 #### 清理缓存 针对不同操作系统平台上的Python解释器而言,其默认使用的下载缓存机制也有所区别。可以通过下面的方式清空pip和conda各自的缓存区: 对于pip: ```bash pip cache purge ``` 对于conda: ```bash conda clean --all ``` 以上措施有助于确保旧版本或其他不必要的资源被完全去除,从而为后续重装最新稳定发行版做好准备。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值