LLFF

GitHub
1.7k 252 中等 1 次阅读 1周前GPL-3.0开发框架
AI 解读 由 AI 自动生成,仅供参考

LLFF(Local Light Field Fusion)是一款基于深度学习的开源工具,旨在从少量稀疏拍摄的照片中合成高质量的新视角图像或视频。它主要解决了传统光场渲染需要密集采样(即拍摄大量照片)的痛点,让用户仅凭几张不同角度的输入图片,就能生成流畅、逼真的中间视角画面,从而实现“自由视角”的浏览体验。

该工具特别适合计算机视觉研究人员、图形学开发者以及希望探索前沿视图合成技术的创作者使用。虽然其部署涉及 CUDA、TensorFlow 和 COLMAP 等技术栈,对普通用户有一定门槛,但它提供了 Docker 容器化方案,大大简化了环境配置流程。

LLFF 的核心技术亮点在于其提出的“局部光场融合”算法及配套的规范性采样指南。不同于端到端的黑盒生成,该方法通过构建多平面图像(MPI)表示场景几何与纹理,能够更稳健地处理遮挡关系并保留高频细节。作为 SIGGRAPH 2019 的获奖成果,LLFF 不仅在学术上具有重要参考价值,也为虚拟现实、全景漫游等应用提供了实用的技术基线。

使用场景

一家小型文旅科技公司正在为偏远古迹制作沉浸式数字导览,但现场仅能用手机拍摄少量角度受限的照片。

没有 LLFF 时

  • 必须携带笨重的专业光场相机或进行数百张密集拍摄,现场采集成本极高且耗时。
  • 稀疏的输入照片导致传统建模软件无法重建几何结构,生成的视角存在严重撕裂或模糊。
  • 想要展示文物背面或侧面细节时,因缺乏对应角度图像,只能放弃或手动拙劣修补。
  • 后期渲染新视角需要人工逐帧绘制,制作一段流畅的环绕视频往往需要数天时间。

使用 LLFF 后

  • 仅需围绕古迹拍摄几十张普通手机照片,LLFF 即可基于稀疏输入合成高质量的新视角。
  • 利用局部光场融合技术,即使在拍摄间隔较大时,也能生成边缘清晰、无伪影的连续画面。
  • 能够自由“穿越”到未实际拍摄的任意角度,让观众在屏幕上全方位观察文物细节。
  • 自动化流程可在数小时内输出电影级的环绕漫游视频,大幅缩短从采集到成片的周期。

LLFF 将昂贵的光场采集门槛降低至普通手机摄影,让稀疏照片也能变身可自由探索的 3D 场景。

运行环境要求

操作系统
  • Linux
GPU
  • 必需 NVIDIA GPU(用于运行 CUDA 渲染器和 COLMAP),需安装 nvidia-docker
  • 具体显存大小和 CUDA 版本未在文中明确说明,但需支持 TensorFlow GPU 版本及 COLMAP 的 CUDA 功能
内存

未说明

依赖
notes1. 官方强烈推荐使用 Docker (nvidia-docker) 进行部署,提供了预构建镜像。2. 核心流程依赖 COLMAP 进行运动恢复结构 (SfM) 以获取相机姿态。3. 提供两种渲染方式:基于 CUDA 的快速渲染和基于 TensorFlow 的慢速渲染(约慢 100 倍)。4. 交互式 OpenGL 查看器无法在 Docker 容器内运行,需在宿主机手动编译并安装 GLFW 库。5. 输入图像建议视差不要超过 64 像素,通常使用 20-30 张手持拍摄的图片。
python未说明 (需满足 requirements.txt 及 TensorFlow 兼容性)
TensorFlow
COLMAP
ffmpeg
CUDA Toolkit
libglfw3-dev (可选,用于 OpenGL 查看器)
LLFF hero image

快速开始





本地光场融合

项目 | 视频 | 论文

基于稀疏输入图像进行新视图合成的 TensorFlow 实现。

本地光场融合:具有指导性采样准则的实用视图合成
Ben Mildenhall*1, Pratul Srinivasan*1, Rodrigo Ortiz-Cayon2, Nima Khademi Kalantari3, Ravi Ramamoorthi4, Ren Ng1, Abhishek Kar2
1加州大学伯克利分校,2Fyusion 公司,3德克萨斯农工大学,4加州大学圣地亚哥分校
*表示共同第一作者
发表于 SIGGRAPH 2019

目录

安装速览:设置并渲染一个演示场景

首先安装 docker安装指南)和 nvidia-docker安装指南)。

在根目录下运行以下命令以下载预训练检查点、拉取 Docker 镜像,并执行代码以在一个示例输入数据集上生成 MPI 和渲染输出视频:

bash download_data.sh
sudo docker pull bmild/tf_colmap
sudo docker tag bmild/tf_colmap tf_colmap
sudo nvidia-docker run --rm --volume /:/host --workdir /host$PWD tf_colmap bash demo.sh

此时应会在 data/testscene/outputs/test_vid.mp4 中生成类似这样的视频:

如果一切正常,那么您就可以开始处理您自己的图像了!运行

sudo nvidia-docker run -it --rm --volume /:/host --workdir /host$PWD tf_colmap

进入 Docker 容器内的 shell,并直接跳转到使用您自己的输入图像进行视图合成一节。

完整安装说明

您可以手动安装所需依赖,也可以使用我们提供的 Dockerfile 构建 Docker 镜像。

无论哪种方式,首先都需要下载本仓库,然后运行 download_data.sh 脚本来下载预训练模型和示例输入数据集:

bash download_data.sh

安装好依赖后,尝试从根目录运行 bash demo.sh。(如果使用 Docker,则在容器内运行。)这应该会生成“安装速览”部分中展示的视频,位于 data/testscene/outputs/test_vid.mp4

手动安装

  • 安装 CUDA、TensorFlow、COLMAP、ffmpeg
  • 安装所需的 Python 包:
pip install -r requirements.txt
  • 可选:在 cuda_renderer/ 目录下运行 make
  • 可选:在 opengl_viewer/ 目录下运行 make。您可能需要安装 GLFW 或其他 OpenGL 库。对于 GLFW:
sudo apt-get install libglfw3-dev

Docker 安装

要在您自己的机器上构建 Docker 镜像,这可能需要 15–30 分钟:

sudo docker build -t tf_colmap:latest .

或者直接下载镜像(约 6GB):

sudo docker pull bmild/tf_colmap
sudo docker tag bmild/tf_colmap tf_colmap

之后,您可以启动容器内的交互式 Shell:

sudo nvidia-docker run -it --rm --volume /:/host --workdir /host$PWD tf_colmap

从这个 Shell 中,仓库中的所有代码都应该可以正常运行(除了 opengl_viewer)。

要在 Docker 容器内运行任意单个命令 <command...>

sudo nvidia-docker run --rm --volume /:/host --workdir /host$PWD tf_colmap <command...>

使用您自己的输入图像进行视图合成

我们的方法接收一组静态场景的图像,将每张图像提升为局部分层表示(MPI),并通过混合由这些 MPI 渲染的局部光场来生成新视图。更多细节请参阅我们的论文。

作为经验法则,您应使用视差不超过约 64 像素的图像(观察靠近相机的物体,确保它在相邻图像之间移动不超过水平视场的约 1/8)。我们的数据集通常包含 20–30 张手持拍摄、大致呈网格状排列的图像。

快速入门:从您的图像压缩包中渲染一段视频

您可以使用 zip2mpis.sh Bash 脚本,快速从您拍摄的输入图像压缩包中渲染出新视图帧和 .mp4 视频。

bash zip2mpis.sh <zipfile> <your_outdir> [--height HEIGHT]

height 是输出视频的高度(以像素为单位)。我们建议使用 360 像素的高度来快速生成结果。

通用分步使用方法

首先创建一个场景基础目录(例如 scenedir/),并将你的图像复制到名为 images/ 的子目录中(例如 scenedir/images)。

1. 恢复相机位姿

此脚本调用 COLMAP 运行运动恢复结构算法,以获取场景的六自由度相机位姿以及近、远深度边界。

python imgs2poses.py <your_scenedir>

2. 生成 MPIs

此脚本使用我们预训练的 TensorFlow 图(请确保它存在于 checkpoints/papermodel 中),根据已定位的图像生成 MPIs。生成的 MPIs 将保存在 <your_mpidir> 目录中,该目录将由脚本自动创建。

python imgs2mpis.py <your_scenedir> <your_mpidir> \
    [--checkpoint CHECKPOINT] \
    [--factor FACTOR] [--width WIDTH] [--height HEIGHT] [--numplanes NUMPLANES] \
    [--disps] [--psvs] 

你应最多设置 factorwidthheight 中的一个来确定输出 MPI 分辨率(factor 会将输入图像尺寸按整数倍缩小,例如 2、4、8;而 heightwidth 则直接将输入图像缩放到指定的高度或宽度)。numplanes 默认为 32。checkpoint 默认设置为下载的检查点。

示例用法:

python imgs2mpis.py scenedir scenedir/mpis --height 360

3. 渲染新视角

你可以生成一组新视角的相机位姿并渲染成视频,或者在我们的交互式 OpenGL 查看器中加载保存的 MPIs。

生成新视图路径的位姿

首先,通过调用以下命令生成平滑的新视图路径:

python imgs2renderpath.py <your_scenedir> <your_posefile> \
	[--x_axis] [--y_axis] [--z_axis] [--circle][--spiral]

<your_posefile> 是脚本将创建的输出 .txt 文件的路径,其中包含用于渲染新视角的相机位姿。五个可选参数指定了相机的运动轨迹。x/y/z-axis 选项分别沿相机的三个轴做直线运动,“circle” 是在相机平面内绕圈运动,“spiral” 则是在绕圈的同时沿 z 轴上下移动。

示例用法:

python imgs2renderpath.py scenedir scenedir/spiral_path.txt --spiral

这些路径轨迹的生成代码可在 llff/math/pose_math.py 中找到。

使用 CUDA 渲染视频

你可以在 cuda_renderer/ 目录下通过运行 make 来构建此工具。

该工具利用 CUDA 渲染视频。需指定输出视频的高度(以像素为单位;-1 表示与 MPI 相同分辨率)、裁剪视频边缘的因子(默认为 1.0,即不裁剪)以及保存的 MP4 文件的压缩质量(crf 值;默认为 18,0 表示无损,12–28 为合理范围)。

./cuda_renderer mpidir <your_posefile> <your_videofile> height crop crf

<your_videofile> 是 FFmpeg 将写入的视频文件路径。

示例用法:

./cuda_renderer scenedir/mpis scenedir/spiral_path.txt scenedir/spiral_render.mp4 -1 0.8 18

使用 Tensorflow 渲染视频

使用 Tensorflow 渲染视频(速度约为 CUDA 渲染器的 1/100)。可选地,指定每次渲染时混合多少个 MPIs(默认为 5)以及裁剪视频边缘的因子(默认为 1.0,即不裁剪)。

python mpis2video.py <your_mpidir> <your_posefile> videofile [--use_N USE_N] [--crop_factor CROP_FACTOR]

示例用法:

python mpis2video.py scenedir/mpis scenedir/spiral_path.txt scenedir/spiral_render.mp4 --crop_factor 0.8

交互式 OpenGL 查看器

控制方式:

  • ESC 键退出
  • 移动鼠标可在相机平面内平移
  • 点击并拖动可旋转相机
  • 滚动鼠标可调整焦距(缩放)
  • 按下 ‘L’ 键可播放圆形渲染路径动画

OpenGL 查看器无法在 Docker 容器中使用。

你需要安装 OpenGL,尤其是 GLFW:

sudo apt-get install libglfw3-dev

你可以在 opengl_viewer/ 目录下通过运行 make 来构建查看器。

一般使用方法(在 opengl_viewer/ 目录下)是:

./opengl_viewer mpidir

不使用 COLMAP 直接使用自定义位姿

下面我们解释 poses_bounds.npy 文件的格式。该文件存储一个大小为 Nx17 的 NumPy 数组(N 为输入图像的数量)。其加载方式可见此处的三行代码:链接。每行 17 个元素会被重塑为一个 3x5 的位姿矩阵和两个深度值,分别表示从该视角观察到的场景中最接近和最远处的内容。

位姿矩阵是一个 3x4 的相机到世界坐标系的仿射变换,并在其后附加一个 3x1 列向量 [图像高度, 图像宽度, 焦距] 来表示相机的内参(我们假设主点位于图像中心,且 x 和 y 方向的焦距相同)。

旋转部分(相机到世界变换中的前 3x3 块)采用右手坐标系,具体方向如下:从相机视角来看,三个轴分别为 [向下, 向右, 向后],这也可以被视为 [-y, x, z],其中相机视线沿 -z 方向。而更常见的坐标系 [x, y, z] 则对应 [向右, 向上, 向后]。COLMAP 使用的坐标系则是 [向右, 向下, 向前],即 [x, -y, -z]

如果你已经拥有一组 3x4 的相机到世界坐标系位姿、焦距以及近、远深度边界,那么重新创建 poses_bounds.npy 的步骤如下:

  1. 确保你的位姿是相机到世界坐标系的格式,而非世界到相机的格式。
  2. 确保你的旋转矩阵的列向量符合正确的坐标系 [向下, 向右, 向后]
  3. 将每个位姿与 [高度, 宽度, 焦距] 内参向量拼接,得到一个 3x5 的矩阵。
  4. 将这些矩阵展平为 15 个元素,并附加近、远深度值。
  5. 将这些 17 元素的向量堆叠成一个 Nx17 的矩阵,然后使用 np.save 将其保存为 poses_bounds.npy,存放在场景的基础目录中(与 images/ 目录同级)。

以上内容应能解释 COLMAP 后的位姿处理过程

故障排除

  • PyramidCU::GenerateFeatureList: an illegal memory access was encountered: 某些机器配置可能会导致运行 imgs2poses.py 脚本时出现问题。 解决方法之一是设置环境变量 CUDA_VISIBLE_DEVICES。如果问题仍然存在,请尝试取消注释 这一行,以阻止 COLMAP 使用 GPU 提取图像特征。
  • 黑屏: 在最新版本的 macOS 中,OpenGL 在窗口被拖动或调整大小之前会初始化一个黑屏上下文。如果遇到此问题,请将窗口拖动到其他位置。
  • COLMAP 失败: 如果出现“无法注册,正在尝试另一张图像”的提示,你可能需要调整 COLMAP 的优化参数,或拍摄更多场景图像。详情请参阅 此处

引用

如果您觉得本文对您的研究有帮助,请引用以下论文。

@article{mildenhall2019llff,
  title={局部光场融合:基于指导性采样准则的实用视图合成},
  author={本·米尔登霍尔、普拉图尔·P·斯里尼瓦桑、罗德里戈·奥尔蒂斯-卡永、尼玛·哈德米·卡兰塔里、拉维·拉马穆尔蒂、任·吴、阿比谢克·卡尔},
  journal={ACM 图形学汇刊(TOG)},
  year={2019},
}

常见问题

相似工具推荐

openclaw

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

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

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

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

158.1k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

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

108.3k|★★☆☆☆|6天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架