OpenMMLab-AI实战营第二期-课程笔记-Class 4:深度学习预训练与MMPretrain

news2024/11/27 3:48:33

Class4:深度学习预训练与MMPretrain

课程链接:深度学习预训练与MMPretrain_哔哩哔哩_bilibili

相关repo:open-mmlab/mmpretrain: OpenMMLab Pre-training Toolbox and Benchmark (github.com)

文章目录

  • Class4:深度学习预训练与MMPretrain
    • MMpretrain介绍
      • what?
      • 主要特性
      • 数据流
        • 数据加载器与模型之间的数据流
    • 经典Backbone
      • ResNet
      • VGG
      • 注意力机制
    • 自监督学习
      • 对比学习-SimCLR
      • MIM-MAE
      • 目前已支持的算法
    • 多模态算法
      • CLIP
      • BLIP
      • 其它算法
      • 其它算法

MMpretrain介绍

what?

MMPretrain 是一个全新升级的预训练开源算法框架,旨在提供各种强大的预训练主干网络, 并支持了不同的预训练策略。MMPretrain 源自著名的开源项目 MMClassification 和 MMSelfSup,并开发了许多令人兴奋的新功能。

image-20230605193657791

主要特性

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

数据流

数据流首先是数据,例如图像文件,标注文件等等,通过dataloader对数据进行读取,以及对数据进行增强等操作,接下来从dataloader之后,我们就获得了input和data samples,inputs为torchtensor为图片的张量表达,data sample则是其他相关的信息;在之后我们将所需要的数据送入到模型当中,如果是在训练,则会计算得到loss,然后送入到优化器,最后得到梯度,然后将反向传播,对模型进行更新以及优化;如果是在预测阶段,一般我们会输出预测的结果,然后送到evaluator当中进行matrix的计算,并且输出相关的结果。

image-20230605194833608

数据加载器与模型之间的数据流

数据加载器 (dataloader) 和模型 (model)之间的数据流一般可以分为如下三个步骤 :

  • i) 使用 PackSelfSupInputs 将转换完成的数据打包成为一个字典;
  • ii) 使用 collate_fn 将各个张量集成为一个批处理张量;
  • iii) 数据预处理器把以上所有数据迁移到 GPUS 等目标设备,并在数据加载器中将之前打包的字典解压为一个元组,该元祖包含输入图像与对应的元信息(SelfSupDataSample)。

经典Backbone

我们可以把模型看作算法的特征提取器或者损失生成器。在 MMpretrain 中,模型主要包括以下几个部分:

  • 算法,包括模型的全部模块和构造算法时需要用到的子模块。
  • 主干,里面是每个算法的支柱,比如 MAE 中的 VIT 和 SimMIM 中的 Swin Transformer。
  • 颈部,指一些特殊的模块,比如解码器,它直接增加脊柱部分的输出结果。
  • 头部,指一些特殊的模块,比如多层感知器的层,它增加脊柱部分或者颈部部分的输出结果。
  • 记忆,也就是一些算法中的存储体或者队列,比如 MoCo v1/v2。
  • 损失,用于算输出的预测值和目标之间的损失。
  • 目标生成器,为自监督学习生成优化目标,例如 HOG,其它模块抽取的特征(DALL-E,CLIP)等.

这部分内容已经比较熟了,可参考之前的博客

模型库统计 — MMPretrain 1.0.0rc8 文档

image-20230605200556712

ResNet

image-20230605205902036

VGG

image-20230605205738784

注意力机制

最重要的之一就是注意力机制,注意力机制主要为了对不同的特征进行一个有权重的选取,实现层次化特征,后层特征是空间领域内的前层特征的加权求和,权重越大,则对应位置的特征就越重要。

image-20230605201530625

我们可以看到,在原始的卷积中,权重只是一个可学习的参数,与句与输入无关,而且只能进行局部的建模关系,远距离的关系只能通过多层卷积来进行实现,而在注意力机制当中,该权重则是输入的一个函数,与输入有关,可以不局限于领域显示的建模,远距离的关系,不同的图像所产生的权重是不一样的,会和图像的位置相关,而且并不是对所有图像都要使用相同的权重。

自监督学习

自监督学习(Self-supervised learning, SSL)是一种极具潜力的学习范式,它旨在使用海量的无标注数据来进行表征学习。在SSL中,我们通过构造合理的预训练任务(可自动生成标注,即自监督)来进行模型的训练,学习到一个具有强大建模能力的预训练模型。基于自监督学习获得的训练模型,我们可以提升各类下游视觉任务(图像分类,物体检测,语义分割等)的性能。

image-20230605202901184

对比学习-SimCLR

简单来说,对比学习的思路就是:一张图片,经过不同的数据增强,被神经网络所提取的特征,仍应具有高度的一致性。

image-20230605210306980

SimCLR 提出四大结论:

  • 对比学习中,强大的数据增强至关重要,相比于有监督学习,对比学习从中受益更多
  • 在网络学习到的特征和损失函数计算之间,添加可学习的非线性层有助于特征的学习
  • 归一化的 embeddings 和合适的 temperature 参数有助于特征表示的学习
  • 越大的 batch size 和越久的训练时间有助于对比学习获得更好的结果,另外和监督学习一样,大网络可以取得更好的结果

MIM-MAE

Masked Autoencoders (MAE) 是一篇非常具有影响力的文章。MAE 相比于 BEiT,简化了整体训练逻辑,利用随机掩码处理输入的图像块,以及直接重建掩码图像块来进行训练。MAE 基于两大主要设计:一是采用了非对称结构的编码-解码器,其中编码器只计算非掩码图像块,同时采用了轻量化的解码器设计;二是遮盖大部分的图像块,如掩码概率为 75%,可以获得更加具有意义的自监督训练任务。

image-20230605210747033

目前已支持的算法

  • Relative Location (ICCV’2015)
  • Rotation Prediction (ICLR’2018)
  • DeepCluster (ECCV’2018)
  • NPID (CVPR’2018)
  • ODC (CVPR’2020)
  • MoCo v1 (CVPR’2020)
  • SimCLR (ICML’2020)
  • MoCo v2 (arXiv’2020)
  • BYOL (NeurIPS’2020)
  • SwAV (NeurIPS’2020)
  • DenseCL (CVPR’2021)
  • SimSiam (CVPR’2021)
  • Barlow Twins (ICML’2021)
  • MoCo v3 (ICCV’2021)
  • BEiT (ICLR’2022)
  • MAE (CVPR’2022)
  • SimMIM (CVPR’2022)
  • MaskFeat (CVPR’2022)
  • CAE (arXiv’2022)
  • MILAN (arXiv’2022)
  • BEiT v2 (arXiv’2022)
  • EVA (CVPR’2023)
  • MixMIM (ArXiv’2022)
  • PixMIM (ArXiv’2023)

多模态算法

CLIP

CLIP的英文全称是Contrastive Language-Image Pre-training,即一种基于对比文本-图像对的预训练方法或者模型。CLIP是一种基于对比学习的多模态模型,与CV中的一些对比学习方法如moco和simclr不同的是,CLIP的训练数据是文本-图像对:一张图像和它对应的文本描述,这里希望通过对比学习,模型能够学习到文本-图像对的匹配关系。如下图所示,CLIP包括两个模型:Text EncoderImage Encoder,其中Text Encoder用来提取文本的特征,可以采用NLP中常用的text transformer模型;而Image Encoder用来提取图像的特征,可以采用常用CNN模型或者vision transformer。

image-20230605212427786
  • 在大规模数据集上使用NLP监督预训练图像分类器,证明了简单的预训练任务,即预测图像和文本描述是否相匹配,是一种有效的、可扩展的方法
  • 用4亿对来自网络的图文数据对,将文本作为图像标签,进行训练。进行下游任务时,只需要提供和图像对应的文本描述,就可以进行zero-shot transfer,并取得可观的结果

BLIP

BLIP,这是一个新的VLP框架,可以灵活地转换到视觉语言理解和生成任务。BLIP通过引导字幕有效地利用了嘈杂的web数据,其中字幕器(captioner)生成合成字幕,而过滤器(filter)则删除了嘈杂的字幕。作者在广泛的视觉语言任务上获得了最先进的结果,例如图像文本检索 ,图像字幕和VQA。当以zero-shot方式直接转移到视频语言任务时,BLIP还表现出很强的泛化能力。

image-20230605213911858

其它算法

方式直接转移到视频语言任务时,BLIP还表现出很强的泛化能力。

image-20230605213911858

其它算法

image-20230605214023031

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/665290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系统工程 - 记录一次调试USB设备低功耗应用的过程

系统工程 - 记录一次调试USB设备低功耗应用的过程 文章目录 系统工程 - 记录一次调试USB设备低功耗应用的过程需求功耗测量方法分析功耗来源LED功耗MCU功耗板子漏电 软件改善功耗调整tinyusb协议栈源码降低主频电脑唤醒usb设备退出低功耗进入STOP模式 总结 需求 最近在同客户做…

【Python 随练】寻找完数

题目: 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如 61+2+3.编程找出 1000 以内的所有完数。 简介: 在本篇博客中,我们将解决一个数学问题:如何找出 1000 以内的所有…

Stable diffusion WebUI txt2img使用教学

本篇文章将深入探讨如何在Stable Diffusion WebUI上进行各项参数的调整。将以txt2img为主要讨论对象,探讨诸如基本设定Sampling method以及CFG scale等参数的调整,以及这些参数之间的相互影响。 对于还未安装Stable Diffusion WebUI的小伙伴&#xff0c…

httpd的安装和mysql数据库的安装方法

目录 一 安装httpd 1.下载httpd包模块apr和apr-u到opt目录 2. 解包 3. 把apr和apr-u包放在http的第三方模块scrilb目录中 4.进入httpd包的安装目录并安装依赖环境和进行编译安装 5. make -j 2 && make install 编译并安装 6.优化配置文件 7. 把httpd服务放在sy…

智能文档图像处理技术:解决大数据时代文档图像处理难题

智能文档图像处理技术:解决大数据时代文档图像处理难题 0. 前言1. 智能文档处理1.1 智能文档处理简介1.2 智能文档处理应用 2. VALSE 视觉与学习青年学者研讨会2.1 VALSE 20232.2 合合信息亮相 VALSE 2023 3. 版面分析技术3.1 版面分析3.2 文档还原 4. 其他相关智能…

Gamma:强大的AI制作PPT神器,用完再也回不去了!

看过许多 AI 制作 PPT 软件,最终还是被 Gamma 惊艳到。 Gamma 是一款基于人工智能技术的 PPT 制作工具,可以帮助用户轻松制作高质量的 PPT 演示文稿。 痛点解决 相比传统制作 PPT 方式,Gamma 可以解决哪些如下 7 个痛点: 一句话…

2016年全国硕士研究生入学统一考试管理类专业学位联考写作试题

2016年1月真题: 四、写作:第56~57小题,共65 分。其中论证有效性分析30 分,论说文35分。 56、论证有效性分析: 分析下述论证中存在的缺陷和漏洞,选择若干要点,写一篇600字左右的文章&#xff0…

2013年全国硕士研究生入学统一考试管理类专业学位联考写作试题

2013年1月真题: 四、写作:第 56~57小题,共65分。其中论证有效性分析30 分,论说文35 分。 56、论证有效性分析: 分析下述论证中存在的缺陷和漏洞,选择若干要点,写一篇600 字左右的文章,对该论证的有效性进行分析和评论…

Golang每日一练(leetDay0102) 删除无效的括号、累加数

目录 301. 删除无效的括号 Remove Invalid Parentheses 🌟🌟🌟 306. 累加数 Additive Number 🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏…

使用mpi并行技术实现wordcount算法

【问题描述】 编写程序统计一个英文文本文件中每个单词的出现次数(词频统计),并将统计结果按单词字典序输出到屏幕上。 注:在此单词为仅由字母组成的字符序列。包含大写字母的单词应将大写字母转换为小写字母后统计。 【输入形…

iPhone手机用户们在用的手机桌面便签推荐哪款?

iPhone手机的性能和外观设计是非常好的,很多人在工作和生活中都少不了它的辅助。有人在工作生活中担心会忘掉一些重要的事,在这种情况下可以用便签软件来帮自己把这些重要的事情记录下来。iPhone手机用户们在用的手机桌面便签推荐哪款? 其实…

加密与解密 调试篇 静态分析技术 (一)文件类型/窗口/定位

1.文件类型分析 逆向分析的第一步就是文件类型分析 文件使用什么写的 使用什么编译器编译的 是否被加密过 然后才能进入下一步 有很多工具可以进行分析 我选择exeinfo来查看 但是并不是工具就可以直接分析完成 因为有些会存在欺骗 把入口代码改造成和Visual C 6.0类似的…

04-闭包

闭包:函数嵌套函数,内部函数就是闭包,只有函数内部的子函数才能读取内部变量。 先上一个经典的闭包: function outerFun () {let a 10;function innerFun () {console.log(a);}return innerFun; } let fun outerFun(); fun();…

GPT提示词系统学习-第三课-规范化提示让样本走在提示词前

开篇 本教程将为您提供有关不同类型提示的术语及如何描述它们。尽管提示工程中已经有一些方法来形式化术语,但这个领域仍在不断发展,我们在这篇教程中将给到大家展示一种基于QA形式的通用的、标准的提示语写法。 提示的组成部分 以下是在一个提示中经常会出现的一些组成部…

Triton教程 --- 动态批处理

Triton教程 — 动态批处理 Triton 提供了动态批处理功能,将多个请求组合在一起执行同一模型以提供更大的吞吐量。 默认情况下,只有当每个输入在请求中具有相同的形状时,请求才能被动态批处理。 为了在输入形状经常变化的情况下利用动态批处理…

【PCB专题】Allegro 生成钻孔数据方法

生成Drill Symbol 选择Manufacture->NC->Drill Customization... 在Drill Customization中选择Auto generate symbols(防止钻孔未定义图形符号,选择后会自动产生图形符号)。然后在弹出的警告框中选择是(Y)。最后点击OK。 生成Drill Legend 选择Manufacture->NC-&…

什么是OTN——光传送网?

概要 在现代通信网络中,光纤技术已经成为主流,提供了高速、高带宽的数据传输能力。光传送网(Optical Transport Network,OTN)是一种基于光纤技术的传输网络,用于实现可靠、高效的光纤通信。本文将详细介绍O…

01 React入门、虚拟DOM

总结 一、React 入门 1.1 特点 高性能、声明式、组件化、单向响应的数据流、JSX扩展、灵活 1.2 React初体验 <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpo…

AIDA64压力测试教程,AIDA64压力测试多长时间,AIDA64压力测试结果怎么看

硬件管理工具AIDA64功能全面专业&#xff0c;操作简便易学&#xff0c;使用AIDA64进行系统稳定性测试逐渐成为更多用户的选择。可能有很多用户对如何使用AIDA64进行系统稳定性测试不太了解&#xff0c;系统稳定性测试也称为压力测试&#xff0c;或者更通俗的烤机测试&#xff0…

SPI协议详细总结附实例图文讲解通信过程(快速掌握)

目录 一、简介二、数据通信过程2.1 通信总过程总结2.2 具体协议规则2.2.1 时钟极性与时钟相位2.2.2 SPI模式2.2.3 图文实例讲解 2.3 SPI协议优缺点总结 三、其他相关链接 一、简介 SPI(Serial Peripheral nterface&#xff0c;串行外设接口) 协议是一种高速高效率、全双工的通…