v3.x 版本更新日志¶
v3.3.0 (2024年5月1日)¶
亮点¶
Grounding-DINO 是一种最先进的开放集检测模型,它可以解决多个视觉任务,包括开放词汇检测 (OVD)、短语定位 (PG) 和指代表达理解 (REC)。其有效性使其作为各种下游应用程序的主流架构而被广泛采用。然而,尽管其重要性,原始 Grounding-DINO 模型由于其训练代码的不可用性而缺乏全面的公开技术细节。为了弥合这一差距,我们推出了 MM-Grounding-DINO,一个开源、全面且用户友好的基线,它使用 MMDetection 工具箱构建。它采用丰富的视觉数据集进行预训练,以及各种检测和定位数据集进行微调。我们对每个报告的结果进行了全面的分析,并提供了可重复性的详细设置。在提到的基准上的广泛实验表明,我们的 MM-Grounding-DINO-Tiny 优于 Grounding-DINO-Tiny 基线。我们向研究界发布了我们所有的模型。
新功能¶
添加 RTMDet Swin / ConvNeXt 主干网络和结果 (#11259)
添加
odinw
配置和GLIP
的评估结果 (#11175)在
coco_error_analysis.py
中添加可选的评分阈值选项 (#11117)为
panoptic_fpn
添加新的配置 (#11109)将
Faster-RCNN
的部分加权下载链接替换为 OpenXLab (#11173)
错误修复¶
修复当类别令牌超过 256 时
Grounding DINO
出现 nan 的问题 (#11066)修复
CO-DETR
配置文件错误 (#11325)修复
CO-DETR
配置中的 load_from url (#11220)修复 Albu 后处理后的掩码形状 (#11280)
修复
convert_coco_format
和youtubevis2coco
中的错误 (#11251, #11086)
贡献者¶
共有 15 位开发者为此次发布做出了贡献。
感谢 @adnan-mujagic、@Cycyes、@ilcopione、@returnL、@honeybadger78、@okotaku、@xushilin1、@keyhsw、@guyleaf、@Crescent-Saturn、@LRJKD、@aaronzs、@Divadi、@AwePhD、@hhaAndroid
v3.2.0 (2023年12月10日)¶
亮点¶
(1) 检测 Transformer SOTA 模型集
支持四种更新和更强大的 SOTA Transformer 模型:DDQ、CO-DETR、AlignDETR 和 H-DINO。
基于 CO-DETR,MMDet 发布了一个 COCO 性能达到 64.1 mAP 的模型。
DINO 等算法支持 AMP/Checkpoint/FrozenBN,可以有效减少内存使用。
(2) CNN 和 Transformer 的全面性能比较
RF100 包含一个由 100 个真实世界数据集组成的数据集集合,包括 7 个领域。它可用于评估 DINO 等 Transformer 模型和基于 CNN 的算法在不同场景和数据量下的性能差异。用户可以使用此基准快速评估其算法在各种场景下的稳健性。
(3) 支持 GLIP 和 Grounding DINO 微调,是唯一支持 Grounding DINO 微调的算法库
MMDet 中的 Grounding DINO 算法是唯一支持微调的库。其性能比官方版本高 1 个点,当然,GLIP 也优于官方版本。我们还提供了一个详细的训练和评估 Grounding DINO 在自定义数据集上的过程。欢迎大家尝试。
(4) 支持开放词汇检测算法 Detic 和多数据集联合训练。
(5) 使用 FSDP 和 DeepSpeed 训练检测模型。
(6) 支持 V3Det 数据集,这是一个包含超过 13,000 个类别的超大规模检测数据集。
新功能¶
支持 CO-DETR/DDQ/AlignDETR/H-DINO
支持 GLIP 和 Grounding DINO 微调
支持 Detic 和多数据集训练 (#10926)
支持 V3Det 和基准测试 (#10938)
支持 Roboflow 100 基准测试 (#10915)
添加 Grounding DINO 的自定义数据集 (#11012)
发布 RTMDet-X p6 (#10993)
支持 DINO 的 AMP (#10827)
支持 FrozenBN (#10845)
添加
QDTrack/DETR/RTMDet/MaskRCNN/DINO/DeformableDETR/MaskFormer
算法的新配置添加一个新脚本以支持 WBF (#10808)
添加
large_image_demo
(#10719)支持从 OpenXLab 下载数据集 (#10799)
更新以支持 DETR 系列模型的 torch2onnx (#10910)
将英语文档翻译成中文 (#10744, #10756, #10805, #10848)
错误修复¶
修复 DETR metafile.yml 中的名称错误 (#10595)
修复
set_nms
中张量的设备问题 (#10574)从
en/
文档中删除一些 Unicode 字符 (#10648)修复使用 mim 脚本下载数据集的问题。 (#10727)
修复导出到 torchserve 的问题 (#10694)
修复
mask-rcnn_r50_fpn_1x-wandb_coco
中的拼写错误 (#10757)修复
voc_metric
中的eval_recalls
错误 (#10770)修复 torch 版本比较问题 (#10934)
修复
analyze_results.py
中从 ConcatDataset 访问训练管道的错误行为 (#11004)
改进¶
更新
useful_tools.md
(#10587)更新实例分割教程 (#10711)
更新
train.py
以兼容新配置 (#11025)支持 maskformer 系列的
torch2onnx
(#10782)
贡献者¶
共有 36 位开发者为此次发布做出了贡献。
感谢 @YQisme、@nskostas、@max-unfinity、@evdcush、@Xiangxu-0103、@ZhaoCake、@RangeKing、@captainIT、@ODAncona、@aaronzs、@zeyuanyin、@gotjd709、@Musiyuan、@YanxingLiu、@RunningLeon、@ytzfhqs、@zhangzhidaSunny、@yeungkong、@crazysteeaam、@timerring、@okotaku、@apatsekin、@Morty-Xu、@Markson-Young、@ZhaoQiiii、@Kuro96、@PhoenixZ810、@yhcao6、@myownskyW7、@jiongjiongli、@Johnson-Wang、@ryylcc、@guyleaf、@agpeshal、@SimonGuoNjust、@hhaAndroid
v3.1.0 (2023年6月30日)¶
亮点¶
支持跟踪算法,包括多目标跟踪 (MOT) 算法 SORT、DeepSORT、StrongSORT、OCSORT、ByteTrack、QDTrack,以及视频实例分割 (VIS) 算法 MaskTrackRCNN、Mask2Former-VIS。
支持 ViTDet
支持多模态算法 GLIP 和 XDecoder 的推理和评估,还支持 COCO 语义分割、COCO Caption、ADE20k 通用分割和 RefCOCO 等数据集。GLIP 微调将在未来得到支持。
为 MMDetection 的图像类型任务提供 gradio 演示,方便用户体验。
新功能¶
支持 DSDL 数据集 (#9801)
支持 iSAID 数据集 (#10028)
支持 VISION 数据集 (#10530)
发布 SoftTeacher 检查点 (#10119)
发布
centernet-update_r50-caffe_fpn_ms-1x_coco
检查点 (#10327)支持 SIoULoss (#10290)
支持 Eqlv2 损失 (#10120)
支持在掩码不可用时使用 CopyPaste (#10509)
支持 MIM 下载 ODL 数据集 (#10460)
支持新的配置 (#10566)
错误修复¶
修复 Windows 中的基准测试脚本错误 (#10128)
修复
YOLOXModeSwitchHook
在从检查点恢复后切换模式时无法切换模式的错误 (#10116)修复 SmoothL1Loss 中的预测和权重维度不匹配错误 (#10423)
改进¶
更新 MMDet_Tutorial.ipynb (#10081)
支持隐藏推理进度 (#10519)
用 mmpretrain 替换 mmcls (#10545)
贡献者¶
共有 29 位开发者参与了本次发布。
感谢 @lovelykite、@minato-ellie、@freepoet、@wufan-tb、@yalibian、@keyakiluo、@gihanjayatilaka、@i-aki-y、@xin-li-67、@RangeKing、@JingweiZhang12、@MambaWong、@lucianovk、@tall-josh、@xiuqhou、@jamiechoi1995、@YQisme、@yechenzhi、@bjzhb666、@xiexinch、@jamiechoi1995、@yarkable、@Renzhihan、@nijkah、@amaizr、@Lum1104、@zwhus、@Czm369、@hhaAndroid
v3.0.0 (6/4/2023)¶
亮点¶
支持基于 Label-Studio 的半自动标注 (#10039)
支持 EfficientDet 项目 (#9810)
新功能¶
文件 I/O 迁移和重建 (#9709)
发布 DINO Swin-L 36e 模型 (#9927)
错误修复¶
修复基准测试脚本 (#9865)
修复 PolygonMasks 的裁剪方法 (#9858)
修复带有掩码形状的 Albu 增广 (#9918)
修复
RTMDetIns
先验生成器设备错误 (#9964)修复数据管道中的
img_shape
(#9966)修复 cityscapes 导入错误 (#9984)
修复
solov2_r50_fpn_ms-3x_coco.py
配置错误 (#10030)修复 Conditional DETR 的 AP 和日志 (#9889)
修复 PyTorch 2.0 中接受意外参数 local-rank 的问题 (#10050)
修复
common/ms_3x_coco-instance.py
配置错误 (#10056)修复计算 FLOPs 的错误 (#10051)
删除
CocoOccludedSeparatedMetric
中的data_root
以修复错误 (#9969)统一 metafile.yml (#9849)
改进¶
添加 BoxInst r101 配置 (#9967)
添加配置迁移指南 (#9960)
添加更多社交网络链接 (#10021)
添加 RTMDet 配置介绍 (#10042)
添加可视化文档 (#9938、#10058)
完善 data_prepare 文档 (#9935)
添加对在 PyTorch 2.0 中设置 dynamo 的 cache_size_limit 参数的支持 (#10054)
更新 coco_metric.py (#10033)
更新类型提示 (#10040)
贡献者¶
共有 19 位开发者参与了本次发布。
感谢 @IRONICBo、@vansin、@RangeKing、@Ghlerrix、@okotaku、@JosonChan1998、@zgzhengSE、@bobo0810、@yechenzh、@Zheng-LinXiao、@LYMDLUT、@yarkable、@xiejiajiannb、@chhluo、@BIGWangYuDong、@RangiLy、@zwhus、@hhaAndroid、@ZwwWayne
v3.0.0rc6 (24/2/2023)¶
亮点¶
支持 Boxinst、Objects365 数据集 和 分离和遮挡 COCO 度量
支持 ConvNeXt-V2、DiffusionDet 以及
Projects
中的 EfficientDet 和 Detic 的推理重构 DETR 系列,并支持 Conditional-DETR、DAB-DETR 和 DINO
支持
DetInferencer
进行推理、测试时间增强,并自动从注册表中导入模块支持 RTMDet-Ins ONNXRuntime 和 TensorRT 部署
支持 计算检测器的 FLOPs
新功能¶
支持 Boxinst (#9525)
支持 Objects365 数据集 (#9600)
支持
Projects
中的 ConvNeXt-V2 (#9619)支持
Projects
中的 DiffusionDet (#9639、#9768)支持
Projects
中的 Detic 推理 (#9645)支持
Projects
中的 EfficientDet 推理 (#9645)支持 分离和遮挡 COCO 度量 (#9710)
支持从注册表中自动导入模块 (#9143)
重构 DETR 系列,并支持 Conditional-DETR、DAB-DETR 和 DINO (#9646)
支持
DetInferencer
进行推理 (#9561)支持测试时间增强 (#9452)
支持计算检测器的 FLOPs (#9777)
错误修复¶
修复由于新版本的 numpy 导致的弃用旧类型别名 (#9625、#9537)
修复 VOC 度量 (#9784)
修复 RTMDet-x 日志的错误链接 (#9549)
修复 README 中的 RTMDet 链接 (#9575)
修复 MMDet 获取 FLOPs 错误 (#9589)
修复 RTMDet 中的
use_depthwise
(#9624)修复带有掩码的
albumentations
增广后处理 (#9551)修复 DETR 系列单元测试 (#9647)
修复
LoadPanopticAnnotations
错误 (#9703)修复
isort
CI (#9680)修复 amp 池化溢出 (#9670)
修复 DINO 中关于噪声的文档字符串 (#9747)
修复
MultiImageMixDataset
中的潜在错误 (#9764)
改进¶
用 PyTorch permute 替换 NumPy transpose 以提高速度 (#9762)
弃用
sklearn
(#9725)添加 RTMDet-Ins 部署指南 (#9823)
更新 RTMDet 配置和 README (#9603)
用 RTMDet 替换教程文档中使用的模型 (#9843)
将最低支持的 python 版本调整为 3.7 (#9602)
支持通过配置修改调色板 (#9445)
更新
Project
中的 README 文档 (#9599)在
.pre-commit-config-zh-cn.yaml
文件中用gitee
替换github
(#9586)在
.pre-commit-config.yaml
文件中使用官方isort
(#9701)将 MMCV 最低版本更改为
2.0.0rc4
用于dev-3.x
(#9695)添加 single_stage_as_rpn.md 和 test_results_submission.md 的中文版本 (#9434)
添加 OpenDataLab 下载链接 (#9605、#9738)
添加几个层的类型提示 (#9346)
为
DarknetBottleneck
添加类型提示 (#9591)添加 Dockerfile (#9659)
添加 Twitter、Discord、Medium 和 Youtube 链接 (#9775)
准备合并 refactor-detr (#9656)
为 ConditionalDETR、DABDETR 和 DINO 添加元数据文件 (#9715)
支持修改
non_blocking
参数 (#9723)注释掉重复的视觉化器注册 (#9740)
更新用户指南:
finetune.md
和inference.md
(#9578)
新贡献者¶
@NoFish-528 在 https://github.com/open-mmlab/mmdetection/pull/9346 中做出了首次贡献
@137208 在 https://github.com/open-mmlab/mmdetection/pull/9434 中做出了首次贡献
@lyviva 在 https://github.com/open-mmlab/mmdetection/pull/9625 中做出了首次贡献
@zwhus 在 https://github.com/open-mmlab/mmdetection/pull/9589 中做出了首次贡献
@zylo117 在 https://github.com/open-mmlab/mmdetection/pull/9670 中做出了首次贡献
@chg0901 在 https://github.com/open-mmlab/mmdetection/pull/9740 中做出了首次贡献
@DanShouzhu 在 https://github.com/open-mmlab/mmdetection/pull/9578 中做出了首次贡献
贡献者¶
共有 27 位开发者参与了本次发布。
感谢 @JosonChan1998、@RangeKing、@NoFish-528、@likyoo、@Xiangxu-0103、@137208、@PeterH0323、@tianleiSHI、@wufan-tb、@lyviva、@zwhus、@jshilong、@Li-Qingyun、@sanbuphy、@zylo117、@triple-Mu、@KeiChiTse、@LYMDLUT、@nijkah、@chg0901、@DanShouzhu、@zytx121、@vansin、@BIGWangYuDong、@hhaAndroid、@RangiLyu、@ZwwWayne
v3.0.0rc5 (26/12/2022)¶
亮点¶
支持 SSHContextModule,该模块出自论文 SSH: Single Stage Headless Face Detector。
新功能¶
支持 RTMDet 实例分割模型,并改进 RTMDet 测试配置 (#9494)
支持 SSHContextModule,该模块出自论文 SSH: Single Stage Headless Face Detector (#8953)
发布 CondInst 预训练模型 (#9406)
错误修复¶
修复 CondInst 在推理时
batch_size
大于 1 时出现的预测错误 (#9400)修复在浏览数据集时,当管道输出图像的数据类型不是 uint8 时的可视化错误 (#9401)
修复
analyze_logs.py
以正确绘制 mAP 并计算训练时间 (#9409)修复使用
PAFPN
时的反向 inplace 错误 (#9450)修复模型转换器中的配置导入链接 (#9441)
修复
DeformableDETRHead
对象没有属性loss_single
(#9477)修复了 SemiBaseDetector 中教师模型预测的伪边界框逻辑 (#9414)
修复实例分割教程中的演示 API (#9226)
修复
analyze_results
(#9380)修复 Readthedocs API 无法显示的错误 (#9510)
修复没有预测结果时的错误,并支持可视化 TTA 的 groundtruth (#9840)
改进¶
删除旧的
builder.py
(#9479)确保管道参数形状为
(width, height)
顺序 (#9324)添加
.pre-commit-config-zh-cn.yaml
文件 (#9388)重构数据集元信息为小写 (#9469)
在 CI 中添加 PyTorch 1.13 检查 (#9478)
调整
FocalLoss
和QualityFocalLoss
以允许不同类型的目标 (#9481)重构
setup.cfg
(#9370)将饱和度值裁剪到有效范围
[0, 1]
(#9391)仅在发布模型时保留元数据和状态字典 (#9356)
在 ms-poly_3x_coco_instance 配置中添加 segm 评估器 (#9524)
更新部署指南 (#9527)
更新 zh_cn
faq.md
(#9396)更新
get_started
(#9480)更新 zh_cn 用户指南中
useful_tools.md
和useful_hooks.md
(#9453)添加
bfp
和channel_mapper
的类型提示 (#9410)添加几个损失的类型提示 (#9397)
添加类型提示并更新任务模块的文档字符串 (#9468)
新贡献者¶
@lihua199710 在 https://github.com/open-mmlab/mmdetection/pull/9388 中做出了他们的首次贡献
@twmht 在 https://github.com/open-mmlab/mmdetection/pull/9450 中做出了他们的首次贡献
@tianleiSHI 在 https://github.com/open-mmlab/mmdetection/pull/9453 中做出了他们的首次贡献
@kitecats 在 https://github.com/open-mmlab/mmdetection/pull/9481 中做出了他们的首次贡献
@QJC123654 在 https://github.com/open-mmlab/mmdetection/pull/9468 中做出了他们的首次贡献
贡献者¶
共有 20 位开发者为本次发布贡献了代码。
感谢 @liuyanyi, @RangeKing, @lihua199710, @MambaWong, @sanbuphy, @Xiangxu-0103, @twmht, @JunyaoHu, @Chan-Sun, @tianleiSHI, @zytx121, @kitecats, @QJC123654, @JosonChan1998, @lvhan028, @Czm369, @BIGWangYuDong, @RangiLyu, @hhaAndroid, @ZwwWayne
v3.0.0rc4 (2022/11/23)¶
亮点¶
支持 CondInst
添加
projects/
文件夹,作为一些实验模型/功能的存放位置。支持 SparseInst 在
projects
中
新功能¶
支持 CondInst (#9223)
添加
projects/
文件夹,作为一些实验模型/功能的存放位置 (#9341)支持 SparseInst 在
projects
中 (#9377)
错误修复¶
修复 MaskFormer Head 中
pixel_decoder_type
的判别。 (#9176)修复缓存的 MixUp 中错误的填充值 (#9259)
将
utils/typing.py
重命名为utils/typing_utils.py
以修复collect_env
错误 (#9265)修复 resume 参数冲突 (#9287)
修复带有 caffe 主干的 Faster R-CNN 的配置文件 (#9319)
修复 torchserve 并更新相关文档 (#9343)
修复使用 sigmooid 激活函数的 bbox 精炼错误 (#9538)
改进¶
更新 README 中 GIoU Loss 的文档 (#8810)
在
inference_detector
中处理数据集包装器 (#9144)更新 COCO 中压缩 RLE 的
counts
类型 (#9274)支持在
print_config
中保存配置文件 (#9276)更新关于视频推理的文档 (#9305)
更新关于模型部署的指南 (#9344)
修复有用工具的文档拼写错误 (#9177)
允许从 CLI 中的特定检查点恢复 (#9284)
更新 FAQ 中关于 pycocotools 的 Windows 安装问题 (#9292)
新贡献者¶
@Daa98 在 https://github.com/open-mmlab/mmdetection/pull/9274 中做出了他们的首次贡献
@lvhan028 在 https://github.com/open-mmlab/mmdetection/pull/9344 中做出了他们的首次贡献
贡献者¶
共有 12 位开发者为本次发布贡献了代码。
感谢 @sanbuphy, @Czm369, @Daa98, @jbwang1997, @BIGWangYuDong, @JosonChan1998, @lvhan028, @RunningLeon, @RangiLyu, @Daa98, @ZwwWayne, @hhaAndroid
v3.0.0rc3 (2022/11/04)¶
将 MMEngine 的最低版本要求升级到 0.3.0,以使用 ignore_key
的 ConcatDataset
来训练 VOC 数据集 (#9058)
新功能¶
错误修复¶
修复
XMLDataset
图片大小错误 (#9216)修复在 roi_head 中没有使用 nms 预测时,empty_instances 的错误 (#9015)
修复 DETR 的配置文件 (#9158)
修复 SOLOv2 无法处理空 gt 图片的错误 (#9192)
修复推理演示 (#9153)
在 VOC
ConcatDataset
中添加ignore_key
(#9058)修复测试脚本中转储结果的问题。 (#9241)
修复在 MMDet 3.x 上训练 coco 子集的配置文件 (#9225)
修复支持空边界框的 HorizontalBoxes 的 corner2hbox (#9140)
改进¶
重构 Fast R-CNN (#9132)
由于 SyncBN,清理 mmcv-full 的要求 (#9207)
支持在 detectron2 中训练检测模型 (#8672)
添加对
DynamicSoftLabelAssigner
的box_type
支持 (#9179)使 scipy 成为运行时的默认依赖项 (#9187)
更新 eval_metric (#9062)
在
BaseDetDataset
中添加seg_map_suffix
(#9088)
新贡献者¶
@Wwupup 在 https://github.com/open-mmlab/mmdetection/pull/9086 中做出了他们的首次贡献
@sanbuphy 在 https://github.com/open-mmlab/mmdetection/pull/9153 中做出了他们的首次贡献
@cxiang26 在 https://github.com/open-mmlab/mmdetection/pull/9158 中做出了他们的首次贡献
@JosonChan1998 在 https://github.com/open-mmlab/mmdetection/pull/9225 中做出了他们的首次贡献
贡献者¶
共有 13 位开发者为本次发布贡献了代码。
感谢 @wanghonglie, @Wwupup, @sanbuphy, @BIGWangYuDong, @liuyanyi, @cxiang26, @jbwang1997, @ZwwWayne, @yuyoujiang, @RangiLyu, @hhaAndroid, @JosonChan1998, @Czm369
v3.0.0rc2 (2022/10/21)¶
亮点¶
支持 imagenet 预训练 用于 RTMDet 的主干网络
新功能¶
支持 imagenet 预训练 用于 RTMDet 的主干网络 (#8887)
添加
CrowdHumanDataset
和指标 (#8430)添加
FixShapeResize
以支持固定形状的调整大小 (#8665)
错误修复¶
修复
ConcatDataset
导入错误 (#8909)修复
CircleCI
和readthedoc
构建失败 (#8980, #8963)修复
out_shape
不同时位图掩码的转换 (#8993)修复
Conv2d
权重通道中的不一致性 (#8948)修复使用 analyze_logs.py 绘制损失曲线时的错误 (#8944)
修复
albumentations
中标签的类型更改 (#9074)修复一些文档和类型错误 (#8818)
更新元文件中
RTMDet
的内存占用 (#9098)修复配置文件中
OpenImageMetrics
的错误参数 (#9061)
改进¶
使用
box type
重构标准 roi head (#8658)支持在
BitmapMasks
和PolygonMasks
中连接掩码 (#9006)更新 Dockerfile 中的 PyTorch 和依赖项版本 (#8845)
更新
robustness_eval.py
和print_config
(#8452)使
dense_heads
与ConfigDict
和dict
兼容 (#8942)支持记录 Coco 指标的复制粘贴 (#9012)
删除
Normalize
变换 (#8913)支持抖动同一类不同实例的颜色 (#8988)
在
PackDetInputs
中添加缺少键的断言 (#8982)
新贡献者¶
@Chan-Sun 在 https://github.com/open-mmlab/mmdetection/pull/8909 中做出了他们的首次贡献
@MambaWong 在 https://github.com/open-mmlab/mmdetection/pull/8913 中做出了他们的首次贡献
@yuyoujiang 在 https://github.com/open-mmlab/mmdetection/pull/8437 中做出了他们的首次贡献
@sltlls 在 https://github.com/open-mmlab/mmdetection/pull/8944 中做出了他们的首次贡献
@Nioolek 在 https://github.com/open-mmlab/mmdetection/pull/8845 中做出了他们的首次贡献
@wufan-tb 在 https://github.com/open-mmlab/mmdetection/pull/9061 中做出了他们的首次贡献
贡献者¶
共有 13 位开发者为本次发布贡献了代码。
感谢 @RangiLyu, @jbwang1997, @wanghonglie, @Chan-Sun, @RangeKing, @chhluo, @MambaWong, @yuyoujiang, @hhaAndroid, @sltlls, @Nioolek, @ZwwWayne, @wufan-tb
v3.0.0rc1 (26/9/2022)¶
亮点¶
发布了一个高精度、低延迟的单阶段目标检测器 RTMDet。
Bug 修复¶
修复 UT 以与 PyTorch 1.6 兼容 (#8707)
修复模型被包装时
NumClassCheckHook
错误 (#8794)更新使用 BoundedIoULoss 的 R-50-FPN 的正确 URL (#8805)
修复 RandAugment 中索引的潜在错误 (#8826)
修复一些类型和链接 (#8839, #8820, #8793, #8868)
修复
FSAF
和RepPoints
头部中不正确的背景填充值 (#8813)
改进¶
使用
box type
重构锚点头和基头 (#8625)重构
SemiBaseDetector
和SoftTeacher
(#8786)将列表添加到字典键以避免修改损失字典 (#8828)
更新
analyze_results.py
,analyze_logs.py
和loading.py
(#8430, #8402, #8784)支持在
test.py
中转储结果 (#8814)检查
DetLocalVisualizer._draw_instances
中的空预测 (#8830)修复
SOLO
中的floordiv
警告 (#8738)
贡献者¶
总共有 16 位开发者为此次发布做出了贡献。
感谢 @ZwwWayne, @jbwang1997, @Czm369, @ice-tong, @Zheng-LinXiao, @chhluo, @RangiLyu, @liuyanyi, @wanghonglie, @levan92, @JiayuXu0, @nye0, @hhaAndroid, @xin-li-67, @shuxp, @zytx121
v3.0.0rc0 (31/8/2022)¶
我们很高兴地宣布 MMDetection 3.0.0rc0 发布。MMDet 3.0.0rc0 是 MMDetection 3.x 的第一个版本,是 OpenMMLab 2.0 项目的一部分。建立在新的 训练引擎 上,MMDet 3.x 统一了数据集、模型、评估和可视化的接口,训练和测试速度更快。它还提供了一个通用的半监督目标检测框架和强大的基线。
亮点¶
新引擎。MMDet 3.x 基于 MMEngine,它提供了一个通用且强大的运行器,允许更灵活的定制,并大大简化了高级接口的入口点。
统一的接口。作为 OpenMMLab 2.0 项目的一部分,MMDet 3.x 统一和重构了训练、测试、数据集、模型、评估和可视化的接口和内部逻辑。所有 OpenMMLab 2.0 项目在这些接口和逻辑中共享相同的设计,以允许多任务/模态算法的出现。
更快的速度。我们优化了常见模型和配置的训练和推理速度,比 Detection2 速度更快或相似。基准测试的模型细节将在 此说明 中更新。
通用半监督目标检测。得益于统一的接口,我们支持一个通用的半监督学习框架,该框架适用于 MMDet 3.x 中支持的所有目标检测器。请参考 半监督目标检测 以了解更多详情。
强大的基线。我们发布了许多流行模型的强大基线,以便对最先进的模型进行公平比较。
新功能和算法:
使所有单阶段检测器都可以用作区域建议网络
更多文档和教程。我们添加了许多文档和教程,以帮助用户更顺利地入门。阅读它 这里。
重大变更¶
MMDet 3.x 进行了重大更改,以实现更好的设计、更高的效率、更大的灵活性和更统一的接口。除了 API 中的更改外,我们将在本节中简要列出主要的变化。我们将更新 迁移指南 以提供完整的详细信息和迁移说明。用户还可以参考 API 文档 以了解更多详情。
依赖项¶
MMDet 3.x 运行在 PyTorch>=1.6 上。我们已弃用对 PyTorch 1.5 的支持,以拥抱混合精度训练和其他新功能,因为 PyTorch 1.6 出现。一些模型仍然可以在 PyTorch 1.5 上运行,但不能保证 MMDet 3.x 的全部功能。
MMDet 3.x 依赖 MMEngine 来运行。MMEngine 是用于训练 OpenMMLab 深度学习模型的新基础库,是 OpenMMLab 2.0 项目的核心依赖项。文件 IO 和训练的依赖项已从 MMCV 1.x 迁移到 MMEngine。
MMDet 3.x 依赖 MMCV>=2.0.0rc0。虽然 MMCV 从 2.0.0rc0 开始不再维护训练功能,但 MMDet 3.x 依赖 MMCV 中的数据转换、CUDA 运算符和图像处理接口。请注意,包
mmcv
是提供预构建 CUDA 运算符的版本,而mmcv-lite
从 MMCV 2.0.0rc0 开始没有提供,而mmcv-full
从 2.0.0rc0 开始已被弃用。
训练和测试¶
MMDet 3.x 使用 MMEngine 中的 Runner,而不是 MMCV 中的 Runner。新的 Runner 实现了并统一了数据集、模型、评估和可视化的构建逻辑。因此,MMDet 3.x 不再维护
mmdet.train.apis
和tools/train.py
中这些模块的构建逻辑。这些代码已迁移到 MMEngine 中。请参考 MMEngine 中 Runner 的迁移指南 以了解更多详情。MMEngine 中的 Runner 也支持测试和验证。测试脚本也得到了简化,它与训练脚本具有类似的逻辑来构建运行器。
新 Runner 中钩子的执行点已得到丰富,以允许更灵活的定制。请参考 MMEngine 中 Hook 的迁移指南 以了解更多详情。
学习率和动量调度已从 Hook 迁移到 MMEngine 中的参数调度器。请参考 MMEngine 中参数调度器的迁移指南 以了解更多详情。
配置¶
MMEngine 中的 Runner 使用不同的配置结构来简化对运行器中组件的理解。用户可以阅读 MMDet 3.x 的配置示例 或参考 MMEngine 中的迁移指南 以获取迁移详细信息。
配置和模型的文件名也已重构,以遵循 OpenMMLab 2.0 项目中统一的新规则。为了确保模型权重在 MMDet 3.x 和 2.x 之间没有重大变更,因此检查点名称尚未更新。我们将逐步用在 MMDet 3.x 中训练的那些模型权重替换所有模型权重。请参考 配置的用户指南 以了解更多详情。
数据集¶
MMDet 3.x 中实现的数据集类都继承自 BaseDetDataset
,后者继承自 MMEngine 中的 BaseDataset。除了接口中的更改外,MMDet 3.x 中的数据集还有一些其他更改。
所有数据集都支持将内部数据列表序列化,以减少在为数据加载构建多个工作程序时占用的内存。
数据集中的内部数据结构已更改为自包含(不会像 MMDet 2.x 中那样丢失类名信息),同时保持简单性。
从数据集中删除了每个数据集的评估功能,以便可以使用一些特定的评估指标(如COCO AP)来评估其他数据集的预测。
数据转换¶
MMDet 3.x 中的数据转换都继承自MMCV>=2.0.0rc0 中的BaseTransform
,它定义了 OpenMMLab 2.0 项目中的一个新的约定。除了接口更改外,下面列出了几个更改
一些数据转换的功能(例如
Resize
)被分解成几个转换,以简化和明确使用方式。每个数据转换处理的数据字典格式根据数据集的新数据结构进行了更改。
一些效率低下的数据转换(例如,规范化和填充)被移到模型的数据预处理器中,以提高数据加载和训练速度。
不同 OpenMMLab 2.0 库中的相同数据转换具有相同的增强实现和逻辑,给定相同参数,即MMDet 3.x 和 MMSeg 1.x 中的
Resize
会以完全相同的方式调整图像大小,给定相同参数。
模型¶
MMDet 3.x 中的模型都继承自 MMEngine 中的BaseModel
,它定义了 OpenMMLab 2.0 项目中模型的一个新约定。用户可以参考MMengine 中模型的教程了解更多细节。因此,存在以下几个更改
模型接口(包括输入和输出格式)在 MMDet 3.x 中进行了大幅简化和统一,遵循新的约定。具体来说,训练和测试中的所有输入数据都打包到
inputs
和data_samples
中,其中inputs
包含模型输入,如图像张量列表,而data_samples
包含当前数据样本的其他信息,如地面实况、区域建议和模型预测。这样,MMDet 3.x 中的不同任务可以共享相同的输入参数,这使得模型更加通用,适合多任务学习和一些灵活的训练范式,如半监督学习。模型有一个数据预处理器模块,用于预处理模型的输入数据。在 MMDet 3.x 中,数据预处理器通常执行必要的步骤将输入图像形成一个批次,例如填充。它也可以作为一些特殊数据增强或更高效的数据转换(如规范化)的场所。
模型的内部逻辑已发生变化。在 MMdet 2.x 中,模型使用
forward_train
、forward_test
、simple_test
和aug_test
来处理不同的模型前向逻辑。在 MMDet 3.x 和 OpenMMLab 2.0 中,前向函数有三种模式:“loss”、“predict” 和 “tensor”,分别用于训练、推理和跟踪或其他目的。前向函数分别在给定模式“loss”、“predict” 和 “tensor” 的情况下调用self.loss
、self.predict
和self._forward
。
评估¶
MMDet 2.x 中的评估严格绑定到数据集。相反,MMDet 3.x 将评估从数据集中分解出来,以便所有检测数据集都可以使用 MMDet 3.x 中实现的 COCO AP 和其他指标进行评估。MMDet 3.x 主要为每个数据集实现了相应的指标,这些指标由Evaluator 操作以完成评估。用户可以在 MMDet 3.x 中构建一个评估器来进行离线评估,即只要数据集和预测遵循数据集约定,就可以评估可能不会在 MMDet 3.x 中使用数据集生成的预测。更多详细信息可以在mmengine 中的教程中找到。
可视化¶
MMDet 2.x 中的可视化功能已被删除。相反,在 OpenMMLab 2.0 项目中,我们使用Visualizer 来可视化数据。MMDet 3.x 实现了DetLocalVisualizer
,允许在任何地方可视化地面实况、模型预测、特征图等。它还支持将可视化数据发送到任何外部可视化后端,如 Tensorboard。
改进¶
优化了 FCOS、RetinaNet、Faster R-CNN、Mask R-CNN 和 Cascade R-CNN 的训练和测试速度。使用一些常见训练策略的这些模型的训练速度也得到了优化,包括使用同步批规范化和混合精度训练的那些模型。
支持所有模型的混合精度训练。但是,由于一些数值问题,某些模型可能会获得不可取的性能。我们将更新文档并列出混合精度训练的结果(准确度或失败)。
发布一些流行的目标检测器的强大基线。它们的准确性和预训练检查点将被发布。
错误修复¶
DeepFashion 数据集:配置和结果已更新。
新功能¶
支持一个通用的半监督学习框架,该框架适用于 MMDet 3.x 中支持的所有目标检测器。有关详细信息,请参考半监督目标检测。
使所有单阶段检测器能够充当区域建议网络。我们给出了使用 FCOS 作为 RPN 的示例。
支持一种半监督目标检测算法:SoftTeacher。
支持数据结构
HorizontalBoxes
和BaseBoxes
来封装不同类型的边界框。我们正在迁移到使用边界框的数据结构来代替纯张量框的使用。这将统一 MMDet 3.x 和 MMRotate 1.x 中不同类型边界框的使用,以简化实现并减少冗余代码。
计划中的变更¶
我们列出了 MMDet 3.0.0rc0 的几个计划中的更改,以便社区能够更全面地了解 MMDet 3.x 的进展情况。如果您有兴趣,有任何建议和反馈,或者想参与,请随时创建一个 PR、问题或讨论。
测试时增强:在 MMDet 2.x 中得到支持,由于时间限制,在本版本中未实现。我们将在后续版本中使用新的简化设计支持它。
推理接口:统一的推理接口将在未来得到支持,以简化已发布模型的使用。
可在 Jupyter Notebook 或 Colab 中使用的有用工具的接口:在
tools
目录中实现的更多有用工具将具有其 python 接口,以便它们可以在 Jupyter Notebook、Colab 和下游库中使用。文档:我们将添加更多设计文档、教程和迁移指南,以便社区可以深入研究我们的新设计,参与未来的开发,并将下游库平滑地迁移到 MMDet 3.x。
Wandb 可视化:MMDet 2.x 从 v2.25.0 开始支持数据可视化,目前尚未迁移到 MMDet 3.x。由于 WandB 提供强大的可视化和实验管理功能,计划使用
DetWandBVisualizer
,也许还有钩子,以完全将这些功能从 MMDet 2.x 迁移过来。完全支持 WiderFace 数据集(#8508)和 Fast R-CNN:我们正在验证它们的功能,并将很快修复相关问题。
从 MMDet 2.x 迁移 DETR 系列算法(#8655、#8533)和 IPU 上的 YOLOv3(#8552)。
贡献者¶
共有 11 位开发人员为本版本做出了贡献。感谢 @shuxp、@wanghonglie、@Czm369、@BIGWangYuDong、@zytx121、@jbwang1997、@chhluo、@jshilong、@RangiLyu、@hhaAndroid、@ZwwWayne