0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用ImageNet训练了一个能降噪、超分和去雨的图像预训练模型

深度学习实战 来源:深度学习实战 作者:深度学习实战 2021-03-03 16:05 次阅读

说到Transformer,大家可能会想到BERT[1]、GPT-3[2]等等,这些都是利用无监督训练的大型预训练模型。既然Transformer也能用在CV上,那么能不能做类似的事情呢?这篇论文利用ImageNet训练了一个能降噪、超分和去雨的图像预训练模型(IPT)。

Motivation

目前很多low-level的task其实都是有一定相关性的,就是在一个low-level task上预训练对另一个task是有帮助的,但是目前几乎没有人去做相关的工作。而且pre-training在某些数据稀缺的task上就很有必要,并且无论在CV还是NLP,使用pre-trained model是非常常见的事情。对于一些输入和输出都是image的low-level算法来说,目前的pre-trained model显然是不适合的。

准备数据集

因为Transformer需要大量的数据去拟合,所以必须使用一个大型的数据集。在这篇论文中,作者用的是imagenet。对于imagenet的每一张图片生成各种任务对应的图像对,例如对于超分(super-resolution)来说,模型的输入数据是imagenet经过下采样的数据,而标签是原图。

IPT

在上篇文章介绍过了,因为Transformer本身是用于NLP领域的,输入应该是一个序列,因此这篇的论文做法和ViT[3]一样,首先需要把feature map分块,每个patch则视为一个word。但是不同的是,因为IPT是同时训练多个task,因此模型定义了多个head和tail分别对应不同的task。

整个模型架构包含四个部分:用于提取特征的heads、Transformer Encoder、Transformer Decoder和把feature map还原成输出的tails。

Heads

不同的head对应于不同的task,由于IPT需要处理多个task,因此是一个multi-head的结构,每个head由3层卷积层组成。Heads要完成的任务可以描述为:fH = Hi(x),x是输入图像,f是第i个Head的输出。

Transformer encoder

在输入Transformer前,需要将Head输出的feature map分成一个个patch,同样还需要加入位置编码信息,与ViT不同,这里是直接相加就可以作为Transformer Encoder的输入了,不需要做linear projection。

ef62fdc4-778b-11eb-8b86-12bb97331649.png

fpi是feature map的一个patch,Epi∈ RP*P×C是fpi的learnable position encoding。LN是layer normalization,MSA是多头self-attention模块,FFN是feed forward network。

Transformer decoder

Transformer decoder的输入时encoder的输出和task embedding。这些task embedding是可训练的,不同的task embedding代表处理不同的task。decoder的计算可以表示如下:

efacf5dc-778b-11eb-8b86-12bb97331649.png

fEi是指encoder的输出,fDi是指decoder的输出。

Tails

Tails与Heads是相对应的,但是不同的tail的输出的大小可能不一样,例如超分,做超分时输出比输入的图像大,因此与其它的tail输出的大小可能不一样。

Loss

loss由两部分组成,分别是Lcontrastive和Lsupervised的加权和。

Lsupervised是指IPT的输出与label的L1 loss。

加入Lcontrastive是为了最小化Transformer decoder对于来自同一张图的不同patch的输出的距离,最大化对于不同图片的patch之间的输出的距离。

实验与结果

作者用了32块NVIDIA Tesla V100,以256的batch size训练了200个epoch。

Reference

[1]Jacob Devlin, Ming-Wei Chang, Kenton Lee, and KristinaToutanova. Bert: Pre-training of deep bidirectionaltransformers for language understanding. arXiv preprintarXiv:1810.04805, 2018.

[2]Tom B Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, et al.Language models are few-shot learners. arXiv preprintarXiv:2005.14165, 2020.

[3]Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020.

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    2701

    浏览量

    47658
  • 数据集
    +关注

    关注

    4

    文章

    1176

    浏览量

    24340
  • nlp
    nlp
    +关注

    关注

    1

    文章

    463

    浏览量

    21812

原文标题:视觉新范式Transformer之IPT

文章出处:【微信号:gh_a204797f977b,微信公众号:深度学习实战】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    视觉深度学习模型:规模越大效果越佳吗?

    评估三类模型:(i) 在ImageNet-21k上预训练的ViT,(ii) 在LAION-2B上预训练的OpenCLIP,以及(iii) 在Imag
    发表于 04-11 09:45 58次阅读
    视觉深度学习<b class='flag-5'>模型</b>:规模越大效果越佳吗?

    【书籍评测活动NO.30】大规模语言模型:从理论到实践

    多种形式和任务。这个阶段是从语言模型向对话模型转变的关键,其核心难点在于如何构建训练数据,包括训练数据内部多个任务之间的关系、训练数据与
    发表于 03-11 15:16

    谷歌模型训练软件有哪些?谷歌模型训练软件哪个好?

    谷歌在模型训练方面提供了一些强大的软件工具和平台。以下是几个常用的谷歌模型训练软件及其特点。
    的头像 发表于 03-01 16:24 255次阅读

    谷歌模型训练软件有哪些功能和作用

    谷歌模型训练软件主要是指ELECTRA,这是一种新的预训练方法,源自谷歌AI。ELECTRA不仅拥有BERT的优势,而且在效率上更胜一筹。
    的头像 发表于 02-29 17:37 384次阅读

    如何使用Python进行图像识别的自动学习自动训练

    图像识别的自动学习和自动训练。 首先,让我们了解一下图像识别的基本概念。图像识别是指通过计算机程序识别和理解图像内容的过程。自动学习和自动
    的头像 发表于 01-12 16:06 202次阅读

    【飞腾派4G版免费试用】第三章:抓取图像,手动标注并完成自定义目标检测模型训练和测试

    抓取图像,手动标注并完成自定义目标检测模型训练和测试 在第二章中,我介绍了模型训练般过程,其
    发表于 12-16 10:05

    如何让网络模型加速训练

    的博文,对 Pytorch的AMP ( autocast与Gradscaler 进行对比) 自动混合精度对模型训练加速 。 注意Pytorch1.6+,已经内置torch.cuda.amp,因此便不需要加载
    的头像 发表于 11-03 10:00 1101次阅读
    如何让网络<b class='flag-5'>模型</b>加速<b class='flag-5'>训练</b>

    训练大语言模型带来的硬件挑战

    生成式AI和大语言模型(LLM)正在以难以置信的方式吸引全世界的目光,本文简要介绍了大语言模型训练这些模型带来的硬件挑战,以及GPU和网络行业如何针对
    的头像 发表于 09-01 17:14 1091次阅读
    <b class='flag-5'>训练</b>大语言<b class='flag-5'>模型</b>带来的硬件挑战

    卷积神经网络模型训练步骤

    卷积神经网络模型训练步骤  卷积神经网络(Convolutional Neural Network, CNN)是一种常用的深度学习算法,广泛应用于图像识别、语音识别、自然语言处理等诸多领域。CNN
    的头像 发表于 08-21 16:42 1021次阅读

    训练好的ai模型导入cubemx不成功怎么解决?

    训练好的ai模型导入cubemx不成功咋办,试了好几个模型压缩了也不行,ram占用过大,有无解决方案?
    发表于 08-04 09:16

    基于预训练模型和语言增强的零样本视觉学习

    在一些非自然图像中要比传统模型表现更好 CoOp 增加一些 prompt 会让模型能力进一步提升 怎么让能力更好?可以引入其他知识,即其他的预训练
    的头像 发表于 06-15 16:36 317次阅读
    基于预<b class='flag-5'>训练</b><b class='flag-5'>模型</b>和语言增强的零样本视觉学习

    State of GPT:大神Andrej揭秘OpenAI大模型原理和训练过程

    因为该模型训练时间明显更长,训练了1.4 万亿标记而不是 3000 亿标记。所以你不应该仅仅通过模型包含的参数数量来判断模型的能力。
    的头像 发表于 05-30 14:34 666次阅读
    State of GPT:大神Andrej揭秘OpenAI大<b class='flag-5'>模型</b>原理和<b class='flag-5'>训练</b>过程

    利用NeRF训练深度立体网络的创新流程

      本文提出了一种新的深度立体网络训练框架,可以从使用单个手持相机拍摄的图像序列中生成立体训练数据。这种方法利用了神经渲染解决方案提供的立体图像
    的头像 发表于 05-29 10:49 732次阅读
    <b class='flag-5'>利用</b>NeRF<b class='flag-5'>训练</b>深度立体网络的创新流程

    什么是预训练AI模型

    训练 AI 模型是为了完成特定任务而在大型数据集上训练的深度学习模型。这些模型既可以直接使用,也可以根据不同行业的应用需求进行自定义。
    的头像 发表于 05-25 17:10 630次阅读

    利用OpenVINO™部署HuggingFace预训练模型的方法与技巧

    作为深度学习领域的 “github”,HuggingFace 已经共享了超过 100,000 个预训练模型
    的头像 发表于 05-19 15:57 589次阅读
    <b class='flag-5'>利用</b>OpenVINO™部署HuggingFace预<b class='flag-5'>训练</b><b class='flag-5'>模型</b>的方法与技巧