
人工智能深度学习计算机视觉预训练点云【免费下载链接】dust3rDUSt3R: Geometric 3D Vision Made Easy项目地址https://gitcode.com/GitHub_Trending/du/dust3r点击查看免费下载本文以 DUSt3R 仓库中 datasets_preprocess/habitat/README.md 为核心指南完整讲解如何借助 Habitat-Sim 模拟器从零生成可供 DUSt3R 训练的合成室内场景数据从 conda 环境搭建、场景与元数据下载到调用 preprocess_habitat.py 并行渲染多视图裁剪、再用 find_scenes.py 切分训练/验证场景列表并落到 dust3r/datasets/habitat.py 数据加载器讲清整条数据生产链路的每一步。读完本文你将能独立复现 Habitat 合成数据集的预处理流程理解渲染器内部的投影、深度与位姿输出原理并把生成的数据接入 DUSt3R 训练管线。Habitat 数据在 DUSt3R 中的定位DUSt3R 的训练依赖多类室内外真实与合成数据集见项目根 README.md 的 Training → Datasets 小节其中 Habitat-Sim 是唯一的纯合成室内数据来源。它基于真实三维网格场景HM3D、ScanNet、ReplicaCAD 等为每个视角提供精确已知的相机内参与 cam2world 位姿、稠密深度和彩色图像天然规避了真实数据中相机位姿标定误差非常适合作为训练集与验证集。在 training.py 中可以看到 Habitat 的实际接入方式例如 224 分辨率版本--train_dataset 100_000 Habitat(1_000_000, splittrain, aug_crop16, resolution224, transformColorJitter) ... --test_datasetHabitat(1_000, splitval, resolution224, seed777) ...以及 512 分辨率多尺度训练版本resolution[(512, 384), (512, 336), ...]。也就是说find_scenes.py生成的Habitat_{size}_scenes_train.txt/Habitat_{size}_scenes_val.txt直接决定了训练时能加载多少场景。第一步创建 conda 环境两种方式推荐使用 conda 直接安装预编译的 Habitat-Sim官方提供两个分支方式 Aconda 预编译安装python 3.8conda create -n habitat python3.8 habitat-sim0.2.1 headless2.0 -c aihabitat -c conda-forge conda active habitat conda install pytorch -c pytorch pip install opencv-python tqdm方式 B源码编译安装应对 EGL 报错如果安装或运行时出现For headless systems, compile with --headless for EGL support这类错误说明预编译包与当前无头headless环境不匹配需要从源码编译git clone --branch stable https://github.com/facebookresearch/habitat-sim.git cd habitat-sim conda create -n habitat python3.9 cmake3.14.0 conda activate habitat pip install . -v conda install pytorch -c pytorch pip install opencv-python tqdm两种方式安装完核心依赖后都需要pytorch渲染与后续数据加载共用、opencv-python用于 EXR 深度图读写与重投影插值和tqdm进度显示。注意预编译方式指定了headless2.0EGL 无头渲染支持源码方式则依赖编译时自动开启 headless 支持两者都面向无显示器的服务器场景。第二步下载 Habitat-Sim 场景Habitat-Sim 官方仓库的 DATASETS.md 提供了各场景数据集的下载入口。官方预处理脚本使用了以下四类场景目录名必须与$SCENES_DIR下的结构一致$SCENES_DIR/ ├──hm3d/ ├──gibson/ ├──habitat-test-scenes/ ├──ReplicaCAD_baked_lighting/ └──scannet/其中hm3dHM3D 高精度室内网格、habitat-test-scenes官方测试小场景、scannetScanNet 重建网格直接可用ReplicaCAD 需特别注意Habitat-Sim 数据集安装器装下的版本可能与 ReplicaCAD baked lighting烘培光照 不兼容官方 README 明确提示应从 HuggingFace 获取正确的场景数据仓库内 git 地址为git clone githf.co:datasets/ai-habitat/ReplicaCAD_baked_lighting。场景目录结构之所以要严格对齐是因为 preprocess_habitat.py 会读取每个metadata.json中的scene与scene_dataset_config_file字段若scene_dataset_config_file为空则把scenes_dir metadata[scene]拼成完整场景路径否则场景路径取metadata[scene]相对路径配置文件取scenes_dir scene_dataset_config_file。第三步下载渲染元数据metadata元数据文件描述了在哪个场景、哪个位置、以怎样的相机内参拍摄哪些视角是渲染脚本的输入指令。官方提供了一个 5 视角、512×512 裁剪分辨率的元数据包# 下载地址可在项目根 README.md 的 Training → Links → Habitat metadata 条目中获取 wget 下载地址 -O habitat_5views_v1_512x512_metadata.tar.gz tar -xvzf habitat_5views_v1_512x512_metadata.tar.gz解压后得到$METADATA_DIR其内部按场景组织每个子目录下都有一个metadata.json。该文件的顶层结构可从 preprocess_habitat.py 反推出来scene/scene_dataset_config_file定位三维场景view_batches字典键为batch_label值为另一层字典键为view_label最内层view_params含size必须等于crop_resolution、camera_intrinsics、R_cam2world、t_cam2world等相机参数。第四步渲染场景preprocess_habitat.py环境变量与运行方式在datasets_preprocess/habitat/目录下设置环境变量并运行export METADATA_DIR/path/to/habitat/5views_v1_512x512_metadata export SCENES_DIR/path/to/habitat/data/scene_datasets/ export OUTPUT_DIRdata/habitat_processed cd datasets_preprocess/habitat/ export PYTHONPATH$(pwd)这里PYTHONPATH$(pwd)是必需的脚本通过from habitat_renderer import multiview_crop_generator导入渲染器模块见 preprocess_habitat.py不设置会报 ModuleNotFoundError。打印各场景的渲染命令行不实际渲染python preprocess_habitat.py --scenes_dir$SCENES_DIR --metadata_dir$METADATA_DIR --output_dir$OUTPUT_DIR当未传--metadata_filename时preprocess_habitat.py 会递归遍历metadata_dir下所有**/metadata.json为每个场景拼接一条独立命令并打印到 stdout例如python preprocess_habitat.py --metadata_filename/path/.../metadata.json --metadata_dir$METADATA_DIR --scenes_dir$SCENES_DIR --output_dir$OUTPUT_DIR/scene相对路径用 GNU Parallel 并行执行全部命令python preprocess_habitat.py --scenes_dir$SCENES_DIR --metadata_dir$METADATA_DIR --output_dir$OUTPUT_DIR | parallel -j 16-j 16表示 16 个渲染进程并行。渲染器在设计上支持多进程每个进程内执行懒初始化_lazy_initialization见 habitat_sim_envmaps_renderer.py即首次渲染时才创建habitat_sim.Simulator并通过np.random.seed()为每个进程生成独立随机种子避免多进程间冲突。命令行参数详解参数必填说明--metadata_dir是存放metadata.json的根目录未指定--metadata_filename时遍历此目录--scenes_dir是场景数据集根目录对应$SCENES_DIR--output_dir是渲染输出根目录对应$OUTPUT_DIR--metadata_filename否指定单个metadata.json缺省时脚本进入打印命令行模式--crop_resolution否默认[512, 512]最终输出的裁剪图像分辨率元数据中的size必须与之相等否则断言失败--equirectangular_resolution否默认None环境地图equirectangular分辨率None时自动取(4*max_res, 8*max_res)即裁剪分辨率的 4 倍宽高比 1:2--fix_existing_dataset否默认False若输出目录已存在且此参数为 False直接抛FileExistsError保护数据设为 True 可跳过已生成的*_camera_params.json续跑见 preprocess_habitat.py其中equirectangular_resolution的默认值逻辑在 preprocess_habitat.py先max_res max(crop_resolution)再取(4*max_res, 8*max_res)。以 512×512 裁剪为例环境地图渲染为 2048×4096 的超高分辨率从而保证后续任意视角裁剪都有足够采样密度。每个场景输出的三类文件对每个batch_label_view_label脚本输出三个文件命名规则见 preprocess_habitat.py${label}.jpeg彩色裁剪图${label}_depth.exr深度图16-bit half 浮点 EXR通过cv2.imwrite(..., [cv2.IMWRITE_EXR_TYPE, cv2.IMWRITE_EXR_TYPE_HALF])写出${label}_camera_params.json相机参数包含camera_intrinsicsOpenCV 约定内参矩阵、size、R_cam2world、t_cam2world。脚本在文件头部设置了os.environ[OPENCV_IO_ENABLE_OPENEXR] 1preprocess_habitat.py这是 OpenCV 读写 OpenEXR 深度图的前置开关后续训练加载器 dust3r/datasets/habitat.py 也做了同样的设置两处保持一致。渲染与裁剪的底层原理单场景渲染链路可拆为两层① 环境地图渲染层HabitatEnvironmentMapRendererhabitat_sim_envmaps_renderer.py 在模拟器中注册两类传感器6 面 cubemapcolor_cubemap_{left,front,right,back,up,down}90° FOV和一张 equirectangular 全景图color_equirectangular/depth_equirectangular。有两个实现细节值得注意Habitat 的深度传感器内部由 cubemap 变形得到其值并非到视点的真实距离因此渲染器维护了equirectangular_depth_scale_factors 1.0 / max(|ray|)的逐像素缩放因子在render_viewpoint中对深度图做修正habitat_sim_envmaps_renderer.py 与 #L148-L164场景必须先有可用的导航网格navmesh。若未显式加载 navmesh 且自动重算失败会抛出NoNaviguableSpaceErrorhabitat_sim_envmaps_renderer.py提示该场景无可导航采样位置。② 多视图裁剪层HabitatMultiviewCropsmultiview_crop_generator.py 基于上面渲染出的全景图为每个元数据视角做全景图 → 透视相机的重新投影render_viewpoint_data输出ViewpointData(colormap, distancemap, pointmap, position)其中pointmap由全景射线与距离图逐像素相乘并加上相机位置得到envmap_rays * distancemap position对应 multiview_crop_generator.pyextract_cropped_camera用RemapProjection将彩色图、距离图、点图重投影到目标透视相机彩色用INTER_LINEAR线性插值距离/点图用INTER_NEAREST最近邻边界模式BORDER_WRAP为抑制重投影的锯齿伪影默认启用像素抖动pixel_jittering_iterations5, jittering_noise_level1.0对输出射线加微小随机抖动生成多张重投影图并取平均projections_conversions.py最终把距离图除以射线长度转换为真实深度图cropped_depthmap cropped_distancemap / ||output_rays||multiview_crop_generator.py相机内参在 OpenCV 与 COLMAP 约定间转换colmap_to_opencv_intrinsics/opencv_to_colmap_intrinsics见 projections.py本质是主点平移 0.5 像素最终序列化为camera_params.json。投影模型方面projections.py 定义了EquirectangularProjection经纬度映射、PerspectiveProjectionOpenCV 约定小孔成像与RotatedProjection叠加旋转的投影组合全景射线与透视射线都从这些模型 unproject/project 得到保证了全景重投影与内参序列化的几何一致性。第五步生成场景列表find_scenes.py渲染完成后用find_scenes.py扫描输出目录并切分训练/验证场景python find_scenes.py --root $OUTPUT_DIR即python3 find_scenes.py --root data/habitat_processed工作流程与参数find_scenes.py 的核心逻辑场景发现若不存在Habitat_all_scenes.txt会交互询问parsing sub-folders to find scenes? (y/n)然后递归扫描目录以_1_depth.exr文件为场景标识每个子场景有 5 个视角索引从 1 开始故用第 1 个视角的深度文件定位把每个子场景的相对路径写入Habitat_all_scenes.txt缓存场景聚合按os.path.split把子场景聚合成场景 → 子场景列表的映射随机切分固定随机种子np.random.seed(777)find_scenes.py洗牌后取前 1/10 作为验证场景、其余 9/10 作为训练场景find_scenes.py导出列表按--n_scenes默认[1_000, 10_000, 100_000, 1_000_000]生成Habitat_{n}_scenes_train.txt与Habitat_{n//10}_scenes_val.txtfind_scenes.py。若场景总数不足n则跳过对应文件。命令行参数--root必填渲染输出根目录、--n_scenes可选可传多个整数默认1_000 10_000 100_000 1_000_000。这些 txt 文件正是 dust3r/datasets/habitat.py 加载场景列表的依据文件名中的{size}与{split}与训练配置中的Habitat(1_000_000, splittrain, ...)一一对应。第六步接入训练数据加载器生成的数据可直接被 dust3r/datasets/habitat.py 消费该加载器的设计印证了前面各环节的输出约定文件解析_load_one_view按f{key}_{view_index}.jpeg、f{key}_{view_index}_depth.exr、f{key}_{view_index}_camera_params.json读取三件套从 JSON 中恢复内参与位姿并把R_cam2world/t_cam2world组装成 4×4camera_posedust3r/datasets/habitat.py多视图采样每个场景含 5 个视角instances list(range(1, 5))采样策略是视图 0 与任一随机视图配对因为视图 0 与其他所有视角都有重叠视野dust3r/datasets/habitat.py若某视角位姿含非有限值渲染损坏自动顺延到下一个视角重试可视化验证文件末尾的if __name__ __main__段可直接运行用SceneViz把点云、相机、图像叠加展示快速检查生成数据的几何一致性。常见问题与注意事项无导航区域渲染时抛出NoNaviguableSpaceError说明场景 navmesh 加载/重算失败需要为对应场景准备正确的 navmesh 或更换场景ReplicaCAD 光照版本务必使用ReplicaCAD_baked_lighting数据集避免预装版本光照与场景配置不兼容输出目录冲突默认output_dir已存在会直接报错续跑需显式传--fix_existing_dataset并行度与显存parallel -j 16的并行数需要按服务器 GPU/CPU 资源调整每个进程独立实例化一个 Habitat-Sim 模拟器许可证本仓库预处理相关脚本均标注CC BY-NC-SA 4.0非商业用途见各脚本文件头注释且 Habitat 场景数据本身也需遵守其各自来源的许可条款详见根 README.md 各数据集的许可说明。至此从 conda 环境、场景与元数据下载、全景渲染与透视裁剪、场景列表切分到训练加载器的完整闭环已打通。按上述步骤操作即可复现 DUSt3R 官方的 Habitat 合成训练数据管线为后续训练或数据增强提供高质量的多视图室内数据源。赞分享人工智能深度学习计算机视觉预训练点云【免费下载链接】dust3rDUSt3R: Geometric 3D Vision Made Easy项目地址https://gitcode.com/GitHub_Trending/du/dust3r点击查看免费下载相关推荐LMFlow 微调全流程指南环境搭建、数据集准备与 Full / LISA / LoRA 训练实战LMFlow 微调全流程指南环境搭建、数据集准备与 Full / LISA / LoRA 训练实战 本文以 README.md https://link.gi人工智能大模型微调模型评测强化学习多模态Habitat-Matterport3D数据集完整配置手册从零开始搭建AI训练环境Habitat Matterport3D数据集完整配置手册从零开始搭建AI训练环境 Habitat Matterport3D数据集是目前最大的室内空间3D扫描StyleGAN2 官方 TensorFlow 实现完全指南环境搭建、图像生成、数据集准备与训练评估StyleGAN2 官方 TensorFlow 实现完全指南环境搭建、图像生成、数据集准备与训练评估 本篇指南基于 NVIDIA 官方开源的 StyleGAN人工智能深度学习计算机视觉媒体生成预训练上一篇Riot.js 常见问题解决方案下一篇ppInk完全指南Windows上最强大的免费屏幕标注工具入门创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考