MMSelfSup
MMSelfSup 是 OpenMMLab 生态的面向自监督学习的开源算法库,主要涵盖了计算机视觉的自监督学习。与监督学习不同,自监督学习无需人为的数据标注,能够有效利用海量的无标注数据来提升模型性能。
2020 年 6 月,OpenMMLab 联合社区发布了 OpenSelfSup,是业界的首个自监督学习算法库,集成了一系列主流的自监督学习算法。
2021 年 12 月,我们升级 OpenSelfSup 成为MMSelfSup,正式加入 OpenMMLab 开源体系,发布了 v0.5.0 版本。
2022 年 9 月,我们发布了MMSelfSup v1.0.0rc,全面升级了架构设计,适配全新的 OpenMMLab 2.0 体系。我们接下来将从升级架构设计,算法库新特性两个方面,对全新升级的 MMSelfSup 1.0 进行介绍。
升级架构设计
MMSelfSup 1.0 主要基于 MMEngine,MMCV 2.0.0rc0,和 MMClassification 1.0.0rc0 进行开发。我们对整个算法库的架构进行了全新设计,整体框架图如下所示。我们对算法库的代码结构进行了重构,新的架构包括了 Datasets、Engine、Structures、Visualization 等模块,同时我们也系统性地对 Benchmarks 进行了升级,支持了一系列下游任务。
算法库新特性
数据读取与使用
我们在 MMSelfSup 中,基于 MMEngine 引入了更强大的 Data Pipeline,它具有统一的数据结构,提高了可存储信息的丰富性,同时也易于扩展,如下图所示。
同时,我们也新设计了 SelfSupDataSample
,提供了统一的数据接口,方便在训练过程中进行各类信息的存储和传输(如标签,掩码,索引),如下图所示。
丰富的可视化工具
我们在 MMSelfSup 中也引入了丰富的可视化工具,可以针对性地对图片,特征,掩码等进行可视化,如下图所示:
我们也像 MMClassification 一样,支持多种可视化后端,如下图所示:
更灵活的下游任务支持
借助以 OpenMMLab 的全新架构,我们利用 MMEngine 的跨库调用机制,可以方便地进行跨库调用,方便用户在 MMSelfSup 中快速验证模型在下游任务中的效果。
相比旧版需要显式地复制下游任务中的配置文件,我们直接通过简单的跨库调用即可实现下游任务的支持,如下图所示:
同时,我们提供了一键进行训练测试的命令行工具,支持分布式版本与 SLURM 集群版本,如下图所示:
基于方便的跨库调用机制,我们也可以灵活地使用 MMClassification 中的基础模型。我们使用 库名::文件路径
即可实现跨库调用,如下图所示:
更全面的用户文档
在 MMSelfSup 中,我们更新了用户文档,结合 MMSelfSup 的项目特点,设计了基础文档和进阶文档,以期帮助用户更好地使用算法库,如下图所示:
更丰富的算法模型支持
在 MMSelfSup 2.0 中,我们全面升级了算法模型的支持,提高了算法库在掩码学习方法领域的能力,截止目前,我们在手工设计任务,基于聚类的任务,对比学习任务,掩码学习任务以及混合任务等方向上提供了完善的支持,如下图所示。
我们对于部分前沿模型提供了全量模型的支持,方便用户基于 MMSelfSup 快速地进行各个尺寸模型,各个训练时长的实验。例如对于 MAE,我们提供了 ViT-B/L/H 各个尺寸的支持,以及提供了 300/400/800/1600 不同 epoch 训练长度的实验结果,也同时支持了 Linear Probling 和 Fine-tuning,如下所示:
Backbone | Epoch | Linear prob | Fine-tuning |
---|---|---|---|
ViT-B | 300 | 60.8 | 83.1 |
ViT-B | 400 | 62.5 | 83.3 |
ViT-B | 800 | 65.1 | 83.3 |
ViT-B | 1600 | 67.1 | 83.5 |
ViT-L | 400 | 70.7 | 85.2 |
ViT-L | 800 | 73.7 | 85.4 |
ViT-L | 1600 | 75.5 | 85.7 |
ViT-H-FT-224 | 1600 | / | 86.9 |
ViT-H-FT-448 | 1600 | / | 87.3 |
除此之外,我们也支持了 SimMIM 和 MoCo v3 的训练,如下:
SimMIM 实验结果
Backbone | Epoch | Fine-tuning |
---|---|---|
Swin-B-FT-192 | 100 | 82.7 |
Swin-B-FT-224 | 100 | 83.5 |
Swin-B-FT-224 | 800 | 83.8 |
Swin-L-FT-224 | 800 | 84.8 |
MoCo V3 实验结果
Backbone | Epoch | Linear prob | Fine-tuning |
---|---|---|---|
ResNet-50 | 100 | 69.4 | / |
ResNet-50 | 300 | 72.8 | / |
ResNet-50 | 800 | 74.4 | |
ViT-S | 300 | 73.6 | / |
ViT-B | 300 | 76.9 | 83 |
ViT-L | 300 | / | 83.7 |
小结
我们对 MMSelfSup 1.0 进行一个简单的总结,作为 OpenMMLab 2.0 的自监督学习算法库,目前我们已经在整个开源社区获得广泛使用。基于全新的架构和生态,我们可以轻松支持多个下游任务,具有可扩展易配置的特性。同时,我们也提供丰富的算法模型,方便的研究工具,以及便捷的模型推理。
后续规划
未来,我们也将不断地迭代更新,计划在未来支持更多自监督学习算法,不断提高模型的易用性,提供一键式的下游任务训练工具,以及提供统一的Benchmark标准。欢迎社区用户参与公测,并向我们提出宝贵的意见,我们将倾听大家的意见,不断迭代完善 MMSelfSup。
维护时间线
我们将在2023年1月1号正式发布 MMSelfSup 1.0 版本到主分支,对新版本感兴趣的同学,可以使用1.x分支来体验我们的全新版本。我们将在未来保持双分支的同时维护,主要的维护时间线如下所示: