这个代码库包含了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>

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


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


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


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。


选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。


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


最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。


像人一样思考的AI智能体
imini 是一款超 级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。


AI数字人视频创作平台
Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号