Detectron2 Projects 生态全景:以 detectron2 为库构建可维护的视觉研究项目 📅 发布时间:2026/9/10 23:09:03 👁 浏览次数: Detectron2 Projects 生态全景以 detectron2 为库构建可维护的视觉研究项目【免费下载链接】detectron2Detectron2 is a platform for object detection, segmentation and other visual recognition tasks.项目地址: https://gitcode.com/GitHub_Trending/de/detectron2本指南围绕仓库中的 projects/README.md 展开系统梳理 Detectron2 官方仓库内集成的十余个研究项目DensePose、TridentNet、TensorMask、PointRend、Panoptic-DeepLab、PointSup、Rethinking-BatchNorm、ViTDet、MViTv2 等以及社区外部项目并结合各子项目源码与配置文件讲解把 detectron2 当作库来复用、搭建可维护研究项目的完整范式。读完本文你将掌握每个内置项目的任务定位、训练/评估命令、关键配置与预训练模型入口并能够照此模式在自己仓库中组织 detectron2 之上的新项目。projects 目录的定位把 detectron2 当库而不是框架projects/README.md 开篇即阐明了这一目录存在的意义这些项目是built on detectron2的示例展示了如何将 detectron2 作为库library使用从而使你的项目更易于维护more maintainable。这与 Detectron2 的整体设计哲学一致仓库根目录 README.md 明确指出 detectron2 Used as a library to support building research projects on top of it。也就是说detectron2 提供的是detectron2.engine训练循环、detectron2.modeling骨干网络、R-CNN / RetinaNet 等元架构、detectron2.config配置系统等基础设施而projects/之下的每个子目录都是在这套基础设施之上只写增量代码的活教材——它们各自拥有独立的train_net.py、configs/与算法模块却几乎不修改 detectron2 核心代码。README 同时给出一个重要提醒Facebook 的这些项目属于研究性质research projects其支持程度与稳定性可能不及 detectron2 本身使用时需自行评估。仓库内 Facebook 研究项目全景projects/README.md 中列出的、且代码完整存放在本仓库内的项目如下其各自详尽的 README 均可在projects/下找到项目主题子 README典型任务DensePose稠密人体/动物姿态估计projects/DensePose/README.mdDensePose R-CNN、可视化工具TridentNet尺度感知目标检测projects/TridentNet/README.md多分支共享参数、TridentNet-FastTensorMask稠密滑窗实例分割projects/TensorMask/README.md无 ROI 的 dense segmentationPointRend把分割当作渲染projects/PointRend/README.md实例分割 语义分割点采样细化Panoptic-DeepLabBottom-up 全景分割projects/Panoptic-DeepLab/README.md简单、强、快的全景分割基线PointSup点级监督实例分割projects/PointSup/README.md仅用点标注训练 Mask R-CNNRethinking-BatchNorm重思考 BatchNorm 中的 batchprojects/Rethinking-BatchNorm/README.mdBN/SyncBN 变体复现实验ViTDet普通 ViT 骨干做检测projects/ViTDet/README.mdViT/MViTv2/Swin 骨干检测MViTv2多尺度视觉 Transformerprojects/MViTv2/README.mdCascade Mask R-CNN MViTv2 骨干此外projects/README.md 还提及了以外部链接形式存在的 Facebook 项目Mesh R-CNN、MoCo无监督表示学习的检测部分、DETRd2 目录、D2Go面向移动端训练与部署的端到端生产系统、Unbiased Teacher半监督目标检测与 MaskFormer语义分割这些项目的实现不在本仓库内。下面逐个深入各内置项目给出其训练/评估命令、配置与预训练模型入口。DensePose稠密人体姿态估计DensePose README 说明该项目旨在学习图像像素与可形变物体如人体、动物3D 几何之间的稠密对应关系仓库内提供了 DensePose R-CNN 的训练、评估代码以及可视化标注与结果的多种工具。项目内部存在两大范式Chart-basedIUV把 3D 网格切分为多个 chart模型对每个像素估计 chart 索引I与局部坐标(U, V)详见 projects/DensePose/doc/DENSEPOSE_IUV.mdContinuous Surface EmbeddingsCSE同时学习网格顶点与图像像素的描述子通过嵌入对应关系推导每个像素在 3D 模型上的位置详见 projects/DensePose/doc/DENSEPOSE_CSE.md。从目录结构看DensePose 是以 detectron2 为库最典型的大项目它在projects/DensePose/densepose/下自建了modeling/含 cse、losses、predictors、roi_heads 等子模块、data/、evaluation/、engine/自定义 trainer并提供了 train_net.py、apply_net.py将模型应用到图片/视频并可视化、query_db.py查询标注数据库三个入口。其配置集中在 projects/DensePose/configs/ 下覆盖 HRNet、CSE、Evolution 等多个系列。预训练模型与性能评估分别记录在 DENSEPOSE_IUV 与 DENSEPOSE_CSE 文档的 Model Zoo 小节中引用时请参照这两份文档中的 BibTeX 条目。TridentNet尺度感知目标检测TridentNet README 指出本项目实现了TridentNet-Fast通过平行多分支结构生成尺度特定scale-specific的特征图各分支共享相同的变换参数、仅感受野不同TridentNet-Fast 是快速近似版本在不增加额外参数与计算量的前提下带来显著提升。训练命令在仓库根目录下执行等价路径python projects/TridentNet/train_net.py --config-file projects/TridentNet/configs/tridentnet_fast_R_50_C4_1x.yaml --num-gpus 8评估命令python projects/TridentNet/train_net.py --config-file projects/TridentNet/configs/tridentnet_fast_R_50_C4_1x.yaml --eval-only MODEL.WEIGHTS model.pth配置文件位于 projects/TridentNet/configs/Base-TridentNet-Fast-C4.yaml及 1x/3x 调度、R50/R101 变体核心实现位于 projects/TridentNet/tridentnet/ 下的trident_backbone.py、trident_conv.py、trident_rcnn.py、trident_rpn.py。README 给出了 MS-COCO 上的对比结果R50-C4 下 Faster R-CNN 1x 的 AP 为 35.7TridentFast 1x 为 38.03x 下分别为 38.4 与 40.6R101-C4 3x 下 Faster 为 41.1、TridentFast 为 43.6各变体均可下载 model 与 metrics 文件。TensorMask稠密滑窗实例分割TensorMask README 将其定位为稠密滑窗实例分割框架不依赖 ROI 操作在质量上首次接近成熟的 Mask R-CNN为实例分割研究提供了概念上互补的方向。由于涉及自定义算子需要额外安装pip install -e /path/to/detectron2/projects/TensorMask该命令会编译 TensorMask 专用算子swap_align2nat其实现与测试分别在 projects/TensorMask/tensormask/layers/ 与 projects/TensorMask/tests/test_swap_align2nat.py 中。随后训练 BiPyramid 模型R50 骨干、1x 调度、8 GPUpython projects/TensorMask/train_net.py --config-file projects/TensorMask/configs/tensormask_R_50_FPN_1x.yaml --num-gpus 8评估6x 调度 尺度增强python projects/TensorMask/train_net.py --config-file projects/TensorMask/configs/tensormask_R_50_FPN_6x.yaml --eval-only MODEL.WEIGHTS /path/to/model_checkpoint预训练模型表R50 1x 的 box AP 为 37.6、mask AP 为 32.4R50 6x 的 box AP 为 41.4、mask AP 为 35.8。基础配置见 projects/TensorMask/configs/Base-TensorMask.yaml。PointRend把分割当作渲染PointRend README 的核心思想是将图像分割视为渲染过程在现有 SOTA 模型基础上仅在关键点位置做细分预测可灵活应用于实例分割与语义分割两类任务。其官方 Colab 教程展示了点采样各阶段的示例与可视化。训练8 GPUpython projects/PointRend/train_net.py --config-file projects/PointRend/configs/InstanceSegmentation/pointrend_rcnn_R_50_FPN_1x_coco.yaml --num-gpus 8评估python projects/PointRend/train_net.py --config-file projects/PointRend/configs/InstanceSegmentation/pointrend_rcnn_R_50_FPN_1x_coco.yaml --eval-only MODEL.WEIGHTS /path/to/model_checkpoint实例分割COCO模型表要点PointRend R50-FPN 1x 的输出分辨率为 224×224mask AP 36.2AP* 39.73x 为 38.3AP* 41.6R101-FPN 3x 为 40.143.8X101-FPN 3x 为 41.144.7。其中AP是使用质量更高的 LVIS 标注评估得到的 COCO mask AP*需运行python detectron2/datasets/prepare_cocofied_lvis.py本仓库对应 datasets/prepare_cocofied_lvis.py准备真值文件且由于 LVIS 标注不穷尽应使用lvis-api而非cocoapi进行评估。语义分割方面Cityscapes 上的 SemanticFPN PointRendR101-FPN1024×2048mIoU 为 78.9。实现代码位于 projects/PointRend/point_rend/point_head.py、point_features.py、roi_heads.py、semantic_seg.py等。Panoptic-DeepLabBottom-up 全景分割基线Panoptic-DeepLab README 将其描述为简单、强、快的 bottom-up 全景分割基线。除训练/评估外它还提供了一个独特的性能评测入口在评估命令后追加MODEL.PANOPTIC_DEEPLAB.BENCHMARK_NETWORK_SPEED True即可跳过后处理、只评测网络本身速度python projects/Panoptic-DeepLab/train_net.py --config-file projects/Panoptic-DeepLab/configs/Cityscapes-PanopticSegmentation/panoptic_deeplab_R_52_os16_mg124_poly_90k_bs32_crop_512_1024_dsconv.yaml --eval-only MODEL.WEIGHTS /path/to/model_checkpoint MODEL.PANOPTIC_DEEPLAB.BENCHMARK_NETWORK_SPEED TrueREADME 中的结果与说明要点CityscapesR52-DC5 在 1024×2048 输出分辨率下 PQ 60.3 / SQ 81.5 / RQ 72.9 / mIoU 78.2 / AP 33.2DSConv 版本 PQ 60.3、mIoU 78.7COCOR52-DC5 DSConv640×640PQ 35.5与原始论文的 35.1 基本一致术语约定R52指将 ResNet-50 首层 7×7 卷积替换为 3 个 3×3 卷积的变体DC5指在res5中使用空洞卷积DSConv指在 ASPP 与解码器中使用 DepthwiseSeparableConv2d与原始论文实现一致该实现不含面向部署优化的后处理代码后处理耗时与网络本身相当对比速度请参照原论文训练采用 512×1024 的小裁剪尺寸原论文为 1025×2049README 注明改用 1024×2048 裁剪可再提升约 1.5 PQ 但会损失约 3 AP。配置文件位于 projects/Panoptic-DeepLab/configs/算法实现位于 projects/Panoptic-DeepLab/panoptic_deeplab/panoptic_seg.py、post_processing.py、target_generator.py等。PointSup点级监督实例分割PointSup README 展示了一个极具实用价值的低成本方案仅用点级标注训练实例分割模型。数据准备分两步按 Detectron2 官方说明准备 COCO 数据集并设置DETECTRON2_DATASETS环境变量指向数据集位置为 COCO 生成 10 点标注python projects/PointSup/tools/prepare_coco_point_annotations_without_masks.py 10训练与评估命令与 PointRend 完全同构python projects/PointSup/train_net.py --config-file projects/PointSup/configs/mask_rcnn_R_50_FPN_3x_point_sup_point_aug_coco.yaml --num-gpus 8 python projects/PointSup/train_net.py --config-file projects/PointSup/configs/mask_rcnn_R_50_FPN_3x_point_sup_point_aug_coco.yaml --eval-only MODEL.WEIGHTS /path/to/model_checkpointprojects/PointSup/configs/ 下共三个配置普通点监督、点监督 点增强point aug、以及 Implicit PointRend 点监督 点增强实现代码位于 projects/PointSup/point_sup/含point_utils.py、detection_utils.py、mask_head.py等。Rethinking-BatchNorm重思考 BatchNorm 中的 batchRethinking-BatchNorm README 提供复现论文Rethinking Batch in BatchNorm检测实验的配置所有配置均使用 LazyConfig 系统训练python tools/lazyconfig_train_net.py --config-file projects/Rethinking-BatchNorm/configs/X.py --num-gpus 8各配置与论文图表的对应关系如下Mask R-CNNmask_rcnn_BNhead.py 与 mask_rcnn_BNhead_batch_stats.py 对应论文 Table 3mask_rcnn_BNhead_shuffle.py 在 head 输入上做跨 GPU 打乱对应 Figure 9 与 Table 6mask_rcnn_SyncBNhead.py 在 head 中使用跨 GPU SyncBatchNorm对应 Table 6RetinaNetretinanet_SyncBNhead.py 在 head 中用 SyncBN对应 Table 5 第 3 行retinanet_SyncBNhead_SharedTraining.py 将全部 5 个特征层一起归一化对应 Table 5 第 1 行域特定统计重算retinanet-eval-domain-specific.py 在重算域特定统计后评估 checkpoint用法为./retinanet-eval-domain-specific.py checkpoint.pth可复现 Table 5 第 4 行与第 2 行。ViTDet 与 MViTv2Vision Transformer 骨干ViTDet README 提供了 ViTDet 论文所描述的普通 ViT 骨干以及 MViTv2、Swin 骨干在 Detectron2 中的配置与模型。全部配置同样基于 LazyConfigpython tools/lazyconfig_train_net.py --config-file projects/ViTDet/configs/COCO/mask_rcnn_vitdet_b_100ep.py评估时在命令行覆盖train.init_checkpointpython tools/lazyconfig_train_net.py --config-file projects/ViTDet/configs/COCO/mask_rcnn_vitdet_b_100ep.py --eval-only train.init_checkpoint/path/to/model_checkpoint默认按 64 GPU、batch size 64 训练。README 给出的 COCO Mask R-CNN 结果box/mask APViT-B 为 51.6/45.9ViT-L 为 55.5/49.2ViT-H 为 56.7/50.2Cascade Mask R-CNN 下 ViT-L 达 57.6/50.0。LVIS 上同样提供 ViT-B/L/H 与 Swin-B/L、MViTv2-B/L/H 的模型README 特别注明这些 LVIS 模型使用 1024 分辨率论文为 1280与标准 NMS非 soft NMS因此指标略低LVIS 评估方差高于 COCOViT-B 五次重复训练 box AP 标准差 0.30% vs COCO 的 0.10%。骨干网络实现在 detectron2/modeling/backbone/vit.py、mvit.py、swin.py。MViTv2 的独立项目页见 projects/MViTv2/README.md其配置覆盖cascade_mask_rcnn_mvitv2_*t/s/b/h、in21k、lsj 等变体。从源码看以 detectron2 为库的组织范式对比以上项目可以提炼出 detectron2 官方推崇的研究项目组织模式这正是 projects/README.md more maintainable 的具体体现独立的入口脚本每个项目自带train_net.py内部复用detectron2.engine.defaults的DefaultTrainer/DefaultPredictor等基础设施基于 LazyConfig 的项目如 ViTDet、Rethinking-BatchNorm则复用 tools/lazyconfig_train_net.py自包含的 configs每个项目在configs/下维护Base-*.yaml或.py 具体实验配置可通过--config-file与命令行覆盖项如--num-gpus、--eval-only MODEL.WEIGHTS组合出训练/评估两种模式算法增量代码与自定义算子新算法写成独立包如densepose/、tridentnet/、point_rend/需要自定义 CUDA/C 算子时用独立setup.py以可编辑方式安装见 projects/TensorMask/setup.py 的swap_align2nat测试用例放在各项目tests/下工具链沉淀除训练脚本外项目还会沉淀专用工具如 DensePose 的apply_net.py/query_db.py、PointSup 的标注生成脚本、Rethinking-BatchNorm 的域特定统计评估脚本。外部社区项目与贡献规范projects/README.md 的 External Projects 一节列出了使用 detectron2 的社区外部项目原文以外部链接形式给出本文仅转述其名称与一句话定位不展开AdelaiDet含 FCOS、BlendMask 的检测工具箱、CenterMask、Res2Net 骨干、VoVNet 骨干、FsDet少样本目标检测、Sparse R-CNN、BCNet双层解耦实例分割、DD3D全卷积 3D 检测器、detrex基于 Transformer 的检测工具箱含 Deformable-DETR、DAB-DETR、DN-DETR、DINO 等。README 源码注释中还保留了社区项目收录规范可作为向该列表贡献时的约定若想贡献请把项目加入列表并尽量只占一行项目必须提供在标准数据集上训练好的模型列表按score PaperCitation * 5 Stars大致排序其中 PaperCitation 指若该项目是论文的官方实现则取论文引用数否则记为 0。如何在 detectron2 之上搭建自己的研究项目结合前文落地一个 projects 风格项目的推荐步骤为准备基础按 INSTALL.md 安装 detectron2按 datasets/README.md 准备数据集并设置DETECTRON2_DATASETS复制范式参考 projects/TridentNet/train_net.py 或 tools/train_net.py 写入口脚本复用DefaultTrainer、build_detection_train_loader、DefaultPredictor等组件增量实现把新模块骨干、roi head、loss 等放进项目自己的包目录通过注册器registry挂载到 detectron2 的 modeling 系统中避免改动核心源码配置化实验用 YAML 或 LazyConfig 管理超参命令行为--config-file 覆盖项保证训练--num-gpus N与评估--eval-only MODEL.WEIGHTS xxx只需一条命令切换沉淀资产训练得到的模型与指标可参照各项目 README 的模型表组织发布并在引用时附上对应论文的 BibTeX 条目。总结projects/README.md 虽然只是一份目录清单却是理解 detectron2 生态定位的关键入口它把 DensePose、TridentNet、TensorMask、PointRend、Panoptic-DeepLab、PointSup、Rethinking-BatchNorm、ViTDet、MViTv2 等研究项目与社区工具箱汇聚一堂示范了以 detectron2 为库的可维护组织方式。每个子项目 README 都提供了可直接复制的训练/评估命令、配置路径与预训练模型指标本文已将这些实战要素按统一相对路径汇总方便你在仓库内逐一打开验证与复用。【免费下载链接】detectron2Detectron2 is a platform for object detection, segmentation and other visual recognition tasks.项目地址: https://gitcode.com/GitHub_Trending/de/detectron2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考