快速、简单的2D-6D位姿估计:Gen6D算法复现 (pytorch 1.12.1 + cu113)

ops/2025/1/15 12:09:48/

在这里插入图片描述

摘要

记录一下复现Gen6D的过程,主要记录其中遇到的一些bug,主要参考了博主牙牙要健康、Fate-Sky-CSDN博客这两位博主的博客。

参考文章:

【6D位姿估计】【深度学习】windows10下Gen6D代码Pytorch实现

6D姿态估计网络【Gen6D复现】CUDA11.3+cuDNN8.2.1-CSDN博客

主要步骤

clone源代码库
配置环境,这个我就不重复了

快速运行

分割视频 改文件夹名字 视频名字

python prepare.py --action video2image --input data/custom/video/support_2.mp4 --output data/custom/support_2/images --frame_inter 5 --image_size 960 --transpose

生成点云 改文件加名字 时间很长

python prepare.py --action sfm --database_name custom/support_2 --colmap \COLMAP3.8\lib\colmap.exe

分割点云–手动

保存切割点云 object_point_cloud.ply,保存XZ方向文件 meta_info.txt

执行推理 测试视频可以多弄几个

python predict.py --cfg configs/gen6d_pretrain.yaml --database custom/support --video data/custom/video/support2.mp4 --resolution 960 --transpose --output data/custom/support/test --ffmpeg ffmpeg.exe

主要bug1

port --colmap colmap.exe
OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

关于OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.错误解决方法 - 知乎 (zhihu.com)

删除了当前环境内 bass_gen 文件夹的 C:\Users\StealMoon.conda\envs\bass_gen\Lib\site-packages\torch\lib libiomp5md.dll 文件,报错解决了

主要Bug2

colmap报错

F20240429 20:43:06.975742 42028 cache.h:132] Check failed: max_num_elems > 0 (0 vs. 0)
*** Check failure stack trace: ***@   00007FFBD6B16E5B  public: void __cdecl google::LogMessage::Flush(void) __ptr64@   00007FFBD6B15739  public: __cdecl google::LogMessageFatal::~LogMessageFatal(void) __ptr64@   00007FF6583B7B1A  (unknown)@   00007FF6583C8E0E  (unknown)@   00007FF6583BF99B  (unknown)@   00007FF6583AC130  (unknown)@   00007FF6583AA9CF  (unknown)@   00007FFC63E31BB2  _configthreadlocale@   00007FFC642E7344  BaseThreadInitThunk@   00007FFC661226B1  RtlUserThreadStart
Traceback (most recent call last):File "F:\ZXRworkSpace\PythonProject\BlindAss_Gen6D\Gen6D\prepare.py", line 98, in <module>build_colmap_model_no_pose(parse_database_name(args.database_name),args.colmap_path)File "F:\ZXRworkSpace\PythonProject\BlindAss_Gen6D\Gen6D\colmap_script.py", line 99, in build_colmap_model_no_poseextract_and_match_sift(colmap_path, database_path, image_path)File "F:\ZXRworkSpace\PythonProject\BlindAss_Gen6D\Gen6D\colmap_script.py", line 69, in extract_and_match_siftsubprocess.run(cmd, check=True)File "C:\Users\StealMoon\.conda\envs\bass_gen\lib\subprocess.py", line 528, in runraise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['F:\\ZXRworkSpace\\PythonProject\\BlindAss_Gen6D\\COLMAP3.8\\lib\\colmap.exe', 'exhaustive_matcher', '--database_path', 'data\\custom\\support\\colmap\\database.db']' returned non-zero exit status 3221226505.
  • 当 COLMAP 无法找到姿势时,通常会出现此错误。它可能是由许多问题引起的,例如运动模糊过多、图像不足或场景中动态对象过多。

unity里面截的虚拟图像 不能用 ,下载了作者的数据集,运行了一个小时左右

Writing output: data\custom\mouse\colmap\pointcloud.ply

执行成功的命令,针对博主的数据集能够成功执行

python prepare.py --action sfm --database_name custom/mouse --colmap F:\ZXRworkSpace\PythonProject\BlindAss_Gen6D\COLMAP3.8\COLMAP.bat
python prepare.py --action sfm --database_name custom/support --colmap F:\ZXRworkSpace\COLMAP3.8\lib\colmap.exe
问题依旧存在

This error typically arrises when COLMAP fails to find poses. It can be cause by a number of issues such as too much motion blur, not enough images, or too many dynamic objects in the scene.
在这里插入图片描述

看来问题确实是数据集,无法识别到物体的位姿。

python prepare.py --action sfm --database_name custom/support --colmap colmap.exe
需要注意的就是一定要准备一个合适的 能偶识别出位姿的数据集

报错

加载模型、数据都没问题,读取数据库的时候出错了

Traceback (most recent call last):File "F:\ZXRworkSpace\PythonProject\BlindAss_Gen6D\Gen6D\predict.py", line 97, in <module>main(args)File "F:\ZXRworkSpace\PythonProject\BlindAss_Gen6D\Gen6D\predict.py", line 32, in mainestimator.build(ref_database, split_type='all')File "F:\ZXRworkSpace\PythonProject\BlindAss_Gen6D\Gen6D\estimator.py", line 140, in buildobject_center = get_object_center(database)File "F:\ZXRworkSpace\PythonProject\BlindAss_Gen6D\Gen6D\dataset\database.py", line 377, in get_object_centerreturn database.center
AttributeError: 'CustomDatabase' object has no attribute 'center'

出错原因

这里应该要找数据库的center ,但是说找不到
在这里插入图片描述

我看了 CustomDatabase 的定义,里面是有 center 属性的

在这里插入图片描述

调试了一下

发现影响 self.poses的属性其实是 img_fns.pkl 文件,这个文件生成的有错误,删除掉之后,它会自动创建一个文件。

在这里插入图片描述

运行正常了

在这里插入图片描述


http://www.ppmy.cn/ops/150277.html

相关文章

3D可视化产品定制,应用于哪些行业领域?

3D可视化定制服务已广泛渗透至众多行业领域&#xff0c;包括汽车、家居、时尚鞋服、珠宝配饰以及数码电器等&#xff1a; 汽车行业&#xff1a; 借助Web全景技术与3D模型&#xff0c;我们高保真地再现了汽车外观&#xff0c;为用户带来沉浸式的车型浏览体验。用户可在展示界面自…

C# 25Dpoint

C# 25Dpoint &#xff0c;做一个备份 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace _25Dpoint {public partial cl…

20.2、主流数据库安全分析与防护

目录 Oracle数据库安全分析与防护Oracle安全最佳实践MS SQL数据库安全分析与防护MS SQL Server安全最佳实践MySQL数据库安全分析与防护MySQL安全最佳实践国产数据库的安全分析与防护 Oracle数据库安全分析与防护 数据库oracle是数据库领域的老大&#xff0c;它的安全机制很多&a…

【json】

JSON JSON是一种轻量级的,按照指定的格式去组织和封装数据的数据交互格式。 本质上是一个带有特定格式的字符串(py打印json时认定为str类型) 在各个编程语言中流通的数据格式&#xff0c;负责不同编程语言中的数据传递和交互,类似于计算机普通话 python与json关系及相互转换…

关于在 Kotlin DSL 中,ndk 的配置方式

在 Kotlin DSL 中&#xff0c;ndk 的配置方式有所不同&#xff0c;取决于 Android Gradle 插件版本。ndk { abiFilters(…) } 在 Kotlin DSL 中实际上是 externalNativeBuild 的一部分&#xff0c;需要通过正确的上下文调用。 错误代码&#xff1a; ndk {abiFilters("ar…

【动态规划-矩阵】5.下降路径最小和

题目 难度&#xff1a; 中等 题目内容&#xff1a; 给你一个 n x n 的 方形 整数数组 matrix &#xff0c;请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始&#xff0c;并从每一行中选择一个元素。在下一行选择的元素和当前行所选…

web.xml常用配置

web.xml是Java Web应用程序的部署描述文件&#xff0c;它位于WEB-INF目录下。web.xml文件主要用于配置Servlet、Filter、Listener、MIME类型、欢迎页面等组件&#xff0c;以及一些Web应用的上下文参数。以下是一些常见的web.xml配置说明&#xff1a; Servlet配置&#xff1a; …

Golang——GPM调度器

本文详细介绍Golang的GPM调度器&#xff0c;包括底层源码及其实现&#xff0c;以及一些相关的补充知识。 文章目录 前情提要并发与并行并行 (Parallel)并发 (Concurrency)关键区别 进程和线程的区别协程解决的问题协程的优势 Go的并发模型-CSPGo的调度模型-GPM源码Goroutineg 结…