平时总是在跟踪学习最新的文章,顶多在计算机视觉一个小的领域深挖几年。但慢慢发现不管有多新,归根结底还是对经典论文的扩展,经典论文的很多开创性思想,值得好好学习。
下面对计算机视觉的经典论文进行一些小小的总结。
卷积网络
1.[vgg]Very Deep Convolutional Networks for Large-Scale Image Recognition
Author:Karen Simonyan & Andrew Zisserman(Oxford)
Solution:
证明了增加网络层数,可以提升神经网络性能。
Method:
-
小卷积核。采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,7x7,5x5)。例如,使用2个3x3的卷积核代替AlexNet中1个5x5卷积核,如图1所示。这样对于同样大小的感受野,2层的非线性强于1层,同时参数量也更少(2个3x3的卷积核的参数是18,1个5x5卷积核的参数是25)。
3个3x3卷积核可以来代替7x7卷积核的原理类似。
- multscale strategy 进行训练和测试
训练时,由于vgg网络的输入是224x224,对尺寸不同的输入图像先resize再crop到224×224,理论上只需要将图像最短的边resize到大于等于224即可进行crop。文章中设置了2种scale方式,第一种resize到256或384,第二种随机resize到[256,512]之间。
测试阶段使用了两种预测方式:
使用multi-view crop,即测试时输入的图像和训练的图像大小一样,从resize之后的图片,crop不同位置的块,分别输入训练好的网络,最后对softmax进行平均。
使用dense evaluation,即将原图直接送到网络进行预测,将最后的全连接层改为1x1的卷积,这样最后可以得出一个预测的score map,再对结果求平均。
multi-view crop 效果好于dense evaluation。
2. [ResNet]Deep Residual Learning for Image Recognition
Author:何恺明、张祥雨、任少卿和孙剑(微软研究院)
Solution:
- 解决了深度网络的退化问题。当网络达到一定深度,已经最优化,那么再继续增加深度时,模型训练误差反而会提高。
- 解决了梯度爆炸/消失问题。之前的网络都是通过增加网络深度(层数)来提高性能,但是在反向传播过程中,对激活函数进行求导,如果此部分大于1,那么层数增多的时候,最终求出的梯度更新将以指数形式增加,即发生梯度爆炸,如果此部分小于1,那么随着层数增多,求出的梯度更新信息将会以指数形式衰减,即发生了梯度消失,从而使得深度学习模型很难训练。(具体原因可以参考这篇博客)
Method:
-
Residual Block。在resnet中,学习的是残差函数F(x) = H(x) – x,这样其原始的学习特征是H(x)=F(x)+x。所以当残差F(x)=0时,此时堆积层仅仅做了恒等映射(即H(x)=x),至少网络性能不会下降,但实际残差不会为0,这也会使得堆积层在输入特征基础上学习到新的特征,从而拥有更好的性能。残差学习的结构如图2所示。
-
Global Average Pooling(不是本文的创新,但文中用到了这个方法️)。使用GAP来取代了最后的全连接层,直接实现了降维,极大减少了网络的参数,对整个网络从结构上做正则化防止过拟合,但却降低了收敛速度。图3中展示了全连接与全局均值池化的对比,例如最后的一层的数据是10个6x6的特征图,全连接层是将10个6x6的特征图flatten成一个1x360的特征向量,进行全连接,输出1x10,送入到softmax的分类中进行计算,得参数量是360x360x10,参数量过大,从而造成计算量加大速度低和过拟合。相比较GAP是将每一张特征图计算所有像素点的均值,输出一个数据值,这样10 个特征图就会输出10个数据点,将这些数据点组成一个1x10的特征向量,送入到softmax的分类中进行计算,直接实现了降维,极大减少了网络的参数。
参考文献:https://zhuanlan.zhihu.com/p/31852747
GAN
1. [GAN]Generative Adversarial Network
Author:Ian J. Goodfellow, Jean Pouget-Abadie∗, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair†, Aaron Courville, Yoshua Bengio‡
Solution:
提出了一个通过对抗过程来评估生成模型的新框架。解决了:
- 深度生成模型(任务是学习概率密度并且生成数据)在求解真实数据概率密度分布的过程中有很大难度,用最大似然估计和相关策略求解概率几乎无法进行。
- 将piecewise linear units用在生成模型上比较难
Method:
-
Adversarial nets。同时训练两个模型:生成模型G用于估计数据分布,判别模型D来预测一个样本是来自训练集(真实数据集)而非G的概率。对于G来说训练过程就是要使D判断错误的可能性最大化。Adversarial nets框架如图4所示。
其中,即G的输入是噪声z(符合特定分布),输出假图,而则是生成器G里待训练的权重集合;即D的输入是(分为和),D判断输入的是真是假的概率,输出一个范围在[0,1]之间的数,则是辨别器D里待训练的参数集合。我们希望希望相应的越大越好(接近1),而越小越好(即D(G(z))接近0);G是希望越大越好(即D(G(z))接近1。 Minimax two-player game(Loss)
表示真实样本与假样本的差异程度,对于生成器G来说,希望尽可能减小这个差异(min),对于判别器D来说希望能尽量拉大这个差异(max)。