
OOTDiffusion 内嵌 detectron2 文档的本地构建指南Sphinx 环境搭建、conf.py 解析与 make html 实战【免费下载链接】OOTDiffusion[AAAI 2025] Official implementation of OOTDiffusion: Outfitting Fusion based Latent Diffusion for Controllable Virtual Try-on项目地址: https://gitcode.com/GitHub_Trending/oo/OOTDiffusion本篇技术指南围绕 OOTDiffusion 仓库中随人解析humanparsing预处理模块一并内嵌的 detectron2 文档目录docs/README.md展开系统讲解这套 Sphinx 文档系统的阅读方式、构建前置条件、依赖安装、make html构建流程及其核心配置实现。读完本文你将能够在本地把这份内嵌的 detectron2 文档从 Markdown/rst 源文件编译为可浏览的 HTML 站点并理解其构建配置的每一个关键机制recommonmark、autodoc、mock、自定义 Domain 等同时厘清该文档在 OOTDiffusion 人解析预处理管线中的真实定位。这份文档是什么一份 Sphinx 文档的入口与构建说明在 OOTDiffusion 的人解析预处理目录preprocess/humanparsing/下内嵌了完整的mhp_extension即 Self-Correction-Human-Parsing 的检测模块扩展其中包含了整份 detectron2 框架源码与配套文档。而关联文档 docs/README.md 是这套文档的入口文件全文分为两大部分Read the docs说明该目录下的最新文档由在线站点发布外部托管并特别声明目录中的文档不适合在 GitHub 上直接阅读——也就是说docs/下的.md/.rst是 Sphinx 的源文件面向读者的是构建产物。Build the docs给出在本地构建文档的三步流程先按 INSTALL.md 安装 detectron2再安装文档构建所需的 Python 库含精确版本号最后在docs目录内执行make html。从文档目录结构看这是一个标准的 Sphinx 工程布局index.rst 是主文档master_doctutorials/、notes/、modules/ 三个子目录通过 toctree 组织外加 Makefile 与 conf.py 两个构建配置文件。需要特别说明的是OOTDiffusion 的实际人解析推理并不直接依赖 detectron2——从 parsing_api.py 和 run_parsing.py 可以看到推理走的是 ONNX Runtime 加载checkpoints/humanparsing/parsing_atr.onnx与parsing_lip.onnx。因此这份 detectron2 文档是自校正人解析原始管线基于 detectron2 训练的 legacy 部分随源码一并保留的构建资料其价值在于理解 detectron2 框架的文档组织方式与复用其构建基础设施而非运行时依赖。构建前置条件按 INSTALL.md 安装 detectron2文档明确要求构建前先安装 detectron2 本体因为 conf.py 第 92 行会执行import detectron2以读取版本号。对应安装说明位于 INSTALL.mddocs 目录下的 tutorials/install.md 是其副本核心要点如下环境要求依赖说明操作系统Linux 或 macOSOOTDiffusion 官方仅实测过 Linux/Ubuntu 22.04Python≥ 3.6PyTorch≥ 1.4torchvision必须与 PyTorch 版本匹配建议从官方渠道一同安装OpenCV可选仅 demo 与可视化需要pycocotoolspip install cython; pip install -U githttps://github.com/cocodataset/cocoapi.git#subdirectoryPythonAPI编译器gcc g ≥ 5源码编译时ninja 可选加速编译三种安装方式源码安装推荐保证与本地 PyTorch 版本一致python -m pip install githttps://github.com/facebookresearch/detectron2.git # 或本地 clone 后 git clone https://github.com/facebookresearch/detectron2.git python -m pip install -e detectron2 # macOS 下可尝试CCclang CXXclang python -m pip install -e .预编译 wheel仅 Linux需匹配对应官方 PyTorch 版本且落后于 master 分支python -m pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu101/index.html其中cu101可替换为cu{100,92}或cpu。重建已安装的本地源码版本时需先清理旧构建产物rm -rf build/ **/*.so重新安装 PyTorch 后通常也必须重建 detectron2。高频安装问题速查完整排查步骤见 INSTALL.mdUndefined torch/aten/caffe2 symbols或运行即段错误多为 detectron2/torchvision 与当前 PyTorch 版本不匹配卸载后按官方渠道重新安装对齐版本收集环境信息可运行gdb -ex r -ex bt -ex quit --args python -m detectron2.utils.collect_env。Undefined C symbols (GLIBCXX)编译与运行使用的 C 运行时不匹配常见于旧版 anaconda尝试conda update libgcc后重建。Not compiled with GPU support/Detectron2 CUDA Compiler: not available构建时未找到 CUDA用python -c import torch; from torch.utils.cpp_extension import CUDA_HOME; print(torch.cuda.is_available(), CUDA_HOME)确认无 GPU 也可跑多数模型推理配置MODEL.DEVICEcpu即可。invalid device function构建与运行的 CUDA 版本不一致或 GPU 架构compute compatibility不匹配可用TORCH_CUDA_ARCH_LIST6.0,7.0指定架构重新编译。ImportError: cannot import name _C未正确安装 detectron2且不要在其源码根目录下运行代码。ONNX 转换段错误ONNX 包由过旧编译器编译建议用与 PyTorch 相近的编译器从源码构建 ONNX。安装文档构建依赖在文档列出的第二步中需要为 Sphinx 构建安装以下库前三项带精确版本号docutils0.16 Sphinx3.0.0 recommonmark0.6.0 sphinx_rtd_theme mock这些依赖的用途与源码一一对应Sphinx 3.0.0文档构建引擎。对应 conf.py 中的needs_sphinx 3.0即最低要求 Sphinx 3.0同时声明了source_suffix [.rst, .md]允许同时编译 rst 与 Markdown 两种源文件。recommonmark 0.6.0提供 CommonMark 解析器CommonMarkParser使 Sphinx 能够渲染 Markdown 文档其AutoStructify变换也在 conf.py 的setup()中被注册。这也解释了为什么docs/下大量教程如tutorials/install.md都是.md后缀却能被编译。sphinx_rtd_themeRead the Docs 风格主题通过html_theme sphinx_rtd_theme与html_theme_path [sphinx_rtd_theme.get_html_theme_path()]启用。mock文档构建的关键依赖。conf.py 在import detectron2之前用 mock 对象预先占位了torch、torchvision、cv2、scipy、pycocotools、caffe2、onnx等一整套重型第三方模块见 conf.py 第 70-90 行并对torch.__version__伪造为1.5、cv2.__version__伪造为3.4。这意味着即使没有 GPU、没有完整安装 detectron2 的编译产物也能完成文档构建这正是文档构建与运行环境解耦的关键设计。docutils 0.16Sphinx 底层的 docutils 文档树与渲染器依赖版本被精确锁定以避免与 Sphinx 3.0.0 的兼容性问题。可一次性安装全部依赖pip install docutils0.16 Sphinx3.0.0 recommonmark0.6.0 sphinx_rtd_theme mock注意这些构建依赖不在OOTDiffusion 根目录的 requirements.txt 中该文件面向推理运行时锁定的是onnxruntime1.16.2、diffusers0.24.0等说明文档构建环境与推理环境相互独立仅在需要阅读/扩展内嵌文档时才需额外安装。执行构建make html 的完整流程安装完 detectron2 与文档依赖后在docs目录下执行第三步cd preprocess/humanparsing/mhp_extension/detectron2/docs make html其背后的执行逻辑由 Makefile 定义SPHINXOPTS SPHINXBUILD sphinx-build SOURCEDIR . BUILDDIR _buildMakefile 采用了 Sphinx 的捕获所有目标写法make html最终等价于执行sphinx-build -M html . _build即以当前docs目录为源目录SOURCEDIR .输出到_build子目录。构建完成后HTML 站点位于preprocess/humanparsing/mhp_extension/detectron2/docs/_build/html/直接用浏览器打开其中的index.html即可阅读。构建期间有几个值得注意的细节根目录的README.md与tutorials/README.md被 conf.py 的exclude_patterns显式排除因此入口 README 本身不会出现在最终 HTML 中——它只是面向仓库读者的指引印证了文档不适合在 GitHub 上直接阅读、应以构建产物为准的定位。master_doc index即构建从 index.rst 开始其 toctree 收录了tutorials/index、notes/index、modules/index三个子文档树。教程子文档树的完整清单定义在 tutorials/index.rstinstall、getting_started、builtin_datasets、extend、datasets、data_loading、models、write-models、training、evaluation、configs、deployment覆盖从安装到模型扩展、训练、评估、部署的完整主题。conf.py 深度解析文档构建的核心机制conf.py 是整个文档系统的大脑除上文已涉及的 mock 机制与主题配置外还有几处值得深入理解的自定义机制1. 扩展清单extensionsextensions [ recommonmark, sphinx.ext.autodoc, sphinx.ext.napoleon, sphinx.ext.intersphinx, sphinx.ext.todo, sphinx.ext.coverage, sphinx.ext.mathjax, sphinx.ext.viewcode, sphinx.ext.githubpages, ]其中autodocnapoleon组合实现了从源码 docstring 自动生成 API 文档modules/目录下的*.rst如 modules/modeling.rst 所链接的各模块页会通过autodoc指令直接提取 detectron2 各模块的类与方法注释。配套的 napoleon 配置为 Google 风格 docstringnapoleon_google_docstring True并关闭 numpy 风格解析autodoc_member_order bysource保证文档成员按源码顺序排列。intersphinx则用于链接 Python/NumPy/PyTorch 的官方 API 文档本地构建时超时设为 0.1 秒以跳过联网。2. 自定义 DomainGithubURLDomainconf.py 第 30-57 行定义了一个自定义 Sphinx Domain用于把 Markdown 文档中的相对链接解析为源码仓库中的对应文件。其核心逻辑是对以../../开头且不以.html结尾的目标去掉../后拼接到源码仓库根路径常量ROOT之后同时为tutorials/install、tutorials/getting_started这两个文档中所有未解析链接做同样处理。此外还处理了 recommonmark 的一个已知 bug——目标以MODEL_ZOO或README结尾时需补上.md后缀。这说明Markdown 教程里的相对路径引用依赖该 Domain 才能在构建时正确指向源码文件。3. 论文引用角色paper_ref_roleconf.py 第 293-321 行注册了:paper:\xxx角色配合内置的_PAPER_DATA字典第 274-290 行把论文短名映射为 arXiv 编号并生成引用链接。字典中收录了 ResNet1512.03385、FPN1612.03144、Mask R-CNN1703.06870、Faster R-CNN1506.01497、Deformable ConvNets1703.06211 / 1811.11168、Panoptic FPN1901.02446、RetinaNet1708.02002、Cascade R-CNN1712.00726、LVIS1908.03195等经典工作未收录的论文名会输出警告并降级为# 占位链接。这为教程中的方法引用提供了统一的书写语法。4. autodoc 成员过滤autodoc_skip_member钩子第 264-271 行会在生成 API 文档时跳过两类成员设置了__HIDE_SPHINX_DOC__属性的对象主动隐藏以及_DEPRECATED_NAMES集合中登记的名字弃用隐藏。这是文档输出质量控制的机制属于从源码结构可以确认的实现事实。文档如何嵌入 OOTDiffusion 的人解析预处理管线要正确评估这份文档的适用范围需要把它放回 OOTDiffusion 的整体结构中看。人解析预处理位于 preprocess/humanparsing/其运行时路径为run_parsing.py 使用onnxruntime创建两个推理会话分别加载checkpoints/humanparsing/parsing_atr.onnxATR 语义分割18 类人体部件与parsing_lip.onnxLIP 语义分割并通过parsing_api.py中的onnx_inference完成语义分割、衣物孔洞填充hole_fill/refine_hole、手臂区域恢复与颈部掩码融合等后处理。parsing_api.py 的输出是 19 类的调色板化分割图get_palette(19)与面部掩码face_mask供后续 OOTDiffusion 生成管线使用。因此mhp_extension/detectron2/ 内嵌的整套 detectron2 源码与文档属于自校正人解析Self-Correction-Human-Parsing原始实现中基于 detectron2 的训练/标注扩展包括 configs/Misc/parsing_finetune_cihp.yaml、projects/PointRend/configs/InstanceSegmentation/pointrend_rcnn_R_50_FPN_3x_parsing.yaml 等解析微调配置在 OOTDiffusion 中的保留副本。从源码结构可以推断其文档构建体系服务于两方面的读者一是希望基于内嵌 detectron2 复现或扩展训练管线的研究者通过 GETTING_STARTED.md 与各教程页获取 CLI 用法、数据集与训练方法二是需要了解内嵌框架 API 细节、按make html在本地生成 API 参考手册的开发者。对仅运行 OOTDiffusion 推理的用户而言该文档目录并非必需——推理走 ONNX 模型即可完成。实战要点小结阅读入口直接阅读docs/下的.md/.rst源文件会丢失渲染效果与交叉引用官方定位是构建后阅读根 README 本身也不参与构建被 exclude_patterns 排除。构建三步曲安装 detectron2INSTALL.md→ 安装docutils0.16、Sphinx3.0.0、recommonmark0.6.0、sphinx_rtd_theme、mock→ 在docs目录执行make html产物输出到docs/_build/html/。无 GPU 亦可构建conf.py 的 mock 机制在导入阶段屏蔽了 torch/cv2/pycocotools 等运行时依赖文档构建对运行环境的要求远低于推理。机制理解recommonmark 负责 Markdown 渲染GithubURLDomain 负责 Markdown 相对链接的源码解析autodoc napoleon负责从 docstring 生成 API 文档paper_ref_role统一论文引用语法。定位澄清该文档服务于内嵌 detectron2人解析训练管线的 legacy 组件OOTDiffusion 的推理阶段实际使用的是preprocess/humanparsing/parsing_api.py的 ONNX 路径。【免费下载链接】OOTDiffusion[AAAI 2025] Official implementation of OOTDiffusion: Outfitting Fusion based Latent Diffusion for Controllable Virtual Try-on项目地址: https://gitcode.com/GitHub_Trending/oo/OOTDiffusion创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考