深度学习预训练与MMPretrain
MMPreTrain 算法库介绍
MMPretrain 是一个全新升级的预训练开源算法框架,旨在提供各种强大的预训练主干网络, 并支持了不同的预训练策略。MMPretrain 源自著名的开源项目 MMClassification 和 MMSelfSup,并开发了许多令人兴奋的新功能。 目前,预训练阶段对于视觉识别至关重要,凭借丰富而强大的预训练模型,我们能够改进各种下游视觉任务。
我们的代码库旨在成为一个易于使用和用户友好的代码库库,并简化学术研究活动和工程任务。 我们在以下不同部分中详细介绍了 MMPretrain 的特性和设计。
代码仓库:https://github.com/open-mmlab/mmpretrain
文档教程:https://mmpretrain.readthedocs.io/en/latest/
支持开箱即用的推理API和模型,包含丰富的相关任务
- 图像分类
- 图像描述
- 视觉问答
- 视觉定位
- 检索
安装
pip install openmim
git clone https://github.com/open-mmlab/mmpretrain.git
cd mmpretrain
pip install -U openmim && mim install -e .
多模态安装
# 从源码安装
mim install -e ".[multimodal]"
# 作为 Python 包安装
mim install "mmpretrain[multimodal]>=1.0.0rc8"
验证安装
from mmpretrain import get_model, inference_model
model = get_model('resnet18_8xb32_in1k', device='cpu') # 或者 device='cuda:0'
inference_model(model, 'demo/demo.JPEG')
代码框架
经典主干网络
残差学习基本思路
两种残差网络
ResNet(2015)
以VGG为基础
保持多级机构、增加层数
增加跨层连接
ResNet-34 34层ImageNet Top-5 准确率:94.4
5级,每级包含若干残差模块,不同残差模块个数不同ResNet结构
每级输出分辨率减半,通信倍增
全局平均池化压缩空间维度
单层全连接层产生类别概率
ResNet的成就和影响力
深度学习领域影响力最大、使用最广泛的模型机构之一,获得CVPR 2016最佳论文奖
残差结构也一直被广泛应用至今,不论计算机视觉如今的各种视觉TransFormer或者是ConvNeXt这类卷积神经网络,亦或是近期大火的GPT及各类大语言模型中都有着残差网络的身影
Vision Transformer
将图像切分成若干16*16的小块,所有块排列成词向量,先经过线性层映射,一张[H,W,C]维度的图片变为[L,C],再经多层Transformer Encoder的计算产生相应的特征向量
图块之外加入额外的token,用于query其他patch的特征并给出最后分类
注意力模块基于全剧感受野,复杂度为尺度的4次方
自监督学习的常见类型
- 基于各种代理任务
- 基于对比学习
- 基于掩码学习
SimCLR
基本假设:如果模型能很好地提取图片内容的本质,那么无论图片经过什么样的数据增强操作,提取出来的特征都极为相似
Masked Autencoders
基本假设:模型只有理解图片内容、掌握图片的上下文信息,才能恢复出图片中被随机遮挡的内容