| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> ObjectDatasetTools--->readme翻译 -> 正文阅读 |
|
[Python知识库]ObjectDatasetTools--->readme翻译 |
1.介绍该库为纯Python脚本,用于为使用RGB-D相机拍摄的对象序列创建掩码、边界框标签和3D重建对象网络(.ply)。该项目可以为各种深度学习项目准备训练和测试数据集,例如6D位姿估计项目,以及多目标检测项目(faster rcnn)和实例分割项目(mask rcnn)。理想情况下,如果拥有实感相机并且对MeshLab或Blender有一定经验,那么创建自定义数据集就像执行几行命令一样简单。 该库中的代码通过aruco markers和ICP registration实现了原始3D模型获取。得到的原始3D模型需要在网格处理软件中进行处理和降噪。在这一步之后会自动生成所需要的标签功能。 这些代码目前是为每一帧一个感兴趣的对象编写的。可以修改以创建在一个框架内具有多个项目的数据集。 2.安装该库在Ubuntu16.04、Python2.7上进行了测试https://hub.fastgit.org/F2Wang/ObjectDatasetTools/blob/master/doc/installation.md,但应与Python3兼容。包括在各种英特尔实感驱动程序以及Python包上的安装。 3.自定义数据集(1)准备在arucomarkers文件夹中使用适当大小的aruco标记(ID 1-13)对pdf进行彩色打印。在感兴趣的对象周围贴上标记,如图所示,确保没有带有重复IDS的标记。 (2)记录一个序目标列选项1:使用实感相机录制(首选SR300) 对旧模型使用record.py,对librealsense SDK 2.0使用recordf2.py: python record.py LINEMOD/OBJECTNAME 如:通过如下代码实现记录一个sugar box。 python record.py LINEMOD/sugar 默认情况下,脚本在倒计时5后录制40秒。我们可以通过按“q”更改录制间隔或退出录制。然后稳定移动相机以获得物体不同视图,同时随时保持2-3个标记在相机的视野内。 注意项目假设所有序列都保存在名为“LINEMOD”的文件夹下,使用其他文件夹名称会报错。 如果使用record.py创建序列,彩色图像、深度图以及相机参数会自动保存在序列目录下。 选项2:使用现有序列或其他相机一起录制 如果使用其他相机,将彩色图像(.jpg)放在名为“JPEGImages”的文件夹中,并将对其的深度图像放在“depth”文件夹中。注意:该算法嘉定深度图与彩图对齐。将彩图按顺序从0.jpg、1.jpg、…、600.jpg和相应的深度图命名为:0.png,…,600.png,同时应在序列目录下创建一个名为“intrinsics.json”的文件,并按照如下形式手动输入相机参数: {"fx": 614.4744262695312, "fy": 614.4745483398438, "height": 480, "width": 640, "ppy": 233.29214477539062, "ppx": 308.8282470703125, "ID": "620201000292"} 如果不知道相机内参,可以输入一个粗略的估计。所需要的参数为fx,fy,cx,xy。其中,通常,fx=fy等于图像 的宽度,cx=cy是图像的中心。例如:对于640*480分辨率的图像,fx,fy=640,cx=320、cy=240. (3)获取帧变换以指定的间隔(可以在 config/registrationParameters 中更改间隔)对第一帧计算帧的变换,将变换(4*4 同构变换)保存为 numpy 数组 (.npy)。 python compute_gt_poses.py LINEMOD/sugar (4)注册所有帧并为注册的场景创建一个网格。python register_scene.py LINEMOD/sugar 原始的registeredScene.ply 将保存在指定目录下(例如,LINEMOD/sugar)。 registerScene.ply 是场景的注册点云,包括桌面、标记和扫描过程中暴露的任何其他对象,并具有一定程度的噪声消除。 生成的网格看起来像这样,需要在步骤 5 中手动处理: 或者,可以尝试通过尝试 register_segmented 而不是 register_scene 来跳过所有手动工作。 python register_segmented.py LINEMOD/sugar 默认情况下,register_segmented尝试删除所有不需要的背景并执行表面重建,将注册的点云转换为三角形网格。如果MESHING设置为false,脚本将仅尝试移除背景并使用平坦表面自动完成看不见的底部(如果FILLBOTTOM设置为 true),您将需要执行步骤5。 但是,register_segmented可能会失败,因为它使用一些特殊的方法来分割背景,因此您可能需要调整一些参数以使其与您的对象一起使用。要调整的最重要的旋钮是“MAX_RADIUS”,它会切断任何深度读数,其到观察到的aruco标记中心的欧几里得距离大于指定值。此值当前设置为0.2m,如果您有更大的对象,您可能需要增加此值以不切断对象的一部分。运行register_segmented的结果如下所示: (5)手动处理注册的点云(可选)如果对运行register_segmented的结果满意,可以跳过步骤5. 注册的点云需要处理为:
最终生成三角形网格,而不是算法生成的注册点云。 下面的视频连接为点云到网格转换、点云到网格重建(MeshLab)以及作者录制的简单教程https://www.youtube.com/watch?v=38mt3kpsxd4?? https://www.youtube.com/watch?v=lHKOJ1dbyJI?? https://www.youtube.com/watch?v=BPX-j9xE2EQ 。 如果生成网格的目的是获取掩码或将其用于单镜头位姿识别等项目,则仅需要精确的网格几何体,而外观则是不必要的。因此,对于平面区域,如视频中所示的“闭合孔”是可接受的。此外对于对称对象,则通过对称手动完成。如果需要缺失面的确切纹理信息,需要拍摄另外一个缺失面的序列并手动对齐点云。 (6)生成图像掩码和标签文件当为自定义对象完成步骤1-4后,运行如下代码: python create_label_files.py all 或者 python create_label_files.py LINEMOD/sugar 此步骤创建一个名为foldername.ply(例如:sugar.ply)的新网格,其AABB以原点为圆心,并且与OBB的尺寸相同。同时还生成图像掩码(保存在mask文件下),关于新网格的4*4同质变换(保存在transforms里),标签文件保存在labels文件,标签为3D bounding box在2D图像中的投影。掩码文件可用于深度学习项目(例如mask-rcnn)的训练和测试。 通过运行以下命令直观地检查创建的 3D 边界框和掩码的正确性: python inspectMasks.py LINEMOD/sugar (可选项)创建singleshotpose所需的额外文件如果为singleshotpose创建网格文件,则需要在meshlab中打开这些新的网格文件,并通过取消选中二进制格式选项再次保存它们。这些网格被 singleshotpose用于评估和姿态估计目的,而singleshotpose无法读取二进制编码的网格。 在步骤 6 中创建的掩码和标签与 singleshotpose 兼容。 目前,类标签以一种hacky方式分配(例如,按照文件夹在所有序列文件夹中的顺序),如果您为每个文件夹调create_label,它们将被分配相同的标签,因此请阅读打印输出并更改类标签在create_label_files.py中手动。 另外,需要通过下面代码创建train和test图像。 python makeTrainTestfiles.py 并创建其他所需的路径文件。 对于每个自定义目标,在cfg文件夹中创建一个objectname.data文件。 要获得对象比例(最大定点距离),可运行如下代码: python getmeshscale.py 上述是为singleshotpose创建自定义数据集所需要的所有步骤,需要注意的是要更新singleshotpose中的相机校准参数。 (可选项)为对象检测项目创建边界框标签完成第6步(即生成图像掩码)后,运行以下代码: python get_BBs.py 该代码可以创建annotations.csv,其中包含LINEMOD文件夹下所有图像的类标签和边界框信息。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 1:15:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |