PoseDiffusion

GitHub
764 42 中等 1 次阅读 昨天NOASSERTION图像其他
AI 解读 由 AI 自动生成,仅供参考

PoseDiffusion 是一款发表于 ICCV 2023 的开源算法,旨在通过扩散模型辅助的光束法平差(Bundle Adjustment)来解决高精度的相机姿态估计问题。传统方法在处理复杂场景或稀疏视图时往往难以收敛,而 PoseDiffusion 创新性地利用扩散模型的生成能力来优化初始猜测,显著提升了多视角几何重建的鲁棒性与准确性。

该工具的核心亮点在于将前沿的扩散概率模型与传统计算机视觉中的几何优化技术相结合,不仅支持从图像序列中预测相机位姿和焦距,还能在 Re10K 和 Co3D 等数据集上实现快速推理。对于包含 20 帧的序列,其在单张显卡上的处理速度可达秒级(视配置而定),并提供了完整的训练与演示代码。

PoseDiffusion 主要面向计算机视觉领域的研究人员、算法工程师以及三维重建开发者。如果你正在探索神经辐射场(NeRF)、高斯泼溅(3DGS)的前置相机标定,或希望研究扩散模型在几何任务中的应用,这款工具将提供极具价值的参考实现。虽然它需要一定的深度学习环境配置基础,但其清晰的文档和模块化设计能帮助使用者快速上手实验。

使用场景

某增强现实(AR)开发团队正在为博物馆构建导览应用,需要利用游客手机拍摄的非专业视频序列,快速重建展品的精确 3D 模型并还原相机运动轨迹。

没有 PoseDiffusion 时

  • 弱纹理场景失效:面对光滑瓷器或反光金属等缺乏明显特征点的展品,传统特征匹配算法极易丢失跟踪,导致相机位姿估算完全失败。
  • 初始化极其敏感:若视频起始帧的相机角度不佳,传统的束调整(Bundle Adjustment)优化容易陷入局部最优解,无法收敛出正确的全局轨迹。
  • 人工干预成本高:工程师不得不手动筛选高质量帧或反复调整算法参数来“挽救”失败的序列,严重拖慢了从数据采集到模型上线的迭代周期。
  • 长序列误差累积:在长达数十秒的视频中,微小的估算误差会随时间迅速放大,导致重建的 3D 模型出现严重的扭曲或断裂。

使用 PoseDiffusion 后

  • 扩散模型补全几何:PoseDiffusion 利用扩散先验知识,即使在展品纹理极少或重复的情况下,也能推理出合理的相机相对位置,保持跟踪连续性。
  • 全局优化更鲁棒:通过扩散辅助的束调整机制,工具能自动跳出局部最优陷阱,即便在初始条件不理想时也能稳定收敛至正确的相机轨迹。
  • 自动化流程提速:团队可直接输入原始手持视频,无需人工预筛选或精细调参,即可在秒级时间内获得高可用性的位姿数据,大幅缩短开发链路。
  • 长程一致性增强:得益于其强大的全局约束能力,长视频序列中的累积误差被显著抑制,重建出的展品 3D 结构完整且比例准确。

PoseDiffusion 将原本依赖完美拍摄条件的位姿估算任务,转化为对真实世界复杂场景具有高度容错性的自动化流程,极大降低了 3D 内容生产的门槛。

运行环境要求

操作系统
  • 未说明
GPU
  • 需要 NVIDIA GPU
  • 文中提及测试环境为 Quadro GP100,训练环境为 8x A100
  • 需支持 CUDA 11.6
内存

未说明

依赖
notes官方提供安装脚本默认创建包含 Python 3.9、PyTorch 1.13 和 CUDA 11.6 的 conda 环境。多 GPU 训练时,若使用 accelerate 导致数据加载缓慢或卡死,建议移除 accelerate 改用 PyTorch 原生分布式训练或 pytorch-lightning。可视化默认使用 Visdom(非运行必需)。推理时间受是否启用 GGS 影响巨大(0.8 秒 vs 80 秒)。
python3.9
torch==1.13
cuda==11.6
accelerate
visdom
pytorch3d
PoseDiffusion hero image

快速开始

PoseDiffusion:通过扩散辅助光束平差法解决姿态估计问题

预告图

[论文] [项目页面]

更新:

  • [2024年8月6日] 若要获取图5、图7和图10的原始数据,请从arXiv下载我们的提交文件。您可以通过点击 https://arxiv.org/format/2306.15667 上的“Download source”按钮来完成此操作。提交文件中包含以下文件:plots_co3dv2.texplots_re10k.texplots_co3dv2_suppl.tex。这些文件使用来自 csvs.texcsvs_suppl.tex 的数据生成图表,而这两个文件也包含在LaTeX提交源代码中。我们在Re10K数据集上使用的划分可在 re10k_test_1800.txt 中找到。

  • [2024年4月24日] 您可能也会对 VGGSfM 感兴趣,在该工具中,类似于PoseDiffusion的模型被用作相机预测器。它还支持通过光束平差法优化相机参数。

  • [2024年4月24日] 更新了RealEstate10K数据集的检查点。

安装

我们提供了一个简单的安装脚本,默认会设置一个包含Python 3.9、PyTorch 1.13和CUDA 11.6的conda环境。

source install.sh

快速入门

1. 下载检查点

您可以下载在Co3DRealEstate10K上训练的模型检查点。请注意,RealEstate10K的检查点是在336×336的图像尺寸上重新训练的(您需要在相应的配置文件中更改image_size)。预测的相机位姿和焦距是按照NDC坐标系定义的。

2. 运行演示

python demo.py image_folder="samples/apple" ckpt="/PATH/TO/DOWNLOADED/CKPT"

您可以通过指定不同的image_folder来尝试自己的数据。

在Quadro GP100 GPU上,对于一个20帧序列,不启用GGS时的推理时间约为0.8秒,启用GGS时则约为80秒(其中匹配提取耗时20秒)。

您可以在./cfgs/default.yaml中选择是否启用GGS或其他设置。

我们默认使用Visdom进行可视化。请确保您的Visdom设置正确配置,以便准确地可视化结果。不过,运行模型并不需要Visdom。

训练

1. 预处理标注

首先,请按照这里的说明预处理Co3D V2数据集的标注。这将显著减少训练过程中的数据处理时间。

2. 指定路径

接下来,在./cfgs/default_train.yaml中指定CO3D_DIRCO3D_ANNOTATION_DIR的路径。CO3D_DIR应设置为您下载的Co3D数据集所在的路径,而CO3D_ANNOTATION_DIR则应指向步骤1中完成预处理后生成的标注文件所在位置。

3. 开始训练

  • 单GPU训练:

    python train.py
    
  • 多GPU训练时,请使用accelerate启动训练脚本,例如在1台机器上的8个GPU(进程)上训练:

    accelerate launch --num_processes=8 --multi_gpu --num_machines=1 train.py 
    

所有配置均在./cfgs/default_train.yaml中指定。请注意,我们使用Visdom记录日志。

每次迭代的训练时间大约为13秒,具体取决于设备的不同。您可以通过查看日志中的sec/it来确认。在8块A100 GPU上,整个训练大约需要23天。

注意:在某些集群中,我们发现公开发布的多GPU训练代码运行速度非常慢。这似乎是因为accelerate在某些设置下表现不佳,导致数据加载非常缓慢(甚至卡死)。最简单的解决方案是移除代码中的accelerate (accelerator)部分,改用PyTorch自带的分布式训练工具或PyTorch Lightning来启动训练。这个问题不会影响单GPU训练。如果您遇到类似情况,请提交一个问题或在此处报告您的案例 here(这很可能与accelerate的数据加载有关,简单解决方案是使用PyTorch的分布式训练功能)。

测试

1. 指定路径

请在./cfgs/default_test.yaml中指定CO3D_DIRCO3D_ANNOTATION_DIRresume_ckpt的路径。resume_ckpt指您下载的模型检查点。

2. 运行测试

python test.py

您可以通过调整./cfgs/default_test.yaml中的num_framesGGS.enable等参数来尝试不同的测试设置。

致谢

感谢denoising-diffusion-pytorchguided-diffusionhlocrelpose的出色实现。

许可证

有关本代码所采用许可证的详细信息,请参阅LICENSE文件。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|4天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|4天前
开发框架图像Agent

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.1k|★★☆☆☆|昨天
开发框架图像Agent

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|3天前
语言模型图像Agent

Deep-Live-Cam

Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。

88.9k|★★★☆☆|4天前
开发框架图像Agent

opencv

OpenCV 是一个功能强大的开源计算机视觉库,被誉为机器视觉领域的“瑞士军刀”。它主要解决让计算机“看懂”图像和视频的核心难题,提供了从基础的图像读取、色彩转换、边缘检测,到复杂的人脸识别、物体追踪、3D 重建及深度学习模型部署等全方位算法支持。无论是处理静态图片还是分析实时视频流,OpenCV 都能高效完成特征提取与模式识别任务。 这款工具特别适合计算机视觉开发者、人工智能研究人员以及机器人工程师使用。对于希望将视觉感知能力集成到应用中的软件工程师,或是需要快速验证算法原型的学术研究者,OpenCV 都是不可或缺的基础设施。虽然普通用户通常不会直接操作代码,但日常生活中使用的扫码支付、美颜相机和自动驾驶系统,背后往往都有它的身影。 OpenCV 的独特亮点在于其卓越的性能与广泛的兼容性。它采用 C++ 编写以确保高速运算,同时提供 Python、Java 等多种语言接口,极大降低了开发门槛。库中内置了数千种优化算法,并支持跨平台运行,能够无缝对接各类硬件加速器。作为社区驱动的项目,OpenCV 拥有活跃的生态系统和丰富的学习资源,持续推动着视觉技术的前沿发展。

87k|★☆☆☆☆|昨天
开发框架图像