0%

总结

  • 本文的主旨是将生成proposal的过程也使用神经网络处理,并且共享了classification的中间卷积结果,大大减少了proposal过程的用时

RPN网络结构

  • 用一个n*n(本文用3)的卷积核在classification的最后一层卷积出来的feature map上滑动
  • 以每个feature为中心生成3(不同尺寸)*3(不同比例)的定长proposal 特征vector(在训练时与图片边界产生交叉的proposal丢弃)
  • 然后在这个vector后面接两个1*1卷积,得出两组结果
    • 一组表示这个proposal有待检测物体的概率(2个数 softmax)
    • 一组表示边界框的位置(4个数)
  • 根据有物体的概率做NMS(阈值0.7)
  • 这种生成proposal的方式具有平移不变性

网络训练

Read more »

总结

  • 本文是结合RCNN和SPPnet的改进版本
    • 大幅提成训练/测试速度
    • 实现端对端一体化训练

对前作缺点分析

  • RCNN
    • 多阶段训练
    • 训练慢,也占用硬盘空间
    • inference也慢
  • SPPnet
    • 多阶段训练
    • fine-tuning阶段无法更新conv网络参数

网络结构

Read more »

论文 备注 top5 error
Network In Network 提出了1 x 1卷积核代替maxout 提供了更好的多filter聚合能力 CIFAR-100 数据集 1 model; 1 crop; top1 error: 35.68%
Going deeper with convolutions 将NIN中子网络的概念更加泛化利用多个不同大小的filter抽取信息利用1 X 1卷积增加信息稠密程度减少计算量 ILSVRC 2014 数据集1 model; 1 crop: 10.07%ensemble(7 models, 144 crops): 6.67%
Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift 提出并利用BN结构解决内部协变量漂移问题大幅提升网络训练速度 LSVRC 2012 数据集ensemble(6 models, 144 crops): 4.94%
Rethinking the Inception Architecture for Computer Vision 提出了4个设计网络的原则
提出了用多个小卷积代替大卷积的方法
提出了用非对称卷积
提出了更高效的pooling方式——conv和pool并行计算然后concat到一起
提出新的正则化方式——标签平滑
LSVRC 2012 数据集 1 model; 1 crop:5.6% ensemble(4 models, 144 crops): 3.58%
Inception-v4, Inception-ResNet and the Impact of Residual Connection on Learning 在v3的基础上加了一些小改动提出v4与ResNet结合提出Inception-ResNet提出了当filter数量超过1000的时候防止训练崩溃的缩放残差方法 ILSVRC 2012 数据集 1 model; 1 crop:
Inception-v4: 5.0%
Inception-ResNet-v1: 5.5%
Inception-ResNet-v2: 4.9%
Inception-v4 + 3 * Inception-ResNet-v2: 3.1%

论文 备注
Generative Adversarial Nets GAN原始论文, 提出了对抗结构和原始优化目标函数
Conditional Generative Adversarial Nets 加了条件作为额外的输入,可以用于给生成指定类别的图像和和图像打标签
Unsupervised representation learning with deep convolutional Generative Adersarial Networks DCGAN, 提出一种新的生成器结构改善生成图像效果,并对训练出的模型的可视化做了探索
Towards Principled Methods for Training Generative Adversarial Networks 首次从数学的角度聊GAN,分析了之前GAN中所存在的问题,提出了加噪声的解决方案
Wasserstein GAN 提出了用Wasserstein距离代替JS散度的方案,解决了训练不稳定,模型坍塌的问题,并提供了一种模型训练进度的可量化指标

总结

  • 文章首先说明了学习一个概率密度的传统方法使用KL散度
  • 但是KL散度在两个低维流形的概率分布中不好使,因为他们没有无法忽视的重叠,从而散度是一个常数。通过加噪声可以补救这个问题,但是并不是一个好方法(对于GAN来说会使生成的图片模糊不清)
  • 对于传统方法,目前的新方法是从一个固定分布$p(z)$随出一个随机变量$z$然后将$z$放入一个函数映射$g_\theta : z \rightarrow x$得到一个服从$P_\theta$分布的样本。
    • 这样做有两个好处,一个是这种方式可以更合更低维度的分布
    • 另外这种方式可以更加方便的生成新样本
  • 接下来作者开始分析WGAN中使用Wasserstein距离代替原来JS散度的原因,从这种距离的性质入手
    • 如果$g_\theta$是连续的那么$W(P_r, P_\theta)$也是连续的
    • 如果$g$是K利普希茨连续,那么$W(P_r, P_\theta)$几乎在全部可导
    • 上述两条性质对于JS散度不成立,所以我们选用Wasserstein距离代替KL散度
  • 为了让$g_\theta$保持利普希茨连续,我们将网络中所有参数控制在[-0.01, 0.01]区间内
    • 这个数值不宜太大,否则会使收敛速度过慢
    • 不宜太小,否则可能会导致梯度消失
  • 使用W距离后判别器损失函数为$-(f_w(x) - f_w(g_\theta(z)))$, 生成器损失函数为$-f_w(g_\theta(z))$
  • 因为W距离连续可导,所以在交替训练的过程中可以将分类器训练至收敛,不必向以往一样两步分类器一步生成器
  • WGAN的显著优势:
    • 不会模型坍塌——W距离连续得到的另外一个好处是不会导致模型坍塌;对于原始损失函数来说,判别器的输出是个二分类结果,那么对于最优的分类器来说,生成器的最终结果只能是坍塌即生成真实图像训练样本;换成W距离后,判别器输出的是距离,是回归问题,不会导致坍塌
    • WGAN提升了稳定性——由于我们在交替训练过程中可以把判别器训练到局部最优,判别器越精确,梯度也就越精确,训练也就越稳定
    • 有实际意义的损失函数——WGAN的生成器损失函数可以当做模型训练进度的可量化指标,不用向以往一样人肉观察生成出来的样本来做判别模型好坏的标准;但是需要注意不能拿这个指标衡量不同结构的模型
  • optimizer的选择:训练的时候由于交替训练,损失函数不要使用基于动量的(如Adam)optimizer,改用RMSProp,一般在这种梯度不稳定的情况下表现的不错

Introduction

  • when we learn a probability distribution, This is often done by defining a parametric family of densities $P_\theta (\theta \in R^d)$ and finding the one that maximized the likelihood on our data, this amounts to minimizing the Kullback-Leibler divergence $KL(P_r||P_g)$
  • but It is then unlikely that the model manifold and the true distribution’s support have a non-negligible intersection
  • the typical remedy is to add a noise term to the model distribution
  • the added noise term is clearly incorrect for the problem, but is needed to make the maximum likelihood approach work

now:

Read more »

总结

  • 本文主要是通过数学的方法分析现有GAN训练中存在的问题
  • 先从KL散度入手——散度不对称对于两种不同的损失(真实分布存在而生成分布不存在;真实分布不存在而生成分布存在)给予了两种截然不同的惩罚
  • 然后分析了训练过程不稳定的原因
    • 当生成器的损失函数是$E_{x \sim P_r}[logD(x)] + E_{x \sim P_g}[log(1 - D(x))]$=$ 2JS(P_r||P_g) - 2log2$时,在分类器最优时,此损失函数是一个常数(低维流形理论JS散度一直为常数$log2$),根本没有梯度,所以随着存在梯度消失的问题
    • 当生成器的损失函数是$-logD$ = $KL(P_g||P_r) - 2JS(P_r||P_g)$时有两个问题。第一个是两个散度的优化方向矛盾,一个是让两个分布尽量近一个是尽量远,导致训练方向不稳定;另外KL的散度加大了对于$P_r = 0 且 P_g = 1$的惩罚,导致模型坍塌
  • 提出解决方案——给两个分布加噪音,使两个低维流形维度升高,产生重叠,从而使JS散度不为常数,之后慢慢将噪声去除
  • 提出Wasserstein距离,但是没有过多讨论,留到下一篇Wasserstein GAN再说

Abstract

this paper is proposed to make theoretical steps towards fully understanding the training dynamics of GANs

three sections:

Read more »

总结

  • 本文提出了一个对于GAN的另外的应用场景——使用模型的中间结果作为特征
  • 首先提出了新的generator结构,在之前CNN的基础上做了优化;其中的trans_conv/deconv/反向卷积结构其实是等同于CNN中的反向传播求梯度过程,是在深层传来的梯度值得基础上左乘卷积核矩阵,详见此处
  • 在训练GAN的时候提出了解决generator记忆样本问题的方法:将训练样本降维然后建hash表,对于所有生成出来的在hash表中有碰撞的样本全都舍弃
  • 对于模型表达能力的证实
    • 在无监督训练中,作为特征提取器超过了KNN的效果(CIFAR-10数据集)
    • 在有监督训练中,作为特征提取器达到了最好的效果(SVHN数据集)
  • 对于模型可视化的探索:
    • 在z中做差值,可以观察到生成图像的渐变
    • 对D中的filter做可视化
    • 操作z以达到特定目的:
      • 指定取消某个物体
      • 通过z的向量运算,产生图像的运算

Abstract

in this paper we hope to help bridge the gap between the success of CNNs for supervised learning and unsupervised learning

Introduction

Read more »

总结

  • 在GAN的基础上加上了条件输入(对于D和G同时加)
  • 目标函数改为$\underset {G} {min} \underset {D} {max}V(D,G) = E_{x \sim p_{data}(x)}[logD(x|y)] + E_{z \sim p_z(z)}[1 - log(D(G(z|y)))]$
  • 如果没有对于条件的需求在实验中有CGAN的效果并不比GAN的效果好
  • CGAN可以按照条件输入输出特定的随机值
    • 给定一个数字输出特定数字的手写图片
    • 给定一个图片输出该图片的tag 概率分布,取较大者作为图片的tag,实现自动化tagging

Abstract

this net can be constructed by adding condition information to both generator and discriminator

Introduction

Read more »

总结

  • 生成对抗网络由生成器G和分类器D组成,生成器G接受噪音生成样本,D负责区分这些样本是否是由D生成出来的
  • D和G共同优化目标函数$\underset {G} {min} \underset {D} {max} V(D,G) = E_{x \sim p_{data}(x)}[log(D(x))] + E_{x \sim P_{g_z(z)}}[log(1 - D(g(z)))]$ 一个是让值尽量大,一个是让值尽量小,即所谓“对抗”
  • 该目标函数会在$p_g = p_{data}$处收敛到最优,即生成分布与训练数据分布完全一致函数值为$-log4$
  • 关于收敛性的证明:一个凸函数集合的上界的次梯度(可导的时候等于梯度)完全包含最后函数的梯度,所以在求导做梯度下降的时候整体仍然按照凸函数的性质收敛
  • 使用Gaussian Parzen window(youtube视频)方法对模型进行评估, Parzen Window 其实是用已有数据到待测数据点的“距离”平均值来表示待测点出现在已有数据表示的分布上的概率(或者说在已有数据拟合出的概率密度函数上的值)
    • 通用概率密度函数$P(x) = \frac {1} {n}\sum_{i = 1}^{n}\frac {1} {h^d}K(\frac {x - x_i} {h})$
    • Parzen window中的核函数可以有多种,使用Gaussian核的就叫做Gaussian Parzen window$P(x) = \frac {1} {n} \sum^n_{i = 1}\frac {1} {h\sqrt {2\pi}^d}exp(-\frac 1 2(\frac {x - x_i} {h})^2 )$
    • 算出概率之后再过一遍$score = -log(1 - P(x))$(猜测)
  • 优点
    • 不使用马尔科夫链
    • 训练模型的时候不需要inference
    • 可拟合sharp的分布
    • 训练样本并不直接作用于G的训练,保证参数独立
    • 可使用多种模型拟合G和D
  • 缺点
    • G和D需要同步训练(两次D一次G)
    • 没有$p_g(z)$分布的显示表示

Abstract

propose a new framework for estimating generative models via adversarial process

simultaneously train two models:

Read more »

总结

  • 本文主要是受微软残差网络5的启发,提出新的结构
  • 首先讨论了残差的作用
    • 微软的文章5认为残差是组成“深”且“宽”的网络的关键
    • 本文觉得不对,残差的效果主要体现在提高训练稳定性上
  • 在v315的基础上,提出了一些改进方案,并没有说明改进的思路,只是说换了TensorFlow之后可以不做之前的妥协,所以有了v4
  • 然后结合了Residual搞出了Inception-ResNet-v1(计算复杂度与v3相近)和其加强版Inception-ResNet-v2(计算复杂度与v4相近)
  • 实践表明当网络filter数量超过1000的时候,训练会炸,即使调小学习率也不行,提出了减小残差传播的方法,因子在0.1~0.3左右

实验结果

ILSVRC 2012 数据集

  • 1 model; 1 crop; top-5 error:
    • Inception-v4: 5.0%
    • Inception-ResNet-v1: 5.5%
    • Inception-ResNet-v2: 4.9%
  • ensemble(4 models; 144 crops); top-5 error:
    • Inception-v4 + 3 * Inception-ResNet-v2: 3.1%
Read more »

总结

  • 本文是按照前作20的思路继续走,寻找更加高效的计算结构

网络结构设计原则

文章提出了四点设计原则:

  • 避免网络表达瓶颈,尤其是在前面几层
  • 高维特征更容易处理
  • 在低维嵌入上可以进行空间聚合不会或者只有少量的信息损失
  • 平衡网络的深度和宽度
Read more »

总结

  • 提出问题:在神经网络的训练过程中,后面层的输入是前面网络的输出,所以在前面网络参数变动的时候,后面层的输入分布一直在变化,我们称这种现象为——内部协变量漂移。这种现象会干扰神经网络训练
  • 本文提出的BN结构就是希望解决此问题,从而加速网络训练,提升训练稳定性

演变过程

  • 传统稳定分布的方式是白化——去除特征之间的相关性然后把分布变为均值为0,方差为1的高斯分布
  • 但是这种方式计算量过大且不能处处可导,所以做了两个简化
    • 把每个特征分别做处理
    • 使用mini-batch代替全体训练样本做处理
  • 计算量大大降低之后,为了保持增加模型的拟合能力,我们引进了两个可学习参数$\gamma$和$\beta$使用公式$y^{(k)} = \gamma^{(k)}\hat x^{(k)} + \beta^{(k)}$来做变换
  • 当$\gamma$等于方差且$\beta$等于均值时,等同于还原成原分布

Inference

Read more »

总结

  • 提出了一个代号为Inception的神经网络结构,开头点出此结构的最大作用是提升计算资源的利用率
  • 是NIN的deep版本
  • 参考Serre et al. 15 用多个size的filter来抽取信息;有两个不同点
    • 所有网络中的filter都是学习得来
    • 重复使用Inception结构组成一个更深的网络
  • 又参考了Lin et al. 12使用1 * 1的卷积核来提升模型的表达能力;并且可以减少维度,使在同等的计算资源下网络可以更深更宽,从而提升效果
  • ILSVRC 2014 数据集
    • 1 model; 1 crops; top5 error: 10.07%
    • ensemble(7 models, 144 crops); top5 error: 6.67%

Inception 诞生的心路历程

  • 现如今提升网络效果主要靠提升网络的宽度和深度;这么做有两个问题:
    • 容易过拟合
    • 计算资源需求快速增长
  • 因为权重矩阵中有很多的0,因此人们提出从全连接结构改成稀疏链接结构的方式
  • 后来证明不行,因为稀疏结构的查找开销太大盖过了计算开销的节省,还不如不用
  • 后来提出了用网络结构解决此问题的方式——Inception

Inception结构详解

Read more »

总结

  • CNN中的卷积层的filter个数可以增加网络的表达能力
  • 但是过多的数量会让计算开销增加的太大
  • 传统方法用maxout函数来达到增加表达能力又不增加太多计算开销的目的
  • 当没有对于隐藏层分布先验信息的情况来说,用一个能拟合所有函数的结构要更适合一些(maxout只能拟合所有凸函数)
  • 比较常见的能拟合所有函数的结构有两个
    • radial basis network
    • multilayer perceptron
  • 本文选择了multilayer perceptron 有如下两个原因
    • multilayer perceptron可以使用反向传播训练与CNN结合的比较好
    • 可以扩展,自己当做一个深层网络
  • 新的结构就叫做mlpconv,其实就是后面接了两层1X1卷积
  • 此外还提出了一种新的结构全局平均池(Global Average Pooling)代替传统最后一层的FC层
    • 先为每个分类结果项生成一个feature map(最后一层卷积的filter数量等于类别数量即可)
    • 然后对每个feature map取平均得到一个向量
    • 直接用改向量做softmax
  • 这么做的好处有两个
    • 让最终feature map的结果更加直观
    • 这种结构没有参数,避免过拟合
  • CIFAR-100实验结果
    • top1 35.68%

Abstract

We propose a novel deep network structure called “Network In Network”(NIN) to enhance model discriminability.
We build micro neural networks with more complex structures to abstract the data within the receptive field.

Introduction

Read more »