[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-cvg--nice-slam":3,"tool-cvg--nice-slam":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",160411,2,"2026-04-18T23:33:24",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":76,"owner_twitter":76,"owner_website":77,"owner_url":78,"languages":79,"stars":88,"forks":89,"last_commit_at":90,"license":91,"difficulty_score":10,"env_os":92,"env_gpu":93,"env_ram":94,"env_deps":95,"category_tags":102,"github_topics":104,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":113,"updated_at":114,"faqs":115,"releases":146},9518,"cvg\u002Fnice-slam","nice-slam","[CVPR'22] NICE-SLAM: Neural Implicit Scalable Encoding for SLAM","NICE-SLAM 是一款基于神经隐式表示的先进 SLAM（即时定位与地图构建）系统，专为大规模室内场景设计。它核心解决了传统方法在处理大空间时难以兼顾高精度稠密几何重建与稳定相机追踪的难题。通过引入可扩展的神经编码机制，NICE-SLAM 能够利用神经网络连续地表达场景几何，从而在无需预先划分网格的情况下，生成细节丰富且一致的三维地图，并实时估算相机轨迹。\n\n该工具的独特亮点在于其“神经隐式可扩展编码”技术，这使得它在面对复杂或广阔的室内环境（如公寓、办公楼）时，依然能保持极高的重建精度和鲁棒性，效果显著优于许多传统基于体素或点云的方案。项目代码开源，提供了完整的安装、演示及可视化工具，支持在 ScanNet、Replica 等主流数据集上复现优异结果。\n\nNICE-SLAM 主要面向计算机视觉领域的研究人员、SLAM 算法开发者以及从事三维重建相关的工程师。对于希望探索神经渲染与 SLAM 结合前沿技术，或需要高质量室内场景数字化解决方案的专业人士而言，这是一个极具参考价值和实用性的开源项目。普通用户若对三维技术原理感兴趣，也可通过其提供的可视化演示直观感受其强大的重建能力。","\u003C!-- PROJECT LOGO -->\n\n\u003Cp align=\"center\">\n\n  \u003Ch1 align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcvg_nice-slam_readme_f6fc75e24156.png\" width=\"60\">NICE-SLAM: Neural Implicit Scalable Encoding for SLAM\u003C\u002Fh1>\n  \u003Cp align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fzzh2000.github.io\">\u003Cstrong>Zihan Zhu*\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"https:\u002F\u002Fpengsongyou.github.io\">\u003Cstrong>Songyou Peng*\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"http:\u002F\u002Fpeople.inf.ethz.ch\u002Fvlarsson\u002F\">\u003Cstrong>Viktor Larsson\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"http:\u002F\u002Fwww.cad.zju.edu.cn\u002Fhome\u002Fweiweixu\u002Fweiweixu_en.htm\">\u003Cstrong>Weiwei Xu\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"http:\u002F\u002Fwww.cad.zju.edu.cn\u002Fhome\u002Fbao\u002F\">\u003Cstrong>Hujun Bao\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003Cbr>\n    \u003Ca href=\"https:\u002F\u002Fzhpcui.github.io\u002F\">\u003Cstrong>Zhaopeng Cui\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"http:\u002F\u002Fpeople.inf.ethz.ch\u002Fmoswald\u002F\">\u003Cstrong>Martin R. Oswald\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"https:\u002F\u002Fpeople.inf.ethz.ch\u002Fpomarc\u002F\">\u003Cstrong>Marc Pollefeys\u003C\u002Fstrong>\u003C\u002Fa>\n  \u003C\u002Fp>\n  \u003Cp align=\"center\">\u003Cstrong>(* Equal Contribution)\u003C\u002Fstrong>\u003C\u002Fp>\n  \u003Ch2 align=\"center\">CVPR 2022\u003C\u002Fh2>\n  \u003Ch3 align=\"center\">\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2112.12130\">Paper\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fyoutu.be\u002FV5hYTz5os0M\">Video\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fpengsongyou.github.io\u002Fnice-slam\">Project Page\u003C\u002Fa>\u003C\u002Fh3>\n  \u003Cdiv align=\"center\">\u003C\u002Fdiv>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Ca href=\"\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcvg_nice-slam_readme_13693df24879.gif\" alt=\"Logo\" width=\"80%\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\nNICE-SLAM produces accurate dense geometry and camera tracking on large-scale indoor scenes.\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n(The black \u002F red lines are the ground truth \u002F predicted camera trajectory)\n\u003C\u002Fp>\n\u003Cbr>\n\n\n\n\u003Cbr>\n\n\u003C!-- TABLE OF CONTENTS -->\n\u003Cdetails open=\"open\" style='padding: 10px; border-radius:5px 30px 30px 5px; border-style: solid; border-width: 1px;'>\n  \u003Csummary>Table of Contents\u003C\u002Fsummary>\n  \u003Col>\n    \u003Cli>\n      \u003Ca href=\"#installation\">Installation\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#visualizing-nice-slam-results\">Visualization\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#demo\">Demo\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#run\">Run\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#imap\">iMAP*\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#evaluation\">Evaluation\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#acknowledgement\">Acknowledgement\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#citation\">Citation\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#contact\">Contact\u003C\u002Fa>\n    \u003C\u002Fli>\n  \u003C\u002Fol>\n\u003C\u002Fdetails>\n\n\n## Installation\n\nFirst you have to make sure that you have all dependencies in place.\nThe simplest way to do so, is to use [anaconda](https:\u002F\u002Fwww.anaconda.com\u002F). \n\nYou can create an anaconda environment called `nice-slam`. For linux, you need to install **libopenexr-dev** before creating the environment.\n```bash\nsudo apt-get install libopenexr-dev\n    \nconda env create -f environment.yaml\nconda activate nice-slam\n```\n\n## Visualizing NICE-SLAM Results\nWe provide the results of NICE-SLAM ready for download. You can run our **interactive visualizer** as following. \n\n### Self-captured Apartment\nTo visualize our results on the self-captured apartment, as shown in the teaser:\n```bash\nbash scripts\u002Fdownload_vis_apartment.sh\npython visualizer.py configs\u002FApartment\u002Fapartment.yaml --output output\u002Fvis\u002FApartment\n```\n\n**Note for users from China:**  If you encounter slow speed in downloading, check in all the `scripts\u002Fdownload_*.sh` scripts, where we also provide the 和彩云 links for you to download manually.\n\n### ScanNet\n```bash\nbash scripts\u002Fdownload_vis_scene0000.sh\npython visualizer.py configs\u002FScanNet\u002Fscene0000.yaml --output output\u002Fvis\u002Fscannet\u002Fscans\u002Fscene0000_00\n```\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcvg_nice-slam_readme_173e56f29e5f.gif\" width=\"60%\" \u002F>\n\u003C\u002Fp>\n\nYou can find the results of NICE-SLAM on other scenes in ScanNet [here](https:\u002F\u002Fcvg-data.inf.ethz.ch\u002Fnice-slam\u002Fvis\u002Fscannet\u002F).\n\n### Replica\n```bash\nbash scripts\u002Fdownload_vis_room1.sh\npython visualizer.py configs\u002FReplica\u002Froom1.yaml --output output\u002Fvis\u002FReplica\u002Froom1\n```\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcvg_nice-slam_readme_9b96b6fea17c.gif\" width=\"70%\" \u002F>\n\u003C\u002Fp\n\nYou can find the results of NICE-SLAM on other scenes in Replica [here](https:\u002F\u002Fcvg-data.inf.ethz.ch\u002Fnice-slam\u002Fvis\u002FReplica\u002F).\n\n### Interactive Visualizer Usage\nThe black trajectory indicates the ground truth trajectory, abd the red is trajectory of NICE-SLAM. \n- Press `Ctrl+0` for grey mesh rendering. \n- Press `Ctrl+1` for textured mesh rendering. \n- Press `Ctrl+9` for normal rendering. \n- Press `L` to turn off\u002Fon lighting.  \n### Command line arguments\n- `--output $OUTPUT_FOLDER` output folder (overwrite the output folder in the config file)  \n- `--input_folder $INPUT_FOLDER` input folder (overwrite the input folder in the config file) \n- `--save_rendering` save rendering video to `vis.mp4` in the output folder\n- `--no_gt_traj` do not show ground truth trajectory\n- `--imap` visualize results of iMAP*\n- `--vis_input_frame` opens up a viewer to show input frames. Note: you need to download the dataset first. See the Run section below.\n\n## Demo\n\nHere you can run NICE-SLAM yourself on a short ScanNet sequence with 500 frames. \n\nFirst, download the demo data as below and the data is saved into the `.\u002FDatasets\u002FDemo` folder. \n```bash\nbash scripts\u002Fdownload_demo.sh\n```\nNext, run NICE-SLAM. It takes a few minutes with ~5G GPU memory.\n```bash\npython -W ignore run.py configs\u002FDemo\u002Fdemo.yaml\n```\nFinally, run the following command to visualize.\n```bash\npython visualizer.py configs\u002FDemo\u002Fdemo.yaml \n```\n\n**NOTE:** This is for demonstration only, its configuration\u002Fperformance may be different from our paper.\n\n\n## Run\n\n### Self-captured Apartment\nDownload the data as below and the data is saved into the `.\u002FDatasets\u002FApartment` folder. \n```bash\nbash scripts\u002Fdownload_apartment.sh\n```\nNext, run NICE-SLAM:\n```bash\npython -W ignore run.py configs\u002FApartment\u002Fapartment.yaml\n```\n\n### ScanNet\nPlease follow the data downloading procedure on [ScanNet](http:\u002F\u002Fwww.scan-net.org\u002F) website, and extract color\u002Fdepth frames from the `.sens` file using this [code](https:\u002F\u002Fgithub.com\u002FScanNet\u002FScanNet\u002Fblob\u002Fmaster\u002FSensReader\u002Fpython\u002Freader.py).\n\n\u003Cdetails>\n  \u003Csummary>[Directory structure of ScanNet (click to expand)]\u003C\u002Fsummary>\n  \n  DATAROOT is `.\u002FDatasets` by default. If a sequence (`sceneXXXX_XX`) is stored in other places, please change the `input_folder` path in the config file or in the command line.\n\n```\n  DATAROOT\n  └── scannet\n      └── scans\n          └── scene0000_00\n              └── frames\n                  ├── color\n                  │   ├── 0.jpg\n                  │   ├── 1.jpg\n                  │   ├── ...\n                  │   └── ...\n                  ├── depth\n                  │   ├── 0.png\n                  │   ├── 1.png\n                  │   ├── ...\n                  │   └── ...\n                  ├── intrinsic\n                  └── pose\n                      ├── 0.txt\n                      ├── 1.txt\n                      ├── ...\n                      └── ...\n\n```\n\u003C\u002Fdetails>\n\nOnce the data is downloaded and set up properly, you can run NICE-SLAM:\n```bash\npython -W ignore run.py configs\u002FScanNet\u002Fscene0000.yaml\n```\n\n### Replica\nDownload the data as below and the data is saved into the `.\u002FDatasets\u002FReplica` folder. Note that the Replica data is generated by the authors of iMAP, so please cite iMAP if you use the data.\n```bash\nbash scripts\u002Fdownload_replica.sh\n```\nand you can run NICE-SLAM:\n```bash\npython -W ignore run.py configs\u002FReplica\u002Froom0.yaml\n```\nThe mesh for evaluation is saved as `$OUTPUT_FOLDER\u002Fmesh\u002Ffinal_mesh_eval_rec.ply`, where the unseen regions are culled using all frames.\n\n\n### TUM RGB-D\nDownload the data as below and the data is saved into the `.\u002FDatasets\u002FTUM-RGBD` folder\n```bash\nbash scripts\u002Fdownload_tum.sh\n```\nNow run NICE-SLAM:\n```bash\npython -W ignore run.py configs\u002FTUM_RGBD\u002Ffreiburg1_desk.yaml\n```\n### Co-Fusion\n\nFirst, download the dataset. This script should download and unpack the data automatically into the `.\u002FDatasets\u002FCoFusion` folder.\n```bash\nbash scripts\u002Fdownload_cofusion.sh\n```\nRun NICE-SLAM:\n```bash\npython -W ignore run.py configs\u002FCoFusion\u002Froom4.yaml\n```\n\n### Use your own RGB-D sequence from Kinect Azure \n\n\u003Cdetails>\n  \u003Csummary>[Details (click to expand)]\u003C\u002Fsummary>\n      \n1. Please first follow this [guide](http:\u002F\u002Fwww.open3d.org\u002Fdocs\u002Frelease\u002Ftutorial\u002Fsensor\u002Fazure_kinect.html#install-the-azure-kinect-sdk) to record a sequence and extract aligned color and depth images. (Remember to use `--align_depth_to_color` for `azure_kinect_recorder.py`)\n  \n  \n    DATAROOT is `.\u002FDatasets` in default, if a sequence (`sceneXX`) is stored in other places, please change the \"input_folder\" path in the config file or in the command line.\n\n    ```\n      DATAROOT\n      └── Own\n          └── scene0\n              ├── color\n              │   ├── 00000.jpg\n              │   ├── 00001.jpg\n              │   ├── 00002.jpg\n              │   ├── ...\n              │   └── ...\n              ├── config.json\n              ├── depth\n              │   ├── 00000.png\n              │   ├── 00001.png\n              │   ├── 00002.png\n              │   ├── ...\n              │   └── ...\n              └── intrinsic.json\n\n    ```\n\n\n2. Prepare `.yaml` file based on the `configs\u002FOwn\u002Fsample.yaml`. Change the camera intrinsics in the config file based on `intrinsic.json`. You can also get the intrinsics of the depth camera via other tools such as MATLAB.\n3. Specify the bound of the scene. If no ground truth camera pose is given, we construct world coordinates on the first frame. The X-axis is from left to right, Y-axis is from down to up, Z-axis is from front to back. \n4. Change the `input_folder` path and\u002For the `output` path in the config file or the command line.\n5. Run NICE-SLAM.\n```bash\npython -W ignore run.py configs\u002FOwn\u002Fsample.yaml\n```\n\n**(Optional but highly Recommended)** If you don't want to specify the bound of the scene or manually change the config file. You can first run the Redwood tool in [Open3D](http:\u002F\u002Fwww.open3d.org\u002F) and then run NICE-SLAM. Here we provide steps for the whole pipeline, beginning from recording Azure Kinect videos. (Ubuntu 18.04 and above is recommended.)\n1. Download the Open3D repository.\n```bash\nbash scripts\u002Fdownload_open3d.sh\n```\n2. Record and extract frames.\n```bash\n# specify scene ID\nsceneid=0\ncd 3rdparty\u002FOpen3D-0.13.0\u002Fexamples\u002Fpython\u002Freconstruction_system\u002F\n# record and save to .mkv file\npython sensors\u002Fazure_kinect_recorder.py --align_depth_to_color --output scene$sceneid.mkv\n# extract frames\npython sensors\u002Fazure_kinect_mkv_reader.py --input  scene$sceneid.mkv --output dataset\u002Fscene$sceneid\n```\n3. Run reconstruction.\n```bash\npython run_system.py dataset\u002Fscene$sceneid\u002Fconfig.json --make --register --refine --integrate \n# back to main folder\ncd ..\u002F..\u002F..\u002F..\u002F..\u002F\n```\n4. Prepare the config file.\n```bash\npython src\u002Ftools\u002Fprep_own_data.py --scene_folder 3rdparty\u002FOpen3D-0.13.0\u002Fexamples\u002Fpython\u002Freconstruction_system\u002Fdataset\u002Fscene$sceneid --ouput_config configs\u002FOwn\u002Fscene$sceneid.yaml\n```\n5. Run NICE-SLAM.\n```bash\npython -W ignore run.py configs\u002FOwn\u002Fscene$sceneid.yaml\n```\n\u003C\u002Fdetails>\n\n## iMAP*\nWe also provide our re-implementation of iMAP (iMAP*) for use. If you use the code, please cite both the original iMAP paper and NICE-SLAM.\n\n### Usage\niMAP* shares a majority part of the code with NICE-SLAM. To run iMAP*, simply use `*_imap.yaml` in the config file and also add the argument `--imap` in the command line. For example, to run iMAP* on Replica room0:\n```bash\npython -W ignore run.py configs\u002FReplica\u002Froom0_imap.yaml --imap \n```\nTo use our interactive visualizer:\n```bash\npython visualizer.py configs\u002FReplica\u002Froom0_imap.yaml --imap \n```\nTo evaluate ATE:\n```bash\npython src\u002Ftools\u002Feval_ate.py configs\u002FReplica\u002Froom0_imap.yaml --imap \n```\n\n\u003Cdetails>\n  \u003Csummary>[\u003Cstrong>Differences between iMAP* and the original iMAP\u003C\u002Fstrong> (click to expand)]\u003C\u002Fsummary>\n\n#### Keyframe pose optimization during mapping\nWe do not optimize the selected keyframes' poses for iMAP*, because optimizing them usually leads to worse performance. One possible reason is that since their keyframes are selected globally, and many of them do not have overlapping regions especially when the scene gets larger. Overlap is a prerequisite for bundle adjustment (BA). For NICE-SLAM, we only select overlapping keyframes within a small window (local BA), which works well in all scenes. You can still turn on the keyframe pose optimization during mapping for iMAP* by enabling `BA` in the config file.\n\n#### Active sampling\nWe disable the active sampling in iMAP*, because in our experiments we observe that it does not help to improve the performance while brings additional computational overhead. \n\nFor the image active sampling, in each iteration the original iMAP uniformly samples 200 pixels in the entire image. Next, they divide this image into an 8x8 grid and calculate the probability distribution from the rendering losses. This means that if the resolution of an image is 1200x680 (Replica), only around 3 pixels are sampled to calculate the distribution for a 150x85 grid patch. This is not too much different from simple uniform sampling. Therefore, during mapping we use the same pixel sampling strategy as NICE-SLAM for iMAP*: uniform sampling, but even 4x more pixels than reported in the iMAP paper.\n\nFor the keyframe active sampling, the original iMAP requires rendering depth and color images for all keyframes to get the loss distribution, which is expensive and we again did not find it very helpful. Instead, as done in NICE-SLAM, iMAP* randomly samples keyframes from the keyframe list. We also let iMAP* optimize for 4x more iterations than NICE-SLAM, but their performance is still inferior. \n\n#### Keyframe selection\nFor fair comparison, we use the same keyframe selection method in iMAP* as in NICE-SLAM: add one keyframe to the keyframe list every 50 frames.\n\n\u003C\u002Fdetails>\n\n## Evaluation\n\n### Average Trajectory Error\nTo evaluate the average trajectory error. Run the command below with the corresponding config file:\n```bash\npython src\u002Ftools\u002Feval_ate.py configs\u002FReplica\u002Froom0.yaml\n```\n\n### Reconstruction Error\nTo evaluate the reconstruction error, first download the ground truth Replica meshes where unseen region have been culled.\n```bash\nbash scripts\u002Fdownload_cull_replica_mesh.sh\n```\nThen run the command below (same for NICE-SLAM and iMAP*). The 2D metric requires rendering of 1000 depth images, which will take some time (~9 minutes). Use `-2d` to enable 2D metric. Use `-3d` to enable 3D metric.\n```bash\n# assign any output_folder and gt mesh you like, here is just an example\nOUTPUT_FOLDER=output\u002FReplica\u002Froom0\nGT_MESH=cull_replica_mesh\u002Froom0.ply\npython src\u002Ftools\u002Feval_recon.py --rec_mesh $OUTPUT_FOLDER\u002Fmesh\u002Ffinal_mesh_eval_rec.ply --gt_mesh $GT_MESH -2d -3d\n```\n\nWe also provide code to cull the mesh given camera poses. Here we take culling of ground truth mesh of Replica room0 as an example.\n```bash\npython src\u002Ftools\u002Fcull_mesh.py --input_mesh Datasets\u002FReplica\u002Froom0_mesh.ply --traj Datasets\u002FReplica\u002Froom0\u002Ftraj.txt --output_mesh cull_replica_mesh\u002Froom0.ply\n```\n\n\u003Cdetails>\n  \u003Csummary>[For iMAP* evaluation (click to expand)]\u003C\u002Fsummary>\n\n  As discussed in many recent papers, e.g. UNISURF\u002FVolSDF\u002FNeuS, manual thresholding the volume density during marching cubes might be needed. Moreover, we find out there exist scaling differences, possibly because of the reason discussed in [NeuS](https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.10689). Therefore, ICP with scale is needed. You can use the [ICP tool](https:\u002F\u002Fwww.cloudcompare.org\u002Fdoc\u002Fwiki\u002Findex.php?title=ICP) in [CloudCompare](https:\u002F\u002Fwww.danielgm.net\u002Fcc\u002F) with default configuration with scaling enabled. \n\u003C\u002Fdetails>\n\n## Acknowledgement\nWe adapted some codes from some awesome repositories including [convolutional_occupancy_networks](https:\u002F\u002Fgithub.com\u002Fautonomousvision\u002Fconvolutional_occupancy_networks), [nerf-pytorch](https:\u002F\u002Fgithub.com\u002Fyenchenlin\u002Fnerf-pytorch), [lietorch](https:\u002F\u002Fgithub.com\u002Fprinceton-vl\u002Flietorch), and [DIST-Renderer](https:\u002F\u002Fgithub.com\u002FB1ueber2y\u002FDIST-Renderer). Thanks for making codes public available. We also thank [Edgar Sucar](https:\u002F\u002Fedgarsucar.github.io\u002F) for allowing us to make the Replica Dataset available.\n\n## Citation\n\nIf you find our code or paper useful, please cite\n```bibtex\n@inproceedings{Zhu2022CVPR,\n  author    = {Zhu, Zihan and Peng, Songyou and Larsson, Viktor and Xu, Weiwei and Bao, Hujun and Cui, Zhaopeng and Oswald, Martin R. and Pollefeys, Marc},\n  title     = {NICE-SLAM: Neural Implicit Scalable Encoding for SLAM},\n  booktitle = {Proceedings of the IEEE\u002FCVF Conference on Computer Vision and Pattern Recognition (CVPR)},\n  year      = {2022}\n}\n```\n## Contact\nContact [Zihan Zhu](mailto:zhuzihan2000@gmail.com) and [Songyou Peng](mailto:songyou.pp@gmail.com) for questions, comments and reporting bugs.\n","\u003C!-- 项目Logo -->\n\n\u003Cp align=\"center\">\n\n  \u003Ch1 align=\"center\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcvg_nice-slam_readme_f6fc75e24156.png\" width=\"60\">NICE-SLAM：用于SLAM的神经隐式可扩展编码\u003C\u002Fh1>\n  \u003Cp align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fzzh2000.github.io\">\u003Cstrong>朱志涵*\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"https:\u002F\u002Fpengsongyou.github.io\">\u003Cstrong>彭松友*\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"http:\u002F\u002Fpeople.inf.ethz.ch\u002Fvlarsson\u002F\">\u003Cstrong>维克托·拉尔森\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"http:\u002F\u002Fwww.cad.zju.edu.cn\u002Fhome\u002Fweiweixu\u002Fweiweixu_en.htm\">\u003Cstrong>徐伟伟\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"http:\u002F\u002Fwww.cad.zju.edu.cn\u002Fhome\u002Fbao\u002F\">\u003Cstrong>鲍虎军\u003C\u002Fstrong>\u003C\u002Fa>\n    \u003Cbr>\n    \u003Ca href=\"https:\u002F\u002Fzhpcui.github.io\u002F\">\u003Cstrong>崔兆鹏\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"http:\u002F\u002Fpeople.inf.ethz.ch\u002Fmoswald\u002F\">\u003Cstrong>马丁·R·奥斯瓦尔德\u003C\u002Fstrong>\u003C\u002Fa>\n    ·\n    \u003Ca href=\"https:\u002F\u002Fpeople.inf.ethz.ch\u002Fpomarc\u002F\">\u003Cstrong>马克·波列费斯\u003C\u002Fstrong>\u003C\u002Fa>\n  \u003C\u002Fp>\n  \u003Cp align=\"center\">\u003Cstrong>(* 等贡献)\u003C\u002Fstrong>\u003C\u002Fp>\n  \u003Ch2 align=\"center\">CVPR 2022\u003C\u002Fh2>\n  \u003Ch3 align=\"center\">\u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2112.12130\">论文\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fyoutu.be\u002FV5hYTz5os0M\">视频\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fpengsongyou.github.io\u002Fnice-slam\">项目页面\u003C\u002Fa>\u003C\u002Fh3>\n  \u003Cdiv align=\"center\">\u003C\u002Fdiv>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Ca href=\"\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcvg_nice-slam_readme_13693df24879.gif\" alt=\"Logo\" width=\"80%\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\nNICE-SLAM能够在大规模室内场景中生成精确的稠密几何和相机跟踪结果。\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n（黑色\u002F红色线条分别为真实轨迹\u002F预测轨迹）\n\u003C\u002Fp>\n\u003Cbr>\n\n\n\n\u003Cbr>\n\n\u003C!-- 目录 -->\n\u003Cdetails open=\"open\" style='padding: 10px; border-radius:5px 30px 30px 5px; border-style: solid; border-width: 1px;'>\n  \u003Csummary>目录\u003C\u002Fsummary>\n  \u003Col>\n    \u003Cli>\n      \u003Ca href=\"#installation\">安装\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#visualizing-nice-slam-results\">可视化\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#demo\">演示\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#run\">运行\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#imap\">iMAP*\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#evaluation\">评估\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#acknowledgement\">致谢\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#citation\">引用\u003C\u002Fa>\n    \u003C\u002Fli>\n    \u003Cli>\n      \u003Ca href=\"#contact\">联系方式\u003C\u002Fa>\n    \u003C\u002Fli>\n  \u003C\u002Fol>\n\u003C\u002Fdetails>\n\n\n## 安装\n\n首先，您需要确保已安装所有依赖项。最简单的方法是使用[Anaconda](https:\u002F\u002Fwww.anaconda.com\u002F)。\n\n您可以创建一个名为`nice-slam`的Anaconda环境。对于Linux系统，在创建环境之前，您需要先安装**libopenexr-dev**。\n```bash\nsudo apt-get install libopenexr-dev\n    \nconda env create -f environment.yaml\nconda activate nice-slam\n```\n\n## 可视化NICE-SLAM结果\n我们提供了可供下载的NICE-SLAM结果。您可以按照以下步骤运行我们的**交互式可视化工具**。\n\n### 自拍公寓\n要可视化我们在预告片中展示的自拍公寓结果：\n```bash\nbash scripts\u002Fdownload_vis_apartment.sh\npython visualizer.py configs\u002FApartment\u002Fapartment.yaml --output output\u002Fvis\u002FApartment\n```\n\n**中国用户注意：** 如果下载速度较慢，请检查所有`scripts\u002Fdownload_*.sh`脚本，其中我们也提供了和彩云链接，供您手动下载。\n\n### ScanNet\n```bash\nbash scripts\u002Fdownload_vis_scene0000.sh\npython visualizer.py configs\u002FScanNet\u002Fscene0000.yaml --output output\u002Fvis\u002Fscannet\u002Fscans\u002Fscene0000_00\n```\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcvg_nice-slam_readme_173e56f29e5f.gif\" width=\"60%\" \u002F>\n\u003C\u002Fp>\n\n您可以在[这里](https:\u002F\u002Fcvg-data.inf.ethz.ch\u002Fnice-slam\u002Fvis\u002Fscannet\u002F)找到NICE-SLAM在ScanNet其他场景上的结果。\n\n### Replica\n```bash\nbash scripts\u002Fdownload_vis_room1.sh\npython visualizer.py configs\u002FReplica\u002Froom1.yaml --output output\u002Fvis\u002FReplica\u002Froom1\n```\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcvg_nice-slam_readme_9b96b6fea17c.gif\" width=\"70%\" \u002F>\n\u003C\u002Fp>\n\n您可以在[这里](https:\u002F\u002Fcvg-data.inf.ethz.ch\u002Fnice-slam\u002Fvis\u002FReplica\u002F)找到NICE-SLAM在Replica其他场景上的结果。\n\n### 交互式可视化工具使用说明\n黑色轨迹表示真实轨迹，红色轨迹表示NICE-SLAM的轨迹。\n- 按`Ctrl+0`切换为灰度网格渲染。\n- 按`Ctrl+1`切换为纹理网格渲染。\n- 按`Ctrl+9`切换为法线渲染。\n- 按`L`键打开或关闭光照。\n### 命令行参数\n- `--output $OUTPUT_FOLDER` 输出文件夹（覆盖配置文件中的输出文件夹）\n- `--input_folder $INPUT_FOLDER` 输入文件夹（覆盖配置文件中的输入文件夹）\n- `--save_rendering` 将渲染视频保存到输出文件夹中的`vis.mp4`\n- `--no_gt_traj` 不显示真实轨迹\n- `--imap` 可视化iMAP*的结果\n- `--vis_input_frame` 打开查看器以显示输入帧。注意：您需要先下载数据集。请参阅下面的“运行”部分。\n\n## 演示\n\n在这里，您可以自行运行NICE-SLAM，处理一段包含500帧的简短ScanNet序列。\n\n首先，按如下方式下载演示数据，数据将保存到`.\u002FDatasets\u002FDemo`文件夹中。\n```bash\nbash scripts\u002Fdownload_demo.sh\n```\n接下来，运行NICE-SLAM。这需要几分钟时间，大约占用5G显存。\n```bash\npython -W ignore run.py configs\u002FDemo\u002Fdemo.yaml\n```\n最后，运行以下命令进行可视化。\n```bash\npython visualizer.py configs\u002FDemo\u002Fdemo.yaml \n```\n\n**注意：** 这仅用于演示目的，其配置\u002F性能可能与我们的论文有所不同。\n\n\n## 运行\n\n### 自拍公寓\n按如下方式下载数据，数据将保存到`.\u002FDatasets\u002FApartment`文件夹中。\n```bash\nbash scripts\u002Fdownload_apartment.sh\n```\n接下来，运行NICE-SLAM：\n```bash\npython -W ignore run.py configs\u002FApartment\u002Fapartment.yaml\n```\n\n### ScanNet\n请按照[ScanNet](http:\u002F\u002Fwww.scan-net.org\u002F)网站上的数据下载流程操作，并使用此[代码](https:\u002F\u002Fgithub.com\u002FScanNet\u002FScanNet\u002Fblob\u002Fmaster\u002FSensReader\u002Fpython\u002Freader.py)从`.sens`文件中提取彩色\u002F深度帧。\n\n\u003Cdetails>\n  \u003Csummary>[ScanNet目录结构（点击展开）]\u003C\u002Fsummary>\n  \n  默认情况下，DATAROOT为`.\u002FDatasets`。如果某个序列（`sceneXXXX_XX`）存储在其他位置，请在配置文件或命令行中更改`input_folder`路径。\n\n```\n  DATAROOT\n  └── scannet\n      └── scans\n          └── scene0000_00\n              └── frames\n                  ├── color\n                  │   ├── 0.jpg\n                  │   ├── 1.jpg\n                  │   ├── ...\n                  │   └── ...\n                  ├── depth\n                  │   ├── 0.png\n                  │   ├── 1.png\n                  │   ├── ...\n                  │   └── ...\n                  ├── intrinsic\n                  └── pose\n                      ├── 0.txt\n                      ├── 1.txt\n                      ├── ...\n                      └── ...\n\n```\n\u003C\u002Fdetails>\n\n一旦数据下载并正确设置完毕，您就可以运行NICE-SLAM：\n```bash\npython -W ignore run.py configs\u002FScanNet\u002Fscene0000.yaml\n```\n\n### Replica\n按如下方式下载数据，数据将保存到 `.\u002FDatasets\u002FReplica` 文件夹中。请注意，Replica 数据由 iMAP 的作者生成，因此如果您使用该数据，请引用 iMAP。\n```bash\nbash scripts\u002Fdownload_replica.sh\n```\n然后您可以运行 NICE-SLAM：\n```bash\npython -W ignore run.py configs\u002FReplica\u002Froom0.yaml\n```\n用于评估的网格文件保存为 `$OUTPUT_FOLDER\u002Fmesh\u002Ffinal_mesh_eval_rec.ply`，其中未见区域已通过所有帧剔除掉。\n\n\n### TUM RGB-D\n按如下方式下载数据，数据将保存到 `.\u002FDatasets\u002FTUM-RGBD` 文件夹中：\n```bash\nbash scripts\u002Fdownload_tum.sh\n```\n现在运行 NICE-SLAM：\n```bash\npython -W ignore run.py configs\u002FTUM_RGBD\u002Ffreiburg1_desk.yaml\n```\n\n### Co-Fusion\n\n首先，下载数据集。此脚本应自动将数据下载并解压到 `.\u002FDatasets\u002FCoFusion` 文件夹中：\n```bash\nbash scripts\u002Fdownload_cofusion.sh\n```\n运行 NICE-SLAM：\n```bash\npython -W ignore run.py configs\u002FCoFusion\u002Froom4.yaml\n```\n\n### 使用您自己的 Kinect Azure RGB-D 序列\n\n\u003Cdetails>\n  \u003Csummary>[详细信息（点击展开）]\u003C\u002Fsummary>\n      \n1. 请先按照此 [指南](http:\u002F\u002Fwww.open3d.org\u002Fdocs\u002Frelease\u002Ftutorial\u002Fsensor\u002Fazure_kinect.html#install-the-azure-kinect-sdk) 录制序列并提取对齐的颜色和深度图像。（请记住在 `azure_kinect_recorder.py` 中使用 `--align_depth_to_color`）\n  \n  \n    默认情况下，DATAROOT 是 `.\u002FDatasets`。如果某个序列 (`sceneXX`) 存储在其他位置，请在配置文件或命令行中更改 `input_folder` 路径。\n\n    ```\n      DATAROOT\n      └── Own\n          └── scene0\n              ├── color\n              │   ├── 00000.jpg\n              │   ├── 00001.jpg\n              │   ├── 00002.jpg\n              │   ├── ...\n              │   └── ...\n              ├── config.json\n              ├── depth\n              │   ├── 00000.png\n              │   ├── 00001.png\n              │   ├── 00002.png\n              │   ├── ...\n              │   └── ...\n              └── intrinsic.json\n\n    ```\n\n\n2. 根据 `configs\u002FOwn\u002Fsample.yaml` 准备 `.yaml` 文件。根据 `intrinsic.json` 更改配置文件中的相机内参。您也可以使用 MATLAB 等其他工具获取深度相机的内参。\n3. 指定场景的边界。如果没有给定真实的相机位姿，我们将在第一帧上构建世界坐标系。X 轴从左到右，Y 轴从下到上，Z 轴从前到后。\n4. 在配置文件或命令行中更改 `input_folder` 路径和\u002F或 `output` 路径。\n5. 运行 NICE-SLAM。\n```bash\npython -W ignore run.py configs\u002FOwn\u002Fsample.yaml\n```\n\n**(可选但强烈推荐)** 如果您不想指定场景的边界或手动更改配置文件，可以先在 [Open3D](http:\u002F\u002Fwww.open3d.org\u002F) 中运行 Redwood 工具，然后再运行 NICE-SLAM。这里我们提供了从录制 Azure Kinect 视频开始的完整流程。（建议使用 Ubuntu 18.04 或更高版本）\n1. 下载 Open3D 仓库。\n```bash\nbash scripts\u002Fdownload_open3d.sh\n```\n2. 录制并提取帧。\n```bash\n# 指定场景 ID\nsceneid=0\ncd 3rdparty\u002FOpen3D-0.13.0\u002Fexamples\u002Fpython\u002Freconstruction_system\u002F\n# 录制并保存为 .mkv 文件\npython sensors\u002Fazure_kinect_recorder.py --align_depth_to_color --output scene$sceneid.mkv\n# 提取帧\npython sensors\u002Fazure_kinect_mkv_reader.py --input  scene$sceneid.mkv --output dataset\u002Fscene$sceneid\n```\n3. 运行重建。\n```bash\npython run_system.py dataset\u002Fscene$sceneid\u002Fconfig.json --make --register --refine --integrate \n# 返回主文件夹\ncd ..\u002F..\u002F..\u002F..\u002F..\u002F\n```\n4. 准备配置文件。\n```bash\npython src\u002Ftools\u002Fprep_own_data.py --scene_folder 3rdparty\u002FOpen3D-0.13.0\u002Fexamples\u002Fpython\u002Freconstruction_system\u002Fdataset\u002Fscene$sceneid --ouput_config configs\u002FOwn\u002Fscene$sceneid.yaml\n```\n5. 运行 NICE-SLAM。\n```bash\npython -W ignore run.py configs\u002FOwn\u002Fscene$sceneid.yaml\n```\n\u003C\u002Fdetails>\n\n## iMAP*\n我们还提供了 iMAP 的重新实现版本 (iMAP*) 供使用。如果您使用该代码，请同时引用原始 iMAP 论文和 NICE-SLAM。\n\n### 使用方法\niMAP* 与 NICE-SLAM 共享大部分代码。要运行 iMAP*，只需在配置文件中使用 `*_imap.yaml`，并在命令行中添加 `--imap` 参数。例如，在 Replica room0 上运行 iMAP*：\n```bash\npython -W ignore run.py configs\u002FReplica\u002Froom0_imap.yaml --imap \n```\n要使用我们的交互式可视化工具：\n```bash\npython visualizer.py configs\u002FReplica\u002Froom0_imap.yaml --imap \n```\n要评估 ATE：\n```bash\npython src\u002Ftools\u002Feval_ate.py configs\u002FReplica\u002Froom0_imap.yaml --imap \n```\n\n\u003Cdetails>\n  \u003Csummary>[\u003Cstrong>iMAP* 与原始 iMAP 之间的差异\u003C\u002Fstrong>（点击展开）]\u003C\u002Fsummary>\n\n#### 映射过程中关键帧位姿优化\n我们不对 iMAP* 中选定的关键帧位姿进行优化，因为优化通常会导致性能下降。一个可能的原因是，由于这些关键帧是全局选择的，许多关键帧之间没有重叠区域，尤其是在场景较大时。而重叠是光束法平差 (BA) 的前提条件。对于 NICE-SLAM，我们只选择小窗口内的重叠关键帧进行局部 BA，这在所有场景中都表现良好。您仍然可以通过在配置文件中启用 `BA` 来开启 iMAP* 的映射过程中关键帧位姿优化。\n\n#### 主动采样\n我们禁用了 iMAP* 中的主动采样，因为在我们的实验中发现它不仅无法提升性能，还会带来额外的计算开销。\n\n对于图像主动采样，原始 iMAP 在每次迭代中会均匀地从整张图像中采样 200 个像素。然后，他们将图像划分为 8x8 的网格，并根据渲染损失计算概率分布。这意味着，如果一张图像的分辨率为 1200x680（Replica），那么在一块 150x85 的网格区域内，仅约 3 个像素会被用来计算分布。这与简单的均匀采样差别不大。因此，在映射过程中，我们对 iMAP* 使用与 NICE-SLAM 相同的像素采样策略：均匀采样，但采样的像素数量比 iMAP 论文中报告的还要多 4 倍。\n\n对于关键帧主动采样，原始 iMAP 需要为所有关键帧渲染深度和彩色图像以获得损失分布，这非常昂贵，而且我们再次发现它并没有太大帮助。相反，正如 NICE-SLAM 所做的那样，iMAP* 会从关键帧列表中随机抽取关键帧。我们还让 iMAP* 比 NICE-SLAM 多优化 4 倍的迭代次数，但其性能仍然较差。\n\n#### 关键帧选择\n为了公平比较，我们在 iMAP* 中采用了与 NICE-SLAM 相同的关键帧选择方法：每 50 帧向关键帧列表中添加一个关键帧。\n\n\u003C\u002Fdetails>\n\n## 评估\n\n### 平均轨迹误差\n要评估平均轨迹误差，请使用相应的配置文件运行以下命令：\n```bash\npython src\u002Ftools\u002Feval_ate.py configs\u002FReplica\u002Froom0.yaml\n```\n\n### 重建误差\n为了评估重建误差，首先下载已剔除未见区域的真实标签Replica网格。\n```bash\nbash scripts\u002Fdownload_cull_replica_mesh.sh\n```\n然后运行以下命令（NICE-SLAM和iMAP*相同）。2D指标需要渲染1000张深度图像，这将花费一些时间（约9分钟）。使用 `-2d` 开启2D指标。使用 `-3d` 开启3D指标。\n```bash\n# 可以任意指定输出文件夹和真实标签网格，这里仅作为示例\nOUTPUT_FOLDER=output\u002FReplica\u002Froom0\nGT_MESH=cull_replica_mesh\u002Froom0.ply\npython src\u002Ftools\u002Feval_recon.py --rec_mesh $OUTPUT_FOLDER\u002Fmesh\u002Ffinal_mesh_eval_rec.ply --gt_mesh $GT_MESH -2d -3d\n```\n\n我们还提供了根据相机位姿剔除网格的代码。这里以剔除Replica room0的真实标签网格为例。\n```bash\npython src\u002Ftools\u002Fcull_mesh.py --input_mesh Datasets\u002FReplica\u002Froom0_mesh.ply --traj Datasets\u002FReplica\u002Froom0\u002Ftraj.txt --output_mesh cull_replica_mesh\u002Froom0.ply\n```\n\n\u003Cdetails>\n  \u003Csummary>[iMAP* 评估说明（点击展开）]\u003C\u002Fsummary>\n\n正如许多近期论文所讨论的，例如UNISURF\u002FVolSDF\u002FNeuS，在使用Marching Cubes算法时可能需要手动设置体密度阈值。此外，我们发现存在尺度差异，这可能是由于[NeuS](https:\u002F\u002Farxiv.org\u002Fabs\u002F2106.10689)中讨论的原因所致。因此，需要进行带尺度的ICP配准。您可以使用[CloudCompare](https:\u002F\u002Fwww.danielgm.net\u002Fcc\u002F)中的[ICP工具](https:\u002F\u002Fwww.cloudcompare.org\u002Fdoc\u002Fwiki\u002Findex.php?title=ICP)，并启用缩放功能，采用默认配置。\n\u003C\u002Fdetails>\n\n## 致谢\n我们借鉴了一些优秀开源仓库中的代码，包括[convolutional_occupancy_networks](https:\u002F\u002Fgithub.com\u002Fautonomousvision\u002Fconvolutional_occupancy_networks)、[nerf-pytorch](https:\u002F\u002Fgithub.com\u002Fyenchenlin\u002Fnerf-pytorch)、[lietorch](https:\u002F\u002Fgithub.com\u002Fprinceton-vl\u002Flietorch)以及[DIST-Renderer](https:\u002F\u002Fgithub.com\u002FB1ueber2y\u002FDIST-Renderer)。感谢这些项目作者公开分享代码。同时，我们也感谢[Edgar Sucar](https:\u002F\u002Fedgarsucar.github.io\u002F)允许我们使用Replica数据集。\n\n## 引用\n如果您认为我们的代码或论文有用，请引用以下文献：\n```bibtex\n@inproceedings{Zhu2022CVPR,\n  author    = {Zhu, Zihan and Peng, Songyou and Larsson, Viktor and Xu, Weiwei and Bao, Hujun and Cui, Zhaopeng and Oswald, Martin R. and Pollefeys, Marc},\n  title     = {NICE-SLAM: Neural Implicit Scalable Encoding for SLAM},\n  booktitle = {IEEE\u002FCVF计算机视觉与模式识别会议（CVPR）论文集},\n  year      = {2022}\n}\n```\n\n## 联系方式\n如有任何问题、意见或错误报告，请联系[Zihan Zhu](mailto:zhuzihan2000@gmail.com)和[Songyou Peng](mailto:songyou.pp@gmail.com)。","# NICE-SLAM 快速上手指南\n\nNICE-SLAM (Neural Implicit Scalable Encoding for SLAM) 是一个用于大规模室内场景的神经隐式 SLAM 系统，能够生成高精度的稠密几何重建和相机轨迹跟踪。\n\n## 1. 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux (推荐 Ubuntu 18.04 及以上)\n*   **包管理器**: [Anaconda](https:\u002F\u002Fwww.anaconda.com\u002F) 或 Miniconda\n*   **GPU**: 支持 CUDA 的 NVIDIA 显卡 (运行 Demo 约需 5GB 显存)\n*   **系统依赖**: 安装 `libopenexr-dev` 库\n\n```bash\nsudo apt-get update\nsudo apt-get install libopenexr-dev\n```\n\n## 2. 安装步骤\n\n使用 Conda 创建名为 `nice-slam` 的虚拟环境并安装依赖：\n\n```bash\n# 创建环境\nconda env create -f environment.yaml\n\n# 激活环境\nconda activate nice-slam\n```\n\n> **注意**：如果您在中国大陆地区下载依赖或数据集速度较慢，项目脚本中通常提供了“和彩云”等国内下载链接。请检查 `scripts\u002F` 目录下的 `.sh` 脚本文件，手动下载所需数据。\n\n## 3. 基本使用\n\n### 3.1 运行官方 Demo (ScanNet)\n\n这是最简单的体验方式，无需自行准备数据集。\n\n1.  **下载 Demo 数据** (自动保存至 `.\u002FDatasets\u002FDemo`)：\n    ```bash\n    bash scripts\u002Fdownload_demo.sh\n    ```\n\n2.  **运行 NICE-SLAM**：\n    ```bash\n    python -W ignore run.py configs\u002FDemo\u002Fdemo.yaml\n    ```\n\n3.  **可视化结果**：\n    ```bash\n    python visualizer.py configs\u002FDemo\u002Fdemo.yaml\n    ```\n\n    **可视化操作快捷键**：\n    *   `Ctrl+0`: 灰色网格渲染\n    *   `Ctrl+1`: 纹理网格渲染\n    *   `Ctrl+9`: 法线渲染\n    *   `L`: 开关光照效果\n    *   (黑色轨迹为真值，红色轨迹为 NICE-SLAM 预测结果)\n\n### 3.2 运行其他数据集\n\n项目支持 ScanNet, Replica, TUM RGB-D, Co-Fusion 等数据集。以 **Replica** 为例：\n\n1.  **下载数据**：\n    ```bash\n    bash scripts\u002Fdownload_replica.sh\n    ```\n\n2.  **运行算法**：\n    ```bash\n    python -W ignore run.py configs\u002FReplica\u002Froom0.yaml\n    ```\n\n3.  **可视化**：\n    ```bash\n    python visualizer.py configs\u002FReplica\u002Froom0.yaml\n    ```\n\n### 3.3 使用自定义 Kinect Azure 数据\n\n如果您想使用自己的 RGB-D 序列：\n\n1.  录制视频并提取对齐的颜色\u002F深度帧（参考 Open3D Azure Kinect 教程，务必使用 `--align_depth_to_color`）。\n2.  参照 `configs\u002FOwn\u002Fsample.yaml` 修改配置文件，填入正确的相机内参 (`intrinsic.json`) 和数据路径。\n3.  定义场景边界（若无真值位姿，系统将基于第一帧构建坐标系）。\n4.  运行：\n    ```bash\n    python -W ignore run.py configs\u002FOwn\u002Fsample.yaml\n    ```\n\n> **提示**：对于自定义数据，强烈建议先使用 Open3D 的 Redwood 系统进行预处理以自动估算场景边界和初始位姿，具体流程可参考 README 中的 \"Use your own RGB-D sequence from Kinect Azure\" 详细章节。","某机器人研发团队正在为大型室内仓储中心开发自主导航系统，需要构建高精度的三维环境地图并实时追踪移动机器人的位置。\n\n### 没有 nice-slam 时\n- **几何细节丢失严重**：传统稀疏 SLAM 只能生成点云骨架，无法还原货架、管道等物体的连续表面，导致碰撞检测频繁失效。\n- **大场景扩展性差**：随着仓库面积扩大，内存占用呈指数级增长，长距离运行后系统极易因显存溢出而崩溃。\n- **轨迹漂移明显**：在纹理重复或光照变化的走廊区域，相机位姿估计误差累积快，机器人容易迷失方向甚至偏离预定路径。\n- **重建与定位割裂**：通常需要离线单独进行稠密重建，无法在机器人移动过程中同步输出可用于导航的稠密几何信息。\n\n### 使用 nice-slam 后\n- **获得精确稠密几何**：nice-slam 利用神经隐式编码生成连续的网格模型，完美还原货架边缘与复杂结构，大幅提升避障安全性。\n- **支持大规模场景扩展**：其可扩展的编码机制允许系统在超大仓库中稳定运行，内存消耗可控，不再受限于场景尺寸。\n- **高精度实时跟踪**：即使在长走廊或弱纹理区域，nice-slam 也能保持极低的相机轨迹漂移，确保机器人定位始终精准。\n- **建图定位一体化**：实现了边移动边构建稠密地图，无需离线后处理，直接为导航规划提供实时的环境几何数据。\n\nnice-slam 通过神经隐式表示技术，成功解决了大型室内场景中稠密建图与高精度定位难以兼得的行业难题。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcvg_nice-slam_6bee6e95.png","cvg","Computer Vision and Geometry Lab","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fcvg_d85caeeb.png","",null,"http:\u002F\u002Fcvg.ethz.ch","https:\u002F\u002Fgithub.com\u002Fcvg",[80,84],{"name":81,"color":82,"percentage":83},"Python","#3572A5",98.6,{"name":85,"color":86,"percentage":87},"Shell","#89e051",1.4,1572,210,"2026-04-15T13:11:07","Apache-2.0","Linux","必需 NVIDIA GPU，Demo 运行需约 5GB 显存","未说明",{"notes":96,"python":97,"dependencies":98},"1. Linux 用户在创建 conda 环境前必须安装 libopenexr-dev (sudo apt-get install libopenexr-dev)。\n2. 建议使用 anaconda 管理依赖环境。\n3. 支持多种数据集 (ScanNet, Replica, TUM RGB-D, Co-Fusion, Azure Kinect)。\n4. 若使用自定义 Azure Kinect 数据，推荐先使用 Open3D 的 Redwood 工具进行预处理以自动确定场景边界。","通过 conda environment.yaml 定义 (版本未明确)",[99,100,101],"libopenexr-dev","anaconda","Open3D (可选，用于处理自定义数据)",[14,103],"其他",[105,106,107,108,109,110,111,112],"slam","neural-fields","neural-implicit-representations","scalable","implicit-functions","localization","deep-learning","3d-reconstruction","2026-03-27T02:49:30.150509","2026-04-19T15:38:20.815395",[116,121,126,131,136,141],{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},42715,"训练时遇到 'max(): Expected reduction dim...' 错误或渲染损失过大导致中断怎么办？","这通常是因为缺少真实的地面真值（Ground Truth）姿态数据。虽然代码可以在仅使用 RGB 的情况下运行，但效果很差，当损失累积到一定程度模型将无法优化并中断。解决方法是提供真实的姿态数据（如 TUM 数据集格式），这样就能正常运行。","https:\u002F\u002Fgithub.com\u002Fcvg\u002Fnice-slam\u002Fissues\u002F53",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},42716,"NICE-SLAM 的训练时间需要多久？为什么比预期的慢？","NICE-SLAM 同时执行建图（mapping）和跟踪（tracking），并使用类似 NeRF 的体渲染来最小化观测深度和颜色的差异，这个过程计算量较大。例如在 RTX 3090 上运行包含 2000 帧的 Replica 序列可能需要 4-5 小时。这与仅需建图且依赖外部真实姿态的方法（如 BNV-Fusion）不同，NICE-SLAM 侧重于端到端的跟踪能力和新视角合成，因此耗时较长是其设计特性而非错误。","https:\u002F\u002Fgithub.com\u002Fcvg\u002Fnice-slam\u002Fissues\u002F17",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},42717,"运行时遇到 'CUDA out of memory' (显存不足) 错误如何解决？","这是一个常见问题，即使在大显存显卡（如 3090）上也可能发生。有效的解决方案是在 `src\u002FTracker.py` 文件的 DataLoader 设置中，将 `num_workers` 参数设置为 `0`。许多用户反馈应用此更改后成功解决了显存溢出问题并能运行更多帧数。","https:\u002F\u002Fgithub.com\u002Fcvg\u002Fnice-slam\u002Fissues\u002F8",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},42718,"Demo 演示程序卡在特定帧（如第 16 帧）且 GPU 不工作怎么办？","这是一个已知但表现奇怪的 Bug，在某些桌面配置（如 Ubuntu 22.04 + RTX 4090）上会出现卡在特定帧的情况，而在其他机器（如笔记本）上则正常。如果遇到此问题，建议尝试更换运行环境或设备。此外，部分用户反馈该问题可能与 'thread_monitor Resource temporarily unavailable' 线程资源错误有关，可参考显存不足问题的解决方案尝试调整 `num_workers`。","https:\u002F\u002Fgithub.com\u002Fcvg\u002Fnice-slam\u002Fissues\u002F103",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},42719,"如何生成用于网格裁剪（cull_mesh）的 unseen.npy 文件？","如果你使用的是 Replica 以外的数据集，需要自己生成 `unseen.npy` 文件。该文件用于标识网格中未被相机观测到的顶点。官方提供的脚本主要针对 Replica 数据集，对于自定义轨迹或其他数据集，用户需根据自身的相机轨迹和网格顶点信息编写逻辑来生成此文件。","https:\u002F\u002Fgithub.com\u002Fcvg\u002Fnice-slam\u002Fissues\u002F89",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},42720,"如何在自己的 ROS RGB-D 数据序列上运行 NICE-SLAM？","若要在自定义数据上运行，需确保数据格式正确（RGB、深度、姿态）。如果在运行过程中发现重渲染损失（Re-rendering loss）持续增加并最终报错，通常是因为缺乏准确的初始姿态或数据预处理不当。建议检查输入数据的姿态是否准确，并确保深度图和彩色图已正确对齐和预处理，类似于 ScanNet 或 TUM 数据集的处理流程。","https:\u002F\u002Fgithub.com\u002Fcvg\u002Fnice-slam\u002Fissues\u002F63",[]]