深度学习的典型网络结构


1. 神经元的连接

深度学习网络,需要处理神经元之间的多对多的连接关系:

  • Input:多个上层的神经元
  • Output:多个下层神经元

多层神经网络

  • 隐含层的层数可从零到若干层

2. 全连接神经网络

前馈/全连接神经网络:每层每个节点均和上一层的所有节点相连。

全连接/前馈神经网络是能解决很多问题,但是本身存在两个问题:

  1. 对于某些数据而言,参数量巨大,
  2. 不能充分应用数据的某些特性

3. 卷积神经网络

  • 引入特性:局部连接(图像局部上下文)
  • 输入层:不是向量,而是一个三维数组(图像)
  • 卷积层:对三维数组及其权重的计算方式。卷积核(参数)在通过逐一滑动窗口计算而得
  • 池化/采样层:直接抽样选取极小局部的某一元素作为下一层的元素
  • 黑盒:特征抽取的转变

更多经典CNN网络:

  • LeNet: 最早用于数字识别的CNN(1998年)
  • AlexNet: 2012年ILSVRC比赛冠军,远超第二名的CNN
  • VGG: 2014ILSVRC亚军(冠军为GoogLeNet)
  • ResNet: 2015ILSVRC冠军,结构修正以适应更深层次的CNN训练
  • DenseNet: CVPR 2017 最佳论文奖

ps: ILSVRC(ImageNet Large Scale Visual Recognition Challenge)是近年来机器视觉领域最受追捧也是最具权威的学术竞赛之一,代表了图像领域的最高水平。可以说ILSVRC是推动CNN和CV发展的引擎,于2017年宣布终结。ILSVRC竞赛的项目主要包括以下几个问题:

  • 图像分类

    2012年之前,图像分类最好的成绩是26%的错误率,2012年AlexNet的出现降低了10个百分点,错误率降到16%。2015年ResNet模型的成绩为3.6%。

  • 目标定位

    目标定位是在分类的基础上,从图片中标识出目标物体所在的位置,用方框框定,以错误率作为评判标准。目标定位的难度在于图像分类问题可以有5次尝试机会,而在目标定位问题上,每一次都需要框定的非常准确。

  • 目标检测

    目标检测是在定位的基础上更进一步,在图片中同时检测并定位多个类别的物体。具体来说,是要在每一张测试图片中找到属于200个类别中的所有物体,如人、勺子、水杯等。评判方式是看模型在每一个单独类别中的识别准确率,在多数类别中都获得最高准确率的队伍获胜。平均检出率 mean AP(mean Average Precision) 也是重要指标,一般来说,平均检出率最高的队伍也会多数的独立类别中获胜,2016年这一成绩达到了66.2。

  • 视频目标检测

    2016年南京信息工程大学队伍在这一项目上获得了冠军,他们提供的两个模型分别在10个类别中胜出,并且达到了平均检出率超过80%的好成绩。

  • 场景分类

    场景分类是识别图片中的场景,比如森林、剧场、会议室、商店等。也可以说,场景分类要识别图像中的背景。这个项目由MIT Places团队组织,使用Places2数据集,包括400个场景的超过1000万张图片。2016年最佳成绩的错误率仅为9%。

  • 语义分割

    将图片划分成不同的区域,比如天空、道路、人、桌子等。该项目由MIT CSAIL视觉组织,使用ADE20K数据集,包含2万张图片,150个标注类别,如天空、玻璃、人、车、床等。这个项目会同时评估像素及准确率和分类IOU(Intersection of Union)。

3.1. LeNet-5

LeNet网络是针对灰度图进行训练的,输入图像大小为 32*32 ,不包含输入层的情况下共有7层,每层都包含可训练参数(连接权重)。

  1. C1层是一个卷积层

    通过卷积运算,可以使原信号特征增强,并且降低噪音。

    第一层使用 5*5 大小的过滤器6个,步长s=1,padding=0。即:由6个特征图(Feature Map)构成,特征图中每个神经元与输入中 5*5 的邻域相连,输出得到的特征图大小为 28*28*6 。C1有156个可训练参数(每个滤波器 5*5=25 个unit参数和一个bias参数,一共6个滤波器,共 (5*5+1)*6=156 个参数),共 156*(28*28)=122,304 个连接。

  2. S2层是一个下采样层(平均池化层)

    利用图像局部相关性的原理,对图像进行子抽样,可以:

    • 减少数据处理量同时保留有用信息
    • 降低网络训练参数及模型的过拟合程度

    第二层使用 2*2 大小的过滤器,步长s=2,padding=0。即:特征图中的每个单元与C1中相对应特征图的 2*2 邻域相连接,有6个 14*14 的特征图,输出得到的特征图大小为 14*14*6 。池化层只有一组超参数 f 和 s,没有需要学习的参数。

  3. C3层是一个卷积层

    第三层使用 5*5 大小的过滤器16个,步长s=1,padding=0。即:由16个特征图Feature Map构成,特征图中每个神经元与输入中5*5的邻域相连,输出得到的特征图大小为 10*10*16 。C3有416个可训练参数(每个滤波器 5*5=25 个unit参数和一个bias参数,一共16个滤波器,共 (5*5+1)*16=416 个参数)。

  4. S4层是一个下采样层(平均池化层)

    第四层使用 2*2 大小的过滤器,步长s=2,padding=0。即:特征图中的每个单元与C3中相对应特征图的 2*2 邻域相连接,有16个 5*5 的特征图,输出得到的特征图大小为 5*5*16 。没有需要学习的参数。

  5. F5层是一个全连接层

    有120个单元。每个单元与S4层的全部400个单元之间进行全连接。F5层有 120*(400+1)=48120 个可训练参数。如同经典神经网络,F5层计算输入向量和权重向量之间的点积,再加上一个偏置。

  6. F6层是一个全连接层

    有84个单元。每个单元与F5层的全部120个单元之间进行全连接。F6层有 84*(120+1)=10164 个可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。

  7. Output输出层

    输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。

    换句话说,每个输出RBF单元计算输入向量和参数向量之间的欧式距离。输入离参数向量越远,RBF输出的越大。用概率术语来说,RBF输出可以被理解为F6层配置空间的高斯分布的负log-likelihood。给定一个输式,损失函数应能使得F6的配置与RBF参数向量(即模式的期望分类)足够接近。

随着网络越来越深,图像的宽度和高度都在缩小,信道数量一直在增加。目前,一个或多个卷积层后边跟一个池化层,再接上一个全连接层的排列方式很常用。

3.2. AlexNet

大话CNN经典模型:AlexNet

2012年,Alex Krizhevsky、Ilya Sutskever在多伦多大学Geoff Hinton的实验室设计出了一个深层的卷积神经网络AlexNet,夺得了2012年ImageNet LSVRC的冠军,且准确率远超第二名(top5错误率为15.3%,第二名为26.2%),引起了很大的轰动。

AlexNet可以说是具有历史意义的一个网络结构,在此之前,深度学习已经沉寂了很长时间,自2012年AlexNet诞生之后,后面的ImageNet冠军都是用卷积神经网络(CNN)来做的,并且层次越来越深,使得CNN成为在图像识别分类的核心算法模型,带来了深度学习的大爆发。

AlexNet之所以能够成功,跟这个模型设计的特点有关,主要有:

  • 使用了非线性激活函数:ReLU
  • 防止过拟合的方法:Dropout,数据扩充(Data augmentation)
  • 其他:多GPU实现,LRN归一化层的使用

3.2.1. ReLU激活函数

传统的神经网络普遍使用Sigmoid或者tanh等非线性函数作为激励函数,然而它们容易出现 梯度弥散 或梯度饱和的情况。以Sigmoid函数为例,当输入的值非常大或者非常小的时候,这些神经元的梯度接近于0(梯度饱和现象),如果输入的初始值很大的话,梯度在反向传播时因为需要乘上一个Sigmoid导数,会造成梯度越来越小,导致网络变的很难学习。

此外,加快了训练谏度:由于ReLU是线性的,且导数始终为1,计算量大大减少,收敛速度会比Sigmoid/tanh快很多。

虽然ReLU激活函数在很久之前就被提出了,但是直到 AlexNet的出现才将其发扬光大。

3.2.2. Dropout

训陈时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。

3.2.3. 在CNN中使用重叠的最大池化

此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的粘化效里。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。

3.2.4. 局部归一化(Local Response Normalization, LRN)

在神经生物学有一个概念叫做“侧抑制”(lateral inhibitio),指的是被激活的神经元抑制相邻神经元。归一化(normalization)的目的是“抑制”,局部归一化就是借鉴了“侧抑制”的思想来实现局部抑制,尤其当使用ReLU时这种“侧抑制”很管用,因为ReLU的响应结果是无界的(可以非常大),所以需要归一化。使用局部归一化的方案有助于提升泛化能力

3.2.5. 数据增强

随机地从256*256的原始图像中截取 224*224 大小的区域(以及水平翻转的镜像),相当于增加了 (256 224)2*2=2048 倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化力。进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预则井对10次结果求均值。

3.3. VGG-16/19

在 2014 年牛津大学提出的 VGG-Net(Very Deep Convolutional Networks for Large-Scale Image Recognition)中,首次将卷积网络结构拓展至 16 和 19 层,也就是著名的 VGG16 和 VGG19。相较于此前的 LeNet-5 和 AlexNet 的 5x5 卷积和 11x11 卷积,VGGNet 结构中大量使用 3x3 的卷积核和 2x2 的池化核。VGGNet 的网络虽然开始加深但其结构并不复杂,但作者的实践却证明了卷积网络深度的重要性。深度卷积网络能够提取图像低层次、中层次和高层次的特征,因而网络结构需要的一定的深度来提取图像不同层次的特征。

VGG 的网络结构非常规整,2-2-3-3-3 的卷积结构也非常利于编程实现。卷积层的滤波器数量的变化也存在明显的规律,由64到128再到256和512,每一次卷积都是像素成规律的减少和通道数成规律的增加。VGG16 在当年的 ILSVRC 以 7.32% 的 top5 错误率取得了当年大赛的第二名。

VGG耗费更多计算资源,并且使用了更多的参数,导致更多的内存占用(140M)。其中绝大多数的参数都是来自于第一个全连接层。并且单纯的增加神经网络的深度,会给训练带来困难,会出现梯度消失、不收敛等问题。

3.4. ResNet

大话深度残差网络(DRN)ResNet网络原理

深度卷积网络一开始面临的最主要的问题是梯度消失和梯度爆炸。那什么是梯度消失和梯度爆炸呢?所谓梯度消失,就是在深层神经网络的训练过程中,计算得到的梯度越来越小,使得权值得不到更新的情形,这样算法也就失效了。而梯度爆炸则是相反的情况,是指在神经网络训练过程中梯度变得越来越大,权值得到疯狂更新的情形,这样算法得不到收敛,模型也就失效了。当然,其间通过设置 relu 和归一化激活函数层等手段使得我们很好的解决这些问题。但当我们将网络层数加到更深时却发现训练的准确率在逐渐降低。这种并不是由过拟合造成的神经网络训练数据识别准确率降低的现象我们称之为退化(degradation)。

退化问题不解决,咱们的深度学习就无法 go deeper. 于是Kaiming He等一干大佬就提出了残差网络 ResNet (Deep Residual Learning for Image Recognition,2015)。其原理为在每两层卷积层运用了恒等映射(Identity mapping)来减小深度网络带来的一些列问题,例如梯度消失等。残差网络的提出使得更深的网络得以训练。

作者提出了50、101、152层的ResNet,而且不仅没有出现退化问题,错误率也大大降低,同时计算复杂度也保持在很低的程度。作者在实验中将网络增加到了1202层,并且得到乐观的结果。其在ILSVRC2015的成绩为3.6%,甚至低于人类的错误率(5%)。

3.5. DenseNet

DenseNet(Densely Connected Convolutional Networks, 密集连接卷积网络)模型的基本思路与ResNet一致,但是它建立的是前面所有层与后面层的密集连接(dense connection),它的名称也是由此而来。DenseNet的另一大特色是通过特征在channel上的连接来实现特征重用(feature reuse)。这些特点让DenseNet在参数和计算成本更少的情形下实现比ResNet更优的性能,DenseNet也因此斩获CVPR 2017的最佳论文奖。

DenseNet的优势主要体现在以下几个方面:

  1. 由于密集连接方式,DenseNet提升了梯度的反向传播,使得网络更容易训练。由于每层可以直达最后的误差信号,实现了隐式的“deep supervision”;
  2. 参数更小且计算更高效,这有点违反直觉,由于DenseNet是通过concat特征来实现短路连接,实现了特征重用,并且采用较小的growth rate,每个层所独有的特征图是比较小的;
  3. 由于特征复用,最后的分类器使用了低级特征。

对于DenseNet,Pytorch在torchvision.models模块里给出了官方实现。

要注意的一点是,如果实现方式不当的话,DenseNet可能耗费很多GPU显存,一种高效的实现如图10所示,更多细节可以见这篇论文 Memory-Efficient Implementation of DenseNets。不过我们下面使用Pytorch框架可以自动实现这种优化。

3.6. 其他

  • SSD
  • MobileNet v2
  • EfficientNet-lite

4. 循环神经网络

一文看懂NLP神经网络发展历史中最重要的8个里程碑

从经典结构到改进方法,神经网络语言模型综述

近年,RNN开始在自然语言处理图像识别语音识别等领域迅速得到大量应用。

  • 引入特性:时序,处理序列数据(文本上下文)
  • 对序列数据的处理:每次输入序列中的一个单元,然后保存每一个隐层神经元的计算结果,留给下一个输入时该神经元进行使用
  • 历史信息:保存的隐层单元计算结果,含有上一次输入的信息

与CNN的区别:

  1. CNN对于输入数据的维度约束是比较严重的,比如用CNN训练一个图像识别的model,训练的图片像素是 48*48 的,那么在预测的时候,也需要把所有的预测图片转成 48*48 。这个约束在图像识别方面可能表现的并不是那么明显,毕竟大不了预测的时候再做个图片大小转换也就OK了。我们再思考另一个场景,比如用CNN去做一个智能问答系统,CNN会需要所有的问答数据都是固定的长度,这就很可怕了,这种模型会让问答变成对对子,必须每句话长短固定。而RNN没有这种约束。

  2. RNN更多的考虑了神经元之间的联系,比如我们训练一个翻译系统,那么对于一个短语的翻译一定要考虑前因后果,这就需要模型对于数据输入的前后因素都要考虑,CNN并不具备这样的特点。

语言建模技术的发展历程:

  • 2003: Bengio, 前馈神经网络语言模型(FFNNLM)
  • 2010: Mikolov, 利用RNN建模语言模型(RNNLM)
  • 2012: Sundermeyer, 利用LSTM建模语言模型
  • 2014: GRU
  • Bi-RNN
  • Seq2Seq

4.1. RNN 语言模型

尽管 RNNLM 可以利用素有的上下文进行预测,但是训练模型学习长期依赖仍然是一大挑战。这是因为,在 RNN 的训练过程中,参数的梯度可能会发生梯度消失或者梯度爆炸,导致训练速度变慢或使得参数值无穷大。

4.2. LSTM-RNN 语言模型

长短期记忆(LSTM)RNN 解决了这个问题。Sundermeyer 等人于 2012 年将 LSTM 引入到了 LM 中,并且提出了 LSTM-RNNLM。除了记忆单元和 NN 的部分,LSTM-RNNLM 的架构几乎与 RNNLM 是一样的。为了控制信息的流动,他们将三种门结构(包括输入门、输出门和遗忘门)加入到了 LSTM 的记忆单元中。

在2013年之前,RNN仍被认为很难训练; Ilya Sutskever 的博士论文为改变这种现状提供了一个关键性的例子。

4.3. GRU

GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。

相比LSTM,使用GRU能够达到相当的效果,并且相比之下更容易进行训练,能够很大程度上提高训练效率,因此很多时候会更倾向于使用GRU。

如果只是对GRU和LSTM来说的话,一方面GRU的参数更少,因而训练稍快或需要更少的数据来泛化。另一方面,如果你有足够的数据,LSTM的强大表达能力可能会产生更好的结果。

4.4. sequence-to-sequence 模型

2014 年,Sutskever 等人提出了 sequence-to-sequence 模型。这是一个使用神经网络将一个序列映射到另一个序列的通用框架。在该框架中,编码器神经网络逐符号处理一个句子,并将其压缩为一个向量表示;然后,一个解码器神经网络根据编码器状态逐符号输出预测值,并将之前预测的符号作为每一步的输入。

机器翻译是对这个框架比较成功的应用。2016年,谷歌宣布将开始用神经 MT 模型取代基于单片短语的 MT 模型(Wu, 2016)。根据Jeff Dean的说法,这意味着用500行神经网络模型替换50万行基于短语的MT代码。

由于其灵活性,这个框架现在是自然语言生成任务的首选框架,其中不同的模型承担了编码器和解码器的角色。重要的是,解码器模型不仅可以解码一个序列,而且可以解码任意表征。例如,可以基于图像生成标题(Vinyals, 2015)、基于表生成文本(Lebret, 2016)和基于应用程序中源代码更改描述(Loyola, 2017)。

sequence-to-sequence 学习甚至可以应用于 NLP 中输出具有特定结构的结构化预测任务。为了简单起见,输出被线性化,用于进行选区解析。神经网络已经证明了在有足够数量的训练数据进行选区分析(Vinyals, 2015)和命名实体识别(Gillick, 2016)的情况下,直接学习可以产生这种线性化输出的能力。

4.5. BiRNN, 双向模型

传统的单向 NN 只能根据过去的输入预测输出。我们可以以未来的数据为条件,建立一个双向的 NN。Graves 等于 2013 年、Bahdanau 等人于 2014 年将双向 RNN 和 LSTM 神经网络(BiRNN 和 BiLSTM)引入了语音识别或其它的 NLP 任务。BiRNN 通过在两个方向处理输入数据来使用过去和未来的上下文。目前双向模型最火的工作当属 Peter 等人于 2018 年提出的 ELMo 模型,这是一种基于 BiLSTM-RNNLM 的新型深度上下文单词表示。预训练的 ELMo 模型的嵌入层的向量是通过词汇表中的单词学习到的表征向量。这些表征被添加到了现有的模型的嵌入层中,并且在 6 个具有挑战性的 NLP 任务中显著提升了目前最先进的模型的性能。

尽管使用过去和未来的上下文的双向语言模型(BiLM)已经取得了进展,但仍然需要注意的是,BiLM 不能够被直接用于 LM,这是因为 LM 是定义在当前单词之前的上下文中的。由于单词序列可以被视为一种同时输入的序列,因此 BiLM 可以被用于其它的 NLP 任务(如机器翻译、语音识别)。

4.6. 注意力机制

RNNLM 利用上下文预测下一个单词。然而,并非上下文中所有的单词都与下一个相关、对于预测有效。和人类一样,带有注意力机制的 LM 通过从单词中选择出有用的单词表征,高效地使用长期的历史。Bahdanau 等人于 2014 年首次提出将注意力机制用于 NLP 任务(在他们的论文中是机器翻译任务)。Tran 等人和 Mei 等人分别于 2016 年证明了注意力机制可以提升 RNNLM 的性能。

4.7. 预训练语言模型

预训练语言模型于 2015 年被首次提出(Dai & Le, 2015);直到2018年,它们才被证明在各种任务中效果还是不错的。

在自然语言处理中主要以词向量为主。单词我们一般可以用两种不同的方式来表示,一种方式为"one-hot encoding",另外一种方式为分布式表示(通常也叫作词向量/Word2Vec)。 由于单词是所有文本的基础,所以如何去更好地表示单词变得尤其重要。

那如何去理解预训练呢? 举个例子,比如我们用BERT训练了一套模型,而且已经得到了每个单词的词向量, 那这时候我们可以直接把这些词向量用在我们自己的任务上,不用自己重新训练,这就类似于迁移学习的概念。 或者通过BERT已经训练好的模型去动态地去得出上下文中的词向量。

预训练在通常情况下既可以提升训练效率也可以提高模型效果,因为使用预训练的结果本身其实就是去试图寻找最好的最优解。

4.7.1. BERT

自google在2018年10月底公布BERT在11项nlp任务中的卓越表现后,BERT(Bidirectional Encoder Representation from Transformers)就成为NLP领域大火、整个ML界略有耳闻的模型。

传统意义上来讲,词向量模型是一个工具,可以把真实世界抽象存在的文字转换成可以进行数学公式操作的向量,而对这些向量的操作,才是NLP真正要做的任务。因而某种意义上,NLP任务分成两部分,预训练产生词向量 & 对词向量操作(下游具体NLP任务)。

从word2vec到ELMo到BERT,做的其实主要是把下游具体NLP任务的活逐渐移到预训练产生词向量上。

  • word2vec: 缺点是上下文无关,比如“苹果”在不同语境vector不同。
  • ELMo: ELmo模型是AllenNLP在2018年8月发布的一个上下文无关模型,甚至在9月10月BERT没出来时,也小火了一把。但据说使用时很慢效率很低,再加上马上就提出的强势BERT,ELMo很快就被人们忘掉了……
  • BERT: 实现上下文相关
    • 真正的双向encoding
    • 使用transformer而不是bi-LSTM做encoder,可以有更深的层数、具有更好并行性

Attention is all you need 是一篇将 Attention 思想发挥到极致的论文,出自 Google。这篇论文中提出一个全新的模型,叫 Transformer,抛弃了以往深度学习任务里面使用到的 CNN 和 RNN。这个模型广泛应用于NLP领域,例如机器翻译,问答系统,文本摘要和语音识别等等方向。

相对 RNN 更加高效、能捕捉更长距离的依赖。

4.7.2. XLNet

2019年6月,谷歌又放出了一个模型XLNet,找到并解决了BERT的缺点,刷爆了BERT之前的成绩(当然数据、算力相比去年都增加了很多)。

就像 BERT 将 MASK 方法带给公众一样,XLNet 表明置换方法是语言模型目标的一个很好的选择。可以预见,未来会有更多的工作探索语言模型的目标函数。

4.7.3. ALBERT

自然语言处理:从BERT, XLNet, RoBERTa, ERNIE2到ALBERT2

谷歌Lab发布了一个新的预训练模型"ALBERT"全面在SQuAD 2.0、GLUE、RACE等任务上超越了BERT、XLNet、RoBERTa再次刷新了排行榜!ALBERT是一种轻量版本的BERT,利用更好的参数来训练模型,但是效果却反而得到了很大提升!ALBERT的核心思想是采用了两种减少模型参数的方法,比BERT占用的内存空间小很多,同时极大提升了训练速度,更重要的是效果上也有很大的提升!

4.8. GAN, 对抗学习

生成对抗网络

对抗学习方法已经在 ML 领域掀起了风暴,在 NLP 中也有不同形式的应用。对抗性的例子越来越被广泛使用,它不仅是作为一种工具来探究模型和理解它们的失败案例,而且也使自身更加鲁棒(Jia & Liang, 2017)。

3个优势

  1. 能更好建模数据分布(图像更锐利、清晰)
  2. 理论上,GANs 能训练任何一种生成器网络。其他的框架需要生成器网络有一些特定的函数形式,比如输出层是高斯的。
  3. 无需利用马尔科夫链反复采样,无需在学习过程中进行推断,没有复杂的变分下界,避开近似计算棘手的概率的难题。

2个缺陷

  1. 难训练,不稳定。生成器和判别器之间需要很好的同步,但是在实际训练中很容易D收敛,G发散。D/G 的训练需要精心的设计。
  2. 模式缺失(Mode Collapse)问题。GANs的学习过程可能出现模式缺失,生成器开始退化,总是生成同样的样本点,无法继续学习。

应用场景

  1. 生成图像数据集

    人工智能的训练是需要大量的数据集的,如果全部靠人工收集和标注,成本是很高的。GAN 可以自动的生成一些数据集,提供低成本的训练数据。

  2. 生成人脸照片/漫画人物

  3. 风格转换

    • 把草稿转换成照片
    • 把卫星照片转换为Google地图的图片
    • 把照片转换成油画
    • 把白天转换成黑夜

  4. 文字到图像的转换

  5. 分辨率增强(Super-Resolution)

  6. 照片修复

  7. 自动生成3D模型

posted @ 2020-10-05 07:13  brt2  阅读(1883)  评论(0编辑  收藏  举报