- Network in Network
- Deep network with rectified linear unit(ReLu)
- GoogLeNet
- 传统CNN里的卷积核是一个generalized linear model(GLM)之后经过一个sigmoid(现在通常是ReLu)的非线性激励函数,假设卷积有K个filter,那么这K个filter代表的特征应该是可分的,或者说对属于同一个类别的不同变形具有不变性。
- 但是通过GLM来建模,也就是假设这些latent的filter是线性可分的,显然这样的假设并不总是成立,甚至通常都不成立。
- 传统的CNN为了解决这种不可分的问题,往往会选择比较多的filter个数,也就是比较大的K值,来保证所有的变形都被分到正确的concept里。
- 比如说人和猫是不同的概念,但不是线性可分的,为了避免错分,我们只有建立更多的子概念(增加filter的个数),黄种人、黑人等等。
- 但是过多的filter也会带来问题。主要有两个问题:1)首先是复杂的问题中这样的变形的个数往往过多,造成参数的急剧增加,2)这给下一层的网络的学习造成了困难,因为下一层网络的作用就是结合这一层的网络的信息,形成更高语义的信息,那么对于当前这一层当中相同概念的不同变形的filter,下一层必须要能够有一定的处理。
- maxout网络可以通过分段线性的方法近似表示一个convex可分的问题,但是同样的,并不是所有的问题都是convex的。
- 这说明我们需要更general的非线性的卷积核,也就是Network in Network中的micro network,文中提到的多层感知机(multilayer perceptron)。
- multilayer perceptron的卷积核,实际相当于先做一个一般的卷积,再做几个1*1的卷积(只改变filter的个数,不改变feature map的大小)。
- 这么看来,相当于构建了一个层次更深的网络。
- Global average pooling 的合理性在于,经过了一个多层的复杂的网络之后,每一个filter代表的都是high-level的信息,而不是low-level的像一些曲线或者纹理之类的信息。对于这种high-level的信息,对整个feature map做pooling相当于检测这个map中有没有这个filter要检测的concept,这个pooling的结果已经可以很好地用来做分类或者检测之类的工作,不需要fully connected之后再训练分类器。
讨论各种问题的时候越来越发现大家都有这样的趋势,发现一个不好就会开始幻想它的对立面是好的。但往往大家反感的事情本身和大家幻想的另一个方案都是坏的。或者说坏的不是我们争论的那个事情本身,坏的是我们自己。
The advantages of using Rectified Linear Units in neural networks are
- If hard max function is used as activation function, it induces the sparsity in the hidden units.
- ReLU doesn't face gradient vanishing problem as with sigmoid and tanh function. Also, It has been shown that deep networks can be trained efficiently using ReLU even without pre-training.
- ReLU can be used in Restricted Boltzmann machine to model real/integer valued inputs.
- 每张人脸图片被分成了60个patch(5个全局5个局部,共十个区域,每个区域三个尺度,每个尺度还有一张对应的水平flipping)。
- 60个patch每个都对应训练一个CNN,每个CNN输出的特征维数为160。
- 为了能有效地训练CNN,训练数据比测试的数据大,每个人对应的图片多。
- 分类器,并没有直接使用CNN的分类结果,而是结合joint-bayesian
- 关于借鉴这个方法到Person Re-ID 上,Person怎么去切分区域?Person的变化应该更多,能不能利用这样的网络训练得到有效的信息?
- 不同卷积层输出的特征之间+salience matching
- 不同全连接层输出+LADF
- 不同卷积层输出+global averaging+LADF
- Motivation:We are largely motivated by the observation that the co-occurrence patterns of visual codewords behave similar for images from different views.
20000 training instances The number of support vectors is around 15000, which means that most of the training data are near the separating hyper-plane. The training accuracy is around 80%
- Accuracy = 52.3734% (662/1264) (classification)
- Accuracy = 62.5791% (791/1264) (classification)
- Accuracy = 61.0759% (772/1264) (classification)
- Accuracy = 60.9968% (771/1264) (classification)