🛠️工具:BlenderProc(🌐地址:https://github.com/DLR-RM/BlenderProc)

📦安装BlenderProc

🔍方法一:

pip install blenderproc

🔍方法二:

git clone https://github.com/DLR-RM/BlenderProc

cd BlenderProc

pip install -e .

检测是否安装成功:

blenderproc quickstart

当🚀🚀首次运行🚀🚀上述代码时,系统将📢📢📢自动进行Blender软件的安装以及所需的各种库的安装📢📢📢。在成功运行代码后,它将生成一个渲染图像,并将其保存在output/0.hdf5文件中。您可以使用以下方式进行可视化:

blenderproc vis hdf5 output/0.hdf5

制作LineMod数据集

以下是官方的制作步骤: https://github.com/DLR-RM/BlenderProc/tree/main/examples/datasets/bop_challenge

LineMod数据集的格式

https://github.com/thodan/bop_toolkit/blob/master/docs/bop_datasets_format.md

制作步骤

🚨🚨🚨🚨请注意,根据官方文档的指示,需要自行安装bop_toolkit库。然而,实际操作中,无需手动安装,因为在运行数据集制作代码的过程中会自动安装所需的库。

从BOP官网下载所需要的模型

在数据集制作过程中,除了需要LineMod数据集的模型之外,还需要其他模型。您可以具体查看源码以了解所需的模型清单。一旦您获得了这些模型,您应该将它们放置在相应的位置,您可以从源码中找到详细的说明。📦📊🔍
下载网址:🌐BOP: Benchmark for 6D Object Pose Estimation (cvut.cz)(只需要下载base archives和3D models)

下载材质文件

具体操作步骤:https://github.com/DLR-RM/BlenderProc/blob/main/docs/tutorials/loader.md

运行以下代码,从cc0textures.com下载材质:

blenderproc download cc_textures

制作LineMod数据集

运行以下代码以开始制作数据集(如果是首次运行,将自动安装bop_toolkit库):

blenderpoc run examples/datasets/bop_challenge/main_<bop_dataset_name>_<random/upright>.py 
               <path_to_bop_data> 
               resources/cctextures 
               examples/datasets/bop_challenge/output
               --num_scenes=2000

examples/datasets/bop_challenge/main_<bop_dataset_name>_<random/upright>.py: path to the python file.

<path_to_bop_data>: path to a folder containing BOP datasets.

resources/cctextures: path to CCTextures folder

examples/datasets/bop_challenge/output: path to an output folder where the bop_data will be saved

--num_scenes: 场景数量决定了最后生成图像的数量,程序会在每个场景中渲染25张图像

✨✨✨✨用自己的模型制作LineMod数据集✨✨✨✨

💡💡💡如果想要制作自己的数据集,需要修改bop_toolkit库中的一些代码。

更换模型

原本的linemod的3D模型如下:

请注意,您需要将自己的模型替换原本的模型。确保模型的命名方式与原有的模型一致,并且相应地替换models_info.json文件以匹配您的模型。

修改bop_toolkit库中的dataset_params.py 文件

修改get_model_params 函数(必做)

由于您的模型个数可能与LineMod数据集的模型个数不一致,您需要修改模型的数量。要做到这一点,您可以在函数中修改obj_ids字典中与"lm"对应的值。

原本的设置是list(range(1, 16)),因为LineMod数据集中有15个模型。

如果您只有两个模型文件(例如,obj_000001.ply和obj_000003.ply),则可以将它们修改为[1, 3],以匹配您的模型数量。

修改get_split_params 函数(选做)

linemod数据集对应的图像分辨率是(宽:640,高:480),由于个人需要可能修改图像的分辨率。修改

  # Linemod (LM).
  if dataset_name == 'lm':
    p['scene_ids'] = list(range(1, 16))
    p['im_size'] = (640, 480)

将p['im_size'] = (640, 480) 修改成自己所需的分辨率。

如果上面有什么不懂的,可以加我QQ(1104270848)进行讨论,记得加备注信息。同时也可以加入我们的3D位姿恢复讨论群。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐