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)使用不同场景下录制的数据集进行测试
emm…可以看出来,基本芭比 q了