这个代码库包含了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/log
train
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辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、 音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号