用PVN3D训练自制LINEMOD数据集过程记录

本文介绍了如何制作自己的LINEMOD数据集,解决内存溢出问题,并指导如何将PVN3D模型调整以适应新的数据集。包括数据合并、参数修改、训练与测试结果分析。适合对位姿估计感兴趣的开发者加入讨论。

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

对6D位姿估计感兴趣的小伙伴可以加我,拉到位姿估计交流群

传送门

1.制作自己的LINEMOD数据集

(1)制作过程与步骤

制作数据集的过程参考:6d位姿估计—制作自己的LINEMOD数据集过程记录(有效的方法)

(2)合并数据集、生成test.txt与train.txt

数据制作过程中在获取帧变换(python compute_gt_poses.py LINEMOD/duck2
)步骤中,若录制的图片过多的话,内存会溢出,因此不建议一次性录制太多图片,本人在record2.py中,RECORD_LENGTH=50,每次录制大概能够生成一千零几张图片。

基于以上原因,我们需要录制多个数据集,并在后期需要将rgb、depth、mask图像以及gt.yml、info.yml进行合并,并生成train.txt和test.txt。合并程序的电脑不能联网,有需要的可以私信我。

2.将PVN3D的输入替换为自己的数据集

(1)将datasets/linemod/Linemod_preprocessed/data/09改为009,将自己的merge文件夹改为09;

(2)将JPEGImages改为rgb;

(3)在common.py中修改相机内参;并将第37行的mini_batch_size=32

(4)将./pnv3d/datasets/linemod/linvmod_dataset.py中的第188中的png改为jpg,是因为我的rgb图未jpg格式。而程序默认的格式的png。

注:因为在生成info.yml的时候depth_scale用的是0.001

3.训练

训练集大概有12000多张图片

cd pvn3d
python3 -m train.train_linemod_pvn3d --cls duck

4训练结果

(1)使用与训练集一同录制的数据集分割出来的测试效果

在这里插入图片描述
由图可以看出,基本是正确的。

(2)使用与训练集同一场景下录制的数据集进行测试

在这里插入图片描述
由图可以看出来,小了一号,是整个数据集进行测试结果都小一号,不知道为什么。

(3)使用不同场景下录制的数据集进行测试

在这里插入图片描述

对位姿估计感兴趣的小伙伴可以加群

传送门

<think>好的,我需要帮助用户在YCB数据集上复现PVN3D模型的实验结果。首先,我得理清用户的问题,他们可能已经看过相关引用,但需要具体的步骤指导。根据用户提供的引用内容,特别是引用[3]和引用[4],PVN3D模型结合了RGB图像和点云输入,首先生成实例分割掩码,然后通过点云密集投票预测关键点的3D位置,最后用PnP算法优化6-DoF姿态。 首先,我需要确认用户的环境配置是否正确。PVN3D可能依赖特定的深度学习框架,比如PyTorch,以及一些库如Open3D或者PointNet++的实现。用户可能需要安装这些依赖,确保CUDA版本兼容,以利用GPU加速。 接下来是数据准备。YCB数据集包含多个物体的RGB-D图像和6D姿态标注。根据引用[2],LineMOD数据集的处理方法可能类似,用户需要下载YCB数据集并按照官方提供的结构组织。可能需要将数据集分为训练集和测试集,并添加合成图像到训练中,如引用[2]提到的。此外,预处理步骤可能包括点云的生成、数据增强(如光照变化、遮挡模拟)以及标注格式的转换,确保与PVN3D的输入要求一致。 然后是模型训练。根据引用[1],训练命令可能类似于`python3 -m train.train_linemod_pvn3d --cls ape`,但需要针对YCB数据集调整参数。用户需要检查配置文件,确认输入路径、类别数目、批次大小、学习率等超参数是否正确。如果遇到内存不足的问题,可能需要减少批次大小或使用梯度累积。 训练完成后,用户需要进行评估。引用[2]提到的平均距离(ADD)是常见的评估指标,需要确保评估脚本正确计算ADD和ADD-S(对称物体使用)。用户应按照PVN3D的测试流程运行模型,输入测试集数据,生成姿态估计结果,并与真实标注比较。此外,注意处理遮挡和截断情况,可能需要参考引用[4]中提到的关键点预测策略,或者考虑数据增强来提升模型鲁棒性。 用户可能会遇到问题,例如依赖项缺失、数据路径错误、显存不足等。需要建议他们查看错误日志,逐步排查。同时,参考官方仓库的Issue部分或社区讨论,寻找解决方案。如果结果不理想,可能需要调整数据增强策略、模型参数或训练时长。 最后,生成相关问题时要覆盖数据准备、模型训练细节、评估指标、性能优化和与其他方法的比较,帮助用户深入理解复现过程中的各个方面。</think>在YCB数据集上复现PVN3D模型的实验结果需要按照以下步骤进行: ### 一、环境配置与依赖安装 1. 克隆PVN3D官方代码库: ```bash git clone https://github.com/ethnhe/PVN3D.git cd PVN3D ``` 2. 安装依赖库: - PyTorch 1.7+(需与CUDA版本匹配) - Open3D 0.9+ - Python包:`pip install -r requirements.txt`[^1] ### 二、数据准备 1. 下载YCB-Video数据集: - 包含21个物体的92个真实视频序列和80,000张合成图像 - 数据目录结构应包含: ``` YCB_Video_Dataset/ ├── data/ ├── models/ └── image_sets/ ``` 2. 数据预处理: - 生成点云数据:将深度图转换为点云(需使用相机内参) - 创建训练/测试集划分文件(参考`image_sets/train.txt`和`test.txt`) - 添加合成数据到训练集(如引用[2]所述) ### 三、模型训练配置 1. 修改配置文件`config/ycb_config.yaml`: ```yaml dataset: ycb_root: /path/to/YCB_Video_Dataset obj_list: [1,2,3,...21] # YCB物体的编号 use_synthetics: true train: batch_size: 8 lr: 0.0001 ``` 2. 启动训练(示例命令): ```bash python3 -m train.train_ycb_pvn3d --config config/ycb_config.yaml ``` ### 四、关键实现细节 1. 输入数据处理: - 同时加载RGB图像和对应的点云数据 - 应用数据增强:随机旋转(±5°)、平移(±0.02m)、颜色抖动[^3] 2. 网络结构: - RGB分支:ResNet-34提取图像特征 - 点云分支:PointNet++提取几何特征 - 特征融合模块:通过注意力机制融合多模态特征 3. 姿态优化: - 使用EPnP算法求解初始姿态 - 通过迭代最近点(ICP)进一步优化姿态参数[^3] ### 五、评估与验证 1. 运行测试脚本: ```bash python3 -m eval.eval_ycb --checkpoint path/to/model.pth ``` 2. 主要评估指标: - **ADD(-S)**: 平均距离指标,对称物体使用ADD-S - 阈值标准:当ADD(-S) < 物体直径×10%时视为正确估计[^2] - 预期结果:在YCB-Video数据集上ADD(-S)应达到约92.3%的准确率 ### 六、常见问题解决 1. **显存不足**: - 减小`batch_size`(可设置为4) - 使用`--use_fps`参数启用点云下采样 2. **数据路径错误**: - 检查`ycb_root`路径是否包含所有子目录 - 确认文件权限(特别是Linux系统) 3. **姿态优化发散**: - 增加训练时的迭代次数 - 调整ICP的收敛阈值(默认0.001m)
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值