9 个算法库新功能及 Bug 修复情况
MM系列多个算法库焕新上线
向上滑动阅览
1. MMCV
新功能
- 添加 3 个旋转检测算子,分别是 RotatedFeatureAlign、RiRoIAlignRotated、PointsInPolygons
- 添加 ModuleDict 模块,其继承自 BaseModule 和 PyTorch 的 ModuleDict
- 添加用于 transformer 的 PatchEmbed 和 PatchMerging 模块
- imread/imwrite 函数支持多后端读写
Bug 修复
- 修复 TensorRT 在 PyTorch1.8+ 上的问题
- 修复配置文件包含 _delete_ 导致的类型不一致问题
- 修复 load_from_local 不能识别以 ~ 开头的路径问题
- 修复 convex_hull_graham CPU 实现问题
- 修复 iou3d 的 python 绑定问题
- 修复在 Windows 平台的编译问题
代码及文档改进
- 检测训练过程的异常参数以便于调试
- 修复单元测试中的警告信息
- tensor2imgs 支持将 tensor 转成灰度图
- batched_nms 支持跳过 NMS 操作
- 重构文档结构
- 修复 runner.md 中的拼写问题
- 更新 FAQ
感谢
@twmht @LutingWang@uniyushu @daavoo@AceCoooool @zytx121
在此版本中的贡献
2. MMDetection
新功能
- 支持 ICCV2021 的算法 TOOD: Task-aligned One-stage Object Detection
- 支持恢复训练时自动加载最近的 checkpoint
- 发布了与新版 YOLOX 对齐精度的 COCO 预训练模型
Bug 修复
- 修复 PAA head 的 bbox loss 权重错误的问题
- 支持设置 gt_semantic_seg 的 padding 值
- 修复了 LVIS 数据集在 classwise 情况下的 bug
- 避免了 mmcv 中 get_local_path 造成的兼容性问题
- 修复了 sync_norm_hook 在无 BN 层时的 bug
- 修复 DenseHead 中 DCN 的初始化问题
- 修复 ConvFCHead 的初始化问题
- 修复 Swin 和 PVT 的权重初始化问题
- 修复 BaseDenseHead 中的变量类型错误
- 修复 SimOTA 在没有合适的 bbox 时的 bug
- 修复 RCNN 中 的 PseudoSampler
代码改进
- 支持在非分布式训练的情况下手动指定 GPU ID
- 增加 Swin Transformer 在单阶段模型中用作 backbone 的示例
- 为 dataset_wrappers 增加 get_ann_info 接口
- 支持 YOLOX 的 keep ratio 多尺度训练
感谢
@ZwwWayne, @Czm369, @jshilong, @RangiLyu, @BIGWangYuDong, @hhaAndroid, @jamiechoi1995, @AronLin, @Keiku, @gkagkos, @fcakyon, @www516717402, @vansin, @zactodd, @kimnamu, @jenhaoyang
在此版本中的贡献
3. MMClassification
新功能
- 改进了特征提取功能
- 提供了一个 CAM 可视化工具
- 支持 DeiT 和 Conformer 主干网络
- 支持 Repeated Augment 和 LAMB 优化器
- 支持 PreciseBN
- 支持 Swin-Transformer 的参数冻结
- 提供了 RegNetX, T2T-ViT 复现精度的训练配置
- 提供了 ResNet-50 高精度训练配置
Bug 修复
- 修复了 Swin-Transformer 输出多层参数时的 bug
代码及文档改进
- 添加了分析工具和其他工具的文档
感谢
@elopezz @fangxu622 @okotaku
在此版本中的贡献
4. MMPose
新功能
- 支持多视角 3D 姿态估计算法 VoxelPose(VoxelPose: Towards Multi-Camera 3D Human Pose Estimation in Wild Environment, ECCV 2020)
- 支持 Soft Wing Loss(Structure-Coherent Deep Feature Learning for Robust Face Alignment,TIP 2021)
- 支持 Adaptive Wing Loss(Adaptive Wing Loss for Robust Face Alignment via Heatmap Regression)
Bug 修复
- 修复 Dark UDP 后处理中 channel 数较大时报错的 bug
- 修复 bottom-up 推理中使用 COCO 之外数据集时报错的 bug
- 修复部分不稳定的 unittest
- 修复 demo 脚本中在 args.show==False 时仍会尝试- 销毁 opencv 窗口的 bug
代码改进
- 支持在 data pipeline 中的 LoadImageFromFile 操作中设置 file_client_args
- 支持 CircleCI
- 改善了 CI 效率,在仅修改文档时跳过 unittest 部分
- 改善文档质量
感谢
@X00123 @chenxinfeng4 @bladrome
在此版本中的贡献
5. MMAction 2
新功能
- 支持 2s-AGCN 算法
- 支持在 Windows 上发布模型
- 在 ntu 数据集 的 pose 提取脚本中支持跳过后处理
- 在 pre-commit-config 中添加了 copyright checkhook
文档丰富
- 添加 2s-AGCN 文档
- 修改了 README.md 和 projects.md
- 文档主题更新
- 文档中 添加了 MMFlow, MMFewShot, MMHuman3d
- 安装文档更新
Bug 修复
- 更新了 notobooks 中的推理模块
- 更新了 map_location 参数
- 修复了 RawFrameDecode 中 start_index 的 bug
- 修复了 init_random_seed 中的 bug
- 修复了setup.py 中的 bug
- 修复了 workflows 中的 interrogate error
- 修复了 slowfast config 中的 typo error
- 取消了 CI 先前没完成的任务
- 修复了 skip_postproc 参数的缺失
- 更新了 ssn.py
- 更新了 youtube-dl
- 修复了 test-best 的bug
6. MMOCR
亮点
- 我们发布了一个新的文字识别模型-ABINet (CVPR2021, oral). ABINet 通过优秀的模型设计和非常有效的数据增强方法,在不规则类文本识别中取得了最佳的表现。
- 我们也在努力满足社区的要求—— OpenSet KIE 就是其中一个成果。它可以将 SDMGR 的应用从单纯的文本节点分类扩展到对节点对应关系的提取。我们还提供了一个脚本把 WildReceipt 数据集转化成 OpenSet,但请注意:从 CloseSet 格式转换而来的 OpenSet 数据集并无法发挥出该格式的全部优势。我们将这两者的区别写入了“KIE: DIFFERENCE BETWEEN CLOSESET & OPENSET”文档,请有兴趣的读者参阅。
- MMOCR 现已支持 TorchServe,用户可以通过封装好的 API 直接调用模型进行推理。
- 新增了对 Open Images v5 数据集的支持。
重大更新及迁移指南
Postprocessor
我们仍在努力进行重构。对于所有文本检测模型,我们将解码部分抽象为新的模块POSTPROCESSOR,它负责将不同的模型输出解码为标准的文本框。在所有的文本检测配置中,bbox_head 中的 text_repr_type 参数已被弃用,并将在未来的版本中移除。
迁移指引:在文本检测模型的配置中寻找类似如下配置:
text_repr_type=xxx,
并更改为:
postprocessor=dict(type='{MODEL_NAME}Postprocessor', text_repr_type=xxx)),
以 PANet 的配置为例。在更改之前为
bbox_head=dict(
type='PANHead',
text_repr_type='poly',
in_channels=[128, 128, 128, 128],
out_channels=6,
loss=dict(type='PANLoss')),
更改后:
bbox_head=dict(
type='PANHead',
in_channels=[128, 128, 128, 128],
out_channels=6,
loss=dict(type='PANLoss'),
postprocessor=dict(type='PANPostprocessor', text_repr_type='poly')),
同时我们也针对了其余文本检测模型提供了各种后处理器。感兴趣的用户可以在 mmocr / models / textdet / postprocess 中或在我们的 API 文档中找到它们的接口或实现。
新的配置文件目录结构
我们将可重用的配置块提取到 configs/_base_ 中来重新组织 configs/ 目录。现在 configs/_base_ 的目录树组织如下:
_base_
├── det_datasets
├── det_models
├── det_pipelines
├── recog_datasets
├── recog_models
├── recog_pipelines
└── schedules
大多数模型配置基于 base config 构建,使得整体结构更清晰,同时更加利于模型之间的公平比较。尽管看似配置结构具有较大的不同,但实际并不会造成兼容性问题。所有的模型配置与之前保持一致。
新特性
- 增加 ABINet 模型
- KIE 支持了 Openset 任务
- 增加 Open Images v5 数据集支持
- 支持了 KIE 中文结果可视化
- 新增 TorchServe 对文本检测和识别模型的支持
- 在 ocr.py 中支持 SAR 中文模型
- 不同数据集支持不同的数据处理
代码重构
- 重构了文本检测和文本识别的配置
- 重构了KIE的数据变化模块
- 重构了文字检测的后处理
- 重构目录文档结构
文档更新
- 新增 KIE OpenSet 和 CloseSet 任务的教学文档
- 部署文档中新增 C++ 导出示例
- 补全所有文本检测和识别模型的 DocString
- 补全部分中文翻译
BUG 修复
- 修复一系列多边形计算产生的 bug
- 修复 PyTorch 1.6 下无法兼容的权重文件
- 修复 DBNet r50 的配置文件
- 修复绘制文本坐标错误的问题
- 修复 Textsnake 模型 Target 的 bug
- 修复 KIE 演示推理的 bug
- 修复无法转换 CRNN 为 ONNX 模型的 bug
感谢
@alexander-soare @A465539338 @fatfishZhao @baudm @ShoupingShan @apiaccess21 @zhouzaida @mpena-vina @Fei-Wang
在此版本中的贡献
7. MMHuman 3D
新功能
- 增加 GTA Human 数据集的支持
- 升级了 SMPLify:支持 batch size 适应和使用统一相机模块
- 升级相机模块:更多操作的支持如 concat 、参数转换、相机参数变量类型检查等
- 升级渲染器:使用注册器,重构 SMPL 可 视化
- 增加 VIBE 所需数据集的支持
- 增加了 github workflow
代码重构
- 基于配准的方法使用新的模块抽象 registrants
- 人体参数化模型有了新的模块抽象 body_models
BUG 修复
- 修复单元测试test_cache 产生的用时对比错误
- 修复可视化中渲染 SMPL 时产生空洞的问题
- 修复数据预处理中图片路径,及 H36M 和 LSP 的问题
文档更新
- 补充了 README, tutorials 文档和 readthedocs 文档
8. MMFlow
亮点
- 增加了一个新的光流估计算法 GMA (ICCV 2021) : Learning to Estimate Hidden Motions with Global Motion Aggregation
- 修复了 RAFT 算法训练中迭代更新的 bug,并更新了 RAFT 模型权重文件
- 支持自动从最新的 checkpoint 文件恢复训练
新功能
- 多级别光流损失函数中增加 scale_as_level 参数,可对不同尺度预测的光流进行监督
- 相关性计算模块增加 scale_mode 参数,用来支持不同相关性缩放方式
- IRR-PWC decoder 模块中增加 upsample_cfg 参数,以配置不同上采用的方式
BUG 修复
- 修复 decoder 的特征和同级别 encoder 特征大小不一致的 bug
- 修复了 RAFT 算法训练中迭代更新的 bug
代码改进
- 当 Pytorch 版本大于 1.7 val_dataloader 添加 persistent_workers=True
- 支持训练时未设置种子时,设置随机种子
代码重构
- 重构模型中的 utils 模块
文档更新
- 文档目录重构
- 更新算法的 metafile
9. MMTracking
亮点
- 支持多目标跟踪算法 'ByteTrack: Multi-Object Tracking by Associating Every Detection Box' (arXiv 2021)
- 支持视频实例分割任务 'Video Instance Segmentation' (ICCV 2019),并支持算法 MaskTrack RCNN
新功能
- 支持多目标跟踪任务常用的 CrowdHuman 数据集
- 支持单目标跟踪任务常用的 VOT2018、GOT10-k 数据集
- 支持视频实例分割任务常用的 YouTube-VIS 数据集
BUG 修复
- 修复了 SiamRPN++ 算法的两个重要 bugs,并提供新的预训练模型
代码改进
- 重构单目标跟踪任务常用的 LaSOT、TrackingNet 数据集