├── .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 | --------------------------------------------------------------------------------