关于算法:QConOPPO大规模CV预训模型技术及实践

11次阅读

共计 7768 个字符,预计需要花费 20 分钟才能阅读完成。

1 什么是预训练模型?为什么咱们须要预训练模型?


预训练模型是晋升深度学习算法性能的一种罕用伎俩。所谓预训练模型,能够概括为是某种深度学习的网络架构,并且蕴含这个网络架构在海量数据上训练好的一组权重。有了网络架构和权重后,咱们就能够用它作为某一具体视觉工作的骨干网络,并提供初始化参数。这样一来,具体的上游工作就有了一个较好的训练终点,在缩小摸索空间的同时,还可能实现更好的算法性能。

那么咱们为什么须要预训练模型呢?在这里做一个比喻,如果把深度学习算法比作武侠的话,那预训练模型就是他的内功,有了扎实的内功根底,就可能更容易、更疾速的把握各种文治招式,并施展其最大效用。预训练模型的过程就是深度学习算法修炼内功的过程。

2 OPPO 自研大规模 cv 预训练模型

2.1 概述

之所以要自研预训练模型次要是两点起因:首先,以后数据科学家们应用的预训练模型都是网上开源的,每年都有变动,最新的一些钻研往往不开源,无奈保障成果最优;其次就是网上开源的预训练模型,都是基于开源数据集数据集训练失去的,比方大家熟知的 imagenet。没有充分利用公司自有数据的劣势。因而,自研预训练模型是非常有意义的。

OPPO 自研大规模 cv 预训练模型技术计划次要包含以下三大部分:

  1. 网络架构翻新:次要是钻研以后 cv 界支流模型架构如 CNN,Transformer 和 MLP 等,对不同构造以后 SOTA 的网络架构进行组合、优化的摸索,尽可能的失去性能最优的网络架构作为预训练模型的骨干网络。
  2. 自监督学习训练:次要是心愿可能充分利用 oppo 自有的海量无标注数据,在海量无标注数据下进行预训练,从而失去更加通用的特色表白,让模型可能更好地克服 OOD(与训练集散布不同)状况,失去更加鲁棒的预训练模型。
  3. 有监督微调训练:当利用具体的工作数据集(标注样本)对预训练模型的网络参数进行微调训练时,应用适合的训练方法及正则办法,能够使模型在具体上游工作达到最优成果。

2.2 关键技术

2.2.1 网络架构设计

在网络架构方面,咱们的指标是设计适合的网络架构,放大特色摸索空间,晋升网络性能。为了可能更适宜接入不同的浓密场景视觉工作,咱们的网络架构须要设计成一种多阶段的层次结构来提供多尺度的特色图,并且咱们的网络要易于拓展成不同参数量级的变体模型,以满足不同业务场景的需要同时要在参数量和浮点数计算量更低的条件下尽可能的晋升网络的性能。

以后计算机视觉畛域三大支流模型架构包含卷积神经网络 CNN,Transfomer 以及多层感知机 MLP。其中 CNN 多年来始终是计算机视觉工作中占据主导地位的网络架构,CNN 善于提取部分细节特色, 并且具备形变、平移及缩放不变性等长处。Transformer 在 NLP 畛域获得了微小的胜利,去年首次在 CV 界亮相开始引领新的趋势,Transformer 的长处是善于捕捉全局信息, 具备更大的模型容量,且其运作机制更靠近人类。在 Transformer 崛起的同时,一部分钻研聚焦于 MLP 代替 Transformer 组件构建网络的钻研,开拓了另一个钻研方向,MLP 在小的模型规模下能够实现靠近 Transformer 的性能,但当规模扩充时,它就会受到重大的过拟合影响。

通过对这三种支流模型架构进行钻研剖析后,咱们失去了以下一些论断:对于 MLP 来说,它的钻研聚焦在替换 Transformer 组件来取得绝对有竞争力的后果,然而实际效果并没有超过基于 transformer 的办法,这系列工作只是肯定水平上开辟了一个新的思路。CNN 中的卷积操作善于提取图片的部分信息,而 Transformer 通过结构图像 tokens 提取到图片的全局示意,因而 CNN 和 Transformer 在肯定水平上能够造成良好的互补。还有就是 Transformer 在三种架构中具备最大的模型容量,更适宜做大规模预训练模型。因而,Transformer 加 CNN 的架构或者是最优的解决方案。

既然咱们要聚焦于 Transformer 办法,咱们就先要对 Transformer 的基本原理有肯定的理解,以便对其进行改良。所以接下来我先对 Transformer 进行简略介绍。Transformer 构造是 google 在 17 年的 Attention Is All You Need 论文中提出的,在 NLP 的多个工作上获得了十分好的成果。它最大特点是整个网络结构齐全是由 Self-Attention 机制组成。如图一所示,Transformer 采纳 Encoder-Decoder 构造,输出通过 embedding 后,要做地位编码,而后是多头自注意力机制,再通过 Feed Forward,每个子层有残差连贯,最初要通过 Linear 和 softmax 输入概率。

其中:

  1. 残差构造是为了解决梯度隐没问题,能够减少模型的复杂性。
  2. 其中的 Norm 指的是 LayerNorm 操作,LayerNorm 是为了对 attention 层的输入进行散布归一化。计算机视觉中常常会用的 batchNorm 是对一个 batchsize 中的样本进行一次归一化,而 LayerNorm 则是对一层进行一次归一化,二者的作用是一样的,只是针对的维度不同。
  3. Feed Forward 是两层全连贯加激活函数的构造。是为了应用非线性函数来拟合数据。其中第一层全连贯用来进行非线性性函数拟合,第二层全连贯用于调整输入维度。
  4. 退出地位编码(Positional Encoding)次要是因为 self-attention 机制没法捕获地位信息,因而须要通过地位编码来改善。

Transformer 构造中咱们最须要关注的是 self Attention 机制的原理,所谓 Self Attention 就是句子中的某个词对于句子自身的所有词做一次 Attention。当以一个词为核心进行 Self Attention 时,每个词都要通过三个矩阵 Wq, Wk, Wv 进行一次线性变换,一分为三,生成每个词本人的 query, key, value 三个向量,也就是公式中的大 Q,K,V,而后通过如下公式进行计算,作为这个词的输入。最终每个 Self Attention 承受 n 个词向量的输出,输入 n 个聚合的向量。这么做的目标是保留关注词的 value 值,减弱非相干词的 value 值。

而 Multi-Head self- Attention 就是将上述的 Attention 做 h 遍,而后将 h 个输入进行 concat 失去最终的输入。Transformer 的工程实现中,为了进步 Multi-Head 的效率,将 W 扩充了 h 倍,而后通过 reshape 和 transpose 操作将雷同词的不同 head 的 Q、K、V 排列在一起进行同时计算,实现计算后再次通过 reshape 和 transpose 实现拼接,相当于对于所有的 head 进行了一个并行处理。到此为止咱们对 Transformer 构造有了初步的理解。

在 20 年,提出的 ViT 是首个基于纯 Transformer 的构造来做图像分类工作的网络,算是 transformer 在图像上利用的开山之作,后续所有基于 Transformer 的网络架构都是基于此模型进行的革新。

ViT 的构造如图二所示,它就是后面讲到的一个典型的 Transformer 构造:

首先将一张的图像,分成互不交叠相等大小图像块,而后将每个图块进行展平并对每一个展平后的图块向量做一个线性变换进行降维,作为 Transformer 的输出。这里的每一个图块就是一个 Token,也就是 NLP 中句子中的一个词。

ViT 给输出的 Token 追加了一个分类向量,用于 Transformer 训练过程中的类别信息学习,与其余图块向量一起输出到 Transformer 编码器中,最初取第一个向量作为类别预测后果。

为了放弃输出图像块之间的空间地位信息,对图像块中增加一个地位编码向量,这种在进行 self-attention 之前就退出了地位信息的形式叫做相对地位编码,前面还会对地位编码进行一些介绍,此处不再赘述。

因为 ViT 是一个非层次结构的网络,不适宜用于浓密场景的视觉工作,并且计算复杂度绝对较高。在后续的钻研中,研究者们用各种方法去从不同的角度对他进行改良。

那么咱们是如何做的呢?

第一点,咱们心愿失去一种更通用的骨干网络架构,而不是针对不同的视觉工作设计不同的网络,因而要设计一种层次结构的网络,能够提供多尺度的特色图。实现层次结构的形式能够采纳 pixelShuffle, 卷积降采样等伎俩,来调整特色图尺度与输入维度,从而失去多个阶段的层次结构网络;

第二点,咱们要对对注意力机制进行革新。原始的 Transformer 在计算注意力机制时须要计算一个 Token 与其余所有 Token 之间的关系,计算复杂度为 Token 数量的二次型。为了能更高效的建模,局部钻研对注意力机制的计算进行了革新,次要包含:halo,shifted window,CrossShape 等;

第三点就是将 Transformer 与 CNN 进行无效的交融。视觉工作中部分特色建模是十分无效且至关重要的,而部分特色建模是 CNN 所善于的。已有钻研证实,以适当的形式叠加卷积层和 Transformer 层,能够无效地晋升网络的整体性能。也有钻研将卷积融入到 Transformer 中,用卷积代替线性变换来计算 Q,K,V 矩阵,能够使 Transformer 对部分特色的建模能力失去晋升。最初是对地位编码的改良。因为自注意力机制具备排列不变性,即不同排列的输入后果是一样的。为了补救这个缺点。如图三(a)所示,相对地位编码是在进行 Self-attention 之前就退出了地位信息。图三(b)所示为绝对地位编码,是在计算权重矩阵的过程中退出绝对地位信息。图三(c)所示为地位加强编码,它间接将地位信息退出到 Value 中,具体实现是用一个 Depth-wise Conv 对 value 进行卷积,而后将后果退出到了 self attention 的后果中。

对于咱们的网络架构,能够看做是一个四个阶段的体系结构:

首先通过一组卷积序列对图像进行分块操作生成 Tokens,为了产生档次示意,相邻的两个阶段之间咱们采纳另一组卷积序列是 Tokens 数量减半,通道维数加倍。这样就产生了多阶段的层次结构,可提供多尺度特色图,不便作为骨干网络接入到浓密场景视觉工作中。

从与 CNNs 联合的角度去看,能够看做是一个多阶段 Transformer 模块与一个 EfficientNetV2-like 的构造嵌套组合而成,实现了卷积与 Transfomer 的无效交融,在模型参数量和浮点数计算量更低的状况了大幅晋升了网络性能。

在计算多头自注意力时,咱们应用改良的计算机制,shifted-window + conv 和 CrossShape 两种办法,晋升 Trasnformer 计算效率的同时,网络性能也失去了进一步晋升。

对于地位编码局部咱们应用了绝对地位编码和部分加强地位编码两种形式,经试验验证这两种地位编码方式在分类工作上根本无差别,但在浓密场景工作(如检测、宰割等)时,部分加强地位编码性能更优。

最初咱们通过不同的深度或宽度的配置,设计了三组不同量级的模型架构:Tiny 模型,Small 模型 和 Base 模型,以适应不同业务场景的须要。

表 1 是咱们的网络架构在 Imagenet 数据集上的体现,咱们别离与不同参数量级下最新的网络架构进行了比照,能够看到咱们设计的网络架构在参数量更低、计算量更小的状况下,三种量级的变体模型都能获得最优的问题。

2.2.2 自监督学习

接下来介绍预训练模型的另一个关键技术自监督学,所谓自监督学习就是无监督学习的一种。在第 43 届国内信息检索年会深度学习之父上 Hinton 提出下一代人工智能属于无监督比照学习。对于三种学习工作 Hinton 的得意弟子 Yann LeCun 将其比作蛋糕,强化学习仅仅是蛋糕上的一颗樱桃,有监督学习可比作蛋糕上的奶油,而无监督学习是蛋糕胚,以示其基础性的作用和重要性。

以咱们人类为例,当咱们看到一个货色的时候,所有的知觉都耳濡目染地在给咱们灌输海量的数据,供咱们学习,推理和判断。咱们遇到的“题目”很多,无时无刻不在承受信息,然而咱们的“答案”却很少。咱们可能看过,各种各样的动物,直到某一天才有人用 3 个字通知咱们,“这是猫”。可能毕生中,他人给你指出这是猫的次数,都是比比皆是的。然而,仅仅通过这一两次提醒,你就能在毕生中记得这些概念。甚至他人从不通知这是猫,你也晓得这应该不是狗或者其余动物,这种没有答案的学习就是无监督学习,他人通知了咱们答案的学习就是有监督学习,可见无监督学习的基础性是如许重要。因为监督学习重大依赖于人工标注数据,而咱们心愿神经网络可能在大量无标注数据中学习到更多内容,从而进步数据学习效率以及模型泛化能力,因而将基于自监督学习的预训练改良作为重点方向之一。

自监督学习能够分为基于 Pretext Task 的办法、基于 Contrastive Learning 的办法、基于 Clustering 的办法和基于 Contrastive + Cluster 的办法。基于 Pretext Task 的办法让神经网络去解决一个 pretext task,在这个过程中模型可能学习到丰盛的特色示意,而后用于上游工作然而只靠单个前置工作来学习特色示意将不是最好的抉择并且不同前置工作之间的设计差别十分大,难度也不雷同。基于 Contrastive Learning 的办法通过将数据别离与正例样本和负例样本在特色空间进行比照,来学习样本的特色示意,因为须要显示的去对 pair 对进行 feature 级别比照导致计算量十分大。基于 Clustering 的办法在特色空间进行聚类,看下哪些图片在特色空间上是相像的,特色聚类 + 预测集群调配,依据 image feature 在全副数据集做 cluster(codes),在一个训练 step 中会对很多 image views 做 cluster,这种办法通常须要扫很多遍数据集。咱们次要基于 facebook 的最新钻研 SwAV 办法对模型进行自监督学习预训练改良,它是一种基于 Contrastive + Cluster 的办法。

SwAV 办法与之前的一些比照学习办法的不同之处,次要就是在 features 比照,SwAV 应用了一个 codes 去表白 features 进而来放弃一致性。

通常基于 clustering 法个别是依据 image feature 在全副数据集做 cluster(codes),在一个训练 step 中会对很多 image views 做 cluster。而 Swav 办法并不思考用 codes 作为指标,而是通过一张图片不同的 views 的 codes 须要保持一致来进行学习,能够了解为是一张图片的多个不同 views 须要对应雷同的 code 而不是间接用他们 feature 来做。

训练次要包含两局部:

z(features)如何通过 c(prototypes)映通过射失去 Q(codes);

有了 z 和 q 之后,实践上同一张图片不同 view 所产生的 z 和 q 也能够互相预测,于是作者便定义了新的 loss 如公式所示。

其中 z 是 feature,q 是 codes,s 和 t 下标示意通过不同的 augmentations 对 image 进行转换的,而分项 loss 的计算公式为:

咱们次要采纳 SwAV 办法对咱们的设计的网络架构进行自检自监督学习预训练。并尝试“分阶段训练”的形式,将学习过程合成为逐渐实现的相干子工作,逐渐将信息注入网络,以便在训练的初级阶段捕捉数据的“粗尺度”特色,而在后续阶段学习“细尺度”特色,并且每个阶段的训练后果都能够作为下一阶段的先决条件,这样会产生正则化成果并加强泛化能力。目前这一部分的工作目前还在进行中,性能统计后果行将到来。

2.2.3 有监督微调

视觉模型的性能是网络架构、训练方法和正则办法的综合后果,在做具体任务时,有监督微调旨在利用其标注样本对预训练网络的参数进行调整。加载网络结构并利用预训练好的权重去初始化网络后须要设置正当的超参配置、优化办法、数据加强办法、和正则办法等。新的网络架构往往是促成诸多停顿的根底,与新网络架构同时呈现的通常还有更加先进的训练方法、数据加强办法和正则办法等。此处仅对一些过来和近期新呈现的办法进行列举,针对具体的视觉工作,可依据本人教训或别人已有的教训进行配置。

3 业务利用

目前咱们寻找了两个外部已有业务,尝试应用咱们的预训练模型对齐进行优化降级,次要包含主题资源格调全场景打标和 PGC 小视频一二级分类。在主题资源格调全场景打标业务中,应用了咱们的 tiny 预训练模型来做主题格调多标签分类工作; 与原始基于 EfficientNet 的版本相比,模型的参数量和浮点数运算量仅小幅减少的状况下,打标准确率由 87.7% 晋升到 95%,大幅晋升了 7.3%。另外在 PGC 小视频一二级分类业务应用 base 预训练模型 +BERT 来做多模态交融分类;

小视频一二级分类精度与原办法相比均失去了晋升,一级精度由 86.5% 晋升到 89.7%,晋升了 3.2%;二级精度 61.6% 晋升到 75.4%,晋升了 13.8%。充沛的验证了咱们预训练模型的有效性及业务价值。

4 总结

预训练模型是深度学习网络架构 + 海量数据上训练好的权重,是晋升某一具体任务算法性能的一种罕用伎俩。预训练模型的关键技术包含:网络架构、自监督预训练和有监督微调,各局部都有很多值得钻研的中央。另外,不同业务场景须要的预训练模型规模往往不同,须要设计多种变体模型别离进行预训练,以实现预训练模型利用到更多的业务当中实现更多的价值。

5 参考文献

[1] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advances in neural information processing systems, pages 5998–6008, 2017.

[2] Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, ylvain Gelly, et al. An image is worth 16×16 words: Transformers for image recognition at scale. arXiv preprint arXiv:2010.11929, 2020.

[3] Mathilde Caron, Ishan Misra, Julien Mairal, Priya Goyal, Piotr Bojanowski, and Armand Joulin. Unsupervised learningof visual features by contrasting cluster assignments.arXiv preprint arXiv:2006.09882, 2020.

作者简介

Darren OPPO 高级算法工程师

深耕计算机视觉算法畛域多年,目前专一于 cv 模型架构与训练方法钻研。

获取更多精彩内容,请扫码关注 [OPPO 数智技术] 公众号

正文完
 0