向我们迎面走来的,是有较强自我管理意识的MMSelfSup!

2022-01-18 09:45:46 浏览数 (1)

众所周知,传统的监督学习任务需要大量的标注数据,如 ImageNet1k 数据集便有 128 万的数据量,而标注如此大量数据更是耗时耗力,以至于数据往往成为了人工智能模型应用的瓶颈之一。

正因如此,自监督学习,即利用图像自身的信息进行训练,从而获得更加鲁棒和强大的模型成为越来越多人研究的方向。所以,让我们直接有请我们今天的主角!

最宠用户的 OpenMMLab 今天隆重推出 ——

全新自监督学习代码库 MMSelfSup!

MMSelfSup 基于之前开源的 OpenSelfSup,进行了全面升级和重构。同时,整体设计延续了 OpenMMLab 系列的模块化风格,继承了其灵活的 Config 配置模式

在 MMSelfSup 中,我们还提供多个 benchmark,并对接 MMDet 和 MMSeg 算法库,方便用户完成从预训练到下游任务评估的一系列流程。

还等什么?赶紧来 GitHub 试试吧!

https://github.com/open-mmlab/mmselfsup

11种算法,满足所有幻想

目前,MMSelfSup 包含了 11 种自监督学习算法,包括近两年来火热的对比学习系列算法,比如图像全局对比的 MoCo、SimCLR、SimSiam 等,同时也有像素级别的自监督学习算法 DenseCL。

未来,我们会紧跟学术前沿,不断给大家提供最新的自监督学习算法。

由于自监督学习为无标签预训练过程,对于模型的训练效果较难具象化。所以,我们也另外提供自监督学习相关的各类工具,已实现和计划中的,包括但不限于可视化的工具、监督训练的小工具等,它们可以方便用户对算法进行各类调试和修改。

训练过程中图片特征质量的变化

模块化设计和灵活的配置

MMSelfSup 的整体设计延续了 OpenMMLab 的设计思路,对算法进行模块化拆分,一方面便于在实现中尽可能的保证代码复用,另一方面也方便后续工作对算法的结构进行扩展,并且实现新的算法探索。

以下为 MMSelfSup 的大致框架 ——

MMSelfSup 逻辑框架主要分为 selfsup 的自监督训练benchmarks 的下游任务评估训练

MMSelfSup 文件夹部分包含了绝大部分的核心代码,包括 datasets、models 的相关实现等;

Datasets 中暂时保留了 OpenSelfSup 中的构建思路,从 data sources 读取数据,再构建 pipelines,通过算法相关的 datasets 进行封装,以此向模型输送训练数据;

algorithms 中,通过 backbones、necks、heads 等进行算法的构建,其中 backbones 为我们主要的预训练模型,而 neck 则作为训练辅助结构, loss 计算则包含在了相对应的 heads 内;

core 内实现了部分算法所需要的 hooks ,以及特定的 optimizers;

configs 中,我们区分开了 selfsup 训练和 benchmarks 的下游任务,大家可以有针对性地配置相应的训练设置,从而进行一系列的消融实验。

标准化的基准进行对比

自监督的目标是提供强大的预训练模型,同时我们也希望所有自监督学习的算法模型能够在更加公平的设置中比较,所以我们也提供了多项基准测试,目前共分为分类、检测分割三类任务。

分类任务

包含数据集 Pascal VOC、ImageNet、iNaturalist18 和 Places205,其中 VOC 做 SVM / Low-shot SVM 的分类,其余三个数据集则进行线性评估。另外在 ImageNet 数据集上,我们提供了只包含 1% 和 10% 训练数据的半监督训练配置文件。

检测任务

包含数据集 Pascal VOC 和 COCO,我们提供了基于 Faster-RCNN 和 Mask-RCNN 两种算法的基础配置文件,主要采用了 MoCo 论文中的下游任务训练设置。

分割任务

包含数据集 Pascal VOC 和 Cityscapes,我们提供了基于 FCN 算法的基础配置文件,而训练设置则尽量和 MMSeg 对齐。

也就是近一两年,图像方面的自监督算法才达到了监督学习的水平,并不像在自然语言处理中那样,预训练发展较早,而且图像自监督学习现在更多的还处在学术上的探索中。

我们希望 MMSelfSup 能够帮助降低自监督领域的研究门槛,提升该领域的影响力。随着算法的持续发展, MMSelfSup 也会不断进步与完善。

欢迎使用

项目地址&使用文档:

https://github.com/open-mmlab/mmselfsup

0 人点赞