可扩展易配置,快来揭秘新一代自监督学习开源框架
MMSelfSup 是 OpenMMLab 生态面向自监督学习的开源算法库,主要涵盖了计算机视觉的自监督学习。与监督学习不同,自监督学习无需人为的数据标注,能够有效利用海量的无标注数据来提升模型性能。
2020 年 06 月,OpenMMLab 联合社区发布了 OpenSelfSup,是业界的首个自监督学习算法库,集成了一系列主流的自监督学习算法。
2021 年 12 月,我们升级 OpenSelfSup 成为 MMSelfSup,正式加入 OpenMMLab 开源体系,发布了 v0.5.0 版本。
2022 年 09 月,我们发布了 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 的训练,如下:
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 |
SimMIM 实验结果
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 |
MoCo V3 实验结果
总结
我们对 MMSelfSup 1.0 进行一个简单的总结,作为 OpenMMLab 2.0 的自监督学习算法库,目前我们已经在整个开源社区获得广泛使用。基于全新的架构和生态,我们可以轻松支持多个下游任务,具有可扩展易配置的特性。同时,我们也提供丰富的算法模型,方便的研究工具,以及便捷的模型推理。
想了解更多 MMSelfSup 相关内容,欢迎查看直播回放视频~
后续规划
未来,我们也将不断地迭代更新,计划在未来支持更多自监督学习算法,不断提高模型的易用性,提供一键式的下游任务训练工具,以及提供统一的 Benchmark 标准。
MMSelfSup 新版本地址:
https://github.com/open-mmlab/mmselfsup/tree/1.x
欢迎社区用户参与公测,并向我们提出宝贵的意见,我们将倾听大家的意见,不断迭代完善 MMSelfSup。
相关文章
- 学习CURL扩展功能的使用(一)「建议收藏」
- 透过Spring自动配置原理看Spring的扩展点
- Recovery分区阻挡了扩展卷
- composer 安装扩展包时忽略版本匹配
- IDM脚本插件如何安装?及配置浏览器扩展教程
- 【Spring源码】- 04 扩展点之BeanFactoryPostProcessor
- 【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 内部测试链接 | 安装 Google Play 中带 扩展文件 的 APK 安装包 | 验证下载的扩展文件 )
- 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
- 【Android Gradle 插件】Gradle 自定义 Plugin 插件 ④ ( 为自定义 Gradle 插件的扩展配置扩展 | 在自定义插件中获取扩展属性 )
- RTMP推送扩展支持HEVC(H265)之Metadata结构填写详解
- 如何使用 PHP 扩展 Memcached 的长连接模式
- JavaScript学习总结(十四)——JavaScript编写类的扩展方法详解编程语言
- Oracle磁盘扩展:实现技术驱动业务发展(oracle磁盘扩展)
- 安装php扩展mysql:指南及步骤(安装php扩展mysql)
- 思科交换机图文设置扩展ACL的配置与应用技巧
- 利用Redis配置构建更大的内存空间(redis配置扩展内存)
- Oracle DBF轻松扩容,实现更强的数据库性能(oracle dbf扩展)
- SQL2005CLR函数扩展-解析天气服务的实现
- redis安装、配置、使用和redisphp扩展安装教程