这个代码库包含了LandMark项目的源代码,这是一个开创性的大规模3D真实世界城市场景建模和渲染系统。该项目是基于GridNeRF(CVPR23)构建的。更多详细信息请参考论文和项目页面。
在GridNeRF的基础上,LandMark通过并行化、优化算子和内核,以及改进算法,大幅提高了训练和渲染效率。主要包括:
现在,您可以训练和渲染自己的LandMark模型,尽情发挥创意。
您的点赞和对社区的贡献正是我们所需要的!
LandMark目前支持以下功能:
GridNeRF顺序模型训练
GridNeRF并行模型训练
GridNeRF混合并行训练(模型并行和DDP训练)
GridNeRF顺序模型渲染
训练和渲染都支持Pytorch DDP
支持MatrixCity数据集
实时分布式渲染系统
支持动态获取的参数加载器,可支持无限区域
强烈建议阅读文档,了解我们并行加速和动态获取策略的实现细节。
您必须拥有一张NVIDIA GPU卡,并在系统上安装了CUDA。这个库已经在单个和多个A100 GPU上进行了测试。
LandMark代码库包含配置文件,帮助您创建合适的环境
git clone https://github.com/InternLandMark/LandMark.git
cd ./LandMark
export PYTHONPATH=$YOUR_PREFIX_PATH/LandMark/:$PYTHONPATH
我们建议使用Conda来管理复杂的依赖关系:
cd LandMark
conda create --name landmark -y python=3.9.16
conda activate landmark
python -m pip install --upgrade pip
这个库已经在Python版本3.9.16上进行了测试。
使用以下命令一次性安装带CUDA的pytorch:
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
这个库已经在CUDA版本11.6上进行了测试。
我们提供了requirements.txt文件,方便您轻松设置环境。
pip install -r requirements.txt
出于保密要求,我们使用的原生数据集(如上所示)不会公开。为了理想地复现结果,强烈推荐使用MatrixCity数据集。关于如何复现的更多细节,请参考以下章节:MatrixCity数据集。我们已经为MatrixCity数据集准备了调优后的配置文件和专用的数据加载器。
从真实世界捕获的大规模场景最适合我们的方法。我们建议使用一栋建筑物、一个知名地标甚至一个小镇的数据集。准备大约250~300张重建目标的图像。确保有足够的重叠。
按照以下结构重新组织您的数据集:
images/文件夹包含训练集和测试集的所有图像。<br>
transforms_xxx.json中支持多焦距和单焦距格式的相机姿态。<br>
### 单焦距示例 ###
{
"camera_model": "SIMPLE_PINHOLE",
"fl_x": 427,
"fl_y": 427,
"w": 547,
"h": 365,
"frames": [
{
"file_path": "./images/image_0.png",
"transform_matrix": []
}
]
}
### 多焦距示例 ###
{
"camera_model": "SIMPLE_PINHOLE",
"frames": [
{
"fl_x": 1116,
"fl_y": 1116,
"w": 1420,
"h": 1065,
"file_path": "./images/image_0.png",
"transform_matrix": []
}
]
}
像其他NeRF方法一样,使用COLMAP提取姿态和sparse点云模型。
然后使用以下命令转换姿态数据:
python app/tools/colmap2nerf.py --recon_dir data/your_dataset/sparse/0 --output_dir data/your_dataset
在your_dataset/文件夹中将生成支持单焦距的transforms_train.json和transforms_test.json文件。<br>
参考app/tools/config_parser.py和app/tools/dataloader/city_dataset.py获取帮助。<br>
我们提供了一个配置文件confs/city.txt作为示例,帮助您初始化实验。<br>
有许多参数可供自定义。为了更好地理解,我们将它们分为四种类型。<br>
这里展示了一些重要的参数。在继续之前,别忘了指定与路径相关的参数。<br>
experiment
LandMark/datasets来管理所有数据集"city"LandMark/logtrain
render
model
关于参数的更多详细信息,请参考LandMark/app/config_parser.py<br>
调整--ub和--lb参数以在实验中获得理想结果。
现在是时候训练您自己的LandMark模型了:
python app/trainer.py --config confs/city.txt
训练检查点和图像默认将保存在LandMark/log/your_expname中。
训练过程完成后,可以进行独立的渲染测试:
python app/renderer.py --config confs/city.txt --ckpt=log/your_expname/your_expname.th
渲染结果默认将保存在LandMark/log/your_expname/imgs_test_all中。
训练器和渲染器都支持pytorch DDP。<br> 要使用DDP进行训练,请使用以下命令:
python -m torch.distributed.launch --nproc_per_node=GPU数量 app/trainer.py --config confs/city.txt
要使用DDP进行渲染,请使用以下命令:
python -m torch.distributed.launch --nproc_per_node=GPU数量 app/renderer.py --config confs/city.txt --ckpt=log/your_expname/your_expname.th
可能需要正确设置一些与多GPU环境相关的参数。根据您的实际环境指定GPU数量。
例如:
N倍DDP训练[2,2]配置训练gridnerf模型,并且使用的GPU总数为N,将启用N/(2x2)倍DDP训练。目前支持三种类型的模型并行策略进行训练:
值得指出的是,所有这些策略都适用于超过2000张图像和几英亩面积的大规模场景重建。
要在实验中包含这些并行特性,只需使用像 confs/city_multi_branch_parallel.txt 这样的配置文件。在配置文件中设置好路径参数后,就可以训练即插即用的分支并行模型了:
python -m torch.distributed.launch --nproc_per_node=GPU数量 app/trainer.py --config confs/city_multi_branch_parallel.txt
使用DDP训练分支并行模型和顺序模型在使用上几乎没有区别,但训练效率得到了极大提升。尤其是在大规模场景的重建任务中,我们的并行策略在加速整个训练过程方面表现出稳定的适应能力。
训练后要用并行模型进行渲染,使用与顺序模型相同的命令
python app/renderer.py --config confs/city_multi_branch_parallel.txt --ckpt=log/你的实验名称/你的实验名称.th
完全支持出色的MatrixCity数据集。confs/matrixcity 中为 block_1 和 block_2 提供了专门的文件。<br>
建议从 OpenXLab 或 百度网盘(密码:hqnn)下载数据集。<br>
需要下载以下文件并按原目录结构组织:
MatrixCity/small_city/aerial/train/block_1.tar
MatrixCity/small_city/aerial/train/block_2.tar
MatrixCity/small_city/aerial/test/block_1_test.tar
MatrixCity/small_city/aerial/test/block_2_test.tar
MatrixCity/small_city/aerial/pose/block_A/
下载后,需要使用 tar -xf [tar文件名] 解压tar文件
最后,需要在配置文件中正确设置 dataroot、datadir 和 dataset_name,如下所示:
dataroot = 你的MATRIXCITY文件夹路径/small_city/aerial/pose
datadir = block_A
dataset_name = matrixcity
对于单GPU训练和渲染,只需使用:
# 训练
python app/trainer.py --config confs/matrixcity/matrixcity_2block_multi.txt
# 渲染
python app/renderer.py --config confs/matrixcity/matrixcity_2block_multi.txt --ckpt log/matrix_city_block_1+2_multi/matrix_city_block_1+2_multi.th
对于多GPU DDP训练和渲染:
# 训练
python -m torch.distributed.launch --nproc_per_node=GPU数量 app/trainer.py --config confs/matrixcity/matrixcity_2block_multi.txt
# 单GPU渲染
python app/renderer.py --config confs/matrixcity/matrixcity_2block_multi.txt --ckpt log/matrix_city_block_1+2_multi/matrix_city_block_1+2_multi.th
# 多GPU渲染
python -m torch.distributed.launch --nproc_per_node=GPU数量 app/renderer.py --config confs/matrixcity/matrixcity_2block_multi.txt --ckpt log/matrix_city_block_1+2_multi/matrix_city_block_1+2_multi.th
其他训练并行方法也可用:
python -m torch.distributed.launch --nproc_per_node=GPU数量 app/trainer.py --config confs/matrixcity_2block_multi_branch_parallel.txt
为了让用户快速上手,我们提供了两个检查点,它们基于以下两个命令训练:
# matrix_city_block_1+2_multi.th
python app/trainer.py --config confs/matrixcity/matrixcity_2block_multi.txt
# matrix_city_block_1+2_multi_lowquality.th
python app/trainer.py --config confs/matrixcity/matrixcity_2block_lowquality.txt
如果你想跳过训练阶段,可以直接下载它们并使用以下命令进行渲染。
# matrix_city_block_1+2_multi.th
python app/renderer.py --config confs/matrixcity/matrixcity_2block_multi.txt --ckpt 你的目录/matrix_city_block_1+2_multi.th
# matrix_city_block_1+2_multi_lowquality.th
python app/renderer.py --config confs/matrixcity/matrixcity_2block_lowquality.txt --ckpt 你的目录/matrix_city_block_1+2_multi_lowquality.th
支持超过100平方公里场景和每秒超过30帧的大规模实时分布式渲染系统。为了实现大面积和快速渲染,我们使用了多种优化。更多详情请阅读 dist_render/README.md
主要工作来自上海人工智能实验室的LandMark团队。<br>
<img src="https://yellow-cdn.veclightyear.com/835a84d5/605d62ce-1715-4e7f-a711-a11bff1e92de.jpg?raw=true" width="450">以下是我们尊敬的贡献者:
<a href="https://github.com/InternLandMark/LandMark/graphs/contributors"> <img src="https://contrib.rocks/image?repo=InternLandMark/LandMark" /> </a>

免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据 安全,有效提升写作效率和论文质量。


AI 一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企 业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号