标签:
原作者:lynnandwei 原文地址:http://blog.csdn.net/lynnandwei/article/details/44458033
GoogLeNet, 2014年ILSVRC挑战赛冠军,将Top5 的错误率降低到6.67%. 一个22层的深度网络,论文在http://arxiv.org/pdf/1409.4842v1.pdf,题目为:Going deeper with convolutions。(每次看这么简洁优雅的题目,就想吐槽国内写paper的 八股文题目)。GoogLeNet这个名字也是挺有意思的,为了像开山鼻祖的LeNet网络致敬,他们选择了这样的名字。
BVLC在caffe中给出了网络的实现:https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet
模型下载地址:http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel
从论文里整理了一张这个22个层次的模型的图出来(如果考虑pooling层是27层),先将模型跑了一遍结果,还是那只猫:
直观输出是如下,觉得挺准确:
[287 281 285 282 283]
[‘n02127052 lynx, catamount‘ ‘n02123045 tabby, tabby cat‘
‘n02124075 Egyptian cat‘ ‘n02123159 tiger cat‘ ‘n02123394 Persian cat‘]
caffe的实现和原来论文的模型是有不同的:
not training with the relighting data-augmentation;
not training with the scale or aspect-ratio data-augmentation;
uses "xavier" to initialize the weights instead of "gaussian";
quick_solver.prototxt uses a different learning rate decay policy than the original solver.prototxt, that allows a much faster training (60 epochs vs 250 epochs);
The bundled model is the iteration 2,400,000 snapshot (60 epochs) using quick_solver.prototxt
但是准确度还是达到了 a top-1 accuracy 68.7% (31.3% error) and a top-5 accuracy 88.9% (11.1% error)
我们来分析一下这个模型的层次关系:
原始数据,输入为224*224*3
第一层卷积层 conv1 ,pad是3,64个特征,7*7 步长为2,输出特征为 112*112*64,然后进行relu,经过pool1(红色的max pool) 进行pooling 3*3的核,步长为2, [(112 - 3+1)/2]+1 = 56 特征为56*56*64 , 然后进行norm
第二层卷积层 conv2, pad是1,3*3,192个特征,输出为56*56*192,然后进行relu,进行norm,经过pool2进行pooling,3*3的核,步长为2 输出为28*28*192 然后进行split 分成四个支线
第三层开始时 inception module ,这个的思想受到使用不同尺度的Gabor过滤器来处理多尺度问题,inception module采用不同尺度的卷积核来处理问题。3a 包含 四个支线:
1: 64个1*1的卷积核(之后进行RULE计算) 变成28*28*64
2: 96个1*1的卷积核 作为3*3卷积核之前的reduce,变成28*28*96, 进行relu计算后,再进行128个3*3的卷积,pad为1, 28*28*128
3:16个1*1的卷积核 作为5*5卷积核之前的reduce,变成28*28*16, 进行relu计算后,再进行32个5*5的卷积,pad为2,变成28*28*32
4:pool层,3*3的核,pad为1,输出还是28*28*192,然后进行32个1*1的卷积,变成28*28*32。
将四个结果进行连接,输出为28*28*256
然后将3a的结果又分成四条支线,开始建立3b的inception module
3b
1:128个1*1的卷积核(之后进行RULE计算) 变成28*28*128
2:128个1*1的卷积核 作为3*3卷积核之前的reduce,变成28*28*128, 再进行192个3*3的卷积,pad为1, 28*28*192,进行relu计算
3:32个1*1的卷积核 作为5*5卷积核之前的reduce,变成28*28*32, 进行relu计算后,再进行96个5*5的卷积,pad为2,变成28*28*96
4:pool层,3*3的核,pad为1,输出还是28*28*256,然后进行64个1*1的卷积,变成28*28*64。
将四个结果进行连接,输出为28*28*480
同理依次推算,数据变化如下表:
一部分输出结果如下:
I0319 22:27:51.257917 5080 net.cpp:208] This network produces output prob
材料集合:
http://deeplearning.net/2014/09/19/googles-entry-to-imagenet-2014-challenge/
[1] Imagenet 2014 LSVRC results, http://karpathy.github.io/2014/09/02/what-i-learned-from-competing-against-a-convnet-on-imagenet/,Last retrieved on: 19-09-2014.
[2] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich, Going Deeper with Convolutions, Arxiv Link: http://arxiv.org/abs/1409.4842.
[3] GoogLeNet presentation, http://image-net.org/challenges/LSVRC/2014/slides/GoogLeNet.pptx, Last retrieved on: 19-09.2014..
[4] What I learned from competing against a convnet on imagenet, http://karpathy.github.io/2014/09/02/what-i-learned-from-competing-against-a-convnet-on-imagenet/, Last retrieved on: 19-09-2014.
[5] Girshick, Ross, et al. “Rich feature hierarchies for accurate object detection and semantic segmentation.” arXiv preprint arXiv:1311.2524 (2013).
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://www.cnblogs.com/gkwang/p/4625410.html