一 MMPreTrain算法库组成

MMPreTrain是一个全新升级的预训练开源算法框架,旨在提供各种强大的预训练主干网络,并支持不同的预训练策略
MMPreTrain源自MMClassification和MMSelfSup,并开发了许对新功能。目前,预训练阶段对于视觉识别至关重要,凭借丰富而强大的预训练模型,我们能够改进各种下游视觉任务,我们的代码库旨在成为一个易于使用和用户友好的代码库,并简化学术研究活动和工程任务。

算法库与任务组成

支持多样的主干网络与预训练模型
支持多种训练策略(有监督学习,无监督学习,多模态学习等)
提供多种训练技巧
大量的训练配置文件
高效率和高可扩展性
功能强大的工具箱,有助于模型分析和实验
支持多种开箱即用的推理任务
图像分类
图像描述(Image Caption)
视觉问答(Visual Question Answering)
视觉定位(Visual Grounding)
检索(图搜图,图搜文,文搜图)
请添加图片描述

python推理API

请添加图片描述

框架概览

请添加图片描述
请添加图片描述
以下是简单的安装步骤:

conda create -n open-mmlab python=3.8 pytorch==1.10.1 torchvision==0.11.2 cudatoolkit=11.3 -c pytorch -y
conda activate open-mmlab
pip3 install openmim
git clone https://github.com/open-mmlab/mmpretrain.git
cd mmpretrain
mim install -e .

如果需要多模态模型,请使用如下方式安装额外的依赖:

mim install -e ".[multimodal]"

OpenMMLab项目中的重要概念——配置文件

深度学习模型的训练涉及几个方面:

  • 模型结构 模型有几层,每层多少个通道数等
  • 数据 数据集划分、数据文件路径、批大小、数据增强策略等
  • 训练优化 梯度下降算法、学习率参数、训练总论数、学习率变化策略等
  • 运行时 GPU 分布式环境配置等
  • 辅助功能 如打印日志、定时保存checkpoint等

数据流

请添加图片描述

二 经典主干网络

ResNet

可看我之前的博客:https://blog.csdn.net/shengweiit/article/details/129402747


卷积退化为恒等映射时,深层网络与浅层网络相同,所以深层网络应具备不差于浅层网络的分类精度。请添加图片描述

Vision Transformer

  • 将图片切成若干16X16的小块,所有块排成词向量,先经过线形层映射,一张[H,W,C]的维度的图片变成[L,C],在经过多层Transformer Encoder的计算产生相应的特征向量。
  • 图块之后加入额外的token,用于query其他patch得特征并给出最后的分类
  • 注意力模块基于全局感受野,复杂度为尺寸的4次方

请添加图片描述

注意力Attention Mechanism

实现层次化特征:后层次化是空间领域内的前层特征的加权求和,权重越大,对应位置特征越重要

请添加图片描述
权重是可以学习的参数,但是与输入无关,只能建模局部关系,远距离关系只能通过多层卷积实现。

请添加图片描述
权重是输入的函数,与输入有关,可以不局限于领域,显式建模远距离关系。
请添加图片描述
可以用注意力机制对图像建模

self Attention

通过自身的输入,产生K Q V,然后融合。

请添加图片描述

Multi-head

不同头的注意力可以对不同头进行特征提取请添加图片描述

三 自监督

  • 基于各种代理任务
    请添加图片描述

  • 基于对比学习

  • 请添加图片描述

  • 基于掩码学习

SimCLR

基本假设:如果模型能很好地提取图片内容好,那么无论图片经过什么样的数据增强操作,提取出来的特征都应该极为相似。
对于某种图片x,对它进行两次数据增强,得到x1和x2

  • x1和x2互为正样本
  • 其他图片增强的结果都是x1和x2的负样本
    请添加图片描述
    请添加图片描述

MAE

基本假设:模型只能理解图片内容,掌握图片的上下文信息,才能恢复出原图片中被随机遮挡的内容
请添加图片描述
输入信息:划分成规划不重叠的图像块,随机掩盖掉一部分图像块
然后:将没有遮挡的图像块按照顺序送入Transformer Encoder中,获得特征向量
将遮蔽的图像块按位置插入特征向量中
放入到decoder中,生成原始图片
拉近重建图像与原始图像的距离
请添加图片描述

四 多模态算法

CLIP(双流网络)

请添加图片描述

BLIP

对三种loss进行了结合,从此构建了新的vision language pre-training框架,并且可以完成各类下游任务。例如:

  • 图文检索
  • 图像描述生成
  • 视觉问答
    请添加图片描述
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐