aoi学院

Aisaka's Blog, School of Aoi, Aisaka University

深度学习-CS231n Lecture 11~15 [2017版]

物体检测和分割

物体检测模型可以分为单步模型两步模型,其中单步模型指没有独立地、显示地提取候选区域,直接由输入图像得到其中存在的物体的类别和位置信息的模型,在计算效率上有优势,典型的单步模型有:OverFeat、SSD(Single Shot multibox-Detector )、YOLO(You Only Look Once)等;两步模型指有独立的,显示的候选区域提取过程,即先在输入图像上筛选出一些可能存在物体的候选区域,然后针对每个候选区域,判断其是否存在物体,如果存在,就给出物体的类别和位置修正信息,在检测精度上有优势,典型的两步模型有:R-CNN、SPPNet、Fast R-CNN、Faster R-CNN、R-FCN、Mask R-CNN等

R-CNN:主要思路是使用无监督的选择性搜索方法将输入图像中具有相似的颜色直方图特征的区域进行递归合并,产生大量的候选区域,然后从输入图像中截取这些候选区域对应的图像,将其裁剪缩放至合适的尺寸,并送入一个CNN提取的网络中提取特征,最后再送入一个SVM分类器中进行分类和非极大值抑制操作即可得到最终结果,如下图所示可以概括R-CNN的整个过程:

Fast R-CNN:Fast R-CNN通过卷积网络得到图像的高分辨率特征映射,切分图像的像素,基于备选区域投影到卷积特征映射,从中提取属于备选区域的卷积块。然后用兴趣区域池化层(ROI pooling layer)来使卷积块变为固定尺寸,输入全连接层进行分类。同样有一个多任务损失,需要基于全局反向传播同时学习。它可以重复运用卷积计算,因此时间主要消耗在寻找备选区域。

Faster R-CNN:让卷积网络去预测备选区域,其余与Fast R-CNN相同。神经网络同时处理四件事:备选区域是否是待识别物体,校正包围盒,最终物体识别的损失,最终包围盒补偿的损失

Mask R-CNN:Mask R-CNN将整张输入图像送入卷积网络和训练好的候选框生成网络,然后将候选框投射到卷积特征图上,然后产生两个分支,一个预测出分类类别分数和边界框的坐标,另一个是一个语义分割的微型网络。


可视化和理解

特征可视化:对第一层卷积层可视化,得到的特征图像一般是不同颜色,不同角度的有向边.但是对较深的卷积层可视化得到的图像则没有明显含义,降维(如t-SNE,PCA)可以将高维特征映射为二维图像,排除实验用平均像素遮挡图像中的一部分,然后观察图像分类概率的变化值,得到概率热力图.由此可以判断图像中的哪些部分对分类起关键作用,显著图(Saliency Map)对每个像素做轻微扰动,然后计算像素对分类预测概率的影响,从而得到哪些像素是影响分类的关键部分,梯度上升(Gradient Ascent)修正训练的神经网络的权重,并改变图像的某些像素,来最大化某些中间神经元和类的分值.为了让生成图像符合自然图像,需要加入正则项(图像的L2范数,高斯模糊处理)。

风格迁移:提取输入图像通过神经网络运行到某一层,接着进行反向传播并且设置该层的梯度等于激活值,然后反向传播到图像并不断更新图像;人工纹理合成算法是将特征转换为Gram矩阵,然后使得两张图像Gram矩阵最相似,在实际应用的过程中,往往会将多层网络的Gram矩阵相似性都考虑进最终结果。


注意力机制

自注意力:是一种在计算同一序列表示时,权重和序列的位置相关机制,被证明在机器阅读理解,抽象概要和图片描述生成中非常有效。自注意力机制被应用在图片生成描述任务中。图片首先被编码,然后输入到带有自注意力机制的RNN网络中,来学习图片各个特征与描述中每个词之前的映射关系。注意力权重的可视化清晰地的展示了模型每关注一部分特征都会输出一个词。

Multi-head自注意力机制:multi-head注意力机制借助尺度化的点积注意力机制进行并行化多次计算。每个独立的注意力输出通过简单拼接并线性的转换到指定的维度空间。


Transformer

以下主要是Transformer编码解码模型的主要架构

**DEtection TRansformer (DETR)**是Facebook研究团队巧妙地利用了Transformer 架构开发的一个目标检测模型。DETR模型由一个预训练的CNN骨干(如ResNet)组成,它产生一组低维特征集。这些特征被格式化为一个特征集合并添加位置编码,输入一个由Transformer组成的编码器和解码器中,和原始的Transformer论文中描述的Encoder-Decoder的使用方式非常的类似。解码器的输出然后被送入固定数量的预测头,这些预测头由预定义数量的前馈网络组成。每个预测头的输出都包含一个类预测和一个预测框。损失是通过计算二分匹配损失来计算的。如下图所示为其基本的结构:


生成对抗模型

生成模型

基于深度学习的生成式建模的方法主要有AE、VAE、GAN这三大种,其中VAE是基于AE的基础上进行变形的生成模型,而GAN是近年来较为流行并有效的生成式方法。

自编码器(AE):AE主要由编码器和解码器组成,整个模型其实就相当于一个压缩解压的一个过程,编码器将真实数据进行压缩到低维隐空间中的隐向量,然后解码器将压缩的隐向量进行解压得到生成数据,当然在训练过程中会将生成数据和真实数据进行比较并更新参数。其实个人感觉其目的就是使得生成数据和输入的真实数据尽量相近,尽可能抓住真实数据的核心关键,如下图所示为AE的基本框架:

变分自编码器(VAE):VAE就是AE的进化版本,基础结构和AE相差不大,但是在中间隐空间的编码部分并不相同,AE的主要特点是能够模仿或者说和输入的数据尽可能接近缺少创新多样性当然本身AE自编码器就是对输入数据的一个压缩编码所以这也就是AE缺点的原因所在;再说说VAE的主要变化,其主要优势就是在编码器后产生的隐向量的概率分布能够尽量接近某个特定的分布即编码器的直接输出的是所属正态分布的均值和标准差,然后根据均值和方差采样得到隐向量z,这样就可以根据采样的随机性生成具有多样性的生成图像,如下图是VAE的基本框架:

生成对抗网络GAN:GAN主要由生成器和判别器构成,两者分别有自己的一个独立的网络结构,生成器生成图像再交给判别器进行判别,通过这样对抗训练的方式交替优化,生成器判别器的对抗也被称为”MinMax游戏“,即判别器最大化真实样本的输出结果,最小化假样本的输出结果,而生成器则相反。如下图所示:


VAE和GAN之间的区别

首先GAN和VAE之间在输入数据和生成数据上存在不同,VAE需要两者一一对应方可求其重构损失/误差,而GAN中不需要二者一一对应;其次VAE中隐向量事实上是对输入数据特征的一种表达,在抽象的语义层面上比如改变人的发色特征没那么VAE可直接通过在隐变量空间上插值或嵌入式操作来实现。


原始GAN的优化目标


原始GAN存在的问题

梯度消失:原始GAN的优化目标如上所示,在开始训练的时候生成器一般将会较为灵敏的判断出真假数据,这样造成的结果就是目标损失函数达到饱和,梯度消失,如下图是大概的推断GAN为什么梯度消失的过程:

模式坍塌:模式坍塌指的是,在生成器生成假图片的过程中,生成器的泛化能力太弱,只能产生相似或相同的图片无法创新使得生成数据具有多样性,就好比造假钞,只单一的对某一面值的钞票进行造假却无法生成其他面值的钞票。


JS散度和KL散度

KL散度的定义是两个概率分布的非对称性度量,其描述的是两个概率分布拟合的程度,若两个概率分布相同时则其KL散度为0,如下为KL散度公式:

JS散度的定义是基于KL散度上,但是JS散度主要是用来度量两个概率分布的相似度且JS散度是对称的其值分布在0-1之间,并且JS散度用于原始GAN中的损失函数的推导上,如下为JS散度公式:

顺便附上GAN和JS散度之间的关系,其中该目标是使得D的目标函数值最大化(摘自GAN原作者的证明)


凸优化

凸函数非正式定义:函数内任取集合中两个点并连线,如果线段完全被包含在函数内则为凸函数否则为非凸函数。

大多数的机器学习还是深度学习的问题的一些目标函数大多会转换成凸函数求解,因为凸优化的任何局部最优解即为全局最优因此凸优化更为高效,非凸优化问题较为困难,在可行域的范围内可能存在无数个局部最小点。


基于f-散度的GAN目标函数的改进

f-散度:f-散度可以理解为KL散度的一般化形式(当对应的f取值为xlogx时即为KL散度),如下公式所示:

当然f-散度具有以下特点:①都是非负实数到实数的映射 ②f(1)=0 ③都是凸函数
由于原始GAN函数中使用的是JS散度且损失函数为交叉熵损失函数因此较难使得梯度能够稳定下降使得生成数据推向真实分布,所以出现了其他的f-散度的GAN网络使得最小化生成器中目标函数的散度值以此达到生成分布接近真实分布的目的,例如LSGAN中使用的就是均方误差的f函数,EBGAN使用的是绝对误差的f函数。


Lipschitz连续性

Lipschitz连续性:Lipschitz连续的定义较为简单,简单来说就是限制f函数的导函数绝对值不超过K其中K>=0,从定义中很明显可以看出Lipschitz连续性的作用就是为了限制连续函数的局部变化最大幅度:

谱归一化:谱归一化常用来归一化判别器的权重,目的是为了让判别器满足Lipschitz连续性,在训练过程中谱归一化会对每一层的权重做奇异值分解,并对奇异值做归一化将其限制在1内,从而使得整个GAN训练网络更加稳定不容易崩塌。


IS和FID生成数据评价指标

IS评价指标:IS评价指标是指Inception Score即通过Inception网络所计算生成图像分数的方法,公式如下:

其中p(y|x)是指给定一张图像将其输入InceptionV3分类网络后输出的类别概率,p(y)指的是生成的图像全部输入InceptionV3网络中得到自己的概率分布并且得到所有类别上的边缘分布。

FID评价指标:FID评价指的是在InceptionV3的倒数第二层上进行一个真实样本和生产样本的特征图的均值和方差来比较,公式如下:

FID和IS的优缺点:IS更多在于生成数据的质量和多样性的评分,对于生成数据和真实样本之间缺少比较,而FID正弥补了IS的这一缺点,大那是FID计算特征图的均值和方差的方法过于粗糙对于图像细节无法更好的评估。


GAN的分类

GAN可以分为有监督和无监督的方式,其中有监督的GAN要求的是生成图像和输入图像需要一一配对,反之无监督的GAN则不需要一一配对;有监督的GAN比较经典的应用就是超分辨率重建、图像补全等,而无监督的GAN应用有图像风格迁移等