├── .gitignore
├── javascripts
├── main.js
└── script.js
├── images
├── bkg.png
├── code.png
├── tar.png
├── top.png
├── zip.png
├── body-bg.jpg
├── pattern.png
├── header-bg.jpg
├── blacktocat.png
├── highlight-bg.jpg
├── sidebar-bg.jpg
├── github-button.png
└── download-button.png
├── ResNet18
└── test.sh
├── ResNet50
└── test.sh
├── _config.yml
├── LICENSE
├── index.md
├── README.md
├── stylesheets
├── github-dark.css
├── github-light.css
├── print.css
└── stylesheet.css
├── AlexNet
└── train_val.prototxt
├── VGG16
└── train_val.prototxt
├── SqueezeNet
└── trainval.prototxt
└── GoogleNet
└── train_val.prototxt
/.gitignore:
--------------------------------------------------------------------------------
1 | *.caffemodel
2 | *.t7
3 | .*swp
4 |
--------------------------------------------------------------------------------
/javascripts/main.js:
--------------------------------------------------------------------------------
1 | console.log('This would be the main JS file.');
2 |
--------------------------------------------------------------------------------
/images/bkg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/bkg.png
--------------------------------------------------------------------------------
/images/code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/code.png
--------------------------------------------------------------------------------
/images/tar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/tar.png
--------------------------------------------------------------------------------
/images/top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/top.png
--------------------------------------------------------------------------------
/images/zip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/zip.png
--------------------------------------------------------------------------------
/images/body-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/body-bg.jpg
--------------------------------------------------------------------------------
/images/pattern.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/pattern.png
--------------------------------------------------------------------------------
/images/header-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/header-bg.jpg
--------------------------------------------------------------------------------
/images/blacktocat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/blacktocat.png
--------------------------------------------------------------------------------
/images/highlight-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/highlight-bg.jpg
--------------------------------------------------------------------------------
/images/sidebar-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/sidebar-bg.jpg
--------------------------------------------------------------------------------
/images/github-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/github-button.png
--------------------------------------------------------------------------------
/images/download-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/songhan/DSD/HEAD/images/download-button.png
--------------------------------------------------------------------------------
/ResNet18/test.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | UDA_VISIBLE_DEVICES=0 th main.lua -data /ssd/dataset/imagenet -retrain 1 -batchSize 50 -testOnly 1 -retrain /cnn/models/dsd/release/ResNet18/resnet18_dsd.t7
3 |
--------------------------------------------------------------------------------
/ResNet50/test.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -e
2 | CUDA_VISIBLE_DEVICES=1 th main.lua -data /ssd/dataset/imagenet -retrain 1 -batchSize 50 -testOnly 1 -retrain /cnn/models/dsd/release/ResNet50/resnet50_dsd.t7
3 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | title: DSD Model Zoo
2 | description: DSD model zoo. Better accuracy models from DSD training on Imagenet with same model architecture.
3 | google_analytics:
4 | show_downloads: true
5 | theme: jekyll-theme-time-machine
6 |
7 | gems:
8 | - jekyll-mentions
9 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 2-Clause License
2 |
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are met:
5 |
6 | * Redistributions of source code must retain the above copyright notice, this
7 | list of conditions and the following disclaimer.
8 |
9 | * Redistributions in binary form must reproduce the above copyright notice,
10 | this list of conditions and the following disclaimer in the documentation
11 | and/or other materials provided with the distribution.
12 |
13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
14 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
17 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
21 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 |
--------------------------------------------------------------------------------
/javascripts/script.js:
--------------------------------------------------------------------------------
1 | (function($) {
2 | $(document).ready(function(){
3 |
4 | // putting lines by the pre blocks
5 | $("pre").each(function(){
6 | var pre = $(this).text().split("\n");
7 | var lines = new Array(pre.length+1);
8 | for(var i = 0; i < pre.length; i++) {
9 | var wrap = Math.floor(pre[i].split("").length / 70)
10 | if (pre[i]==""&&i==pre.length-1) {
11 | lines.splice(i, 1);
12 | } else {
13 | lines[i] = i+1;
14 | for(var j = 0; j < wrap; j++) {
15 | lines[i] += "\n";
16 | }
17 | }
18 | }
19 | $(this).before("
" + lines.join("\n") + "");
20 | });
21 |
22 | var headings = [];
23 |
24 | var collectHeaders = function(){
25 | headings.push({"top":$(this).offset().top - 15,"text":$(this).text()});
26 | }
27 |
28 | if($(".markdown-body h1").length > 1) $(".markdown-body h1").each(collectHeaders)
29 | else if($(".markdown-body h2").length > 1) $(".markdown-body h2").each(collectHeaders)
30 | else if($(".markdown-body h3").length > 1) $(".markdown-body h3").each(collectHeaders)
31 |
32 | $(window).scroll(function(){
33 | if(headings.length==0) return true;
34 | var scrolltop = $(window).scrollTop() || 0;
35 | if(headings[0] && scrolltop < headings[0].top) {
36 | $(".current-section").css({"opacity":0,"visibility":"hidden"});
37 | return false;
38 | }
39 | $(".current-section").css({"opacity":1,"visibility":"visible"});
40 | for(var i in headings) {
41 | if(scrolltop >= headings[i].top) {
42 | $(".current-section .name").text(headings[i].text);
43 | }
44 | }
45 | });
46 |
47 | $(".current-section a").click(function(){
48 | $(window).scrollTop(0);
49 | return false;
50 | })
51 | });
52 | })(jQuery)
--------------------------------------------------------------------------------
/index.md:
--------------------------------------------------------------------------------
1 | ## DSD Model Zoo
2 |
3 | This repo contains pre-trained models by Dense-Sparse-Dense(DSD) training on Imagenet.
4 |
5 | Compared to conventional training method, dense→sparse→dense (DSD) training yielded higher
6 | accuracy with same model architecture.
7 |
8 | Sparsity is a powerful form of regularization. Our intuition is that, once the network arrives at a
9 | local minimum given the sparsity constraint, relaxing the constraint gives the network more
10 | freedom to escape the saddle point and arrive at a higher-accuracy local minimum.
11 |
12 |
13 |
14 | ## Download:
15 | [AlexNet_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2bYhyLGPP0nffD2k)
16 |
17 | [VGG16_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2b0Wctt6d3NFNz3g)
18 |
19 | [GoogleNet_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2bAohUrIhGI8T_TI)
20 |
21 | [SqueezeNet_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2bgMQDqHa43dNYVM)
22 |
23 | [ResNet18_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2cENv91trxEzvYvs)
24 |
25 | [ResNet50_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2cSrUOTES_OAP8f8)
26 |
27 |
28 | #### Single-crop (224x224) validation error rate:
29 |
30 | | Baseline | Top-1 error | Top-5 error | DSD | Top-1 error | Top-5 error |
31 | | ------------- | ----------- | ----------- | ------------- | ----------- | ----------- |
32 | | AlexNet | 42.78% | 19.73% | AlexNet_DSD | 41.48% | 18.71% |
33 | | VGG16 | 31.50% | 11.32% | VGG16_DSD | 27.19% | 8.67% |
34 | | GoogleNet | 31.14% | 10.96% | GoogleNet_DSD | 30.02% | 10.34% |
35 | | SqueezeNet | 42.39% | 19.32% | SqueezeNet_DSD| 38.24% | 16.53% |
36 | | ResNet18 | 30.43% | 10.76% | ResNet18_DSD | 29.17% | 10.13% |
37 | | ResNet50 | 24.01% | 7.02% | ResNet50_DSD | 22.89% | 6.47% |
38 |
39 | The beseline of AlexNet, VGG16, GoogleNet, SqueezeNet are from [Caffe Model Zoo](https://github.com/BVLC/caffe/wiki/Model-Zoo).
40 | The baseline of ResNet18, ResNet50 are from [fb.resnet.torch](https://github.com/facebook/fb.resnet.torch) commit 500b698.
41 |
42 |
43 | Feel free to use the better-accuracy DSD models to help your research. If you find DSD traing useful, please cite the following paper:
44 |
45 | **DSD: Dense-Sparse-Dense Training for Deep Neural Networks**
46 | Song Han, Jeff Pool, Sharan Narang, Huizi Mao, Enhao Gong, Shijian Tang, Erich Elsen, Peter Vajda, Manohar Paluri, John Tran, Bryan Catanzaro, William J. Dally
47 | *International Conference on Learning Representations (ICLR) 2017*
48 |
49 |
50 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | - March 15, 2019: for our most updated work on model compression and acceleration, please reference:
2 |
3 | [ProxylessNAS: Direct Neural Architecture Search on Target Task and Hardware](https://arxiv.org/pdf/1812.00332.pdf) (ICLR’19)
4 |
5 | [AMC: AutoML for Model Compression and Acceleration on Mobile Devices](https://arxiv.org/pdf/1802.03494.pdf) (ECCV’18)
6 |
7 | [HAQ: Hardware-Aware Automated Quantization](https://arxiv.org/pdf/1811.08886.pdf) (CVPR’19)
8 |
9 | [Defenstive Quantization: When Efficiency Meets Robustness](https://openreview.net/pdf?id=ryetZ20ctX) (ICLR'19)
10 |
11 | ## DSD Model Zoo
12 |
13 | This repo contains pre-trained models by Dense-Sparse-Dense(DSD) training on Imagenet.
14 |
15 | Compared to conventional training method, dense→sparse→dense (DSD) training yielded higher
16 | accuracy with same model architecture.
17 |
18 | Sparsity is a powerful form of regularization. Our intuition is that, once the network arrives at a
19 | local minimum given the sparsity constraint, relaxing the constraint gives the network more
20 | freedom to escape the saddle point and arrive at a higher-accuracy local minimum.
21 |
22 | Feel free to use the better-accuracy DSD models to help your research. If you find DSD traing useful, please cite the following paper:
23 |
24 | @article{han2016_DSD,
25 | title={DSD: Dense-Sparse-Dense Training for Deep Neural Networks},
26 | author={Song Han, Jeff Pool, Sharan Narang, Huizi Mao, Enhao Gong, Shijian Tang, Erich Elsen, Peter Vajda, Manohar Paluri, John Tran, Bryan Catanzaro, William J. Dally},
27 | journal={International Conference on Learning Representations (ICLR)},
28 | year={2017}
29 | }
30 |
31 |
32 |
33 | ## Download:
34 | [AlexNet_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2bYhyLGPP0nffD2k)
35 |
36 | [VGG16_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2b0Wctt6d3NFNz3g)
37 |
38 | [GoogleNet_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2bAohUrIhGI8T_TI)
39 |
40 | [SqueezeNet_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2bgMQDqHa43dNYVM)
41 |
42 | [ResNet18_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2cENv91trxEzvYvs)
43 |
44 | [ResNet50_DSD](https://1drv.ms/u/s!AkOf0kjGMRd2cSrUOTES_OAP8f8)
45 |
46 |
47 | #### Single-crop (224x224) validation error rate:
48 |
49 | | Baseline | Top-1 error | Top-5 error | DSD | Top-1 error | Top-5 error |
50 | | ------------- | ----------- | ----------- | ------------- | ----------- | ----------- |
51 | | AlexNet | 42.78% | 19.73% | AlexNet_DSD | 41.48% | 18.71% |
52 | | VGG16 | 31.50% | 11.32% | VGG16_DSD | 27.19% | 8.67% |
53 | | GoogleNet | 31.14% | 10.96% | GoogleNet_DSD | 30.02% | 10.34% |
54 | | SqueezeNet | 42.56% | 19.52% | SqueezeNet_DSD| 38.24% | 16.53% |
55 | | ResNet18 | 30.43% | 10.76% | ResNet18_DSD | 29.17% | 10.13% |
56 | | ResNet50 | 24.01% | 7.02% | ResNet50_DSD | 22.89% | 6.47% |
57 |
58 | The beseline of AlexNet, VGG16, GoogleNet, SqueezeNet are from [Caffe Model Zoo](https://github.com/BVLC/caffe/wiki/Model-Zoo).
59 | The baseline of ResNet18, ResNet50 are from [fb.resnet.torch](https://github.com/facebook/fb.resnet.torch) commit 500b698.
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/stylesheets/github-dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | The MIT License (MIT)
3 |
4 | Copyright (c) 2016 GitHub, Inc.
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 |
24 | */
25 |
26 | .pl-c /* comment */ {
27 | color: #969896;
28 | }
29 |
30 | .pl-c1 /* constant, variable.other.constant, support, meta.property-name, support.constant, support.variable, meta.module-reference, markup.raw, meta.diff.header */,
31 | .pl-s .pl-v /* string variable */ {
32 | color: #0099cd;
33 | }
34 |
35 | .pl-e /* entity */,
36 | .pl-en /* entity.name */ {
37 | color: #9774cb;
38 | }
39 |
40 | .pl-smi /* variable.parameter.function, storage.modifier.package, storage.modifier.import, storage.type.java, variable.other */,
41 | .pl-s .pl-s1 /* string source */ {
42 | color: #ddd;
43 | }
44 |
45 | .pl-ent /* entity.name.tag */ {
46 | color: #7bcc72;
47 | }
48 |
49 | .pl-k /* keyword, storage, storage.type */ {
50 | color: #cc2372;
51 | }
52 |
53 | .pl-s /* string */,
54 | .pl-pds /* punctuation.definition.string, string.regexp.character-class */,
55 | .pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */,
56 | .pl-sr /* string.regexp */,
57 | .pl-sr .pl-cce /* string.regexp constant.character.escape */,
58 | .pl-sr .pl-sre /* string.regexp source.ruby.embedded */,
59 | .pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */ {
60 | color: #3c66e2;
61 | }
62 |
63 | .pl-v /* variable */ {
64 | color: #fb8764;
65 | }
66 |
67 | .pl-id /* invalid.deprecated */ {
68 | color: #e63525;
69 | }
70 |
71 | .pl-ii /* invalid.illegal */ {
72 | color: #f8f8f8;
73 | background-color: #e63525;
74 | }
75 |
76 | .pl-sr .pl-cce /* string.regexp constant.character.escape */ {
77 | font-weight: bold;
78 | color: #7bcc72;
79 | }
80 |
81 | .pl-ml /* markup.list */ {
82 | color: #c26b2b;
83 | }
84 |
85 | .pl-mh /* markup.heading */,
86 | .pl-mh .pl-en /* markup.heading entity.name */,
87 | .pl-ms /* meta.separator */ {
88 | font-weight: bold;
89 | color: #264ec5;
90 | }
91 |
92 | .pl-mq /* markup.quote */ {
93 | color: #00acac;
94 | }
95 |
96 | .pl-mi /* markup.italic */ {
97 | font-style: italic;
98 | color: #ddd;
99 | }
100 |
101 | .pl-mb /* markup.bold */ {
102 | font-weight: bold;
103 | color: #ddd;
104 | }
105 |
106 | .pl-md /* markup.deleted, meta.diff.header.from-file */ {
107 | color: #bd2c00;
108 | background-color: #ffecec;
109 | }
110 |
111 | .pl-mi1 /* markup.inserted, meta.diff.header.to-file */ {
112 | color: #55a532;
113 | background-color: #eaffea;
114 | }
115 |
116 | .pl-mdr /* meta.diff.range */ {
117 | font-weight: bold;
118 | color: #9774cb;
119 | }
120 |
121 | .pl-mo /* meta.output */ {
122 | color: #264ec5;
123 | }
124 |
125 |
--------------------------------------------------------------------------------
/stylesheets/github-light.css:
--------------------------------------------------------------------------------
1 | /*
2 | The MIT License (MIT)
3 |
4 | Copyright (c) 2016 GitHub, Inc.
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in all
14 | copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 | SOFTWARE.
23 |
24 | */
25 |
26 | .pl-c /* comment */ {
27 | color: #969896;
28 | }
29 |
30 | .pl-c1 /* constant, variable.other.constant, support, meta.property-name, support.constant, support.variable, meta.module-reference, markup.raw, meta.diff.header */,
31 | .pl-s .pl-v /* string variable */ {
32 | color: #0086b3;
33 | }
34 |
35 | .pl-e /* entity */,
36 | .pl-en /* entity.name */ {
37 | color: #795da3;
38 | }
39 |
40 | .pl-smi /* variable.parameter.function, storage.modifier.package, storage.modifier.import, storage.type.java, variable.other */,
41 | .pl-s .pl-s1 /* string source */ {
42 | color: #333;
43 | }
44 |
45 | .pl-ent /* entity.name.tag */ {
46 | color: #63a35c;
47 | }
48 |
49 | .pl-k /* keyword, storage, storage.type */ {
50 | color: #a71d5d;
51 | }
52 |
53 | .pl-s /* string */,
54 | .pl-pds /* punctuation.definition.string, string.regexp.character-class */,
55 | .pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */,
56 | .pl-sr /* string.regexp */,
57 | .pl-sr .pl-cce /* string.regexp constant.character.escape */,
58 | .pl-sr .pl-sre /* string.regexp source.ruby.embedded */,
59 | .pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */ {
60 | color: #183691;
61 | }
62 |
63 | .pl-v /* variable */ {
64 | color: #ed6a43;
65 | }
66 |
67 | .pl-id /* invalid.deprecated */ {
68 | color: #b52a1d;
69 | }
70 |
71 | .pl-ii /* invalid.illegal */ {
72 | color: #f8f8f8;
73 | background-color: #b52a1d;
74 | }
75 |
76 | .pl-sr .pl-cce /* string.regexp constant.character.escape */ {
77 | font-weight: bold;
78 | color: #63a35c;
79 | }
80 |
81 | .pl-ml /* markup.list */ {
82 | color: #693a17;
83 | }
84 |
85 | .pl-mh /* markup.heading */,
86 | .pl-mh .pl-en /* markup.heading entity.name */,
87 | .pl-ms /* meta.separator */ {
88 | font-weight: bold;
89 | color: #1d3e81;
90 | }
91 |
92 | .pl-mq /* markup.quote */ {
93 | color: #008080;
94 | }
95 |
96 | .pl-mi /* markup.italic */ {
97 | font-style: italic;
98 | color: #333;
99 | }
100 |
101 | .pl-mb /* markup.bold */ {
102 | font-weight: bold;
103 | color: #333;
104 | }
105 |
106 | .pl-md /* markup.deleted, meta.diff.header.from-file */ {
107 | color: #bd2c00;
108 | background-color: #ffecec;
109 | }
110 |
111 | .pl-mi1 /* markup.inserted, meta.diff.header.to-file */ {
112 | color: #55a532;
113 | background-color: #eaffea;
114 | }
115 |
116 | .pl-mdr /* meta.diff.range */ {
117 | font-weight: bold;
118 | color: #795da3;
119 | }
120 |
121 | .pl-mo /* meta.output */ {
122 | color: #1d3e81;
123 | }
124 |
125 |
--------------------------------------------------------------------------------
/stylesheets/print.css:
--------------------------------------------------------------------------------
1 | html, body, div, span, applet, object, iframe,
2 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
3 | a, abbr, acronym, address, big, cite, code,
4 | del, dfn, em, img, ins, kbd, q, s, samp,
5 | small, strike, strong, sub, sup, tt, var,
6 | b, u, i, center,
7 | dl, dt, dd, ol, ul, li,
8 | fieldset, form, label, legend,
9 | table, caption, tbody, tfoot, thead, tr, th, td,
10 | article, aside, canvas, details, embed,
11 | figure, figcaption, footer, header, hgroup,
12 | menu, nav, output, ruby, section, summary,
13 | time, mark, audio, video {
14 | padding: 0;
15 | margin: 0;
16 | font: inherit;
17 | font-size: 100%;
18 | vertical-align: baseline;
19 | border: 0;
20 | }
21 | /* HTML5 display-role reset for older browsers */
22 | article, aside, details, figcaption, figure,
23 | footer, header, hgroup, menu, nav, section {
24 | display: block;
25 | }
26 | body {
27 | line-height: 1;
28 | }
29 | ol, ul {
30 | list-style: none;
31 | }
32 | blockquote, q {
33 | quotes: none;
34 | }
35 | blockquote:before, blockquote:after,
36 | q:before, q:after {
37 | content: '';
38 | content: none;
39 | }
40 | table {
41 | border-spacing: 0;
42 | border-collapse: collapse;
43 | }
44 | body {
45 | font-family: 'Helvetica Neue', Helvetica, Arial, serif;
46 | font-size: 13px;
47 | line-height: 1.5;
48 | color: #000;
49 | }
50 |
51 | a {
52 | font-weight: bold;
53 | color: #d5000d;
54 | }
55 |
56 | header {
57 | padding-top: 35px;
58 | padding-bottom: 10px;
59 | }
60 |
61 | header h1 {
62 | font-size: 48px;
63 | font-weight: bold;
64 | line-height: 1.2;
65 | color: #303030;
66 | letter-spacing: -1px;
67 | }
68 |
69 | header h2 {
70 | font-size: 24px;
71 | font-weight: normal;
72 | line-height: 1.3;
73 | color: #aaa;
74 | letter-spacing: -1px;
75 | }
76 | #downloads {
77 | display: none;
78 | }
79 | #main_content {
80 | padding-top: 20px;
81 | }
82 |
83 | code, pre {
84 | margin-bottom: 30px;
85 | font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal;
86 | font-size: 12px;
87 | color: #222;
88 | }
89 |
90 | code {
91 | padding: 0 3px;
92 | }
93 |
94 | pre {
95 | padding: 20px;
96 | overflow: auto;
97 | border: solid 1px #ddd;
98 | }
99 | pre code {
100 | padding: 0;
101 | }
102 |
103 | ul, ol, dl {
104 | margin-bottom: 20px;
105 | }
106 |
107 |
108 | /* COMMON STYLES */
109 |
110 | table {
111 | width: 100%;
112 | border: 1px solid #ebebeb;
113 | }
114 |
115 | th {
116 | font-weight: 500;
117 | }
118 |
119 | td {
120 | font-weight: 300;
121 | text-align: center;
122 | border: 1px solid #ebebeb;
123 | }
124 |
125 | form {
126 | padding: 20px;
127 | background: #f2f2f2;
128 |
129 | }
130 |
131 |
132 | /* GENERAL ELEMENT TYPE STYLES */
133 |
134 | h1 {
135 | font-size: 2.8em;
136 | }
137 |
138 | h2 {
139 | margin-bottom: 8px;
140 | font-size: 22px;
141 | font-weight: bold;
142 | color: #303030;
143 | }
144 |
145 | h3 {
146 | margin-bottom: 8px;
147 | font-size: 18px;
148 | font-weight: bold;
149 | color: #d5000d;
150 | }
151 |
152 | h4 {
153 | font-size: 16px;
154 | font-weight: bold;
155 | color: #303030;
156 | }
157 |
158 | h5 {
159 | font-size: 1em;
160 | color: #303030;
161 | }
162 |
163 | h6 {
164 | font-size: .8em;
165 | color: #303030;
166 | }
167 |
168 | p {
169 | margin-bottom: 20px;
170 | font-weight: 300;
171 | }
172 |
173 | a {
174 | text-decoration: none;
175 | }
176 |
177 | p a {
178 | font-weight: 400;
179 | }
180 |
181 | blockquote {
182 | padding: 0 0 0 30px;
183 | margin-bottom: 20px;
184 | font-size: 1.6em;
185 | border-left: 10px solid #e9e9e9;
186 | }
187 |
188 | ul li {
189 | padding-left: 20px;
190 | list-style-position: inside;
191 | list-style: disc;
192 | }
193 |
194 | ol li {
195 | padding-left: 3px;
196 | list-style-position: inside;
197 | list-style: decimal;
198 | }
199 |
200 | dl dd {
201 | font-style: italic;
202 | font-weight: 100;
203 | }
204 |
205 | footer {
206 | padding-top: 20px;
207 | padding-bottom: 30px;
208 | margin-top: 40px;
209 | font-size: 13px;
210 | color: #aaa;
211 | }
212 |
213 | footer a {
214 | color: #666;
215 | }
216 |
217 | /* MISC */
218 | .clearfix:after {
219 | display: block;
220 | height: 0;
221 | clear: both;
222 | visibility: hidden;
223 | content: '.';
224 | }
225 |
226 | .clearfix {display: inline-block;}
227 | * html .clearfix {height: 1%;}
228 | .clearfix {display: block;}
229 |
--------------------------------------------------------------------------------
/AlexNet/train_val.prototxt:
--------------------------------------------------------------------------------
1 | name: "AlexNet"
2 | layer {
3 | name: "data"
4 | type: "Data"
5 | top: "data"
6 | top: "label"
7 | include {
8 | phase: TRAIN
9 | }
10 | transform_param {
11 | mirror: true
12 | crop_size: 227
13 | mean_file: "/ssd/dataset/imagenet_mean.binaryproto"
14 | }
15 | data_param {
16 | source: "/ssd/dataset/ilsvrc12_train_lmdb"
17 | batch_size: 256
18 | backend: LMDB
19 | }
20 | }
21 | layer {
22 | name: "data"
23 | type: "Data"
24 | top: "data"
25 | top: "label"
26 | include {
27 | phase: TEST
28 | }
29 | transform_param {
30 | mirror: false
31 | crop_size: 227
32 | mean_file: "/ssd/dataset/imagenet_mean.binaryproto"
33 | }
34 | data_param {
35 | source: "/ssd/dataset/ilsvrc12_val_lmdb"
36 | batch_size: 50
37 | backend: LMDB
38 | }
39 | }
40 | layer {
41 | name: "conv1"
42 | type: "Convolution"
43 | bottom: "data"
44 | top: "conv1"
45 | param {
46 | lr_mult: 1
47 | decay_mult: 1
48 | }
49 | param {
50 | lr_mult: 2
51 | decay_mult: 0
52 | }
53 | convolution_param {
54 | num_output: 96
55 | kernel_size: 11
56 | stride: 4
57 | weight_filler {
58 | type: "gaussian"
59 | std: 0.01
60 | }
61 | bias_filler {
62 | type: "constant"
63 | value: 0
64 | }
65 | }
66 | }
67 | layer {
68 | name: "relu1"
69 | type: "ReLU"
70 | bottom: "conv1"
71 | top: "conv1"
72 | }
73 | layer {
74 | name: "norm1"
75 | type: "LRN"
76 | bottom: "conv1"
77 | top: "norm1"
78 | lrn_param {
79 | local_size: 5
80 | alpha: 0.0001
81 | beta: 0.75
82 | }
83 | }
84 | layer {
85 | name: "pool1"
86 | type: "Pooling"
87 | bottom: "norm1"
88 | top: "pool1"
89 | pooling_param {
90 | pool: MAX
91 | kernel_size: 3
92 | stride: 2
93 | }
94 | }
95 | layer {
96 | name: "conv2"
97 | type: "Convolution"
98 | bottom: "pool1"
99 | top: "conv2"
100 | param {
101 | lr_mult: 1
102 | decay_mult: 1
103 | }
104 | param {
105 | lr_mult: 2
106 | decay_mult: 0
107 | }
108 | convolution_param {
109 | num_output: 256
110 | pad: 2
111 | kernel_size: 5
112 | group: 2
113 | weight_filler {
114 | type: "gaussian"
115 | std: 0.01
116 | }
117 | bias_filler {
118 | type: "constant"
119 | value: 0.1
120 | }
121 | }
122 | }
123 | layer {
124 | name: "relu2"
125 | type: "ReLU"
126 | bottom: "conv2"
127 | top: "conv2"
128 | }
129 | layer {
130 | name: "norm2"
131 | type: "LRN"
132 | bottom: "conv2"
133 | top: "norm2"
134 | lrn_param {
135 | local_size: 5
136 | alpha: 0.0001
137 | beta: 0.75
138 | }
139 | }
140 | layer {
141 | name: "pool2"
142 | type: "Pooling"
143 | bottom: "norm2"
144 | top: "pool2"
145 | pooling_param {
146 | pool: MAX
147 | kernel_size: 3
148 | stride: 2
149 | }
150 | }
151 | layer {
152 | name: "conv3"
153 | type: "Convolution"
154 | bottom: "pool2"
155 | top: "conv3"
156 | param {
157 | lr_mult: 1
158 | decay_mult: 1
159 | }
160 | param {
161 | lr_mult: 2
162 | decay_mult: 0
163 | }
164 | convolution_param {
165 | num_output: 384
166 | pad: 1
167 | kernel_size: 3
168 | weight_filler {
169 | type: "gaussian"
170 | std: 0.01
171 | }
172 | bias_filler {
173 | type: "constant"
174 | value: 0
175 | }
176 | }
177 | }
178 | layer {
179 | name: "relu3"
180 | type: "ReLU"
181 | bottom: "conv3"
182 | top: "conv3"
183 | }
184 | layer {
185 | name: "conv4"
186 | type: "Convolution"
187 | bottom: "conv3"
188 | top: "conv4"
189 | param {
190 | lr_mult: 1
191 | decay_mult: 1
192 | }
193 | param {
194 | lr_mult: 2
195 | decay_mult: 0
196 | }
197 | convolution_param {
198 | num_output: 384
199 | pad: 1
200 | kernel_size: 3
201 | group: 2
202 | weight_filler {
203 | type: "gaussian"
204 | std: 0.01
205 | }
206 | bias_filler {
207 | type: "constant"
208 | value: 0.1
209 | }
210 | }
211 | }
212 | layer {
213 | name: "relu4"
214 | type: "ReLU"
215 | bottom: "conv4"
216 | top: "conv4"
217 | }
218 | layer {
219 | name: "conv5"
220 | type: "Convolution"
221 | bottom: "conv4"
222 | top: "conv5"
223 | param {
224 | lr_mult: 1
225 | decay_mult: 1
226 | }
227 | param {
228 | lr_mult: 2
229 | decay_mult: 0
230 | }
231 | convolution_param {
232 | num_output: 256
233 | pad: 1
234 | kernel_size: 3
235 | group: 2
236 | weight_filler {
237 | type: "gaussian"
238 | std: 0.01
239 | }
240 | bias_filler {
241 | type: "constant"
242 | value: 0.1
243 | }
244 | }
245 | }
246 | layer {
247 | name: "relu5"
248 | type: "ReLU"
249 | bottom: "conv5"
250 | top: "conv5"
251 | }
252 | layer {
253 | name: "pool5"
254 | type: "Pooling"
255 | bottom: "conv5"
256 | top: "pool5"
257 | pooling_param {
258 | pool: MAX
259 | kernel_size: 3
260 | stride: 2
261 | }
262 | }
263 | layer {
264 | name: "fc6"
265 | type: "InnerProduct"
266 | bottom: "pool5"
267 | top: "fc6"
268 | param {
269 | lr_mult: 1
270 | decay_mult: 1
271 | }
272 | param {
273 | lr_mult: 2
274 | decay_mult: 0
275 | }
276 | inner_product_param {
277 | num_output: 4096
278 | weight_filler {
279 | type: "gaussian"
280 | std: 0.005
281 | }
282 | bias_filler {
283 | type: "constant"
284 | value: 0.1
285 | }
286 | }
287 | }
288 | layer {
289 | name: "relu6"
290 | type: "ReLU"
291 | bottom: "fc6"
292 | top: "fc6"
293 | }
294 | layer {
295 | name: "drop6"
296 | type: "Dropout"
297 | bottom: "fc6"
298 | top: "fc6"
299 | dropout_param {
300 | dropout_ratio: 0.5
301 | }
302 | }
303 | layer {
304 | name: "fc7"
305 | type: "InnerProduct"
306 | bottom: "fc6"
307 | top: "fc7"
308 | param {
309 | lr_mult: 1
310 | decay_mult: 1
311 | }
312 | param {
313 | lr_mult: 2
314 | decay_mult: 0
315 | }
316 | inner_product_param {
317 | num_output: 4096
318 | weight_filler {
319 | type: "gaussian"
320 | std: 0.005
321 | }
322 | bias_filler {
323 | type: "constant"
324 | value: 0.1
325 | }
326 | }
327 | }
328 | layer {
329 | name: "relu7"
330 | type: "ReLU"
331 | bottom: "fc7"
332 | top: "fc7"
333 | }
334 | layer {
335 | name: "drop7"
336 | type: "Dropout"
337 | bottom: "fc7"
338 | top: "fc7"
339 | dropout_param {
340 | dropout_ratio: 0.5
341 | }
342 | }
343 | layer {
344 | name: "fc8"
345 | type: "InnerProduct"
346 | bottom: "fc7"
347 | top: "fc8"
348 | param {
349 | lr_mult: 1
350 | decay_mult: 1
351 | }
352 | param {
353 | lr_mult: 2
354 | decay_mult: 0
355 | }
356 | inner_product_param {
357 | num_output: 1000
358 | weight_filler {
359 | type: "gaussian"
360 | std: 0.01
361 | }
362 | bias_filler {
363 | type: "constant"
364 | value: 0
365 | }
366 | }
367 | }
368 | layer {
369 | name: "accuracy_top1"
370 | type: "Accuracy"
371 | bottom: "fc8"
372 | bottom: "label"
373 | top: "accuracy_top1"
374 | }
375 | layer {
376 | name: "accuracy_top5"
377 | type: "Accuracy"
378 | bottom: "fc8"
379 | bottom: "label"
380 | top: "accuracy_top5"
381 | accuracy_param {
382 | top_k: 5;
383 | }
384 | }
385 | layer {
386 | name: "loss"
387 | type: "SoftmaxWithLoss"
388 | bottom: "fc8"
389 | bottom: "label"
390 | top: "loss"
391 | }
392 |
--------------------------------------------------------------------------------
/VGG16/train_val.prototxt:
--------------------------------------------------------------------------------
1 | name: "VGG_ILSVRC_16_layer"
2 | layer {
3 | name: "data"
4 | type: "Data"
5 | top: "data"
6 | top: "label"
7 | include {
8 | phase: TRAIN
9 | }
10 | transform_param {
11 | mirror: true
12 | crop_size: 224
13 | mean_value: 103.939
14 | mean_value: 116.779
15 | mean_value: 123.68
16 | }
17 | data_param {
18 | source: "/ssd/dataset/ilsvrc12_train_lmdb/"
19 | batch_size: 32
20 | backend: LMDB
21 | }
22 | }
23 | layer {
24 | name: "data"
25 | type: "Data"
26 | top: "data"
27 | top: "label"
28 | include {
29 | phase: TEST
30 | }
31 | transform_param {
32 | mirror: false
33 | crop_size: 224
34 | mean_value: 103.939
35 | mean_value: 116.779
36 | mean_value: 123.68
37 | }
38 | data_param {
39 | source: "/ssd/dataset/ilsvrc12_val_lmdb/"
40 | batch_size: 50
41 | backend: LMDB
42 | }
43 | }
44 |
45 |
46 |
47 |
48 | layer {
49 | bottom: "data"
50 | top: "conv1_1"
51 | name: "conv1_1"
52 | type: "Convolution"
53 | convolution_param {
54 | num_output: 64
55 | pad: 1
56 | kernel_size: 3
57 | }
58 | }
59 | layer {
60 | bottom: "conv1_1"
61 | top: "conv1_1"
62 | name: "relu1_1"
63 | type: "ReLU"
64 | }
65 | layer {
66 | bottom: "conv1_1"
67 | top: "conv1_2"
68 | name: "conv1_2"
69 | type: "Convolution"
70 | convolution_param {
71 | num_output: 64
72 | pad: 1
73 | kernel_size: 3
74 | }
75 | }
76 | layer {
77 | bottom: "conv1_2"
78 | top: "conv1_2"
79 | name: "relu1_2"
80 | type: "ReLU"
81 | }
82 | layer {
83 | bottom: "conv1_2"
84 | top: "pool1"
85 | name: "pool1"
86 | type: "Pooling"
87 | pooling_param {
88 | pool: MAX
89 | kernel_size: 2
90 | stride: 2
91 | }
92 | }
93 | layer {
94 | bottom: "pool1"
95 | top: "conv2_1"
96 | name: "conv2_1"
97 | type: "Convolution"
98 | convolution_param {
99 | num_output: 128
100 | pad: 1
101 | kernel_size: 3
102 | }
103 | }
104 | layer {
105 | bottom: "conv2_1"
106 | top: "conv2_1"
107 | name: "relu2_1"
108 | type: "ReLU"
109 | }
110 | layer {
111 | bottom: "conv2_1"
112 | top: "conv2_2"
113 | name: "conv2_2"
114 | type: "Convolution"
115 | convolution_param {
116 | num_output: 128
117 | pad: 1
118 | kernel_size: 3
119 | }
120 | }
121 | layer {
122 | bottom: "conv2_2"
123 | top: "conv2_2"
124 | name: "relu2_2"
125 | type: "ReLU"
126 | }
127 | layer {
128 | bottom: "conv2_2"
129 | top: "pool2"
130 | name: "pool2"
131 | type: "Pooling"
132 | pooling_param {
133 | pool: MAX
134 | kernel_size: 2
135 | stride: 2
136 | }
137 | }
138 | layer {
139 | bottom: "pool2"
140 | top: "conv3_1"
141 | name: "conv3_1"
142 | type: "Convolution"
143 | convolution_param {
144 | num_output: 256
145 | pad: 1
146 | kernel_size: 3
147 | }
148 | }
149 | layer {
150 | bottom: "conv3_1"
151 | top: "conv3_1"
152 | name: "relu3_1"
153 | type: "ReLU"
154 | }
155 | layer {
156 | bottom: "conv3_1"
157 | top: "conv3_2"
158 | name: "conv3_2"
159 | type: "Convolution"
160 | convolution_param {
161 | num_output: 256
162 | pad: 1
163 | kernel_size: 3
164 | }
165 | }
166 | layer {
167 | bottom: "conv3_2"
168 | top: "conv3_2"
169 | name: "relu3_2"
170 | type: "ReLU"
171 | }
172 | layer {
173 | bottom: "conv3_2"
174 | top: "conv3_3"
175 | name: "conv3_3"
176 | type: "Convolution"
177 | convolution_param {
178 | num_output: 256
179 | pad: 1
180 | kernel_size: 3
181 | }
182 | }
183 | layer {
184 | bottom: "conv3_3"
185 | top: "conv3_3"
186 | name: "relu3_3"
187 | type: "ReLU"
188 | }
189 | layer {
190 | bottom: "conv3_3"
191 | top: "pool3"
192 | name: "pool3"
193 | type: "Pooling"
194 | pooling_param {
195 | pool: MAX
196 | kernel_size: 2
197 | stride: 2
198 | }
199 | }
200 | layer {
201 | bottom: "pool3"
202 | top: "conv4_1"
203 | name: "conv4_1"
204 | type: "Convolution"
205 | convolution_param {
206 | num_output: 512
207 | pad: 1
208 | kernel_size: 3
209 | }
210 | }
211 | layer {
212 | bottom: "conv4_1"
213 | top: "conv4_1"
214 | name: "relu4_1"
215 | type: "ReLU"
216 | }
217 | layer {
218 | bottom: "conv4_1"
219 | top: "conv4_2"
220 | name: "conv4_2"
221 | type: "Convolution"
222 | convolution_param {
223 | num_output: 512
224 | pad: 1
225 | kernel_size: 3
226 | }
227 | }
228 | layer {
229 | bottom: "conv4_2"
230 | top: "conv4_2"
231 | name: "relu4_2"
232 | type: "ReLU"
233 | }
234 | layer {
235 | bottom: "conv4_2"
236 | top: "conv4_3"
237 | name: "conv4_3"
238 | type: "Convolution"
239 | convolution_param {
240 | num_output: 512
241 | pad: 1
242 | kernel_size: 3
243 | }
244 | }
245 | layer {
246 | bottom: "conv4_3"
247 | top: "conv4_3"
248 | name: "relu4_3"
249 | type: "ReLU"
250 | }
251 | layer {
252 | bottom: "conv4_3"
253 | top: "pool4"
254 | name: "pool4"
255 | type: "Pooling"
256 | pooling_param {
257 | pool: MAX
258 | kernel_size: 2
259 | stride: 2
260 | }
261 | }
262 | layer {
263 | bottom: "pool4"
264 | top: "conv5_1"
265 | name: "conv5_1"
266 | type: "Convolution"
267 | convolution_param {
268 | num_output: 512
269 | pad: 1
270 | kernel_size: 3
271 | }
272 | }
273 | layer {
274 | bottom: "conv5_1"
275 | top: "conv5_1"
276 | name: "relu5_1"
277 | type: "ReLU"
278 | }
279 | layer {
280 | bottom: "conv5_1"
281 | top: "conv5_2"
282 | name: "conv5_2"
283 | type: "Convolution"
284 | convolution_param {
285 | num_output: 512
286 | pad: 1
287 | kernel_size: 3
288 | }
289 | }
290 | layer {
291 | bottom: "conv5_2"
292 | top: "conv5_2"
293 | name: "relu5_2"
294 | type: "ReLU"
295 | }
296 | layer {
297 | bottom: "conv5_2"
298 | top: "conv5_3"
299 | name: "conv5_3"
300 | type: "Convolution"
301 | convolution_param {
302 | num_output: 512
303 | pad: 1
304 | kernel_size: 3
305 | }
306 | }
307 | layer {
308 | bottom: "conv5_3"
309 | top: "conv5_3"
310 | name: "relu5_3"
311 | type: "ReLU"
312 | }
313 | layer {
314 | bottom: "conv5_3"
315 | top: "pool5"
316 | name: "pool5"
317 | type: "Pooling"
318 | pooling_param {
319 | pool: MAX
320 | kernel_size: 2
321 | stride: 2
322 | }
323 | }
324 | layer {
325 | bottom: "pool5"
326 | top: "fc6"
327 | name: "fc6"
328 | type: "InnerProduct"
329 | inner_product_param {
330 | num_output: 4096
331 | }
332 | }
333 | layer {
334 | bottom: "fc6"
335 | top: "fc6"
336 | name: "relu6"
337 | type: "ReLU"
338 | }
339 | layer {
340 | bottom: "fc6"
341 | top: "fc6"
342 | name: "drop6"
343 | type: "Dropout"
344 | dropout_param {
345 | dropout_ratio: 0.5
346 | }
347 | }
348 | layer {
349 | bottom: "fc6"
350 | top: "fc7"
351 | name: "fc7"
352 | type: "InnerProduct"
353 | inner_product_param {
354 | num_output: 4096
355 | }
356 | }
357 | layer {
358 | bottom: "fc7"
359 | top: "fc7"
360 | name: "relu7"
361 | type: "ReLU"
362 | }
363 | layer {
364 | bottom: "fc7"
365 | top: "fc7"
366 | name: "drop7"
367 | type: "Dropout"
368 | dropout_param {
369 | dropout_ratio: 0.5
370 | }
371 | }
372 | layer {
373 | bottom: "fc7"
374 | top: "fc8"
375 | name: "fc8"
376 | type: "InnerProduct"
377 | inner_product_param {
378 | num_output: 1000
379 | }
380 | }
381 |
382 |
383 |
384 | layer {
385 | bottom: "fc8"
386 | bottom: "label"
387 | top: "accuracy_top1"
388 | name: "accuracy_top1"
389 | type: "Accuracy"
390 | accuracy_param {
391 | top_k: 1
392 | }
393 | include {
394 | phase: TEST
395 | }
396 | }
397 | layer {
398 | name: "accuracy_top5"
399 | type: "Accuracy"
400 | bottom: "fc8"
401 | bottom: "label"
402 | top: "accuracy_top5"
403 | accuracy_param {
404 | top_k: 5
405 | }
406 | include {
407 | phase: TEST
408 | }
409 | }
410 | layer {
411 | bottom: "fc8"
412 | bottom: "label"
413 | top: "loss"
414 | name: "loss"
415 | type: "SoftmaxWithLoss"
416 | }
417 |
418 |
419 |
420 |
421 |
--------------------------------------------------------------------------------
/SqueezeNet/trainval.prototxt:
--------------------------------------------------------------------------------
1 | name: "FireNet"
2 | layer {
3 | name: "data"
4 | type: "Data"
5 | top: "data"
6 | top: "label"
7 | include {
8 | phase: TRAIN
9 | }
10 | transform_param {
11 | mirror: true
12 | crop_size: 227
13 | mean_value: 104
14 | mean_value: 117
15 | mean_value: 123
16 | }
17 | data_param {
18 | source: "/ssd/dataset/ilsvrc12_train_lmdb/"
19 | batch_size: 32
20 | backend: LMDB
21 | }
22 | }
23 | layer {
24 | name: "data"
25 | type: "Data"
26 | top: "data"
27 | top: "label"
28 | include {
29 | phase: TEST
30 | }
31 | transform_param {
32 | mirror: false
33 | crop_size: 227
34 | mean_value: 104
35 | mean_value: 117
36 | mean_value: 123
37 | }
38 | data_param {
39 | source: "/ssd/dataset/ilsvrc12_val_lmdb/"
40 | batch_size: 50
41 | backend: LMDB
42 | }
43 | }
44 | layer {
45 | name: "conv1"
46 | type: "Convolution"
47 | bottom: "data"
48 | top: "conv1"
49 | convolution_param {
50 | num_output: 96
51 | kernel_size: 7
52 | stride: 2
53 | weight_filler {
54 | type: "xavier"
55 | }
56 | }
57 | }
58 | layer {
59 | name: "relu_conv1"
60 | type: "ReLU"
61 | bottom: "conv1"
62 | top: "conv1"
63 | }
64 | layer {
65 | name: "pool1"
66 | type: "Pooling"
67 | bottom: "conv1"
68 | top: "pool1"
69 | pooling_param {
70 | pool: MAX
71 | kernel_size: 3
72 | stride: 2
73 | }
74 | }
75 | layer {
76 | name: "fire2/conv1x1_1"
77 | type: "Convolution"
78 | bottom: "pool1"
79 | top: "fire2/conv1x1_1"
80 | convolution_param {
81 | num_output: 16
82 | kernel_size: 1
83 | weight_filler {
84 | type: "xavier"
85 | }
86 | }
87 | }
88 | layer {
89 | name: "fire2/relu_conv1x1_1"
90 | type: "ReLU"
91 | bottom: "fire2/conv1x1_1"
92 | top: "fire2/conv1x1_1"
93 | }
94 | layer {
95 | name: "fire2/conv1x1_2"
96 | type: "Convolution"
97 | bottom: "fire2/conv1x1_1"
98 | top: "fire2/conv1x1_2"
99 | convolution_param {
100 | num_output: 64
101 | kernel_size: 1
102 | weight_filler {
103 | type: "xavier"
104 | }
105 | }
106 | }
107 | layer {
108 | name: "fire2/relu_conv1x1_2"
109 | type: "ReLU"
110 | bottom: "fire2/conv1x1_2"
111 | top: "fire2/conv1x1_2"
112 | }
113 | layer {
114 | name: "fire2/conv3x3_2"
115 | type: "Convolution"
116 | bottom: "fire2/conv1x1_1"
117 | top: "fire2/conv3x3_2"
118 | convolution_param {
119 | num_output: 64
120 | pad: 1
121 | kernel_size: 3
122 | weight_filler {
123 | type: "xavier"
124 | }
125 | }
126 | }
127 | layer {
128 | name: "fire2/relu_conv3x3_2"
129 | type: "ReLU"
130 | bottom: "fire2/conv3x3_2"
131 | top: "fire2/conv3x3_2"
132 | }
133 | layer {
134 | name: "fire2/concat"
135 | type: "Concat"
136 | bottom: "fire2/conv1x1_2"
137 | bottom: "fire2/conv3x3_2"
138 | top: "fire2/concat"
139 | }
140 | layer {
141 | name: "fire3/conv1x1_1"
142 | type: "Convolution"
143 | bottom: "fire2/concat"
144 | top: "fire3/conv1x1_1"
145 | convolution_param {
146 | num_output: 16
147 | kernel_size: 1
148 | weight_filler {
149 | type: "xavier"
150 | }
151 | }
152 | }
153 | layer {
154 | name: "fire3/relu_conv1x1_1"
155 | type: "ReLU"
156 | bottom: "fire3/conv1x1_1"
157 | top: "fire3/conv1x1_1"
158 | }
159 | layer {
160 | name: "fire3/conv1x1_2"
161 | type: "Convolution"
162 | bottom: "fire3/conv1x1_1"
163 | top: "fire3/conv1x1_2"
164 | convolution_param {
165 | num_output: 64
166 | kernel_size: 1
167 | weight_filler {
168 | type: "xavier"
169 | }
170 | }
171 | }
172 | layer {
173 | name: "fire3/relu_conv1x1_2"
174 | type: "ReLU"
175 | bottom: "fire3/conv1x1_2"
176 | top: "fire3/conv1x1_2"
177 | }
178 | layer {
179 | name: "fire3/conv3x3_2"
180 | type: "Convolution"
181 | bottom: "fire3/conv1x1_1"
182 | top: "fire3/conv3x3_2"
183 | convolution_param {
184 | num_output: 64
185 | pad: 1
186 | kernel_size: 3
187 | weight_filler {
188 | type: "xavier"
189 | }
190 | }
191 | }
192 | layer {
193 | name: "fire3/relu_conv3x3_2"
194 | type: "ReLU"
195 | bottom: "fire3/conv3x3_2"
196 | top: "fire3/conv3x3_2"
197 | }
198 | layer {
199 | name: "fire3/concat"
200 | type: "Concat"
201 | bottom: "fire3/conv1x1_2"
202 | bottom: "fire3/conv3x3_2"
203 | top: "fire3/concat"
204 | }
205 | layer {
206 | name: "fire4/conv1x1_1"
207 | type: "Convolution"
208 | bottom: "fire3/concat"
209 | top: "fire4/conv1x1_1"
210 | convolution_param {
211 | num_output: 32
212 | kernel_size: 1
213 | weight_filler {
214 | type: "xavier"
215 | }
216 | }
217 | }
218 | layer {
219 | name: "fire4/relu_conv1x1_1"
220 | type: "ReLU"
221 | bottom: "fire4/conv1x1_1"
222 | top: "fire4/conv1x1_1"
223 | }
224 | layer {
225 | name: "fire4/conv1x1_2"
226 | type: "Convolution"
227 | bottom: "fire4/conv1x1_1"
228 | top: "fire4/conv1x1_2"
229 | convolution_param {
230 | num_output: 128
231 | kernel_size: 1
232 | weight_filler {
233 | type: "xavier"
234 | }
235 | }
236 | }
237 | layer {
238 | name: "fire4/relu_conv1x1_2"
239 | type: "ReLU"
240 | bottom: "fire4/conv1x1_2"
241 | top: "fire4/conv1x1_2"
242 | }
243 | layer {
244 | name: "fire4/conv3x3_2"
245 | type: "Convolution"
246 | bottom: "fire4/conv1x1_1"
247 | top: "fire4/conv3x3_2"
248 | convolution_param {
249 | num_output: 128
250 | pad: 1
251 | kernel_size: 3
252 | weight_filler {
253 | type: "xavier"
254 | }
255 | }
256 | }
257 | layer {
258 | name: "fire4/relu_conv3x3_2"
259 | type: "ReLU"
260 | bottom: "fire4/conv3x3_2"
261 | top: "fire4/conv3x3_2"
262 | }
263 | layer {
264 | name: "fire4/concat"
265 | type: "Concat"
266 | bottom: "fire4/conv1x1_2"
267 | bottom: "fire4/conv3x3_2"
268 | top: "fire4/concat"
269 | }
270 | layer {
271 | name: "pool4"
272 | type: "Pooling"
273 | bottom: "fire4/concat"
274 | top: "pool4"
275 | pooling_param {
276 | pool: MAX
277 | kernel_size: 3
278 | stride: 2
279 | }
280 | }
281 | layer {
282 | name: "fire5/conv1x1_1"
283 | type: "Convolution"
284 | bottom: "pool4"
285 | top: "fire5/conv1x1_1"
286 | convolution_param {
287 | num_output: 32
288 | kernel_size: 1
289 | weight_filler {
290 | type: "xavier"
291 | }
292 | }
293 | }
294 | layer {
295 | name: "fire5/relu_conv1x1_1"
296 | type: "ReLU"
297 | bottom: "fire5/conv1x1_1"
298 | top: "fire5/conv1x1_1"
299 | }
300 | layer {
301 | name: "fire5/conv1x1_2"
302 | type: "Convolution"
303 | bottom: "fire5/conv1x1_1"
304 | top: "fire5/conv1x1_2"
305 | convolution_param {
306 | num_output: 128
307 | kernel_size: 1
308 | weight_filler {
309 | type: "xavier"
310 | }
311 | }
312 | }
313 | layer {
314 | name: "fire5/relu_conv1x1_2"
315 | type: "ReLU"
316 | bottom: "fire5/conv1x1_2"
317 | top: "fire5/conv1x1_2"
318 | }
319 | layer {
320 | name: "fire5/conv3x3_2"
321 | type: "Convolution"
322 | bottom: "fire5/conv1x1_1"
323 | top: "fire5/conv3x3_2"
324 | convolution_param {
325 | num_output: 128
326 | pad: 1
327 | kernel_size: 3
328 | weight_filler {
329 | type: "xavier"
330 | }
331 | }
332 | }
333 | layer {
334 | name: "fire5/relu_conv3x3_2"
335 | type: "ReLU"
336 | bottom: "fire5/conv3x3_2"
337 | top: "fire5/conv3x3_2"
338 | }
339 | layer {
340 | name: "fire5/concat"
341 | type: "Concat"
342 | bottom: "fire5/conv1x1_2"
343 | bottom: "fire5/conv3x3_2"
344 | top: "fire5/concat"
345 | }
346 | layer {
347 | name: "fire6/conv1x1_1"
348 | type: "Convolution"
349 | bottom: "fire5/concat"
350 | top: "fire6/conv1x1_1"
351 | convolution_param {
352 | num_output: 48
353 | kernel_size: 1
354 | weight_filler {
355 | type: "xavier"
356 | }
357 | }
358 | }
359 | layer {
360 | name: "fire6/relu_conv1x1_1"
361 | type: "ReLU"
362 | bottom: "fire6/conv1x1_1"
363 | top: "fire6/conv1x1_1"
364 | }
365 | layer {
366 | name: "fire6/conv1x1_2"
367 | type: "Convolution"
368 | bottom: "fire6/conv1x1_1"
369 | top: "fire6/conv1x1_2"
370 | convolution_param {
371 | num_output: 192
372 | kernel_size: 1
373 | weight_filler {
374 | type: "xavier"
375 | }
376 | }
377 | }
378 | layer {
379 | name: "fire6/relu_conv1x1_2"
380 | type: "ReLU"
381 | bottom: "fire6/conv1x1_2"
382 | top: "fire6/conv1x1_2"
383 | }
384 | layer {
385 | name: "fire6/conv3x3_2"
386 | type: "Convolution"
387 | bottom: "fire6/conv1x1_1"
388 | top: "fire6/conv3x3_2"
389 | convolution_param {
390 | num_output: 192
391 | pad: 1
392 | kernel_size: 3
393 | weight_filler {
394 | type: "xavier"
395 | }
396 | }
397 | }
398 | layer {
399 | name: "fire6/relu_conv3x3_2"
400 | type: "ReLU"
401 | bottom: "fire6/conv3x3_2"
402 | top: "fire6/conv3x3_2"
403 | }
404 | layer {
405 | name: "fire6/concat"
406 | type: "Concat"
407 | bottom: "fire6/conv1x1_2"
408 | bottom: "fire6/conv3x3_2"
409 | top: "fire6/concat"
410 | }
411 | layer {
412 | name: "fire7/conv1x1_1"
413 | type: "Convolution"
414 | bottom: "fire6/concat"
415 | top: "fire7/conv1x1_1"
416 | convolution_param {
417 | num_output: 48
418 | kernel_size: 1
419 | weight_filler {
420 | type: "xavier"
421 | }
422 | }
423 | }
424 | layer {
425 | name: "fire7/relu_conv1x1_1"
426 | type: "ReLU"
427 | bottom: "fire7/conv1x1_1"
428 | top: "fire7/conv1x1_1"
429 | }
430 | layer {
431 | name: "fire7/conv1x1_2"
432 | type: "Convolution"
433 | bottom: "fire7/conv1x1_1"
434 | top: "fire7/conv1x1_2"
435 | convolution_param {
436 | num_output: 192
437 | kernel_size: 1
438 | weight_filler {
439 | type: "xavier"
440 | }
441 | }
442 | }
443 | layer {
444 | name: "fire7/relu_conv1x1_2"
445 | type: "ReLU"
446 | bottom: "fire7/conv1x1_2"
447 | top: "fire7/conv1x1_2"
448 | }
449 | layer {
450 | name: "fire7/conv3x3_2"
451 | type: "Convolution"
452 | bottom: "fire7/conv1x1_1"
453 | top: "fire7/conv3x3_2"
454 | convolution_param {
455 | num_output: 192
456 | pad: 1
457 | kernel_size: 3
458 | weight_filler {
459 | type: "xavier"
460 | }
461 | }
462 | }
463 | layer {
464 | name: "fire7/relu_conv3x3_2"
465 | type: "ReLU"
466 | bottom: "fire7/conv3x3_2"
467 | top: "fire7/conv3x3_2"
468 | }
469 | layer {
470 | name: "fire7/concat"
471 | type: "Concat"
472 | bottom: "fire7/conv1x1_2"
473 | bottom: "fire7/conv3x3_2"
474 | top: "fire7/concat"
475 | }
476 | layer {
477 | name: "fire8/conv1x1_1"
478 | type: "Convolution"
479 | bottom: "fire7/concat"
480 | top: "fire8/conv1x1_1"
481 | convolution_param {
482 | num_output: 64
483 | kernel_size: 1
484 | weight_filler {
485 | type: "xavier"
486 | }
487 | }
488 | }
489 | layer {
490 | name: "fire8/relu_conv1x1_1"
491 | type: "ReLU"
492 | bottom: "fire8/conv1x1_1"
493 | top: "fire8/conv1x1_1"
494 | }
495 | layer {
496 | name: "fire8/conv1x1_2"
497 | type: "Convolution"
498 | bottom: "fire8/conv1x1_1"
499 | top: "fire8/conv1x1_2"
500 | convolution_param {
501 | num_output: 256
502 | kernel_size: 1
503 | weight_filler {
504 | type: "xavier"
505 | }
506 | }
507 | }
508 | layer {
509 | name: "fire8/relu_conv1x1_2"
510 | type: "ReLU"
511 | bottom: "fire8/conv1x1_2"
512 | top: "fire8/conv1x1_2"
513 | }
514 | layer {
515 | name: "fire8/conv3x3_2"
516 | type: "Convolution"
517 | bottom: "fire8/conv1x1_1"
518 | top: "fire8/conv3x3_2"
519 | convolution_param {
520 | num_output: 256
521 | pad: 1
522 | kernel_size: 3
523 | weight_filler {
524 | type: "xavier"
525 | }
526 | }
527 | }
528 | layer {
529 | name: "fire8/relu_conv3x3_2"
530 | type: "ReLU"
531 | bottom: "fire8/conv3x3_2"
532 | top: "fire8/conv3x3_2"
533 | }
534 | layer {
535 | name: "fire8/concat"
536 | type: "Concat"
537 | bottom: "fire8/conv1x1_2"
538 | bottom: "fire8/conv3x3_2"
539 | top: "fire8/concat"
540 | }
541 | layer {
542 | name: "pool8"
543 | type: "Pooling"
544 | bottom: "fire8/concat"
545 | top: "pool8"
546 | pooling_param {
547 | pool: MAX
548 | kernel_size: 3
549 | stride: 2
550 | }
551 | }
552 | layer {
553 | name: "fire9/conv1x1_1"
554 | type: "Convolution"
555 | bottom: "pool8"
556 | top: "fire9/conv1x1_1"
557 | convolution_param {
558 | num_output: 64
559 | kernel_size: 1
560 | weight_filler {
561 | type: "xavier"
562 | }
563 | }
564 | }
565 | layer {
566 | name: "fire9/relu_conv1x1_1"
567 | type: "ReLU"
568 | bottom: "fire9/conv1x1_1"
569 | top: "fire9/conv1x1_1"
570 | }
571 | layer {
572 | name: "fire9/conv1x1_2"
573 | type: "Convolution"
574 | bottom: "fire9/conv1x1_1"
575 | top: "fire9/conv1x1_2"
576 | convolution_param {
577 | num_output: 256
578 | kernel_size: 1
579 | weight_filler {
580 | type: "xavier"
581 | }
582 | }
583 | }
584 | layer {
585 | name: "fire9/relu_conv1x1_2"
586 | type: "ReLU"
587 | bottom: "fire9/conv1x1_2"
588 | top: "fire9/conv1x1_2"
589 | }
590 | layer {
591 | name: "fire9/conv3x3_2"
592 | type: "Convolution"
593 | bottom: "fire9/conv1x1_1"
594 | top: "fire9/conv3x3_2"
595 | convolution_param {
596 | num_output: 256
597 | pad: 1
598 | kernel_size: 3
599 | weight_filler {
600 | type: "xavier"
601 | }
602 | }
603 | }
604 | layer {
605 | name: "fire9/relu_conv3x3_2"
606 | type: "ReLU"
607 | bottom: "fire9/conv3x3_2"
608 | top: "fire9/conv3x3_2"
609 | }
610 | layer {
611 | name: "fire9/concat"
612 | type: "Concat"
613 | bottom: "fire9/conv1x1_2"
614 | bottom: "fire9/conv3x3_2"
615 | top: "fire9/concat"
616 | }
617 | layer {
618 | name: "drop9"
619 | type: "Dropout"
620 | bottom: "fire9/concat"
621 | top: "fire9/concat"
622 | dropout_param {
623 | dropout_ratio: 0.5
624 | }
625 | }
626 | layer {
627 | name: "conv_final"
628 | type: "Convolution"
629 | bottom: "fire9/concat"
630 | top: "conv_final"
631 | convolution_param {
632 | num_output: 1000
633 | pad: 1
634 | kernel_size: 1
635 | weight_filler {
636 | type: "gaussian"
637 | mean: 0.0
638 | std: 0.01
639 | }
640 | }
641 | }
642 | layer {
643 | name: "relu_conv_final"
644 | type: "ReLU"
645 | bottom: "conv_final"
646 | top: "conv_final"
647 | }
648 | layer {
649 | name: "pool_final"
650 | type: "Pooling"
651 | bottom: "conv_final"
652 | top: "pool_final"
653 | pooling_param {
654 | pool: AVE
655 | global_pooling: true
656 | }
657 | }
658 |
659 |
660 | # loss, top1, top5
661 | layer {
662 | name: "loss"
663 | type: "SoftmaxWithLoss"
664 | bottom: "pool_final"
665 | bottom: "label"
666 | top: "loss"
667 | include {
668 | # phase: TRAIN
669 | }
670 | }
671 | layer {
672 | name: "accuracy_top1"
673 | type: "Accuracy"
674 | bottom: "pool_final"
675 | bottom: "label"
676 | top: "accuracy_top1"
677 | include {
678 | # phase: TEST
679 | }
680 | accuracy_param {
681 | top_k: 1
682 | }
683 | }
684 | layer {
685 | name: "accuracy_top5"
686 | type: "Accuracy"
687 | bottom: "pool_final"
688 | bottom: "label"
689 | top: "accuracy_top5"
690 | include {
691 | # phase: TEST
692 | }
693 | accuracy_param {
694 | top_k: 5
695 | }
696 | }
697 |
--------------------------------------------------------------------------------
/stylesheets/stylesheet.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.0 | MIT License | git.io/normalize */
2 |
3 | /**
4 | * 1. Set default font family to sans-serif.
5 | * 2. Prevent iOS text size adjust after orientation change, without disabling
6 | * user zoom.
7 | */
8 |
9 | html {
10 | font-family: sans-serif; /* 1 */
11 | -ms-text-size-adjust: 100%; /* 2 */
12 | -webkit-text-size-adjust: 100%; /* 2 */
13 | }
14 |
15 | /**
16 | * Remove default margin.
17 | */
18 |
19 | body {
20 | margin: 0;
21 | }
22 |
23 | /* HTML5 display definitions
24 | ========================================================================== */
25 |
26 | /**
27 | * Correct `block` display not defined for any HTML5 element in IE 8/9.
28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox.
29 | * Correct `block` display not defined for `main` in IE 11.
30 | */
31 |
32 | article,
33 | aside,
34 | details,
35 | figcaption,
36 | figure,
37 | footer,
38 | header,
39 | hgroup,
40 | main,
41 | nav,
42 | section,
43 | summary {
44 | display: block;
45 | }
46 |
47 | /**
48 | * 1. Correct `inline-block` display not defined in IE 8/9.
49 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
50 | */
51 |
52 | audio,
53 | canvas,
54 | progress,
55 | video {
56 | display: inline-block; /* 1 */
57 | vertical-align: baseline; /* 2 */
58 | }
59 |
60 | /**
61 | * Prevent modern browsers from displaying `audio` without controls.
62 | * Remove excess height in iOS 5 devices.
63 | */
64 |
65 | audio:not([controls]) {
66 | display: none;
67 | height: 0;
68 | }
69 |
70 | /**
71 | * Address `[hidden]` styling not present in IE 8/9/10.
72 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
73 | */
74 |
75 | [hidden],
76 | template {
77 | display: none;
78 | }
79 |
80 | /* Links
81 | ========================================================================== */
82 |
83 | /**
84 | * Remove the gray background color from active links in IE 10.
85 | */
86 |
87 | a {
88 | background: transparent;
89 | }
90 |
91 | /**
92 | * Improve readability when focused and also mouse hovered in all browsers.
93 | */
94 |
95 | a:active,
96 | a:hover {
97 | outline: 0;
98 | }
99 |
100 | /* Text-level semantics
101 | ========================================================================== */
102 |
103 | /**
104 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
105 | */
106 |
107 | abbr[title] {
108 | border-bottom: 1px dotted;
109 | }
110 |
111 | /**
112 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
113 | */
114 |
115 | b,
116 | strong {
117 | font-weight: bold;
118 | }
119 |
120 | /**
121 | * Address styling not present in Safari and Chrome.
122 | */
123 |
124 | dfn {
125 | font-style: italic;
126 | }
127 |
128 | /**
129 | * Address variable `h1` font-size and margin within `section` and `article`
130 | * contexts in Firefox 4+, Safari, and Chrome.
131 | */
132 |
133 | h1 {
134 | font-size: 2em;
135 | margin: 0.67em 0;
136 | }
137 |
138 | /**
139 | * Address styling not present in IE 8/9.
140 | */
141 |
142 | mark {
143 | background: #ff0;
144 | color: #000;
145 | }
146 |
147 | /**
148 | * Address inconsistent and variable font size in all browsers.
149 | */
150 |
151 | small {
152 | font-size: 80%;
153 | }
154 |
155 | /**
156 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
157 | */
158 |
159 | sub,
160 | sup {
161 | font-size: 75%;
162 | line-height: 0;
163 | position: relative;
164 | vertical-align: baseline;
165 | }
166 |
167 | sup {
168 | top: -0.5em;
169 | }
170 |
171 | sub {
172 | bottom: -0.25em;
173 | }
174 |
175 | /* Embedded content
176 | ========================================================================== */
177 |
178 | /**
179 | * Remove border when inside `a` element in IE 8/9/10.
180 | */
181 |
182 | img {
183 | border: 0;
184 | }
185 |
186 | /**
187 | * Correct overflow not hidden in IE 9/10/11.
188 | */
189 |
190 | svg:not(:root) {
191 | overflow: hidden;
192 | }
193 |
194 | /* Grouping content
195 | ========================================================================== */
196 |
197 | /**
198 | * Address margin not present in IE 8/9 and Safari.
199 | */
200 |
201 | figure {
202 | margin: 1em 40px;
203 | }
204 |
205 | /**
206 | * Address differences between Firefox and other browsers.
207 | */
208 |
209 | hr {
210 | -moz-box-sizing: content-box;
211 | box-sizing: content-box;
212 | height: 0;
213 | }
214 |
215 | /**
216 | * Contain overflow in all browsers.
217 | */
218 |
219 | pre {
220 | overflow: auto;
221 | }
222 |
223 | /**
224 | * Address odd `em`-unit font size rendering in all browsers.
225 | */
226 |
227 | code,
228 | kbd,
229 | pre,
230 | samp {
231 | font-family: monospace, monospace;
232 | font-size: 1em;
233 | }
234 |
235 | /* Forms
236 | ========================================================================== */
237 |
238 | /**
239 | * Known limitation: by default, Chrome and Safari on OS X allow very limited
240 | * styling of `select`, unless a `border` property is set.
241 | */
242 |
243 | /**
244 | * 1. Correct color not being inherited.
245 | * Known issue: affects color of disabled elements.
246 | * 2. Correct font properties not being inherited.
247 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
248 | */
249 |
250 | button,
251 | input,
252 | optgroup,
253 | select,
254 | textarea {
255 | color: inherit; /* 1 */
256 | font: inherit; /* 2 */
257 | margin: 0; /* 3 */
258 | }
259 |
260 | /**
261 | * Address `overflow` set to `hidden` in IE 8/9/10/11.
262 | */
263 |
264 | button {
265 | overflow: visible;
266 | }
267 |
268 | /**
269 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
270 | * All other form control elements do not inherit `text-transform` values.
271 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
272 | * Correct `select` style inheritance in Firefox.
273 | */
274 |
275 | button,
276 | select {
277 | text-transform: none;
278 | }
279 |
280 | /**
281 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
282 | * and `video` controls.
283 | * 2. Correct inability to style clickable `input` types in iOS.
284 | * 3. Improve usability and consistency of cursor style between image-type
285 | * `input` and others.
286 | */
287 |
288 | button,
289 | html input[type="button"], /* 1 */
290 | input[type="reset"],
291 | input[type="submit"] {
292 | -webkit-appearance: button; /* 2 */
293 | cursor: pointer; /* 3 */
294 | }
295 |
296 | /**
297 | * Re-set default cursor for disabled elements.
298 | */
299 |
300 | button[disabled],
301 | html input[disabled] {
302 | cursor: default;
303 | }
304 |
305 | /**
306 | * Remove inner padding and border in Firefox 4+.
307 | */
308 |
309 | button::-moz-focus-inner,
310 | input::-moz-focus-inner {
311 | border: 0;
312 | padding: 0;
313 | }
314 |
315 | /**
316 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
317 | * the UA stylesheet.
318 | */
319 |
320 | input {
321 | line-height: normal;
322 | }
323 |
324 | /**
325 | * It's recommended that you don't attempt to style these elements.
326 | * Firefox's implementation doesn't respect box-sizing, padding, or width.
327 | *
328 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
329 | * 2. Remove excess padding in IE 8/9/10.
330 | */
331 |
332 | input[type="checkbox"],
333 | input[type="radio"] {
334 | box-sizing: border-box; /* 1 */
335 | padding: 0; /* 2 */
336 | }
337 |
338 | /**
339 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain
340 | * `font-size` values of the `input`, it causes the cursor style of the
341 | * decrement button to change from `default` to `text`.
342 | */
343 |
344 | input[type="number"]::-webkit-inner-spin-button,
345 | input[type="number"]::-webkit-outer-spin-button {
346 | height: auto;
347 | }
348 |
349 | /**
350 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
351 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
352 | * (include `-moz` to future-proof).
353 | */
354 |
355 | input[type="search"] {
356 | -webkit-appearance: textfield; /* 1 */
357 | -moz-box-sizing: content-box;
358 | -webkit-box-sizing: content-box; /* 2 */
359 | box-sizing: content-box;
360 | }
361 |
362 | /**
363 | * Remove inner padding and search cancel button in Safari and Chrome on OS X.
364 | * Safari (but not Chrome) clips the cancel button when the search input has
365 | * padding (and `textfield` appearance).
366 | */
367 |
368 | input[type="search"]::-webkit-search-cancel-button,
369 | input[type="search"]::-webkit-search-decoration {
370 | -webkit-appearance: none;
371 | }
372 |
373 | /**
374 | * Define consistent border, margin, and padding.
375 | */
376 |
377 | fieldset {
378 | border: 1px solid #c0c0c0;
379 | margin: 0 2px;
380 | padding: 0.35em 0.625em 0.75em;
381 | }
382 |
383 | /**
384 | * 1. Correct `color` not being inherited in IE 8/9/10/11.
385 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
386 | */
387 |
388 | legend {
389 | border: 0; /* 1 */
390 | padding: 0; /* 2 */
391 | }
392 |
393 | /**
394 | * Remove default vertical scrollbar in IE 8/9/10/11.
395 | */
396 |
397 | textarea {
398 | overflow: auto;
399 | }
400 |
401 | /**
402 | * Don't inherit the `font-weight` (applied by a rule above).
403 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
404 | */
405 |
406 | optgroup {
407 | font-weight: bold;
408 | }
409 |
410 | /* Tables
411 | ========================================================================== */
412 |
413 | /**
414 | * Remove most spacing between table cells.
415 | */
416 |
417 | table {
418 | border-collapse: collapse;
419 | border-spacing: 0;
420 | }
421 |
422 | td,
423 | th {
424 | padding: 0;
425 | }
426 |
427 |
428 | /* Style */
429 |
430 | body {
431 | font-size: 15px;
432 | font-family: Arial, Arial, Helvetica, sans-serif;
433 | line-height: 1.5;
434 | background: #D1D1D1;
435 | }
436 |
437 | a {
438 | color: #63a52a;
439 | text-decoration: none;
440 | transition: opacity ease-in-out 0.3s;
441 | -webkit-transition: opacity ease-in-out 0.3s; /* Safari <=6.1, Android <= 4.3 */
442 | }
443 |
444 | a:hover {
445 | text-decoration: underline;
446 | color: #90D355;
447 | }
448 |
449 | h1.title {
450 | margin: 30px 20px 10px;
451 | font-size: 60px;
452 | font-weight: bold;
453 | font-style: italic;
454 | font-family:Georgia, serif;
455 | text-align: center;
456 | }
457 |
458 | .wrapper {
459 | width: 675px;
460 | margin: 0 auto;
461 | }
462 |
463 | #container {
464 | border: 1px solid #2a2a2a;
465 | background: #ddd url(../images/pattern.png);
466 | box-shadow: 0 0 5px #b1b1b1;
467 | }
468 |
469 | p.tagline {
470 | padding: 20px 20px 0;
471 | color: #fff;
472 | font-size: 17px;
473 | }
474 |
475 | #main {
476 | margin-top: 20px;
477 | padding: 0 20px 90px;
478 | background-color: #fff;
479 | }
480 |
481 | .download-bar {
482 | background: #222;
483 | border: 5px solid #444;
484 | padding: 10px;
485 | margin: 0 -35px 20px;
486 | position: relative;
487 | }
488 |
489 | .download-bar .inner {
490 | overflow: hidden;
491 | }
492 |
493 | .download-bar .watch-fork iframe {
494 | display: block;
495 | float: left;
496 | border-right: 1px solid #ddd;
497 | padding-right: 5px;
498 | }
499 | .download-bar .watch-fork iframe.last {
500 | border-right: 0 none;
501 | padding-right: 0;
502 | padding-left: 5px;
503 | border-left: 1px solid #fff;
504 | }
505 | .download-bar .watch-fork {
506 | overflow: hidden;
507 | float: right;
508 | background-color: #eee;
509 | padding: 5px;
510 | border-radius: 3px;
511 | }
512 |
513 | .download-bar .blc {
514 | border: 10px solid black;
515 | border-color: transparent transparent black;
516 | width: 0;
517 | height: 0;
518 | display: block;
519 | position: absolute;
520 | bottom: -15px;
521 | left: 0;
522 | transform: rotate(45deg);
523 | -ms-transform: rotate(45deg); /* IE9 */
524 | -webkit-transform: rotate(45deg); /* 2014 current */
525 | }
526 |
527 | .download-bar .trc {
528 | border: 10px solid black;
529 | border-color: black transparent transparent;
530 | width: 0;
531 | height: 0;
532 | display: block;
533 | position: absolute;
534 | top: -15px;
535 | right: 0;
536 | transform: rotate(45deg);
537 | -ms-transform: rotate(45deg); /* IE9 */
538 | -webkit-transform: rotate(45deg); /* 2014 current */
539 | }
540 |
541 | .download-bar .avatar {
542 | border: 1px solid black;
543 | display: block;
544 | padding: 4px;
545 | float: left;
546 | }
547 |
548 | .download-bar .avatar img {
549 | display: block;
550 | }
551 |
552 | .download-bar a.code {
553 | background: transparent url(../images/code.png) no-repeat 0 2px;
554 | padding-left: 35px;
555 | margin-top: 8px;
556 | display: block;
557 | float: left;
558 | text-indent: 0;
559 | width: auto;
560 | height: auto;
561 | opacity: 1;
562 | filter:alpha(opacity=100); /* IE 5-7 */
563 | }
564 |
565 | .current-section {
566 | position: fixed;
567 | top: 0;
568 | left: 50%;
569 | width: 693px;
570 | margin-left: -352px;
571 | background: #222;
572 | border: 5px solid #444;
573 | color: #fff;
574 | opacity: 0;
575 | visibility: hidden;
576 | transition: opacity ease-in-out 0.3s;
577 | -webkit-transition: opacity ease-in-out 0.3s; /* Safari <=6.1, Android <= 4.3 */
578 | }
579 |
580 | .current-section p {
581 | padding: 5px 27px;
582 | font-size: 24px;
583 | font-weight: bold;
584 | }
585 |
586 | .current-section a {
587 | float: right;
588 | text-indent: -10000px;
589 | background: transparent url(../images/top.png) no-repeat 0 0;
590 | width: 20px;
591 | height: 20px;
592 | opacity: 0.8;
593 | margin-right: 12px;
594 | margin-top: 12px;
595 | opacity: 0.8;
596 | filter:alpha(opacity=80); /* IE 5-7 */
597 | transition: opacity ease-in-out 0.3s;
598 | -webkit-transition: opacity ease-in-out 0.3s; /* Safari <=6.1, Android <= 4.3 */
599 | }
600 |
601 | .current-section a:hover {
602 | opacity: 1;
603 | filter:alpha(opacity=100); /* IE 5-7 */
604 | }
605 |
606 | .current-section a.zip {
607 | margin-right: 8px;
608 | }
609 |
610 | a.zip,
611 | a.zip span {
612 | background: transparent url(../images/zip.png) no-repeat 0 0;
613 | width: 30px;
614 | height: 21px;
615 | display: inline-block;
616 | text-indent: -10000px;
617 | opacity: 0.8;
618 | filter:alpha(opacity=80); /* IE 5-7 */
619 | transition: opacity ease-in-out 0.3s;
620 | -webkit-transition: opacity ease-in-out 0.3s; /* Safari <=6.1, Android <= 4.3 */
621 | }
622 |
623 | a.tar,
624 | a.tar span {
625 | background: transparent url(../images/tar.png) no-repeat 0 0;
626 | width: 30px;
627 | height: 21px;
628 | display: inline-block;
629 | text-indent: -10000px;
630 | opacity: 0.8;
631 | filter:alpha(opacity=80); /* IE 5-7 */
632 | transition: opacity ease-in-out 0.3s;
633 | -webkit-transition: opacity ease-in-out 0.3s; /* Safari <=6.1, Android <= 4.3 */
634 | }
635 |
636 | a.code {
637 | background: transparent url(../images/code.png) no-repeat 0 2px;
638 | width: 30px;
639 | height: 21px;
640 | display: block;
641 | display: inline-block;
642 | text-indent: -10000px;
643 | opacity: 0.8;
644 | filter:alpha(opacity=80); /* IE 5-7 */
645 | transition: opacity ease-in-out 0.3s;
646 | -webkit-transition: opacity ease-in-out 0.3s; /* Safari <=6.1, Android <= 4.3 */
647 | }
648 |
649 | a.zip:hover,
650 | a.tar:hover,
651 | a.code:hover {
652 | opacity: 1;
653 | filter:alpha(opacity=100);
654 | }
655 |
656 | a.download-button {
657 | border: 1px solid black;
658 | border-radius: 3px;
659 | display: inline-block;
660 | text-indent: 0!important;
661 | width: auto;
662 | float: right;
663 | background: #999; /* for non-css3 browsers */
664 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#37ADD4', endColorstr='#1B657E'); /* IE <= 9 */
665 | background: -webkit-gradient(linear, left top, left bottom, from(#37ADD4), to(#1B657E)); /* ancient webkit browsers */
666 | background: -webkit-linear-gradient(top, #37ADD4, #1B657E); /* Safari <=6.1, Android <= 4.3 */
667 | background: linear-gradient(to bottom, #37ADD4, #1B657E);
668 | height: auto;
669 | margin-left: 10px;
670 | }
671 |
672 | a.download-button span {
673 | background-position: 10px 5px;
674 | width: auto;
675 | height: auto;
676 | padding: 5px 10px;
677 | padding-left: 45px;
678 | display: inline-block;
679 | text-indent: 0!important;
680 | color: #fff;
681 | }
682 |
683 | footer {
684 | margin-bottom: 60px;
685 | padding-bottom: 60px;
686 | }
687 |
688 | footer .owner {
689 | background: #222;
690 | border: 5px solid #444;
691 | padding: 5px 15px;
692 | margin: -67px -10px 35px;
693 | color: #d6d6d6;
694 | }
695 |
696 | footer .creds small {
697 | float: right;
698 | font-size: 10px;
699 | text-align: right;
700 | margin-left: 15px;
701 | }
702 |
703 | footer .owner .avatar {
704 | background-color: #666;
705 | display: block;
706 | margin: -19px 10px 0 0;
707 | width: 60px;
708 | float: left;
709 | }
710 |
711 | footer .owner img {
712 | display: block;
713 | border: 1px solid #2a2a2a;
714 | margin: 5px;
715 | }
716 |
717 | footer .owner p {
718 | font-family:Georgia, serif;
719 | }
720 |
721 | footer .owner p a {
722 | font-size: 16px;
723 | font-style: italic;
724 | }
725 |
726 | /* Markdown */
727 | .markdown-body h1,
728 | .markdown-body h2,
729 | .markdown-body h3,
730 | .markdown-body h4,
731 | .markdown-body h5,
732 | .markdown-body h6,
733 | .markdown-body p,
734 | .markdown-body pre,
735 | .markdown-body ul,
736 | .markdown-body ol,
737 | .markdown-body dl,
738 | .markdown-body table,
739 | .markdown-body blockquote {
740 | margin-bottom: 20px;
741 | }
742 |
743 | .markdown-body h1,
744 | .markdown-body h2,
745 | .markdown-body h3,
746 | .markdown-body h4,
747 | .markdown-body h5,
748 | .markdown-body h6 {
749 | font-weight: bold;
750 | }
751 |
752 | .markdown-body h1 {
753 | font-size: 28px;
754 | }
755 |
756 | .markdown-body h2 {
757 | font-size: 24px;
758 | color: #557398;
759 | }
760 |
761 | .markdown-body h3 {
762 | font-size: 20px;
763 | }
764 |
765 | .markdown-body h4 {
766 | font-size: 18px;
767 | }
768 |
769 | .markdown-body h5 {
770 | font-size: 16px;
771 | }
772 |
773 | .markdown-body pre {
774 | padding: 10px 70px 10px 0;
775 | margin-left: -20px;
776 | margin-right: -20px;
777 | font-family: 'Monaco', 'Lucida Console', monospace;
778 | font-size: 13px;
779 | line-height: 20px;
780 | box-shadow: inset 0 0 5px #000;
781 | word-wrap: break-word;
782 | background-color:#3b3b3b;
783 | color: #d6d6d6;
784 | }
785 |
786 | .markdown-body pre.lines {
787 | font-size: 12px;
788 | margin:0 10px 0 -20px;
789 | padding: 10px;
790 | float: left;
791 | display: block;
792 | text-align: right;
793 | box-shadow: none;
794 | background-color:#2a2a2a;
795 | color: #d6d6d6;
796 | }
797 |
798 | .markdown-body ul,
799 | .markdown-body ol {
800 | padding-left: 30px;
801 | }
802 |
803 | .markdown-body ul {
804 | list-style-type: disc;
805 | }
806 |
807 | .markdown-body ol {
808 | list-style-type: decimal;
809 | }
810 |
811 | .markdown-body li,
812 | .markdown-body li p,
813 | .markdown-body dd,
814 | .markdown-body dd p {
815 | margin-bottom: 10px;
816 | }
817 |
818 | .markdown-body li pre,
819 | .markdown-body li pre.lines,
820 | .markdown-body dd pre,
821 | .markdown-body dd pre.lines {
822 | margin-left: -35px;
823 | }
824 |
825 | .markdown-body dt {
826 | font-weight: bold;
827 | font-style: italic;
828 | }
829 |
830 | .markdown-body dd {
831 | margin-left: 15px;
832 | }
833 |
834 | .markdown-body table {
835 | width: 673px;
836 | margin-left: -20px;
837 | margin-right: -20px;
838 | }
839 |
840 | .markdown-body tbody {
841 | border-top: 2px solid #557398;
842 | border-bottom: 2px solid #557398;
843 | background-color: #EBEFF4;
844 | }
845 |
846 | .markdown-body table td * {
847 | margin: 0;
848 | }
849 |
850 | .markdown-body td {
851 | border-right: 1px solid #557398;
852 | border-bottom: 1px solid #557398;
853 | padding: 5px;
854 | }
855 |
856 | .markdown-body td:first-child,
857 | .markdown-body th:first-child {
858 | width: 30%;
859 | padding-left: 20px;
860 | }
861 |
862 | .markdown-body td:last-child {
863 | border-right: 0 none;
864 | }
865 |
866 | .markdown-body th {
867 | font-size: 18px;
868 | font-weight: bold;
869 | text-align: left;
870 | padding: 5px;
871 | }
872 |
873 | .markdown-body tt {
874 | background-color:#3b3b3b;
875 | color: #d6d6d6;
876 | padding: 2px 3px;
877 | }
878 |
879 | .markdown-body blockquote {
880 | font-style: italic;
881 | font-family:Georgia, serif;
882 | font-size: 17px;
883 | border-top: 3px solid #333;
884 | border-bottom: 3px solid #333;
885 | padding: 10px 20px;
886 | padding-left: 50px;
887 | }
888 |
889 | .markdown-body blockquote:before {
890 | font-style: italic;
891 | font-family: Georgia, serif;
892 | font-size: 90px;
893 | height: 90px;
894 | margin-left: -60px;
895 | margin-top: -25px;
896 | content: "‟";
897 | display: block;
898 | float: left;
899 | }
900 |
901 | .markdown-body img {
902 | max-width: 100%;
903 | box-sizing: border-box;
904 | }
905 |
906 | .highlight { background: #ffffff; }
907 | .highlight .c { color: #999988; font-style: italic } /* Comment */
908 | .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
909 | .highlight .k { font-weight: bold } /* Keyword */
910 | .highlight .o { font-weight: bold } /* Operator */
911 | .highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
912 | .highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
913 | .highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
914 | .highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
915 | .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
916 | .highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
917 | .highlight .ge { font-style: italic } /* Generic.Emph */
918 | .highlight .gr { color: #aa0000 } /* Generic.Error */
919 | .highlight .gh { color: #999999 } /* Generic.Heading */
920 | .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
921 | .highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
922 | .highlight .go { color: #888888 } /* Generic.Output */
923 | .highlight .gp { color: #555555 } /* Generic.Prompt */
924 | .highlight .gs { font-weight: bold } /* Generic.Strong */
925 | .highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */
926 | .highlight .gt { color: #aa0000 } /* Generic.Traceback */
927 | .highlight .kc { font-weight: bold } /* Keyword.Constant */
928 | .highlight .kd { font-weight: bold } /* Keyword.Declaration */
929 | .highlight .kn { font-weight: bold } /* Keyword.Namespace */
930 | .highlight .kp { font-weight: bold } /* Keyword.Pseudo */
931 | .highlight .kr { font-weight: bold } /* Keyword.Reserved */
932 | .highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
933 | .highlight .m { color: #009999 } /* Literal.Number */
934 | .highlight .s { color: #d14 } /* Literal.String */
935 | .highlight .na { color: #008080 } /* Name.Attribute */
936 | .highlight .nb { color: #0086B3 } /* Name.Builtin */
937 | .highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
938 | .highlight .no { color: #008080 } /* Name.Constant */
939 | .highlight .ni { color: #800080 } /* Name.Entity */
940 | .highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
941 | .highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
942 | .highlight .nn { color: #555555 } /* Name.Namespace */
943 | .highlight .nt { color: #000080 } /* Name.Tag */
944 | .highlight .nv { color: #008080 } /* Name.Variable */
945 | .highlight .ow { font-weight: bold } /* Operator.Word */
946 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */
947 | .highlight .mf { color: #009999 } /* Literal.Number.Float */
948 | .highlight .mh { color: #009999 } /* Literal.Number.Hex */
949 | .highlight .mi { color: #009999 } /* Literal.Number.Integer */
950 | .highlight .mo { color: #009999 } /* Literal.Number.Oct */
951 | .highlight .sb { color: #d14 } /* Literal.String.Backtick */
952 | .highlight .sc { color: #d14 } /* Literal.String.Char */
953 | .highlight .sd { color: #d14 } /* Literal.String.Doc */
954 | .highlight .s2 { color: #d14 } /* Literal.String.Double */
955 | .highlight .se { color: #d14 } /* Literal.String.Escape */
956 | .highlight .sh { color: #d14 } /* Literal.String.Heredoc */
957 | .highlight .si { color: #d14 } /* Literal.String.Interpol */
958 | .highlight .sx { color: #d14 } /* Literal.String.Other */
959 | .highlight .sr { color: #009926 } /* Literal.String.Regex */
960 | .highlight .s1 { color: #d14 } /* Literal.String.Single */
961 | .highlight .ss { color: #990073 } /* Literal.String.Symbol */
962 | .highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
963 | .highlight .vc { color: #008080 } /* Name.Variable.Class */
964 | .highlight .vg { color: #008080 } /* Name.Variable.Global */
965 | .highlight .vi { color: #008080 } /* Name.Variable.Instance */
966 | .highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
--------------------------------------------------------------------------------
/GoogleNet/train_val.prototxt:
--------------------------------------------------------------------------------
1 | name: "GoogleNet"
2 | layer {
3 | name: "data"
4 | type: "Data"
5 | top: "data"
6 | top: "label"
7 | include {
8 | phase: TRAIN
9 | }
10 | transform_param {
11 | mirror: true
12 | crop_size: 224
13 | mean_value: 104
14 | mean_value: 117
15 | mean_value: 123
16 | }
17 | data_param {
18 | source: "/ssd/dataset/ilsvrc12_train_lmdb"
19 | batch_size: 64
20 | backend: LMDB
21 | }
22 | }
23 | layer {
24 | name: "data"
25 | type: "Data"
26 | top: "data"
27 | top: "label"
28 | include {
29 | phase: TEST
30 | }
31 | transform_param {
32 | mirror: false
33 | crop_size: 224
34 | mean_value: 104
35 | mean_value: 117
36 | mean_value: 123
37 | }
38 | data_param {
39 | source: "/ssd/dataset/ilsvrc12_val_lmdb"
40 | batch_size: 50
41 | backend: LMDB
42 | }
43 | }
44 | layer {
45 | name: "conv1/7x7_s2"
46 | type: "Convolution"
47 | bottom: "data"
48 | top: "conv1/7x7_s2"
49 | param {
50 | lr_mult: 1
51 | decay_mult: 1
52 | }
53 | param {
54 | lr_mult: 2
55 | decay_mult: 0
56 | }
57 | convolution_param {
58 | num_output: 64
59 | pad: 3
60 | kernel_size: 7
61 | stride: 2
62 | weight_filler {
63 | type: "xavier"
64 | std: 0.1
65 | }
66 | bias_filler {
67 | type: "constant"
68 | value: 0.2
69 | }
70 | }
71 | }
72 | layer {
73 | name: "conv1/relu_7x7"
74 | type: "ReLU"
75 | bottom: "conv1/7x7_s2"
76 | top: "conv1/7x7_s2"
77 | }
78 | layer {
79 | name: "pool1/3x3_s2"
80 | type: "Pooling"
81 | bottom: "conv1/7x7_s2"
82 | top: "pool1/3x3_s2"
83 | pooling_param {
84 | pool: MAX
85 | kernel_size: 3
86 | stride: 2
87 | }
88 | }
89 | layer {
90 | name: "pool1/norm1"
91 | type: "LRN"
92 | bottom: "pool1/3x3_s2"
93 | top: "pool1/norm1"
94 | lrn_param {
95 | local_size: 5
96 | alpha: 0.0001
97 | beta: 0.75
98 | }
99 | }
100 | layer {
101 | name: "conv2/3x3_reduce"
102 | type: "Convolution"
103 | bottom: "pool1/norm1"
104 | top: "conv2/3x3_reduce"
105 | param {
106 | lr_mult: 1
107 | decay_mult: 1
108 | }
109 | param {
110 | lr_mult: 2
111 | decay_mult: 0
112 | }
113 | convolution_param {
114 | num_output: 64
115 | kernel_size: 1
116 | weight_filler {
117 | type: "xavier"
118 | std: 0.1
119 | }
120 | bias_filler {
121 | type: "constant"
122 | value: 0.2
123 | }
124 | }
125 | }
126 | layer {
127 | name: "conv2/relu_3x3_reduce"
128 | type: "ReLU"
129 | bottom: "conv2/3x3_reduce"
130 | top: "conv2/3x3_reduce"
131 | }
132 | layer {
133 | name: "conv2/3x3"
134 | type: "Convolution"
135 | bottom: "conv2/3x3_reduce"
136 | top: "conv2/3x3"
137 | param {
138 | lr_mult: 1
139 | decay_mult: 1
140 | }
141 | param {
142 | lr_mult: 2
143 | decay_mult: 0
144 | }
145 | convolution_param {
146 | num_output: 192
147 | pad: 1
148 | kernel_size: 3
149 | weight_filler {
150 | type: "xavier"
151 | std: 0.03
152 | }
153 | bias_filler {
154 | type: "constant"
155 | value: 0.2
156 | }
157 | }
158 | }
159 | layer {
160 | name: "conv2/relu_3x3"
161 | type: "ReLU"
162 | bottom: "conv2/3x3"
163 | top: "conv2/3x3"
164 | }
165 | layer {
166 | name: "conv2/norm2"
167 | type: "LRN"
168 | bottom: "conv2/3x3"
169 | top: "conv2/norm2"
170 | lrn_param {
171 | local_size: 5
172 | alpha: 0.0001
173 | beta: 0.75
174 | }
175 | }
176 | layer {
177 | name: "pool2/3x3_s2"
178 | type: "Pooling"
179 | bottom: "conv2/norm2"
180 | top: "pool2/3x3_s2"
181 | pooling_param {
182 | pool: MAX
183 | kernel_size: 3
184 | stride: 2
185 | }
186 | }
187 | layer {
188 | name: "inception_3a/1x1"
189 | type: "Convolution"
190 | bottom: "pool2/3x3_s2"
191 | top: "inception_3a/1x1"
192 | param {
193 | lr_mult: 1
194 | decay_mult: 1
195 | }
196 | param {
197 | lr_mult: 2
198 | decay_mult: 0
199 | }
200 | convolution_param {
201 | num_output: 64
202 | kernel_size: 1
203 | weight_filler {
204 | type: "xavier"
205 | std: 0.03
206 | }
207 | bias_filler {
208 | type: "constant"
209 | value: 0.2
210 | }
211 | }
212 | }
213 | layer {
214 | name: "inception_3a/relu_1x1"
215 | type: "ReLU"
216 | bottom: "inception_3a/1x1"
217 | top: "inception_3a/1x1"
218 | }
219 | layer {
220 | name: "inception_3a/3x3_reduce"
221 | type: "Convolution"
222 | bottom: "pool2/3x3_s2"
223 | top: "inception_3a/3x3_reduce"
224 | param {
225 | lr_mult: 1
226 | decay_mult: 1
227 | }
228 | param {
229 | lr_mult: 2
230 | decay_mult: 0
231 | }
232 | convolution_param {
233 | num_output: 96
234 | kernel_size: 1
235 | weight_filler {
236 | type: "xavier"
237 | std: 0.09
238 | }
239 | bias_filler {
240 | type: "constant"
241 | value: 0.2
242 | }
243 | }
244 | }
245 | layer {
246 | name: "inception_3a/relu_3x3_reduce"
247 | type: "ReLU"
248 | bottom: "inception_3a/3x3_reduce"
249 | top: "inception_3a/3x3_reduce"
250 | }
251 | layer {
252 | name: "inception_3a/3x3"
253 | type: "Convolution"
254 | bottom: "inception_3a/3x3_reduce"
255 | top: "inception_3a/3x3"
256 | param {
257 | lr_mult: 1
258 | decay_mult: 1
259 | }
260 | param {
261 | lr_mult: 2
262 | decay_mult: 0
263 | }
264 | convolution_param {
265 | num_output: 128
266 | pad: 1
267 | kernel_size: 3
268 | weight_filler {
269 | type: "xavier"
270 | std: 0.03
271 | }
272 | bias_filler {
273 | type: "constant"
274 | value: 0.2
275 | }
276 | }
277 | }
278 | layer {
279 | name: "inception_3a/relu_3x3"
280 | type: "ReLU"
281 | bottom: "inception_3a/3x3"
282 | top: "inception_3a/3x3"
283 | }
284 | layer {
285 | name: "inception_3a/5x5_reduce"
286 | type: "Convolution"
287 | bottom: "pool2/3x3_s2"
288 | top: "inception_3a/5x5_reduce"
289 | param {
290 | lr_mult: 1
291 | decay_mult: 1
292 | }
293 | param {
294 | lr_mult: 2
295 | decay_mult: 0
296 | }
297 | convolution_param {
298 | num_output: 16
299 | kernel_size: 1
300 | weight_filler {
301 | type: "xavier"
302 | std: 0.2
303 | }
304 | bias_filler {
305 | type: "constant"
306 | value: 0.2
307 | }
308 | }
309 | }
310 | layer {
311 | name: "inception_3a/relu_5x5_reduce"
312 | type: "ReLU"
313 | bottom: "inception_3a/5x5_reduce"
314 | top: "inception_3a/5x5_reduce"
315 | }
316 | layer {
317 | name: "inception_3a/5x5"
318 | type: "Convolution"
319 | bottom: "inception_3a/5x5_reduce"
320 | top: "inception_3a/5x5"
321 | param {
322 | lr_mult: 1
323 | decay_mult: 1
324 | }
325 | param {
326 | lr_mult: 2
327 | decay_mult: 0
328 | }
329 | convolution_param {
330 | num_output: 32
331 | pad: 2
332 | kernel_size: 5
333 | weight_filler {
334 | type: "xavier"
335 | std: 0.03
336 | }
337 | bias_filler {
338 | type: "constant"
339 | value: 0.2
340 | }
341 | }
342 | }
343 | layer {
344 | name: "inception_3a/relu_5x5"
345 | type: "ReLU"
346 | bottom: "inception_3a/5x5"
347 | top: "inception_3a/5x5"
348 | }
349 | layer {
350 | name: "inception_3a/pool"
351 | type: "Pooling"
352 | bottom: "pool2/3x3_s2"
353 | top: "inception_3a/pool"
354 | pooling_param {
355 | pool: MAX
356 | kernel_size: 3
357 | stride: 1
358 | pad: 1
359 | }
360 | }
361 | layer {
362 | name: "inception_3a/pool_proj"
363 | type: "Convolution"
364 | bottom: "inception_3a/pool"
365 | top: "inception_3a/pool_proj"
366 | param {
367 | lr_mult: 1
368 | decay_mult: 1
369 | }
370 | param {
371 | lr_mult: 2
372 | decay_mult: 0
373 | }
374 | convolution_param {
375 | num_output: 32
376 | kernel_size: 1
377 | weight_filler {
378 | type: "xavier"
379 | std: 0.1
380 | }
381 | bias_filler {
382 | type: "constant"
383 | value: 0.2
384 | }
385 | }
386 | }
387 | layer {
388 | name: "inception_3a/relu_pool_proj"
389 | type: "ReLU"
390 | bottom: "inception_3a/pool_proj"
391 | top: "inception_3a/pool_proj"
392 | }
393 | layer {
394 | name: "inception_3a/output"
395 | type: "Concat"
396 | bottom: "inception_3a/1x1"
397 | bottom: "inception_3a/3x3"
398 | bottom: "inception_3a/5x5"
399 | bottom: "inception_3a/pool_proj"
400 | top: "inception_3a/output"
401 | }
402 | layer {
403 | name: "inception_3b/1x1"
404 | type: "Convolution"
405 | bottom: "inception_3a/output"
406 | top: "inception_3b/1x1"
407 | param {
408 | lr_mult: 1
409 | decay_mult: 1
410 | }
411 | param {
412 | lr_mult: 2
413 | decay_mult: 0
414 | }
415 | convolution_param {
416 | num_output: 128
417 | kernel_size: 1
418 | weight_filler {
419 | type: "xavier"
420 | std: 0.03
421 | }
422 | bias_filler {
423 | type: "constant"
424 | value: 0.2
425 | }
426 | }
427 | }
428 | layer {
429 | name: "inception_3b/relu_1x1"
430 | type: "ReLU"
431 | bottom: "inception_3b/1x1"
432 | top: "inception_3b/1x1"
433 | }
434 | layer {
435 | name: "inception_3b/3x3_reduce"
436 | type: "Convolution"
437 | bottom: "inception_3a/output"
438 | top: "inception_3b/3x3_reduce"
439 | param {
440 | lr_mult: 1
441 | decay_mult: 1
442 | }
443 | param {
444 | lr_mult: 2
445 | decay_mult: 0
446 | }
447 | convolution_param {
448 | num_output: 128
449 | kernel_size: 1
450 | weight_filler {
451 | type: "xavier"
452 | std: 0.09
453 | }
454 | bias_filler {
455 | type: "constant"
456 | value: 0.2
457 | }
458 | }
459 | }
460 | layer {
461 | name: "inception_3b/relu_3x3_reduce"
462 | type: "ReLU"
463 | bottom: "inception_3b/3x3_reduce"
464 | top: "inception_3b/3x3_reduce"
465 | }
466 | layer {
467 | name: "inception_3b/3x3"
468 | type: "Convolution"
469 | bottom: "inception_3b/3x3_reduce"
470 | top: "inception_3b/3x3"
471 | param {
472 | lr_mult: 1
473 | decay_mult: 1
474 | }
475 | param {
476 | lr_mult: 2
477 | decay_mult: 0
478 | }
479 | convolution_param {
480 | num_output: 192
481 | pad: 1
482 | kernel_size: 3
483 | weight_filler {
484 | type: "xavier"
485 | std: 0.03
486 | }
487 | bias_filler {
488 | type: "constant"
489 | value: 0.2
490 | }
491 | }
492 | }
493 | layer {
494 | name: "inception_3b/relu_3x3"
495 | type: "ReLU"
496 | bottom: "inception_3b/3x3"
497 | top: "inception_3b/3x3"
498 | }
499 | layer {
500 | name: "inception_3b/5x5_reduce"
501 | type: "Convolution"
502 | bottom: "inception_3a/output"
503 | top: "inception_3b/5x5_reduce"
504 | param {
505 | lr_mult: 1
506 | decay_mult: 1
507 | }
508 | param {
509 | lr_mult: 2
510 | decay_mult: 0
511 | }
512 | convolution_param {
513 | num_output: 32
514 | kernel_size: 1
515 | weight_filler {
516 | type: "xavier"
517 | std: 0.2
518 | }
519 | bias_filler {
520 | type: "constant"
521 | value: 0.2
522 | }
523 | }
524 | }
525 | layer {
526 | name: "inception_3b/relu_5x5_reduce"
527 | type: "ReLU"
528 | bottom: "inception_3b/5x5_reduce"
529 | top: "inception_3b/5x5_reduce"
530 | }
531 | layer {
532 | name: "inception_3b/5x5"
533 | type: "Convolution"
534 | bottom: "inception_3b/5x5_reduce"
535 | top: "inception_3b/5x5"
536 | param {
537 | lr_mult: 1
538 | decay_mult: 1
539 | }
540 | param {
541 | lr_mult: 2
542 | decay_mult: 0
543 | }
544 | convolution_param {
545 | num_output: 96
546 | pad: 2
547 | kernel_size: 5
548 | weight_filler {
549 | type: "xavier"
550 | std: 0.03
551 | }
552 | bias_filler {
553 | type: "constant"
554 | value: 0.2
555 | }
556 | }
557 | }
558 | layer {
559 | name: "inception_3b/relu_5x5"
560 | type: "ReLU"
561 | bottom: "inception_3b/5x5"
562 | top: "inception_3b/5x5"
563 | }
564 | layer {
565 | name: "inception_3b/pool"
566 | type: "Pooling"
567 | bottom: "inception_3a/output"
568 | top: "inception_3b/pool"
569 | pooling_param {
570 | pool: MAX
571 | kernel_size: 3
572 | stride: 1
573 | pad: 1
574 | }
575 | }
576 | layer {
577 | name: "inception_3b/pool_proj"
578 | type: "Convolution"
579 | bottom: "inception_3b/pool"
580 | top: "inception_3b/pool_proj"
581 | param {
582 | lr_mult: 1
583 | decay_mult: 1
584 | }
585 | param {
586 | lr_mult: 2
587 | decay_mult: 0
588 | }
589 | convolution_param {
590 | num_output: 64
591 | kernel_size: 1
592 | weight_filler {
593 | type: "xavier"
594 | std: 0.1
595 | }
596 | bias_filler {
597 | type: "constant"
598 | value: 0.2
599 | }
600 | }
601 | }
602 | layer {
603 | name: "inception_3b/relu_pool_proj"
604 | type: "ReLU"
605 | bottom: "inception_3b/pool_proj"
606 | top: "inception_3b/pool_proj"
607 | }
608 | layer {
609 | name: "inception_3b/output"
610 | type: "Concat"
611 | bottom: "inception_3b/1x1"
612 | bottom: "inception_3b/3x3"
613 | bottom: "inception_3b/5x5"
614 | bottom: "inception_3b/pool_proj"
615 | top: "inception_3b/output"
616 | }
617 | layer {
618 | name: "pool3/3x3_s2"
619 | type: "Pooling"
620 | bottom: "inception_3b/output"
621 | top: "pool3/3x3_s2"
622 | pooling_param {
623 | pool: MAX
624 | kernel_size: 3
625 | stride: 2
626 | }
627 | }
628 | layer {
629 | name: "inception_4a/1x1"
630 | type: "Convolution"
631 | bottom: "pool3/3x3_s2"
632 | top: "inception_4a/1x1"
633 | param {
634 | lr_mult: 1
635 | decay_mult: 1
636 | }
637 | param {
638 | lr_mult: 2
639 | decay_mult: 0
640 | }
641 | convolution_param {
642 | num_output: 192
643 | kernel_size: 1
644 | weight_filler {
645 | type: "xavier"
646 | std: 0.03
647 | }
648 | bias_filler {
649 | type: "constant"
650 | value: 0.2
651 | }
652 | }
653 | }
654 | layer {
655 | name: "inception_4a/relu_1x1"
656 | type: "ReLU"
657 | bottom: "inception_4a/1x1"
658 | top: "inception_4a/1x1"
659 | }
660 | layer {
661 | name: "inception_4a/3x3_reduce"
662 | type: "Convolution"
663 | bottom: "pool3/3x3_s2"
664 | top: "inception_4a/3x3_reduce"
665 | param {
666 | lr_mult: 1
667 | decay_mult: 1
668 | }
669 | param {
670 | lr_mult: 2
671 | decay_mult: 0
672 | }
673 | convolution_param {
674 | num_output: 96
675 | kernel_size: 1
676 | weight_filler {
677 | type: "xavier"
678 | std: 0.09
679 | }
680 | bias_filler {
681 | type: "constant"
682 | value: 0.2
683 | }
684 | }
685 | }
686 | layer {
687 | name: "inception_4a/relu_3x3_reduce"
688 | type: "ReLU"
689 | bottom: "inception_4a/3x3_reduce"
690 | top: "inception_4a/3x3_reduce"
691 | }
692 | layer {
693 | name: "inception_4a/3x3"
694 | type: "Convolution"
695 | bottom: "inception_4a/3x3_reduce"
696 | top: "inception_4a/3x3"
697 | param {
698 | lr_mult: 1
699 | decay_mult: 1
700 | }
701 | param {
702 | lr_mult: 2
703 | decay_mult: 0
704 | }
705 | convolution_param {
706 | num_output: 208
707 | pad: 1
708 | kernel_size: 3
709 | weight_filler {
710 | type: "xavier"
711 | std: 0.03
712 | }
713 | bias_filler {
714 | type: "constant"
715 | value: 0.2
716 | }
717 | }
718 | }
719 | layer {
720 | name: "inception_4a/relu_3x3"
721 | type: "ReLU"
722 | bottom: "inception_4a/3x3"
723 | top: "inception_4a/3x3"
724 | }
725 | layer {
726 | name: "inception_4a/5x5_reduce"
727 | type: "Convolution"
728 | bottom: "pool3/3x3_s2"
729 | top: "inception_4a/5x5_reduce"
730 | param {
731 | lr_mult: 1
732 | decay_mult: 1
733 | }
734 | param {
735 | lr_mult: 2
736 | decay_mult: 0
737 | }
738 | convolution_param {
739 | num_output: 16
740 | kernel_size: 1
741 | weight_filler {
742 | type: "xavier"
743 | std: 0.2
744 | }
745 | bias_filler {
746 | type: "constant"
747 | value: 0.2
748 | }
749 | }
750 | }
751 | layer {
752 | name: "inception_4a/relu_5x5_reduce"
753 | type: "ReLU"
754 | bottom: "inception_4a/5x5_reduce"
755 | top: "inception_4a/5x5_reduce"
756 | }
757 | layer {
758 | name: "inception_4a/5x5"
759 | type: "Convolution"
760 | bottom: "inception_4a/5x5_reduce"
761 | top: "inception_4a/5x5"
762 | param {
763 | lr_mult: 1
764 | decay_mult: 1
765 | }
766 | param {
767 | lr_mult: 2
768 | decay_mult: 0
769 | }
770 | convolution_param {
771 | num_output: 48
772 | pad: 2
773 | kernel_size: 5
774 | weight_filler {
775 | type: "xavier"
776 | std: 0.03
777 | }
778 | bias_filler {
779 | type: "constant"
780 | value: 0.2
781 | }
782 | }
783 | }
784 | layer {
785 | name: "inception_4a/relu_5x5"
786 | type: "ReLU"
787 | bottom: "inception_4a/5x5"
788 | top: "inception_4a/5x5"
789 | }
790 | layer {
791 | name: "inception_4a/pool"
792 | type: "Pooling"
793 | bottom: "pool3/3x3_s2"
794 | top: "inception_4a/pool"
795 | pooling_param {
796 | pool: MAX
797 | kernel_size: 3
798 | stride: 1
799 | pad: 1
800 | }
801 | }
802 | layer {
803 | name: "inception_4a/pool_proj"
804 | type: "Convolution"
805 | bottom: "inception_4a/pool"
806 | top: "inception_4a/pool_proj"
807 | param {
808 | lr_mult: 1
809 | decay_mult: 1
810 | }
811 | param {
812 | lr_mult: 2
813 | decay_mult: 0
814 | }
815 | convolution_param {
816 | num_output: 64
817 | kernel_size: 1
818 | weight_filler {
819 | type: "xavier"
820 | std: 0.1
821 | }
822 | bias_filler {
823 | type: "constant"
824 | value: 0.2
825 | }
826 | }
827 | }
828 | layer {
829 | name: "inception_4a/relu_pool_proj"
830 | type: "ReLU"
831 | bottom: "inception_4a/pool_proj"
832 | top: "inception_4a/pool_proj"
833 | }
834 | layer {
835 | name: "inception_4a/output"
836 | type: "Concat"
837 | bottom: "inception_4a/1x1"
838 | bottom: "inception_4a/3x3"
839 | bottom: "inception_4a/5x5"
840 | bottom: "inception_4a/pool_proj"
841 | top: "inception_4a/output"
842 | }
843 | layer {
844 | name: "loss1/ave_pool"
845 | type: "Pooling"
846 | bottom: "inception_4a/output"
847 | top: "loss1/ave_pool"
848 | pooling_param {
849 | pool: AVE
850 | kernel_size: 5
851 | stride: 3
852 | }
853 | }
854 | layer {
855 | name: "loss1/conv"
856 | type: "Convolution"
857 | bottom: "loss1/ave_pool"
858 | top: "loss1/conv"
859 | param {
860 | lr_mult: 1
861 | decay_mult: 1
862 | }
863 | param {
864 | lr_mult: 2
865 | decay_mult: 0
866 | }
867 | convolution_param {
868 | num_output: 128
869 | kernel_size: 1
870 | weight_filler {
871 | type: "xavier"
872 | std: 0.08
873 | }
874 | bias_filler {
875 | type: "constant"
876 | value: 0.2
877 | }
878 | }
879 | }
880 | layer {
881 | name: "loss1/relu_conv"
882 | type: "ReLU"
883 | bottom: "loss1/conv"
884 | top: "loss1/conv"
885 | }
886 | layer {
887 | name: "loss1/fc"
888 | type: "InnerProduct"
889 | bottom: "loss1/conv"
890 | top: "loss1/fc"
891 | param {
892 | lr_mult: 1
893 | decay_mult: 1
894 | }
895 | param {
896 | lr_mult: 2
897 | decay_mult: 0
898 | }
899 | inner_product_param {
900 | num_output: 1024
901 | weight_filler {
902 | type: "xavier"
903 | std: 0.02
904 | }
905 | bias_filler {
906 | type: "constant"
907 | value: 0.2
908 | }
909 | }
910 | }
911 | layer {
912 | name: "loss1/relu_fc"
913 | type: "ReLU"
914 | bottom: "loss1/fc"
915 | top: "loss1/fc"
916 | }
917 | layer {
918 | name: "loss1/drop_fc"
919 | type: "Dropout"
920 | bottom: "loss1/fc"
921 | top: "loss1/fc"
922 | dropout_param {
923 | dropout_ratio: 0.7 #0.5 #0.7
924 | }
925 | }
926 | layer {
927 | name: "loss1/classifier"
928 | type: "InnerProduct"
929 | bottom: "loss1/fc"
930 | top: "loss1/classifier"
931 | param {
932 | lr_mult: 1
933 | decay_mult: 1
934 | }
935 | param {
936 | lr_mult: 2
937 | decay_mult: 0
938 | }
939 | inner_product_param {
940 | num_output: 1000
941 | weight_filler {
942 | type: "xavier"
943 | std: 0.0009765625
944 | }
945 | bias_filler {
946 | type: "constant"
947 | value: 0
948 | }
949 | }
950 | }
951 | layer {
952 | name: "loss1/loss"
953 | type: "SoftmaxWithLoss"
954 | bottom: "loss1/classifier"
955 | bottom: "label"
956 | top: "loss1/loss1"
957 | loss_weight: 0.3
958 | }
959 | layer {
960 | name: "loss1/top-1"
961 | type: "Accuracy"
962 | bottom: "loss1/classifier"
963 | bottom: "label"
964 | top: "loss1/top-1"
965 | include {
966 | #phase: TEST
967 | }
968 | }
969 | layer {
970 | name: "loss1/top-5"
971 | type: "Accuracy"
972 | bottom: "loss1/classifier"
973 | bottom: "label"
974 | top: "loss1/top-5"
975 | include {
976 | #phase: TEST
977 | }
978 | accuracy_param {
979 | top_k: 5
980 | }
981 | }
982 | layer {
983 | name: "inception_4b/1x1"
984 | type: "Convolution"
985 | bottom: "inception_4a/output"
986 | top: "inception_4b/1x1"
987 | param {
988 | lr_mult: 1
989 | decay_mult: 1
990 | }
991 | param {
992 | lr_mult: 2
993 | decay_mult: 0
994 | }
995 | convolution_param {
996 | num_output: 160
997 | kernel_size: 1
998 | weight_filler {
999 | type: "xavier"
1000 | std: 0.03
1001 | }
1002 | bias_filler {
1003 | type: "constant"
1004 | value: 0.2
1005 | }
1006 | }
1007 | }
1008 | layer {
1009 | name: "inception_4b/relu_1x1"
1010 | type: "ReLU"
1011 | bottom: "inception_4b/1x1"
1012 | top: "inception_4b/1x1"
1013 | }
1014 | layer {
1015 | name: "inception_4b/3x3_reduce"
1016 | type: "Convolution"
1017 | bottom: "inception_4a/output"
1018 | top: "inception_4b/3x3_reduce"
1019 | param {
1020 | lr_mult: 1
1021 | decay_mult: 1
1022 | }
1023 | param {
1024 | lr_mult: 2
1025 | decay_mult: 0
1026 | }
1027 | convolution_param {
1028 | num_output: 112
1029 | kernel_size: 1
1030 | weight_filler {
1031 | type: "xavier"
1032 | std: 0.09
1033 | }
1034 | bias_filler {
1035 | type: "constant"
1036 | value: 0.2
1037 | }
1038 | }
1039 | }
1040 | layer {
1041 | name: "inception_4b/relu_3x3_reduce"
1042 | type: "ReLU"
1043 | bottom: "inception_4b/3x3_reduce"
1044 | top: "inception_4b/3x3_reduce"
1045 | }
1046 | layer {
1047 | name: "inception_4b/3x3"
1048 | type: "Convolution"
1049 | bottom: "inception_4b/3x3_reduce"
1050 | top: "inception_4b/3x3"
1051 | param {
1052 | lr_mult: 1
1053 | decay_mult: 1
1054 | }
1055 | param {
1056 | lr_mult: 2
1057 | decay_mult: 0
1058 | }
1059 | convolution_param {
1060 | num_output: 224
1061 | pad: 1
1062 | kernel_size: 3
1063 | weight_filler {
1064 | type: "xavier"
1065 | std: 0.03
1066 | }
1067 | bias_filler {
1068 | type: "constant"
1069 | value: 0.2
1070 | }
1071 | }
1072 | }
1073 | layer {
1074 | name: "inception_4b/relu_3x3"
1075 | type: "ReLU"
1076 | bottom: "inception_4b/3x3"
1077 | top: "inception_4b/3x3"
1078 | }
1079 | layer {
1080 | name: "inception_4b/5x5_reduce"
1081 | type: "Convolution"
1082 | bottom: "inception_4a/output"
1083 | top: "inception_4b/5x5_reduce"
1084 | param {
1085 | lr_mult: 1
1086 | decay_mult: 1
1087 | }
1088 | param {
1089 | lr_mult: 2
1090 | decay_mult: 0
1091 | }
1092 | convolution_param {
1093 | num_output: 24
1094 | kernel_size: 1
1095 | weight_filler {
1096 | type: "xavier"
1097 | std: 0.2
1098 | }
1099 | bias_filler {
1100 | type: "constant"
1101 | value: 0.2
1102 | }
1103 | }
1104 | }
1105 | layer {
1106 | name: "inception_4b/relu_5x5_reduce"
1107 | type: "ReLU"
1108 | bottom: "inception_4b/5x5_reduce"
1109 | top: "inception_4b/5x5_reduce"
1110 | }
1111 | layer {
1112 | name: "inception_4b/5x5"
1113 | type: "Convolution"
1114 | bottom: "inception_4b/5x5_reduce"
1115 | top: "inception_4b/5x5"
1116 | param {
1117 | lr_mult: 1
1118 | decay_mult: 1
1119 | }
1120 | param {
1121 | lr_mult: 2
1122 | decay_mult: 0
1123 | }
1124 | convolution_param {
1125 | num_output: 64
1126 | pad: 2
1127 | kernel_size: 5
1128 | weight_filler {
1129 | type: "xavier"
1130 | std: 0.03
1131 | }
1132 | bias_filler {
1133 | type: "constant"
1134 | value: 0.2
1135 | }
1136 | }
1137 | }
1138 | layer {
1139 | name: "inception_4b/relu_5x5"
1140 | type: "ReLU"
1141 | bottom: "inception_4b/5x5"
1142 | top: "inception_4b/5x5"
1143 | }
1144 | layer {
1145 | name: "inception_4b/pool"
1146 | type: "Pooling"
1147 | bottom: "inception_4a/output"
1148 | top: "inception_4b/pool"
1149 | pooling_param {
1150 | pool: MAX
1151 | kernel_size: 3
1152 | stride: 1
1153 | pad: 1
1154 | }
1155 | }
1156 | layer {
1157 | name: "inception_4b/pool_proj"
1158 | type: "Convolution"
1159 | bottom: "inception_4b/pool"
1160 | top: "inception_4b/pool_proj"
1161 | param {
1162 | lr_mult: 1
1163 | decay_mult: 1
1164 | }
1165 | param {
1166 | lr_mult: 2
1167 | decay_mult: 0
1168 | }
1169 | convolution_param {
1170 | num_output: 64
1171 | kernel_size: 1
1172 | weight_filler {
1173 | type: "xavier"
1174 | std: 0.1
1175 | }
1176 | bias_filler {
1177 | type: "constant"
1178 | value: 0.2
1179 | }
1180 | }
1181 | }
1182 | layer {
1183 | name: "inception_4b/relu_pool_proj"
1184 | type: "ReLU"
1185 | bottom: "inception_4b/pool_proj"
1186 | top: "inception_4b/pool_proj"
1187 | }
1188 | layer {
1189 | name: "inception_4b/output"
1190 | type: "Concat"
1191 | bottom: "inception_4b/1x1"
1192 | bottom: "inception_4b/3x3"
1193 | bottom: "inception_4b/5x5"
1194 | bottom: "inception_4b/pool_proj"
1195 | top: "inception_4b/output"
1196 | }
1197 | layer {
1198 | name: "inception_4c/1x1"
1199 | type: "Convolution"
1200 | bottom: "inception_4b/output"
1201 | top: "inception_4c/1x1"
1202 | param {
1203 | lr_mult: 1
1204 | decay_mult: 1
1205 | }
1206 | param {
1207 | lr_mult: 2
1208 | decay_mult: 0
1209 | }
1210 | convolution_param {
1211 | num_output: 128
1212 | kernel_size: 1
1213 | weight_filler {
1214 | type: "xavier"
1215 | std: 0.03
1216 | }
1217 | bias_filler {
1218 | type: "constant"
1219 | value: 0.2
1220 | }
1221 | }
1222 | }
1223 | layer {
1224 | name: "inception_4c/relu_1x1"
1225 | type: "ReLU"
1226 | bottom: "inception_4c/1x1"
1227 | top: "inception_4c/1x1"
1228 | }
1229 | layer {
1230 | name: "inception_4c/3x3_reduce"
1231 | type: "Convolution"
1232 | bottom: "inception_4b/output"
1233 | top: "inception_4c/3x3_reduce"
1234 | param {
1235 | lr_mult: 1
1236 | decay_mult: 1
1237 | }
1238 | param {
1239 | lr_mult: 2
1240 | decay_mult: 0
1241 | }
1242 | convolution_param {
1243 | num_output: 128
1244 | kernel_size: 1
1245 | weight_filler {
1246 | type: "xavier"
1247 | std: 0.09
1248 | }
1249 | bias_filler {
1250 | type: "constant"
1251 | value: 0.2
1252 | }
1253 | }
1254 | }
1255 | layer {
1256 | name: "inception_4c/relu_3x3_reduce"
1257 | type: "ReLU"
1258 | bottom: "inception_4c/3x3_reduce"
1259 | top: "inception_4c/3x3_reduce"
1260 | }
1261 | layer {
1262 | name: "inception_4c/3x3"
1263 | type: "Convolution"
1264 | bottom: "inception_4c/3x3_reduce"
1265 | top: "inception_4c/3x3"
1266 | param {
1267 | lr_mult: 1
1268 | decay_mult: 1
1269 | }
1270 | param {
1271 | lr_mult: 2
1272 | decay_mult: 0
1273 | }
1274 | convolution_param {
1275 | num_output: 256
1276 | pad: 1
1277 | kernel_size: 3
1278 | weight_filler {
1279 | type: "xavier"
1280 | std: 0.03
1281 | }
1282 | bias_filler {
1283 | type: "constant"
1284 | value: 0.2
1285 | }
1286 | }
1287 | }
1288 | layer {
1289 | name: "inception_4c/relu_3x3"
1290 | type: "ReLU"
1291 | bottom: "inception_4c/3x3"
1292 | top: "inception_4c/3x3"
1293 | }
1294 | layer {
1295 | name: "inception_4c/5x5_reduce"
1296 | type: "Convolution"
1297 | bottom: "inception_4b/output"
1298 | top: "inception_4c/5x5_reduce"
1299 | param {
1300 | lr_mult: 1
1301 | decay_mult: 1
1302 | }
1303 | param {
1304 | lr_mult: 2
1305 | decay_mult: 0
1306 | }
1307 | convolution_param {
1308 | num_output: 24
1309 | kernel_size: 1
1310 | weight_filler {
1311 | type: "xavier"
1312 | std: 0.2
1313 | }
1314 | bias_filler {
1315 | type: "constant"
1316 | value: 0.2
1317 | }
1318 | }
1319 | }
1320 | layer {
1321 | name: "inception_4c/relu_5x5_reduce"
1322 | type: "ReLU"
1323 | bottom: "inception_4c/5x5_reduce"
1324 | top: "inception_4c/5x5_reduce"
1325 | }
1326 | layer {
1327 | name: "inception_4c/5x5"
1328 | type: "Convolution"
1329 | bottom: "inception_4c/5x5_reduce"
1330 | top: "inception_4c/5x5"
1331 | param {
1332 | lr_mult: 1
1333 | decay_mult: 1
1334 | }
1335 | param {
1336 | lr_mult: 2
1337 | decay_mult: 0
1338 | }
1339 | convolution_param {
1340 | num_output: 64
1341 | pad: 2
1342 | kernel_size: 5
1343 | weight_filler {
1344 | type: "xavier"
1345 | std: 0.03
1346 | }
1347 | bias_filler {
1348 | type: "constant"
1349 | value: 0.2
1350 | }
1351 | }
1352 | }
1353 | layer {
1354 | name: "inception_4c/relu_5x5"
1355 | type: "ReLU"
1356 | bottom: "inception_4c/5x5"
1357 | top: "inception_4c/5x5"
1358 | }
1359 | layer {
1360 | name: "inception_4c/pool"
1361 | type: "Pooling"
1362 | bottom: "inception_4b/output"
1363 | top: "inception_4c/pool"
1364 | pooling_param {
1365 | pool: MAX
1366 | kernel_size: 3
1367 | stride: 1
1368 | pad: 1
1369 | }
1370 | }
1371 | layer {
1372 | name: "inception_4c/pool_proj"
1373 | type: "Convolution"
1374 | bottom: "inception_4c/pool"
1375 | top: "inception_4c/pool_proj"
1376 | param {
1377 | lr_mult: 1
1378 | decay_mult: 1
1379 | }
1380 | param {
1381 | lr_mult: 2
1382 | decay_mult: 0
1383 | }
1384 | convolution_param {
1385 | num_output: 64
1386 | kernel_size: 1
1387 | weight_filler {
1388 | type: "xavier"
1389 | std: 0.1
1390 | }
1391 | bias_filler {
1392 | type: "constant"
1393 | value: 0.2
1394 | }
1395 | }
1396 | }
1397 | layer {
1398 | name: "inception_4c/relu_pool_proj"
1399 | type: "ReLU"
1400 | bottom: "inception_4c/pool_proj"
1401 | top: "inception_4c/pool_proj"
1402 | }
1403 | layer {
1404 | name: "inception_4c/output"
1405 | type: "Concat"
1406 | bottom: "inception_4c/1x1"
1407 | bottom: "inception_4c/3x3"
1408 | bottom: "inception_4c/5x5"
1409 | bottom: "inception_4c/pool_proj"
1410 | top: "inception_4c/output"
1411 | }
1412 | layer {
1413 | name: "inception_4d/1x1"
1414 | type: "Convolution"
1415 | bottom: "inception_4c/output"
1416 | top: "inception_4d/1x1"
1417 | param {
1418 | lr_mult: 1
1419 | decay_mult: 1
1420 | }
1421 | param {
1422 | lr_mult: 2
1423 | decay_mult: 0
1424 | }
1425 | convolution_param {
1426 | num_output: 112
1427 | kernel_size: 1
1428 | weight_filler {
1429 | type: "xavier"
1430 | std: 0.03
1431 | }
1432 | bias_filler {
1433 | type: "constant"
1434 | value: 0.2
1435 | }
1436 | }
1437 | }
1438 | layer {
1439 | name: "inception_4d/relu_1x1"
1440 | type: "ReLU"
1441 | bottom: "inception_4d/1x1"
1442 | top: "inception_4d/1x1"
1443 | }
1444 | layer {
1445 | name: "inception_4d/3x3_reduce"
1446 | type: "Convolution"
1447 | bottom: "inception_4c/output"
1448 | top: "inception_4d/3x3_reduce"
1449 | param {
1450 | lr_mult: 1
1451 | decay_mult: 1
1452 | }
1453 | param {
1454 | lr_mult: 2
1455 | decay_mult: 0
1456 | }
1457 | convolution_param {
1458 | num_output: 144
1459 | kernel_size: 1
1460 | weight_filler {
1461 | type: "xavier"
1462 | std: 0.09
1463 | }
1464 | bias_filler {
1465 | type: "constant"
1466 | value: 0.2
1467 | }
1468 | }
1469 | }
1470 | layer {
1471 | name: "inception_4d/relu_3x3_reduce"
1472 | type: "ReLU"
1473 | bottom: "inception_4d/3x3_reduce"
1474 | top: "inception_4d/3x3_reduce"
1475 | }
1476 | layer {
1477 | name: "inception_4d/3x3"
1478 | type: "Convolution"
1479 | bottom: "inception_4d/3x3_reduce"
1480 | top: "inception_4d/3x3"
1481 | param {
1482 | lr_mult: 1
1483 | decay_mult: 1
1484 | }
1485 | param {
1486 | lr_mult: 2
1487 | decay_mult: 0
1488 | }
1489 | convolution_param {
1490 | num_output: 288
1491 | pad: 1
1492 | kernel_size: 3
1493 | weight_filler {
1494 | type: "xavier"
1495 | std: 0.03
1496 | }
1497 | bias_filler {
1498 | type: "constant"
1499 | value: 0.2
1500 | }
1501 | }
1502 | }
1503 | layer {
1504 | name: "inception_4d/relu_3x3"
1505 | type: "ReLU"
1506 | bottom: "inception_4d/3x3"
1507 | top: "inception_4d/3x3"
1508 | }
1509 | layer {
1510 | name: "inception_4d/5x5_reduce"
1511 | type: "Convolution"
1512 | bottom: "inception_4c/output"
1513 | top: "inception_4d/5x5_reduce"
1514 | param {
1515 | lr_mult: 1
1516 | decay_mult: 1
1517 | }
1518 | param {
1519 | lr_mult: 2
1520 | decay_mult: 0
1521 | }
1522 | convolution_param {
1523 | num_output: 32
1524 | kernel_size: 1
1525 | weight_filler {
1526 | type: "xavier"
1527 | std: 0.2
1528 | }
1529 | bias_filler {
1530 | type: "constant"
1531 | value: 0.2
1532 | }
1533 | }
1534 | }
1535 | layer {
1536 | name: "inception_4d/relu_5x5_reduce"
1537 | type: "ReLU"
1538 | bottom: "inception_4d/5x5_reduce"
1539 | top: "inception_4d/5x5_reduce"
1540 | }
1541 | layer {
1542 | name: "inception_4d/5x5"
1543 | type: "Convolution"
1544 | bottom: "inception_4d/5x5_reduce"
1545 | top: "inception_4d/5x5"
1546 | param {
1547 | lr_mult: 1
1548 | decay_mult: 1
1549 | }
1550 | param {
1551 | lr_mult: 2
1552 | decay_mult: 0
1553 | }
1554 | convolution_param {
1555 | num_output: 64
1556 | pad: 2
1557 | kernel_size: 5
1558 | weight_filler {
1559 | type: "xavier"
1560 | std: 0.03
1561 | }
1562 | bias_filler {
1563 | type: "constant"
1564 | value: 0.2
1565 | }
1566 | }
1567 | }
1568 | layer {
1569 | name: "inception_4d/relu_5x5"
1570 | type: "ReLU"
1571 | bottom: "inception_4d/5x5"
1572 | top: "inception_4d/5x5"
1573 | }
1574 | layer {
1575 | name: "inception_4d/pool"
1576 | type: "Pooling"
1577 | bottom: "inception_4c/output"
1578 | top: "inception_4d/pool"
1579 | pooling_param {
1580 | pool: MAX
1581 | kernel_size: 3
1582 | stride: 1
1583 | pad: 1
1584 | }
1585 | }
1586 | layer {
1587 | name: "inception_4d/pool_proj"
1588 | type: "Convolution"
1589 | bottom: "inception_4d/pool"
1590 | top: "inception_4d/pool_proj"
1591 | param {
1592 | lr_mult: 1
1593 | decay_mult: 1
1594 | }
1595 | param {
1596 | lr_mult: 2
1597 | decay_mult: 0
1598 | }
1599 | convolution_param {
1600 | num_output: 64
1601 | kernel_size: 1
1602 | weight_filler {
1603 | type: "xavier"
1604 | std: 0.1
1605 | }
1606 | bias_filler {
1607 | type: "constant"
1608 | value: 0.2
1609 | }
1610 | }
1611 | }
1612 | layer {
1613 | name: "inception_4d/relu_pool_proj"
1614 | type: "ReLU"
1615 | bottom: "inception_4d/pool_proj"
1616 | top: "inception_4d/pool_proj"
1617 | }
1618 | layer {
1619 | name: "inception_4d/output"
1620 | type: "Concat"
1621 | bottom: "inception_4d/1x1"
1622 | bottom: "inception_4d/3x3"
1623 | bottom: "inception_4d/5x5"
1624 | bottom: "inception_4d/pool_proj"
1625 | top: "inception_4d/output"
1626 | }
1627 | layer {
1628 | name: "loss2/ave_pool"
1629 | type: "Pooling"
1630 | bottom: "inception_4d/output"
1631 | top: "loss2/ave_pool"
1632 | pooling_param {
1633 | pool: AVE
1634 | kernel_size: 5
1635 | stride: 3
1636 | }
1637 | }
1638 | layer {
1639 | name: "loss2/conv"
1640 | type: "Convolution"
1641 | bottom: "loss2/ave_pool"
1642 | top: "loss2/conv"
1643 | param {
1644 | lr_mult: 1
1645 | decay_mult: 1
1646 | }
1647 | param {
1648 | lr_mult: 2
1649 | decay_mult: 0
1650 | }
1651 | convolution_param {
1652 | num_output: 128
1653 | kernel_size: 1
1654 | weight_filler {
1655 | type: "xavier"
1656 | std: 0.08
1657 | }
1658 | bias_filler {
1659 | type: "constant"
1660 | value: 0.2
1661 | }
1662 | }
1663 | }
1664 | layer {
1665 | name: "loss2/relu_conv"
1666 | type: "ReLU"
1667 | bottom: "loss2/conv"
1668 | top: "loss2/conv"
1669 | }
1670 | layer {
1671 | name: "loss2/fc"
1672 | type: "InnerProduct"
1673 | bottom: "loss2/conv"
1674 | top: "loss2/fc"
1675 | param {
1676 | lr_mult: 1
1677 | decay_mult: 1
1678 | }
1679 | param {
1680 | lr_mult: 2
1681 | decay_mult: 0
1682 | }
1683 | inner_product_param {
1684 | num_output: 1024
1685 | weight_filler {
1686 | type: "xavier"
1687 | std: 0.02
1688 | }
1689 | bias_filler {
1690 | type: "constant"
1691 | value: 0.2
1692 | }
1693 | }
1694 | }
1695 | layer {
1696 | name: "loss2/relu_fc"
1697 | type: "ReLU"
1698 | bottom: "loss2/fc"
1699 | top: "loss2/fc"
1700 | }
1701 | layer {
1702 | name: "loss2/drop_fc"
1703 | type: "Dropout"
1704 | bottom: "loss2/fc"
1705 | top: "loss2/fc"
1706 | dropout_param {
1707 | dropout_ratio: 0.7 #0.5 #0.7
1708 | }
1709 | }
1710 | layer {
1711 | name: "loss2/classifier"
1712 | type: "InnerProduct"
1713 | bottom: "loss2/fc"
1714 | top: "loss2/classifier"
1715 | param {
1716 | lr_mult: 1
1717 | decay_mult: 1
1718 | }
1719 | param {
1720 | lr_mult: 2
1721 | decay_mult: 0
1722 | }
1723 | inner_product_param {
1724 | num_output: 1000
1725 | weight_filler {
1726 | type: "xavier"
1727 | std: 0.0009765625
1728 | }
1729 | bias_filler {
1730 | type: "constant"
1731 | value: 0
1732 | }
1733 | }
1734 | }
1735 | layer {
1736 | name: "loss2/loss"
1737 | type: "SoftmaxWithLoss"
1738 | bottom: "loss2/classifier"
1739 | bottom: "label"
1740 | top: "loss2/loss1"
1741 | loss_weight: 0.3
1742 | }
1743 | layer {
1744 | name: "loss2/top-1"
1745 | type: "Accuracy"
1746 | bottom: "loss2/classifier"
1747 | bottom: "label"
1748 | top: "loss2/top-1"
1749 | include {
1750 | #phase: TEST
1751 | }
1752 | }
1753 | layer {
1754 | name: "loss2/top-5"
1755 | type: "Accuracy"
1756 | bottom: "loss2/classifier"
1757 | bottom: "label"
1758 | top: "loss2/top-5"
1759 | include {
1760 | #phase: TEST
1761 | }
1762 | accuracy_param {
1763 | top_k: 5
1764 | }
1765 | }
1766 | layer {
1767 | name: "inception_4e/1x1"
1768 | type: "Convolution"
1769 | bottom: "inception_4d/output"
1770 | top: "inception_4e/1x1"
1771 | param {
1772 | lr_mult: 1
1773 | decay_mult: 1
1774 | }
1775 | param {
1776 | lr_mult: 2
1777 | decay_mult: 0
1778 | }
1779 | convolution_param {
1780 | num_output: 256
1781 | kernel_size: 1
1782 | weight_filler {
1783 | type: "xavier"
1784 | std: 0.03
1785 | }
1786 | bias_filler {
1787 | type: "constant"
1788 | value: 0.2
1789 | }
1790 | }
1791 | }
1792 | layer {
1793 | name: "inception_4e/relu_1x1"
1794 | type: "ReLU"
1795 | bottom: "inception_4e/1x1"
1796 | top: "inception_4e/1x1"
1797 | }
1798 | layer {
1799 | name: "inception_4e/3x3_reduce"
1800 | type: "Convolution"
1801 | bottom: "inception_4d/output"
1802 | top: "inception_4e/3x3_reduce"
1803 | param {
1804 | lr_mult: 1
1805 | decay_mult: 1
1806 | }
1807 | param {
1808 | lr_mult: 2
1809 | decay_mult: 0
1810 | }
1811 | convolution_param {
1812 | num_output: 160
1813 | kernel_size: 1
1814 | weight_filler {
1815 | type: "xavier"
1816 | std: 0.09
1817 | }
1818 | bias_filler {
1819 | type: "constant"
1820 | value: 0.2
1821 | }
1822 | }
1823 | }
1824 | layer {
1825 | name: "inception_4e/relu_3x3_reduce"
1826 | type: "ReLU"
1827 | bottom: "inception_4e/3x3_reduce"
1828 | top: "inception_4e/3x3_reduce"
1829 | }
1830 | layer {
1831 | name: "inception_4e/3x3"
1832 | type: "Convolution"
1833 | bottom: "inception_4e/3x3_reduce"
1834 | top: "inception_4e/3x3"
1835 | param {
1836 | lr_mult: 1
1837 | decay_mult: 1
1838 | }
1839 | param {
1840 | lr_mult: 2
1841 | decay_mult: 0
1842 | }
1843 | convolution_param {
1844 | num_output: 320
1845 | pad: 1
1846 | kernel_size: 3
1847 | weight_filler {
1848 | type: "xavier"
1849 | std: 0.03
1850 | }
1851 | bias_filler {
1852 | type: "constant"
1853 | value: 0.2
1854 | }
1855 | }
1856 | }
1857 | layer {
1858 | name: "inception_4e/relu_3x3"
1859 | type: "ReLU"
1860 | bottom: "inception_4e/3x3"
1861 | top: "inception_4e/3x3"
1862 | }
1863 | layer {
1864 | name: "inception_4e/5x5_reduce"
1865 | type: "Convolution"
1866 | bottom: "inception_4d/output"
1867 | top: "inception_4e/5x5_reduce"
1868 | param {
1869 | lr_mult: 1
1870 | decay_mult: 1
1871 | }
1872 | param {
1873 | lr_mult: 2
1874 | decay_mult: 0
1875 | }
1876 | convolution_param {
1877 | num_output: 32
1878 | kernel_size: 1
1879 | weight_filler {
1880 | type: "xavier"
1881 | std: 0.2
1882 | }
1883 | bias_filler {
1884 | type: "constant"
1885 | value: 0.2
1886 | }
1887 | }
1888 | }
1889 | layer {
1890 | name: "inception_4e/relu_5x5_reduce"
1891 | type: "ReLU"
1892 | bottom: "inception_4e/5x5_reduce"
1893 | top: "inception_4e/5x5_reduce"
1894 | }
1895 | layer {
1896 | name: "inception_4e/5x5"
1897 | type: "Convolution"
1898 | bottom: "inception_4e/5x5_reduce"
1899 | top: "inception_4e/5x5"
1900 | param {
1901 | lr_mult: 1
1902 | decay_mult: 1
1903 | }
1904 | param {
1905 | lr_mult: 2
1906 | decay_mult: 0
1907 | }
1908 | convolution_param {
1909 | num_output: 128
1910 | pad: 2
1911 | kernel_size: 5
1912 | weight_filler {
1913 | type: "xavier"
1914 | std: 0.03
1915 | }
1916 | bias_filler {
1917 | type: "constant"
1918 | value: 0.2
1919 | }
1920 | }
1921 | }
1922 | layer {
1923 | name: "inception_4e/relu_5x5"
1924 | type: "ReLU"
1925 | bottom: "inception_4e/5x5"
1926 | top: "inception_4e/5x5"
1927 | }
1928 | layer {
1929 | name: "inception_4e/pool"
1930 | type: "Pooling"
1931 | bottom: "inception_4d/output"
1932 | top: "inception_4e/pool"
1933 | pooling_param {
1934 | pool: MAX
1935 | kernel_size: 3
1936 | stride: 1
1937 | pad: 1
1938 | }
1939 | }
1940 | layer {
1941 | name: "inception_4e/pool_proj"
1942 | type: "Convolution"
1943 | bottom: "inception_4e/pool"
1944 | top: "inception_4e/pool_proj"
1945 | param {
1946 | lr_mult: 1
1947 | decay_mult: 1
1948 | }
1949 | param {
1950 | lr_mult: 2
1951 | decay_mult: 0
1952 | }
1953 | convolution_param {
1954 | num_output: 128
1955 | kernel_size: 1
1956 | weight_filler {
1957 | type: "xavier"
1958 | std: 0.1
1959 | }
1960 | bias_filler {
1961 | type: "constant"
1962 | value: 0.2
1963 | }
1964 | }
1965 | }
1966 | layer {
1967 | name: "inception_4e/relu_pool_proj"
1968 | type: "ReLU"
1969 | bottom: "inception_4e/pool_proj"
1970 | top: "inception_4e/pool_proj"
1971 | }
1972 | layer {
1973 | name: "inception_4e/output"
1974 | type: "Concat"
1975 | bottom: "inception_4e/1x1"
1976 | bottom: "inception_4e/3x3"
1977 | bottom: "inception_4e/5x5"
1978 | bottom: "inception_4e/pool_proj"
1979 | top: "inception_4e/output"
1980 | }
1981 | layer {
1982 | name: "pool4/3x3_s2"
1983 | type: "Pooling"
1984 | bottom: "inception_4e/output"
1985 | top: "pool4/3x3_s2"
1986 | pooling_param {
1987 | pool: MAX
1988 | kernel_size: 3
1989 | stride: 2
1990 | }
1991 | }
1992 | layer {
1993 | name: "inception_5a/1x1"
1994 | type: "Convolution"
1995 | bottom: "pool4/3x3_s2"
1996 | top: "inception_5a/1x1"
1997 | param {
1998 | lr_mult: 1
1999 | decay_mult: 1
2000 | }
2001 | param {
2002 | lr_mult: 2
2003 | decay_mult: 0
2004 | }
2005 | convolution_param {
2006 | num_output: 256
2007 | kernel_size: 1
2008 | weight_filler {
2009 | type: "xavier"
2010 | std: 0.03
2011 | }
2012 | bias_filler {
2013 | type: "constant"
2014 | value: 0.2
2015 | }
2016 | }
2017 | }
2018 | layer {
2019 | name: "inception_5a/relu_1x1"
2020 | type: "ReLU"
2021 | bottom: "inception_5a/1x1"
2022 | top: "inception_5a/1x1"
2023 | }
2024 | layer {
2025 | name: "inception_5a/3x3_reduce"
2026 | type: "Convolution"
2027 | bottom: "pool4/3x3_s2"
2028 | top: "inception_5a/3x3_reduce"
2029 | param {
2030 | lr_mult: 1
2031 | decay_mult: 1
2032 | }
2033 | param {
2034 | lr_mult: 2
2035 | decay_mult: 0
2036 | }
2037 | convolution_param {
2038 | num_output: 160
2039 | kernel_size: 1
2040 | weight_filler {
2041 | type: "xavier"
2042 | std: 0.09
2043 | }
2044 | bias_filler {
2045 | type: "constant"
2046 | value: 0.2
2047 | }
2048 | }
2049 | }
2050 | layer {
2051 | name: "inception_5a/relu_3x3_reduce"
2052 | type: "ReLU"
2053 | bottom: "inception_5a/3x3_reduce"
2054 | top: "inception_5a/3x3_reduce"
2055 | }
2056 | layer {
2057 | name: "inception_5a/3x3"
2058 | type: "Convolution"
2059 | bottom: "inception_5a/3x3_reduce"
2060 | top: "inception_5a/3x3"
2061 | param {
2062 | lr_mult: 1
2063 | decay_mult: 1
2064 | }
2065 | param {
2066 | lr_mult: 2
2067 | decay_mult: 0
2068 | }
2069 | convolution_param {
2070 | num_output: 320
2071 | pad: 1
2072 | kernel_size: 3
2073 | weight_filler {
2074 | type: "xavier"
2075 | std: 0.03
2076 | }
2077 | bias_filler {
2078 | type: "constant"
2079 | value: 0.2
2080 | }
2081 | }
2082 | }
2083 | layer {
2084 | name: "inception_5a/relu_3x3"
2085 | type: "ReLU"
2086 | bottom: "inception_5a/3x3"
2087 | top: "inception_5a/3x3"
2088 | }
2089 | layer {
2090 | name: "inception_5a/5x5_reduce"
2091 | type: "Convolution"
2092 | bottom: "pool4/3x3_s2"
2093 | top: "inception_5a/5x5_reduce"
2094 | param {
2095 | lr_mult: 1
2096 | decay_mult: 1
2097 | }
2098 | param {
2099 | lr_mult: 2
2100 | decay_mult: 0
2101 | }
2102 | convolution_param {
2103 | num_output: 32
2104 | kernel_size: 1
2105 | weight_filler {
2106 | type: "xavier"
2107 | std: 0.2
2108 | }
2109 | bias_filler {
2110 | type: "constant"
2111 | value: 0.2
2112 | }
2113 | }
2114 | }
2115 | layer {
2116 | name: "inception_5a/relu_5x5_reduce"
2117 | type: "ReLU"
2118 | bottom: "inception_5a/5x5_reduce"
2119 | top: "inception_5a/5x5_reduce"
2120 | }
2121 | layer {
2122 | name: "inception_5a/5x5"
2123 | type: "Convolution"
2124 | bottom: "inception_5a/5x5_reduce"
2125 | top: "inception_5a/5x5"
2126 | param {
2127 | lr_mult: 1
2128 | decay_mult: 1
2129 | }
2130 | param {
2131 | lr_mult: 2
2132 | decay_mult: 0
2133 | }
2134 | convolution_param {
2135 | num_output: 128
2136 | pad: 2
2137 | kernel_size: 5
2138 | weight_filler {
2139 | type: "xavier"
2140 | std: 0.03
2141 | }
2142 | bias_filler {
2143 | type: "constant"
2144 | value: 0.2
2145 | }
2146 | }
2147 | }
2148 | layer {
2149 | name: "inception_5a/relu_5x5"
2150 | type: "ReLU"
2151 | bottom: "inception_5a/5x5"
2152 | top: "inception_5a/5x5"
2153 | }
2154 | layer {
2155 | name: "inception_5a/pool"
2156 | type: "Pooling"
2157 | bottom: "pool4/3x3_s2"
2158 | top: "inception_5a/pool"
2159 | pooling_param {
2160 | pool: MAX
2161 | kernel_size: 3
2162 | stride: 1
2163 | pad: 1
2164 | }
2165 | }
2166 | layer {
2167 | name: "inception_5a/pool_proj"
2168 | type: "Convolution"
2169 | bottom: "inception_5a/pool"
2170 | top: "inception_5a/pool_proj"
2171 | param {
2172 | lr_mult: 1
2173 | decay_mult: 1
2174 | }
2175 | param {
2176 | lr_mult: 2
2177 | decay_mult: 0
2178 | }
2179 | convolution_param {
2180 | num_output: 128
2181 | kernel_size: 1
2182 | weight_filler {
2183 | type: "xavier"
2184 | std: 0.1
2185 | }
2186 | bias_filler {
2187 | type: "constant"
2188 | value: 0.2
2189 | }
2190 | }
2191 | }
2192 | layer {
2193 | name: "inception_5a/relu_pool_proj"
2194 | type: "ReLU"
2195 | bottom: "inception_5a/pool_proj"
2196 | top: "inception_5a/pool_proj"
2197 | }
2198 | layer {
2199 | name: "inception_5a/output"
2200 | type: "Concat"
2201 | bottom: "inception_5a/1x1"
2202 | bottom: "inception_5a/3x3"
2203 | bottom: "inception_5a/5x5"
2204 | bottom: "inception_5a/pool_proj"
2205 | top: "inception_5a/output"
2206 | }
2207 | layer {
2208 | name: "inception_5b/1x1"
2209 | type: "Convolution"
2210 | bottom: "inception_5a/output"
2211 | top: "inception_5b/1x1"
2212 | param {
2213 | lr_mult: 1
2214 | decay_mult: 1
2215 | }
2216 | param {
2217 | lr_mult: 2
2218 | decay_mult: 0
2219 | }
2220 | convolution_param {
2221 | num_output: 384
2222 | kernel_size: 1
2223 | weight_filler {
2224 | type: "xavier"
2225 | std: 0.03
2226 | }
2227 | bias_filler {
2228 | type: "constant"
2229 | value: 0.2
2230 | }
2231 | }
2232 | }
2233 | layer {
2234 | name: "inception_5b/relu_1x1"
2235 | type: "ReLU"
2236 | bottom: "inception_5b/1x1"
2237 | top: "inception_5b/1x1"
2238 | }
2239 | layer {
2240 | name: "inception_5b/3x3_reduce"
2241 | type: "Convolution"
2242 | bottom: "inception_5a/output"
2243 | top: "inception_5b/3x3_reduce"
2244 | param {
2245 | lr_mult: 1
2246 | decay_mult: 1
2247 | }
2248 | param {
2249 | lr_mult: 2
2250 | decay_mult: 0
2251 | }
2252 | convolution_param {
2253 | num_output: 192
2254 | kernel_size: 1
2255 | weight_filler {
2256 | type: "xavier"
2257 | std: 0.09
2258 | }
2259 | bias_filler {
2260 | type: "constant"
2261 | value: 0.2
2262 | }
2263 | }
2264 | }
2265 | layer {
2266 | name: "inception_5b/relu_3x3_reduce"
2267 | type: "ReLU"
2268 | bottom: "inception_5b/3x3_reduce"
2269 | top: "inception_5b/3x3_reduce"
2270 | }
2271 | layer {
2272 | name: "inception_5b/3x3"
2273 | type: "Convolution"
2274 | bottom: "inception_5b/3x3_reduce"
2275 | top: "inception_5b/3x3"
2276 | param {
2277 | lr_mult: 1
2278 | decay_mult: 1
2279 | }
2280 | param {
2281 | lr_mult: 2
2282 | decay_mult: 0
2283 | }
2284 | convolution_param {
2285 | num_output: 384
2286 | pad: 1
2287 | kernel_size: 3
2288 | weight_filler {
2289 | type: "xavier"
2290 | std: 0.03
2291 | }
2292 | bias_filler {
2293 | type: "constant"
2294 | value: 0.2
2295 | }
2296 | }
2297 | }
2298 | layer {
2299 | name: "inception_5b/relu_3x3"
2300 | type: "ReLU"
2301 | bottom: "inception_5b/3x3"
2302 | top: "inception_5b/3x3"
2303 | }
2304 | layer {
2305 | name: "inception_5b/5x5_reduce"
2306 | type: "Convolution"
2307 | bottom: "inception_5a/output"
2308 | top: "inception_5b/5x5_reduce"
2309 | param {
2310 | lr_mult: 1
2311 | decay_mult: 1
2312 | }
2313 | param {
2314 | lr_mult: 2
2315 | decay_mult: 0
2316 | }
2317 | convolution_param {
2318 | num_output: 48
2319 | kernel_size: 1
2320 | weight_filler {
2321 | type: "xavier"
2322 | std: 0.2
2323 | }
2324 | bias_filler {
2325 | type: "constant"
2326 | value: 0.2
2327 | }
2328 | }
2329 | }
2330 | layer {
2331 | name: "inception_5b/relu_5x5_reduce"
2332 | type: "ReLU"
2333 | bottom: "inception_5b/5x5_reduce"
2334 | top: "inception_5b/5x5_reduce"
2335 | }
2336 | layer {
2337 | name: "inception_5b/5x5"
2338 | type: "Convolution"
2339 | bottom: "inception_5b/5x5_reduce"
2340 | top: "inception_5b/5x5"
2341 | param {
2342 | lr_mult: 1
2343 | decay_mult: 1
2344 | }
2345 | param {
2346 | lr_mult: 2
2347 | decay_mult: 0
2348 | }
2349 | convolution_param {
2350 | num_output: 128
2351 | pad: 2
2352 | kernel_size: 5
2353 | weight_filler {
2354 | type: "xavier"
2355 | std: 0.03
2356 | }
2357 | bias_filler {
2358 | type: "constant"
2359 | value: 0.2
2360 | }
2361 | }
2362 | }
2363 | layer {
2364 | name: "inception_5b/relu_5x5"
2365 | type: "ReLU"
2366 | bottom: "inception_5b/5x5"
2367 | top: "inception_5b/5x5"
2368 | }
2369 | layer {
2370 | name: "inception_5b/pool"
2371 | type: "Pooling"
2372 | bottom: "inception_5a/output"
2373 | top: "inception_5b/pool"
2374 | pooling_param {
2375 | pool: MAX
2376 | kernel_size: 3
2377 | stride: 1
2378 | pad: 1
2379 | }
2380 | }
2381 | layer {
2382 | name: "inception_5b/pool_proj"
2383 | type: "Convolution"
2384 | bottom: "inception_5b/pool"
2385 | top: "inception_5b/pool_proj"
2386 | param {
2387 | lr_mult: 1
2388 | decay_mult: 1
2389 | }
2390 | param {
2391 | lr_mult: 2
2392 | decay_mult: 0
2393 | }
2394 | convolution_param {
2395 | num_output: 128
2396 | kernel_size: 1
2397 | weight_filler {
2398 | type: "xavier"
2399 | std: 0.1
2400 | }
2401 | bias_filler {
2402 | type: "constant"
2403 | value: 0.2
2404 | }
2405 | }
2406 | }
2407 | layer {
2408 | name: "inception_5b/relu_pool_proj"
2409 | type: "ReLU"
2410 | bottom: "inception_5b/pool_proj"
2411 | top: "inception_5b/pool_proj"
2412 | }
2413 | layer {
2414 | name: "inception_5b/output"
2415 | type: "Concat"
2416 | bottom: "inception_5b/1x1"
2417 | bottom: "inception_5b/3x3"
2418 | bottom: "inception_5b/5x5"
2419 | bottom: "inception_5b/pool_proj"
2420 | top: "inception_5b/output"
2421 | }
2422 | layer {
2423 | name: "pool5/7x7_s1"
2424 | type: "Pooling"
2425 | bottom: "inception_5b/output"
2426 | top: "pool5/7x7_s1"
2427 | pooling_param {
2428 | pool: AVE
2429 | kernel_size: 7
2430 | stride: 1
2431 | }
2432 | }
2433 | layer {
2434 | name: "pool5/drop_7x7_s1"
2435 | type: "Dropout"
2436 | bottom: "pool5/7x7_s1"
2437 | top: "pool5/7x7_s1"
2438 | dropout_param {
2439 | dropout_ratio: 0.4 # 0.2 # 0.25 # 0.4
2440 | }
2441 | }
2442 | layer {
2443 | name: "loss3/classifier"
2444 | type: "InnerProduct"
2445 | bottom: "pool5/7x7_s1"
2446 | top: "loss3/classifier"
2447 | param {
2448 | lr_mult: 1
2449 | decay_mult: 1
2450 | }
2451 | param {
2452 | lr_mult: 2
2453 | decay_mult: 0
2454 | }
2455 | inner_product_param {
2456 | num_output: 1000
2457 | weight_filler {
2458 | type: "xavier"
2459 | }
2460 | bias_filler {
2461 | type: "constant"
2462 | value: 0
2463 | }
2464 | }
2465 | }
2466 | layer {
2467 | name: "loss"
2468 | type: "SoftmaxWithLoss"
2469 | bottom: "loss3/classifier"
2470 | bottom: "label"
2471 | top: "loss"
2472 | loss_weight: 1
2473 | }
2474 | layer {
2475 | name: "accuracy_top1"
2476 | type: "Accuracy"
2477 | bottom: "loss3/classifier"
2478 | bottom: "label"
2479 | top: "accuracy_top1"
2480 | include {
2481 | phase: TEST
2482 | }
2483 | }
2484 | layer {
2485 | name: "accuracy_top5"
2486 | type: "Accuracy"
2487 | bottom: "loss3/classifier"
2488 | bottom: "label"
2489 | top: "accuracy_top5"
2490 | include {
2491 | phase: TEST
2492 | }
2493 | accuracy_param {
2494 | top_k: 5
2495 | }
2496 | }
2497 |
--------------------------------------------------------------------------------