├── Deep_Learning_Algorithm
├── README.md
└── models
│ ├── Lenet-5.prototxt
│ ├── ResNet_50.prototxt
│ ├── icnet.prototxt
│ ├── inception_v3.prototxt
│ ├── mobilenet_v1.prototxt
│ ├── mobilenet_v2.prototxt
│ ├── mobilenet_yolov3_lite.prototxt
│ └── squeezenet_v1.1.prototxt
├── LICENSE
├── README.md
├── Runtime_Software
├── Readme.md
├── eepdemo
│ ├── eepdemo_arm
│ └── libopencv
│ │ └── lib
│ │ ├── libopencv_core.so
│ │ ├── libopencv_core.so.2.4
│ │ ├── libopencv_core.so.2.4.13
│ │ ├── libopencv_highgui.so
│ │ ├── libopencv_highgui.so.2.4
│ │ ├── libopencv_highgui.so.2.4.13
│ │ ├── libopencv_imgproc.so
│ │ ├── libopencv_imgproc.so.2.4
│ │ └── libopencv_imgproc.so.2.4.13
├── examples
│ ├── Readme.md
│ ├── test_c8a1_lenet.sh
│ ├── test_c8a1_mobilenet_v1.sh
│ ├── test_c8a3_lenet.sh
│ └── test_c8a3_mobilenet_v1.sh
├── images
│ ├── classify
│ │ ├── ILSVRC2012_val_00000001.JPEG
│ │ ├── ILSVRC2012_val_00000002.JPEG
│ │ ├── ILSVRC2012_val_00000003.JPEG
│ │ ├── ILSVRC2012_val_00000004.JPEG
│ │ ├── ILSVRC2012_val_00000005.JPEG
│ │ ├── ILSVRC2012_val_00000006.JPEG
│ │ ├── ILSVRC2012_val_00000007.JPEG
│ │ ├── ILSVRC2012_val_00000008.JPEG
│ │ ├── ILSVRC2012_val_00000009.JPEG
│ │ ├── ILSVRC2012_val_00000010.JPEG
│ │ ├── ILSVRC2012_val_00000011.JPEG
│ │ ├── ILSVRC2012_val_00000012.JPEG
│ │ ├── ILSVRC2012_val_00000013.JPEG
│ │ ├── ILSVRC2012_val_00000014.JPEG
│ │ ├── ILSVRC2012_val_00000015.JPEG
│ │ ├── ILSVRC2012_val_00000016.JPEG
│ │ ├── ILSVRC2012_val_00000017.JPEG
│ │ ├── ILSVRC2012_val_00000018.JPEG
│ │ ├── ILSVRC2012_val_00000019.JPEG
│ │ ├── ILSVRC2012_val_00000020.JPEG
│ │ ├── val.txt
│ │ └── val_inception.txt
│ ├── icnet
│ │ ├── berlin_000000_000019_leftImg8bit.jpg
│ │ ├── berlin_000001_000019_leftImg8bit.jpg
│ │ ├── berlin_000002_000019_leftImg8bit.jpg
│ │ ├── berlin_000003_000019_leftImg8bit.jpg
│ │ └── berlin_000004_000019_leftImg8bit.jpg
│ ├── lenet
│ │ ├── 00000_7.pgm
│ │ ├── 00001_2.pgm
│ │ ├── 00002_1.pgm
│ │ ├── 00003_0.pgm
│ │ ├── 00004_4.pgm
│ │ ├── 00005_1.pgm
│ │ ├── 00006_4.pgm
│ │ ├── 00007_9.pgm
│ │ ├── 00008_5.pgm
│ │ ├── 00009_9.pgm
│ │ └── val.txt
│ └── yolo
│ │ ├── 000001.jpg
│ │ ├── 000067.jpg
│ │ ├── 000456.jpg
│ │ ├── 001150.jpg
│ │ ├── 001763.jpg
│ │ └── 004545.jpg
└── tpubin
│ ├── Readme.md
│ ├── freetpu_c8a1
│ ├── lenet
│ │ └── eeptpu.bin
│ └── mobilenet1
│ │ └── eeptpu.bin
│ └── freetpu_c8a3
│ ├── lenet
│ └── eeptpu.bin
│ └── mobilenet1
│ └── eeptpu.bin
└── wiki
├── FREE-TPU.gif
├── eeptpu_layer_set.png
└── system_structure_github.png
/Deep_Learning_Algorithm/README.md:
--------------------------------------------------------------------------------
1 | # Models
2 | Normally, *Free-TPU* can use all CAFFE based NN algorithm on github intuitively :
3 | 1. Download **.prototxt and **.caffemodel
4 | 2. Generate BIN file through *Free TPU SDK*
5 | 3. Launch it by using `eepdemo_arm --bin BIN_file --image IMG_file`
6 |
7 | However, for now, we are not ready to release the Free TPU SDK for public usage. Instead, we provide the BIN and corresponding MODEL file of typical NN network here. For details about these algorithm, please refer to their original github sites:
8 | 1. https://github.com/eric612/MobileNet-YOLO
9 | 2. https://github.com/shicai/MobileNet-Caffe
10 | 3. https://github.com/hszhao/ICNet
11 | 4. https://github.com/soeaver/caffe-model
12 |
13 |
14 |
15 | ## License
16 | MIT LICENSE
17 |
18 | ## Contact
19 | Questions can email us or be left as issues in the repository, We will be happy to answer them.
20 | ## Contributors
21 | Luo (luohy@embedeep.com)
22 | Zhou (zhouzx@embedeep.com)
23 | He (herh@embedeep.com)
24 |
--------------------------------------------------------------------------------
/Deep_Learning_Algorithm/models/Lenet-5.prototxt:
--------------------------------------------------------------------------------
1 | name: "LeNet"
2 | layer {
3 | name: "data"
4 | type: "Input"
5 | top: "data"
6 | input_param { shape: { dim: 1 dim: 1 dim: 28 dim: 28 } }
7 | }
8 | layer {
9 | name: "conv1"
10 | type: "Convolution"
11 | bottom: "data"
12 | top: "conv1"
13 | param {
14 | lr_mult: 1
15 | }
16 | param {
17 | lr_mult: 2
18 | }
19 | convolution_param {
20 | num_output: 20
21 | kernel_size: 5
22 | stride: 1
23 | weight_filler {
24 | type: "xavier"
25 | }
26 | bias_filler {
27 | type: "constant"
28 | }
29 | }
30 | }
31 | layer {
32 | name: "pool1"
33 | type: "Pooling"
34 | bottom: "conv1"
35 | top: "pool1"
36 | pooling_param {
37 | pool: MAX
38 | kernel_size: 2
39 | stride: 2
40 | }
41 | }
42 | layer {
43 | name: "conv2"
44 | type: "Convolution"
45 | bottom: "pool1"
46 | top: "conv2"
47 | param {
48 | lr_mult: 1
49 | }
50 | param {
51 | lr_mult: 2
52 | }
53 | convolution_param {
54 | num_output: 50
55 | kernel_size: 5
56 | stride: 1
57 | weight_filler {
58 | type: "xavier"
59 | }
60 | bias_filler {
61 | type: "constant"
62 | }
63 | }
64 | }
65 | layer {
66 | name: "pool2"
67 | type: "Pooling"
68 | bottom: "conv2"
69 | top: "pool2"
70 | pooling_param {
71 | pool: MAX
72 | kernel_size: 2
73 | stride: 2
74 | }
75 | }
76 | layer {
77 | name: "ip1"
78 | type: "InnerProduct"
79 | bottom: "pool2"
80 | top: "ip1"
81 | param {
82 | lr_mult: 1
83 | }
84 | param {
85 | lr_mult: 2
86 | }
87 | inner_product_param {
88 | num_output: 500
89 | weight_filler {
90 | type: "xavier"
91 | }
92 | bias_filler {
93 | type: "constant"
94 | }
95 | }
96 | }
97 | layer {
98 | name: "relu1"
99 | type: "ReLU"
100 | bottom: "ip1"
101 | top: "ip1"
102 | }
103 | layer {
104 | name: "ip2"
105 | type: "InnerProduct"
106 | bottom: "ip1"
107 | top: "ip2"
108 | param {
109 | lr_mult: 1
110 | }
111 | param {
112 | lr_mult: 2
113 | }
114 | inner_product_param {
115 | num_output: 10
116 | weight_filler {
117 | type: "xavier"
118 | }
119 | bias_filler {
120 | type: "constant"
121 | }
122 | }
123 | }
124 | layer {
125 | name: "prob"
126 | type: "Softmax"
127 | bottom: "ip2"
128 | top: "prob"
129 | }
130 |
--------------------------------------------------------------------------------
/Deep_Learning_Algorithm/models/ResNet_50.prototxt:
--------------------------------------------------------------------------------
1 | name: "ResNet-50"
2 | input: "data"
3 | input_dim: 1
4 | input_dim: 3
5 | input_dim: 224
6 | input_dim: 224
7 |
8 | layer {
9 | bottom: "data"
10 | top: "conv1"
11 | name: "conv1"
12 | type: "Convolution"
13 | convolution_param {
14 | num_output: 64
15 | kernel_size: 7
16 | pad: 3
17 | stride: 2
18 | }
19 | }
20 |
21 | layer {
22 | bottom: "conv1"
23 | top: "conv1"
24 | name: "bn_conv1"
25 | type: "BatchNorm"
26 | batch_norm_param {
27 | use_global_stats: true
28 | }
29 | }
30 |
31 | layer {
32 | bottom: "conv1"
33 | top: "conv1"
34 | name: "scale_conv1"
35 | type: "Scale"
36 | scale_param {
37 | bias_term: true
38 | }
39 | }
40 |
41 | layer {
42 | bottom: "conv1"
43 | top: "conv1"
44 | name: "conv1_relu"
45 | type: "ReLU"
46 | }
47 |
48 | layer {
49 | bottom: "conv1"
50 | top: "pool1"
51 | name: "pool1"
52 | type: "Pooling"
53 | pooling_param {
54 | kernel_size: 3
55 | stride: 2
56 | pool: MAX
57 | }
58 | }
59 |
60 | layer {
61 | bottom: "pool1"
62 | top: "res2a_branch1"
63 | name: "res2a_branch1"
64 | type: "Convolution"
65 | convolution_param {
66 | num_output: 256
67 | kernel_size: 1
68 | pad: 0
69 | stride: 1
70 | bias_term: false
71 | }
72 | }
73 |
74 | layer {
75 | bottom: "res2a_branch1"
76 | top: "res2a_branch1"
77 | name: "bn2a_branch1"
78 | type: "BatchNorm"
79 | batch_norm_param {
80 | use_global_stats: true
81 | }
82 | }
83 |
84 | layer {
85 | bottom: "res2a_branch1"
86 | top: "res2a_branch1"
87 | name: "scale2a_branch1"
88 | type: "Scale"
89 | scale_param {
90 | bias_term: true
91 | }
92 | }
93 |
94 | layer {
95 | bottom: "pool1"
96 | top: "res2a_branch2a"
97 | name: "res2a_branch2a"
98 | type: "Convolution"
99 | convolution_param {
100 | num_output: 64
101 | kernel_size: 1
102 | pad: 0
103 | stride: 1
104 | bias_term: false
105 | }
106 | }
107 |
108 | layer {
109 | bottom: "res2a_branch2a"
110 | top: "res2a_branch2a"
111 | name: "bn2a_branch2a"
112 | type: "BatchNorm"
113 | batch_norm_param {
114 | use_global_stats: true
115 | }
116 | }
117 |
118 | layer {
119 | bottom: "res2a_branch2a"
120 | top: "res2a_branch2a"
121 | name: "scale2a_branch2a"
122 | type: "Scale"
123 | scale_param {
124 | bias_term: true
125 | }
126 | }
127 |
128 | layer {
129 | bottom: "res2a_branch2a"
130 | top: "res2a_branch2a"
131 | name: "res2a_branch2a_relu"
132 | type: "ReLU"
133 | }
134 |
135 | layer {
136 | bottom: "res2a_branch2a"
137 | top: "res2a_branch2b"
138 | name: "res2a_branch2b"
139 | type: "Convolution"
140 | convolution_param {
141 | num_output: 64
142 | kernel_size: 3
143 | pad: 1
144 | stride: 1
145 | bias_term: false
146 | }
147 | }
148 |
149 | layer {
150 | bottom: "res2a_branch2b"
151 | top: "res2a_branch2b"
152 | name: "bn2a_branch2b"
153 | type: "BatchNorm"
154 | batch_norm_param {
155 | use_global_stats: true
156 | }
157 | }
158 |
159 | layer {
160 | bottom: "res2a_branch2b"
161 | top: "res2a_branch2b"
162 | name: "scale2a_branch2b"
163 | type: "Scale"
164 | scale_param {
165 | bias_term: true
166 | }
167 | }
168 |
169 | layer {
170 | bottom: "res2a_branch2b"
171 | top: "res2a_branch2b"
172 | name: "res2a_branch2b_relu"
173 | type: "ReLU"
174 | }
175 |
176 | layer {
177 | bottom: "res2a_branch2b"
178 | top: "res2a_branch2c"
179 | name: "res2a_branch2c"
180 | type: "Convolution"
181 | convolution_param {
182 | num_output: 256
183 | kernel_size: 1
184 | pad: 0
185 | stride: 1
186 | bias_term: false
187 | }
188 | }
189 |
190 | layer {
191 | bottom: "res2a_branch2c"
192 | top: "res2a_branch2c"
193 | name: "bn2a_branch2c"
194 | type: "BatchNorm"
195 | batch_norm_param {
196 | use_global_stats: true
197 | }
198 | }
199 |
200 | layer {
201 | bottom: "res2a_branch2c"
202 | top: "res2a_branch2c"
203 | name: "scale2a_branch2c"
204 | type: "Scale"
205 | scale_param {
206 | bias_term: true
207 | }
208 | }
209 |
210 | layer {
211 | bottom: "res2a_branch1"
212 | bottom: "res2a_branch2c"
213 | top: "res2a"
214 | name: "res2a"
215 | type: "Eltwise"
216 | }
217 |
218 | layer {
219 | bottom: "res2a"
220 | top: "res2a"
221 | name: "res2a_relu"
222 | type: "ReLU"
223 | }
224 |
225 | layer {
226 | bottom: "res2a"
227 | top: "res2b_branch2a"
228 | name: "res2b_branch2a"
229 | type: "Convolution"
230 | convolution_param {
231 | num_output: 64
232 | kernel_size: 1
233 | pad: 0
234 | stride: 1
235 | bias_term: false
236 | }
237 | }
238 |
239 | layer {
240 | bottom: "res2b_branch2a"
241 | top: "res2b_branch2a"
242 | name: "bn2b_branch2a"
243 | type: "BatchNorm"
244 | batch_norm_param {
245 | use_global_stats: true
246 | }
247 | }
248 |
249 | layer {
250 | bottom: "res2b_branch2a"
251 | top: "res2b_branch2a"
252 | name: "scale2b_branch2a"
253 | type: "Scale"
254 | scale_param {
255 | bias_term: true
256 | }
257 | }
258 |
259 | layer {
260 | bottom: "res2b_branch2a"
261 | top: "res2b_branch2a"
262 | name: "res2b_branch2a_relu"
263 | type: "ReLU"
264 | }
265 |
266 | layer {
267 | bottom: "res2b_branch2a"
268 | top: "res2b_branch2b"
269 | name: "res2b_branch2b"
270 | type: "Convolution"
271 | convolution_param {
272 | num_output: 64
273 | kernel_size: 3
274 | pad: 1
275 | stride: 1
276 | bias_term: false
277 | }
278 | }
279 |
280 | layer {
281 | bottom: "res2b_branch2b"
282 | top: "res2b_branch2b"
283 | name: "bn2b_branch2b"
284 | type: "BatchNorm"
285 | batch_norm_param {
286 | use_global_stats: true
287 | }
288 | }
289 |
290 | layer {
291 | bottom: "res2b_branch2b"
292 | top: "res2b_branch2b"
293 | name: "scale2b_branch2b"
294 | type: "Scale"
295 | scale_param {
296 | bias_term: true
297 | }
298 | }
299 |
300 | layer {
301 | bottom: "res2b_branch2b"
302 | top: "res2b_branch2b"
303 | name: "res2b_branch2b_relu"
304 | type: "ReLU"
305 | }
306 |
307 | layer {
308 | bottom: "res2b_branch2b"
309 | top: "res2b_branch2c"
310 | name: "res2b_branch2c"
311 | type: "Convolution"
312 | convolution_param {
313 | num_output: 256
314 | kernel_size: 1
315 | pad: 0
316 | stride: 1
317 | bias_term: false
318 | }
319 | }
320 |
321 | layer {
322 | bottom: "res2b_branch2c"
323 | top: "res2b_branch2c"
324 | name: "bn2b_branch2c"
325 | type: "BatchNorm"
326 | batch_norm_param {
327 | use_global_stats: true
328 | }
329 | }
330 |
331 | layer {
332 | bottom: "res2b_branch2c"
333 | top: "res2b_branch2c"
334 | name: "scale2b_branch2c"
335 | type: "Scale"
336 | scale_param {
337 | bias_term: true
338 | }
339 | }
340 |
341 | layer {
342 | bottom: "res2a"
343 | bottom: "res2b_branch2c"
344 | top: "res2b"
345 | name: "res2b"
346 | type: "Eltwise"
347 | }
348 |
349 | layer {
350 | bottom: "res2b"
351 | top: "res2b"
352 | name: "res2b_relu"
353 | type: "ReLU"
354 | }
355 |
356 | layer {
357 | bottom: "res2b"
358 | top: "res2c_branch2a"
359 | name: "res2c_branch2a"
360 | type: "Convolution"
361 | convolution_param {
362 | num_output: 64
363 | kernel_size: 1
364 | pad: 0
365 | stride: 1
366 | bias_term: false
367 | }
368 | }
369 |
370 | layer {
371 | bottom: "res2c_branch2a"
372 | top: "res2c_branch2a"
373 | name: "bn2c_branch2a"
374 | type: "BatchNorm"
375 | batch_norm_param {
376 | use_global_stats: true
377 | }
378 | }
379 |
380 | layer {
381 | bottom: "res2c_branch2a"
382 | top: "res2c_branch2a"
383 | name: "scale2c_branch2a"
384 | type: "Scale"
385 | scale_param {
386 | bias_term: true
387 | }
388 | }
389 |
390 | layer {
391 | bottom: "res2c_branch2a"
392 | top: "res2c_branch2a"
393 | name: "res2c_branch2a_relu"
394 | type: "ReLU"
395 | }
396 |
397 | layer {
398 | bottom: "res2c_branch2a"
399 | top: "res2c_branch2b"
400 | name: "res2c_branch2b"
401 | type: "Convolution"
402 | convolution_param {
403 | num_output: 64
404 | kernel_size: 3
405 | pad: 1
406 | stride: 1
407 | bias_term: false
408 | }
409 | }
410 |
411 | layer {
412 | bottom: "res2c_branch2b"
413 | top: "res2c_branch2b"
414 | name: "bn2c_branch2b"
415 | type: "BatchNorm"
416 | batch_norm_param {
417 | use_global_stats: true
418 | }
419 | }
420 |
421 | layer {
422 | bottom: "res2c_branch2b"
423 | top: "res2c_branch2b"
424 | name: "scale2c_branch2b"
425 | type: "Scale"
426 | scale_param {
427 | bias_term: true
428 | }
429 | }
430 |
431 | layer {
432 | bottom: "res2c_branch2b"
433 | top: "res2c_branch2b"
434 | name: "res2c_branch2b_relu"
435 | type: "ReLU"
436 | }
437 |
438 | layer {
439 | bottom: "res2c_branch2b"
440 | top: "res2c_branch2c"
441 | name: "res2c_branch2c"
442 | type: "Convolution"
443 | convolution_param {
444 | num_output: 256
445 | kernel_size: 1
446 | pad: 0
447 | stride: 1
448 | bias_term: false
449 | }
450 | }
451 |
452 | layer {
453 | bottom: "res2c_branch2c"
454 | top: "res2c_branch2c"
455 | name: "bn2c_branch2c"
456 | type: "BatchNorm"
457 | batch_norm_param {
458 | use_global_stats: true
459 | }
460 | }
461 |
462 | layer {
463 | bottom: "res2c_branch2c"
464 | top: "res2c_branch2c"
465 | name: "scale2c_branch2c"
466 | type: "Scale"
467 | scale_param {
468 | bias_term: true
469 | }
470 | }
471 |
472 | layer {
473 | bottom: "res2b"
474 | bottom: "res2c_branch2c"
475 | top: "res2c"
476 | name: "res2c"
477 | type: "Eltwise"
478 | }
479 |
480 | layer {
481 | bottom: "res2c"
482 | top: "res2c"
483 | name: "res2c_relu"
484 | type: "ReLU"
485 | }
486 |
487 | layer {
488 | bottom: "res2c"
489 | top: "res3a_branch1"
490 | name: "res3a_branch1"
491 | type: "Convolution"
492 | convolution_param {
493 | num_output: 512
494 | kernel_size: 1
495 | pad: 0
496 | stride: 2
497 | bias_term: false
498 | }
499 | }
500 |
501 | layer {
502 | bottom: "res3a_branch1"
503 | top: "res3a_branch1"
504 | name: "bn3a_branch1"
505 | type: "BatchNorm"
506 | batch_norm_param {
507 | use_global_stats: true
508 | }
509 | }
510 |
511 | layer {
512 | bottom: "res3a_branch1"
513 | top: "res3a_branch1"
514 | name: "scale3a_branch1"
515 | type: "Scale"
516 | scale_param {
517 | bias_term: true
518 | }
519 | }
520 |
521 | layer {
522 | bottom: "res2c"
523 | top: "res3a_branch2a"
524 | name: "res3a_branch2a"
525 | type: "Convolution"
526 | convolution_param {
527 | num_output: 128
528 | kernel_size: 1
529 | pad: 0
530 | stride: 2
531 | bias_term: false
532 | }
533 | }
534 |
535 | layer {
536 | bottom: "res3a_branch2a"
537 | top: "res3a_branch2a"
538 | name: "bn3a_branch2a"
539 | type: "BatchNorm"
540 | batch_norm_param {
541 | use_global_stats: true
542 | }
543 | }
544 |
545 | layer {
546 | bottom: "res3a_branch2a"
547 | top: "res3a_branch2a"
548 | name: "scale3a_branch2a"
549 | type: "Scale"
550 | scale_param {
551 | bias_term: true
552 | }
553 | }
554 |
555 | layer {
556 | bottom: "res3a_branch2a"
557 | top: "res3a_branch2a"
558 | name: "res3a_branch2a_relu"
559 | type: "ReLU"
560 | }
561 |
562 | layer {
563 | bottom: "res3a_branch2a"
564 | top: "res3a_branch2b"
565 | name: "res3a_branch2b"
566 | type: "Convolution"
567 | convolution_param {
568 | num_output: 128
569 | kernel_size: 3
570 | pad: 1
571 | stride: 1
572 | bias_term: false
573 | }
574 | }
575 |
576 | layer {
577 | bottom: "res3a_branch2b"
578 | top: "res3a_branch2b"
579 | name: "bn3a_branch2b"
580 | type: "BatchNorm"
581 | batch_norm_param {
582 | use_global_stats: true
583 | }
584 | }
585 |
586 | layer {
587 | bottom: "res3a_branch2b"
588 | top: "res3a_branch2b"
589 | name: "scale3a_branch2b"
590 | type: "Scale"
591 | scale_param {
592 | bias_term: true
593 | }
594 | }
595 |
596 | layer {
597 | bottom: "res3a_branch2b"
598 | top: "res3a_branch2b"
599 | name: "res3a_branch2b_relu"
600 | type: "ReLU"
601 | }
602 |
603 | layer {
604 | bottom: "res3a_branch2b"
605 | top: "res3a_branch2c"
606 | name: "res3a_branch2c"
607 | type: "Convolution"
608 | convolution_param {
609 | num_output: 512
610 | kernel_size: 1
611 | pad: 0
612 | stride: 1
613 | bias_term: false
614 | }
615 | }
616 |
617 | layer {
618 | bottom: "res3a_branch2c"
619 | top: "res3a_branch2c"
620 | name: "bn3a_branch2c"
621 | type: "BatchNorm"
622 | batch_norm_param {
623 | use_global_stats: true
624 | }
625 | }
626 |
627 | layer {
628 | bottom: "res3a_branch2c"
629 | top: "res3a_branch2c"
630 | name: "scale3a_branch2c"
631 | type: "Scale"
632 | scale_param {
633 | bias_term: true
634 | }
635 | }
636 |
637 | layer {
638 | bottom: "res3a_branch1"
639 | bottom: "res3a_branch2c"
640 | top: "res3a"
641 | name: "res3a"
642 | type: "Eltwise"
643 | }
644 |
645 | layer {
646 | bottom: "res3a"
647 | top: "res3a"
648 | name: "res3a_relu"
649 | type: "ReLU"
650 | }
651 |
652 | layer {
653 | bottom: "res3a"
654 | top: "res3b_branch2a"
655 | name: "res3b_branch2a"
656 | type: "Convolution"
657 | convolution_param {
658 | num_output: 128
659 | kernel_size: 1
660 | pad: 0
661 | stride: 1
662 | bias_term: false
663 | }
664 | }
665 |
666 | layer {
667 | bottom: "res3b_branch2a"
668 | top: "res3b_branch2a"
669 | name: "bn3b_branch2a"
670 | type: "BatchNorm"
671 | batch_norm_param {
672 | use_global_stats: true
673 | }
674 | }
675 |
676 | layer {
677 | bottom: "res3b_branch2a"
678 | top: "res3b_branch2a"
679 | name: "scale3b_branch2a"
680 | type: "Scale"
681 | scale_param {
682 | bias_term: true
683 | }
684 | }
685 |
686 | layer {
687 | bottom: "res3b_branch2a"
688 | top: "res3b_branch2a"
689 | name: "res3b_branch2a_relu"
690 | type: "ReLU"
691 | }
692 |
693 | layer {
694 | bottom: "res3b_branch2a"
695 | top: "res3b_branch2b"
696 | name: "res3b_branch2b"
697 | type: "Convolution"
698 | convolution_param {
699 | num_output: 128
700 | kernel_size: 3
701 | pad: 1
702 | stride: 1
703 | bias_term: false
704 | }
705 | }
706 |
707 | layer {
708 | bottom: "res3b_branch2b"
709 | top: "res3b_branch2b"
710 | name: "bn3b_branch2b"
711 | type: "BatchNorm"
712 | batch_norm_param {
713 | use_global_stats: true
714 | }
715 | }
716 |
717 | layer {
718 | bottom: "res3b_branch2b"
719 | top: "res3b_branch2b"
720 | name: "scale3b_branch2b"
721 | type: "Scale"
722 | scale_param {
723 | bias_term: true
724 | }
725 | }
726 |
727 | layer {
728 | bottom: "res3b_branch2b"
729 | top: "res3b_branch2b"
730 | name: "res3b_branch2b_relu"
731 | type: "ReLU"
732 | }
733 |
734 | layer {
735 | bottom: "res3b_branch2b"
736 | top: "res3b_branch2c"
737 | name: "res3b_branch2c"
738 | type: "Convolution"
739 | convolution_param {
740 | num_output: 512
741 | kernel_size: 1
742 | pad: 0
743 | stride: 1
744 | bias_term: false
745 | }
746 | }
747 |
748 | layer {
749 | bottom: "res3b_branch2c"
750 | top: "res3b_branch2c"
751 | name: "bn3b_branch2c"
752 | type: "BatchNorm"
753 | batch_norm_param {
754 | use_global_stats: true
755 | }
756 | }
757 |
758 | layer {
759 | bottom: "res3b_branch2c"
760 | top: "res3b_branch2c"
761 | name: "scale3b_branch2c"
762 | type: "Scale"
763 | scale_param {
764 | bias_term: true
765 | }
766 | }
767 |
768 | layer {
769 | bottom: "res3a"
770 | bottom: "res3b_branch2c"
771 | top: "res3b"
772 | name: "res3b"
773 | type: "Eltwise"
774 | }
775 |
776 | layer {
777 | bottom: "res3b"
778 | top: "res3b"
779 | name: "res3b_relu"
780 | type: "ReLU"
781 | }
782 |
783 | layer {
784 | bottom: "res3b"
785 | top: "res3c_branch2a"
786 | name: "res3c_branch2a"
787 | type: "Convolution"
788 | convolution_param {
789 | num_output: 128
790 | kernel_size: 1
791 | pad: 0
792 | stride: 1
793 | bias_term: false
794 | }
795 | }
796 |
797 | layer {
798 | bottom: "res3c_branch2a"
799 | top: "res3c_branch2a"
800 | name: "bn3c_branch2a"
801 | type: "BatchNorm"
802 | batch_norm_param {
803 | use_global_stats: true
804 | }
805 | }
806 |
807 | layer {
808 | bottom: "res3c_branch2a"
809 | top: "res3c_branch2a"
810 | name: "scale3c_branch2a"
811 | type: "Scale"
812 | scale_param {
813 | bias_term: true
814 | }
815 | }
816 |
817 | layer {
818 | bottom: "res3c_branch2a"
819 | top: "res3c_branch2a"
820 | name: "res3c_branch2a_relu"
821 | type: "ReLU"
822 | }
823 |
824 | layer {
825 | bottom: "res3c_branch2a"
826 | top: "res3c_branch2b"
827 | name: "res3c_branch2b"
828 | type: "Convolution"
829 | convolution_param {
830 | num_output: 128
831 | kernel_size: 3
832 | pad: 1
833 | stride: 1
834 | bias_term: false
835 | }
836 | }
837 |
838 | layer {
839 | bottom: "res3c_branch2b"
840 | top: "res3c_branch2b"
841 | name: "bn3c_branch2b"
842 | type: "BatchNorm"
843 | batch_norm_param {
844 | use_global_stats: true
845 | }
846 | }
847 |
848 | layer {
849 | bottom: "res3c_branch2b"
850 | top: "res3c_branch2b"
851 | name: "scale3c_branch2b"
852 | type: "Scale"
853 | scale_param {
854 | bias_term: true
855 | }
856 | }
857 |
858 | layer {
859 | bottom: "res3c_branch2b"
860 | top: "res3c_branch2b"
861 | name: "res3c_branch2b_relu"
862 | type: "ReLU"
863 | }
864 |
865 | layer {
866 | bottom: "res3c_branch2b"
867 | top: "res3c_branch2c"
868 | name: "res3c_branch2c"
869 | type: "Convolution"
870 | convolution_param {
871 | num_output: 512
872 | kernel_size: 1
873 | pad: 0
874 | stride: 1
875 | bias_term: false
876 | }
877 | }
878 |
879 | layer {
880 | bottom: "res3c_branch2c"
881 | top: "res3c_branch2c"
882 | name: "bn3c_branch2c"
883 | type: "BatchNorm"
884 | batch_norm_param {
885 | use_global_stats: true
886 | }
887 | }
888 |
889 | layer {
890 | bottom: "res3c_branch2c"
891 | top: "res3c_branch2c"
892 | name: "scale3c_branch2c"
893 | type: "Scale"
894 | scale_param {
895 | bias_term: true
896 | }
897 | }
898 |
899 | layer {
900 | bottom: "res3b"
901 | bottom: "res3c_branch2c"
902 | top: "res3c"
903 | name: "res3c"
904 | type: "Eltwise"
905 | }
906 |
907 | layer {
908 | bottom: "res3c"
909 | top: "res3c"
910 | name: "res3c_relu"
911 | type: "ReLU"
912 | }
913 |
914 | layer {
915 | bottom: "res3c"
916 | top: "res3d_branch2a"
917 | name: "res3d_branch2a"
918 | type: "Convolution"
919 | convolution_param {
920 | num_output: 128
921 | kernel_size: 1
922 | pad: 0
923 | stride: 1
924 | bias_term: false
925 | }
926 | }
927 |
928 | layer {
929 | bottom: "res3d_branch2a"
930 | top: "res3d_branch2a"
931 | name: "bn3d_branch2a"
932 | type: "BatchNorm"
933 | batch_norm_param {
934 | use_global_stats: true
935 | }
936 | }
937 |
938 | layer {
939 | bottom: "res3d_branch2a"
940 | top: "res3d_branch2a"
941 | name: "scale3d_branch2a"
942 | type: "Scale"
943 | scale_param {
944 | bias_term: true
945 | }
946 | }
947 |
948 | layer {
949 | bottom: "res3d_branch2a"
950 | top: "res3d_branch2a"
951 | name: "res3d_branch2a_relu"
952 | type: "ReLU"
953 | }
954 |
955 | layer {
956 | bottom: "res3d_branch2a"
957 | top: "res3d_branch2b"
958 | name: "res3d_branch2b"
959 | type: "Convolution"
960 | convolution_param {
961 | num_output: 128
962 | kernel_size: 3
963 | pad: 1
964 | stride: 1
965 | bias_term: false
966 | }
967 | }
968 |
969 | layer {
970 | bottom: "res3d_branch2b"
971 | top: "res3d_branch2b"
972 | name: "bn3d_branch2b"
973 | type: "BatchNorm"
974 | batch_norm_param {
975 | use_global_stats: true
976 | }
977 | }
978 |
979 | layer {
980 | bottom: "res3d_branch2b"
981 | top: "res3d_branch2b"
982 | name: "scale3d_branch2b"
983 | type: "Scale"
984 | scale_param {
985 | bias_term: true
986 | }
987 | }
988 |
989 | layer {
990 | bottom: "res3d_branch2b"
991 | top: "res3d_branch2b"
992 | name: "res3d_branch2b_relu"
993 | type: "ReLU"
994 | }
995 |
996 | layer {
997 | bottom: "res3d_branch2b"
998 | top: "res3d_branch2c"
999 | name: "res3d_branch2c"
1000 | type: "Convolution"
1001 | convolution_param {
1002 | num_output: 512
1003 | kernel_size: 1
1004 | pad: 0
1005 | stride: 1
1006 | bias_term: false
1007 | }
1008 | }
1009 |
1010 | layer {
1011 | bottom: "res3d_branch2c"
1012 | top: "res3d_branch2c"
1013 | name: "bn3d_branch2c"
1014 | type: "BatchNorm"
1015 | batch_norm_param {
1016 | use_global_stats: true
1017 | }
1018 | }
1019 |
1020 | layer {
1021 | bottom: "res3d_branch2c"
1022 | top: "res3d_branch2c"
1023 | name: "scale3d_branch2c"
1024 | type: "Scale"
1025 | scale_param {
1026 | bias_term: true
1027 | }
1028 | }
1029 |
1030 | layer {
1031 | bottom: "res3c"
1032 | bottom: "res3d_branch2c"
1033 | top: "res3d"
1034 | name: "res3d"
1035 | type: "Eltwise"
1036 | }
1037 |
1038 | layer {
1039 | bottom: "res3d"
1040 | top: "res3d"
1041 | name: "res3d_relu"
1042 | type: "ReLU"
1043 | }
1044 |
1045 | layer {
1046 | bottom: "res3d"
1047 | top: "res4a_branch1"
1048 | name: "res4a_branch1"
1049 | type: "Convolution"
1050 | convolution_param {
1051 | num_output: 1024
1052 | kernel_size: 1
1053 | pad: 0
1054 | stride: 2
1055 | bias_term: false
1056 | }
1057 | }
1058 |
1059 | layer {
1060 | bottom: "res4a_branch1"
1061 | top: "res4a_branch1"
1062 | name: "bn4a_branch1"
1063 | type: "BatchNorm"
1064 | batch_norm_param {
1065 | use_global_stats: true
1066 | }
1067 | }
1068 |
1069 | layer {
1070 | bottom: "res4a_branch1"
1071 | top: "res4a_branch1"
1072 | name: "scale4a_branch1"
1073 | type: "Scale"
1074 | scale_param {
1075 | bias_term: true
1076 | }
1077 | }
1078 |
1079 | layer {
1080 | bottom: "res3d"
1081 | top: "res4a_branch2a"
1082 | name: "res4a_branch2a"
1083 | type: "Convolution"
1084 | convolution_param {
1085 | num_output: 256
1086 | kernel_size: 1
1087 | pad: 0
1088 | stride: 2
1089 | bias_term: false
1090 | }
1091 | }
1092 |
1093 | layer {
1094 | bottom: "res4a_branch2a"
1095 | top: "res4a_branch2a"
1096 | name: "bn4a_branch2a"
1097 | type: "BatchNorm"
1098 | batch_norm_param {
1099 | use_global_stats: true
1100 | }
1101 | }
1102 |
1103 | layer {
1104 | bottom: "res4a_branch2a"
1105 | top: "res4a_branch2a"
1106 | name: "scale4a_branch2a"
1107 | type: "Scale"
1108 | scale_param {
1109 | bias_term: true
1110 | }
1111 | }
1112 |
1113 | layer {
1114 | bottom: "res4a_branch2a"
1115 | top: "res4a_branch2a"
1116 | name: "res4a_branch2a_relu"
1117 | type: "ReLU"
1118 | }
1119 |
1120 | layer {
1121 | bottom: "res4a_branch2a"
1122 | top: "res4a_branch2b"
1123 | name: "res4a_branch2b"
1124 | type: "Convolution"
1125 | convolution_param {
1126 | num_output: 256
1127 | kernel_size: 3
1128 | pad: 1
1129 | stride: 1
1130 | bias_term: false
1131 | }
1132 | }
1133 |
1134 | layer {
1135 | bottom: "res4a_branch2b"
1136 | top: "res4a_branch2b"
1137 | name: "bn4a_branch2b"
1138 | type: "BatchNorm"
1139 | batch_norm_param {
1140 | use_global_stats: true
1141 | }
1142 | }
1143 |
1144 | layer {
1145 | bottom: "res4a_branch2b"
1146 | top: "res4a_branch2b"
1147 | name: "scale4a_branch2b"
1148 | type: "Scale"
1149 | scale_param {
1150 | bias_term: true
1151 | }
1152 | }
1153 |
1154 | layer {
1155 | bottom: "res4a_branch2b"
1156 | top: "res4a_branch2b"
1157 | name: "res4a_branch2b_relu"
1158 | type: "ReLU"
1159 | }
1160 |
1161 | layer {
1162 | bottom: "res4a_branch2b"
1163 | top: "res4a_branch2c"
1164 | name: "res4a_branch2c"
1165 | type: "Convolution"
1166 | convolution_param {
1167 | num_output: 1024
1168 | kernel_size: 1
1169 | pad: 0
1170 | stride: 1
1171 | bias_term: false
1172 | }
1173 | }
1174 |
1175 | layer {
1176 | bottom: "res4a_branch2c"
1177 | top: "res4a_branch2c"
1178 | name: "bn4a_branch2c"
1179 | type: "BatchNorm"
1180 | batch_norm_param {
1181 | use_global_stats: true
1182 | }
1183 | }
1184 |
1185 | layer {
1186 | bottom: "res4a_branch2c"
1187 | top: "res4a_branch2c"
1188 | name: "scale4a_branch2c"
1189 | type: "Scale"
1190 | scale_param {
1191 | bias_term: true
1192 | }
1193 | }
1194 |
1195 | layer {
1196 | bottom: "res4a_branch1"
1197 | bottom: "res4a_branch2c"
1198 | top: "res4a"
1199 | name: "res4a"
1200 | type: "Eltwise"
1201 | }
1202 |
1203 | layer {
1204 | bottom: "res4a"
1205 | top: "res4a"
1206 | name: "res4a_relu"
1207 | type: "ReLU"
1208 | }
1209 |
1210 | layer {
1211 | bottom: "res4a"
1212 | top: "res4b_branch2a"
1213 | name: "res4b_branch2a"
1214 | type: "Convolution"
1215 | convolution_param {
1216 | num_output: 256
1217 | kernel_size: 1
1218 | pad: 0
1219 | stride: 1
1220 | bias_term: false
1221 | }
1222 | }
1223 |
1224 | layer {
1225 | bottom: "res4b_branch2a"
1226 | top: "res4b_branch2a"
1227 | name: "bn4b_branch2a"
1228 | type: "BatchNorm"
1229 | batch_norm_param {
1230 | use_global_stats: true
1231 | }
1232 | }
1233 |
1234 | layer {
1235 | bottom: "res4b_branch2a"
1236 | top: "res4b_branch2a"
1237 | name: "scale4b_branch2a"
1238 | type: "Scale"
1239 | scale_param {
1240 | bias_term: true
1241 | }
1242 | }
1243 |
1244 | layer {
1245 | bottom: "res4b_branch2a"
1246 | top: "res4b_branch2a"
1247 | name: "res4b_branch2a_relu"
1248 | type: "ReLU"
1249 | }
1250 |
1251 | layer {
1252 | bottom: "res4b_branch2a"
1253 | top: "res4b_branch2b"
1254 | name: "res4b_branch2b"
1255 | type: "Convolution"
1256 | convolution_param {
1257 | num_output: 256
1258 | kernel_size: 3
1259 | pad: 1
1260 | stride: 1
1261 | bias_term: false
1262 | }
1263 | }
1264 |
1265 | layer {
1266 | bottom: "res4b_branch2b"
1267 | top: "res4b_branch2b"
1268 | name: "bn4b_branch2b"
1269 | type: "BatchNorm"
1270 | batch_norm_param {
1271 | use_global_stats: true
1272 | }
1273 | }
1274 |
1275 | layer {
1276 | bottom: "res4b_branch2b"
1277 | top: "res4b_branch2b"
1278 | name: "scale4b_branch2b"
1279 | type: "Scale"
1280 | scale_param {
1281 | bias_term: true
1282 | }
1283 | }
1284 |
1285 | layer {
1286 | bottom: "res4b_branch2b"
1287 | top: "res4b_branch2b"
1288 | name: "res4b_branch2b_relu"
1289 | type: "ReLU"
1290 | }
1291 |
1292 | layer {
1293 | bottom: "res4b_branch2b"
1294 | top: "res4b_branch2c"
1295 | name: "res4b_branch2c"
1296 | type: "Convolution"
1297 | convolution_param {
1298 | num_output: 1024
1299 | kernel_size: 1
1300 | pad: 0
1301 | stride: 1
1302 | bias_term: false
1303 | }
1304 | }
1305 |
1306 | layer {
1307 | bottom: "res4b_branch2c"
1308 | top: "res4b_branch2c"
1309 | name: "bn4b_branch2c"
1310 | type: "BatchNorm"
1311 | batch_norm_param {
1312 | use_global_stats: true
1313 | }
1314 | }
1315 |
1316 | layer {
1317 | bottom: "res4b_branch2c"
1318 | top: "res4b_branch2c"
1319 | name: "scale4b_branch2c"
1320 | type: "Scale"
1321 | scale_param {
1322 | bias_term: true
1323 | }
1324 | }
1325 |
1326 | layer {
1327 | bottom: "res4a"
1328 | bottom: "res4b_branch2c"
1329 | top: "res4b"
1330 | name: "res4b"
1331 | type: "Eltwise"
1332 | }
1333 |
1334 | layer {
1335 | bottom: "res4b"
1336 | top: "res4b"
1337 | name: "res4b_relu"
1338 | type: "ReLU"
1339 | }
1340 |
1341 | layer {
1342 | bottom: "res4b"
1343 | top: "res4c_branch2a"
1344 | name: "res4c_branch2a"
1345 | type: "Convolution"
1346 | convolution_param {
1347 | num_output: 256
1348 | kernel_size: 1
1349 | pad: 0
1350 | stride: 1
1351 | bias_term: false
1352 | }
1353 | }
1354 |
1355 | layer {
1356 | bottom: "res4c_branch2a"
1357 | top: "res4c_branch2a"
1358 | name: "bn4c_branch2a"
1359 | type: "BatchNorm"
1360 | batch_norm_param {
1361 | use_global_stats: true
1362 | }
1363 | }
1364 |
1365 | layer {
1366 | bottom: "res4c_branch2a"
1367 | top: "res4c_branch2a"
1368 | name: "scale4c_branch2a"
1369 | type: "Scale"
1370 | scale_param {
1371 | bias_term: true
1372 | }
1373 | }
1374 |
1375 | layer {
1376 | bottom: "res4c_branch2a"
1377 | top: "res4c_branch2a"
1378 | name: "res4c_branch2a_relu"
1379 | type: "ReLU"
1380 | }
1381 |
1382 | layer {
1383 | bottom: "res4c_branch2a"
1384 | top: "res4c_branch2b"
1385 | name: "res4c_branch2b"
1386 | type: "Convolution"
1387 | convolution_param {
1388 | num_output: 256
1389 | kernel_size: 3
1390 | pad: 1
1391 | stride: 1
1392 | bias_term: false
1393 | }
1394 | }
1395 |
1396 | layer {
1397 | bottom: "res4c_branch2b"
1398 | top: "res4c_branch2b"
1399 | name: "bn4c_branch2b"
1400 | type: "BatchNorm"
1401 | batch_norm_param {
1402 | use_global_stats: true
1403 | }
1404 | }
1405 |
1406 | layer {
1407 | bottom: "res4c_branch2b"
1408 | top: "res4c_branch2b"
1409 | name: "scale4c_branch2b"
1410 | type: "Scale"
1411 | scale_param {
1412 | bias_term: true
1413 | }
1414 | }
1415 |
1416 | layer {
1417 | bottom: "res4c_branch2b"
1418 | top: "res4c_branch2b"
1419 | name: "res4c_branch2b_relu"
1420 | type: "ReLU"
1421 | }
1422 |
1423 | layer {
1424 | bottom: "res4c_branch2b"
1425 | top: "res4c_branch2c"
1426 | name: "res4c_branch2c"
1427 | type: "Convolution"
1428 | convolution_param {
1429 | num_output: 1024
1430 | kernel_size: 1
1431 | pad: 0
1432 | stride: 1
1433 | bias_term: false
1434 | }
1435 | }
1436 |
1437 | layer {
1438 | bottom: "res4c_branch2c"
1439 | top: "res4c_branch2c"
1440 | name: "bn4c_branch2c"
1441 | type: "BatchNorm"
1442 | batch_norm_param {
1443 | use_global_stats: true
1444 | }
1445 | }
1446 |
1447 | layer {
1448 | bottom: "res4c_branch2c"
1449 | top: "res4c_branch2c"
1450 | name: "scale4c_branch2c"
1451 | type: "Scale"
1452 | scale_param {
1453 | bias_term: true
1454 | }
1455 | }
1456 |
1457 | layer {
1458 | bottom: "res4b"
1459 | bottom: "res4c_branch2c"
1460 | top: "res4c"
1461 | name: "res4c"
1462 | type: "Eltwise"
1463 | }
1464 |
1465 | layer {
1466 | bottom: "res4c"
1467 | top: "res4c"
1468 | name: "res4c_relu"
1469 | type: "ReLU"
1470 | }
1471 |
1472 | layer {
1473 | bottom: "res4c"
1474 | top: "res4d_branch2a"
1475 | name: "res4d_branch2a"
1476 | type: "Convolution"
1477 | convolution_param {
1478 | num_output: 256
1479 | kernel_size: 1
1480 | pad: 0
1481 | stride: 1
1482 | bias_term: false
1483 | }
1484 | }
1485 |
1486 | layer {
1487 | bottom: "res4d_branch2a"
1488 | top: "res4d_branch2a"
1489 | name: "bn4d_branch2a"
1490 | type: "BatchNorm"
1491 | batch_norm_param {
1492 | use_global_stats: true
1493 | }
1494 | }
1495 |
1496 | layer {
1497 | bottom: "res4d_branch2a"
1498 | top: "res4d_branch2a"
1499 | name: "scale4d_branch2a"
1500 | type: "Scale"
1501 | scale_param {
1502 | bias_term: true
1503 | }
1504 | }
1505 |
1506 | layer {
1507 | bottom: "res4d_branch2a"
1508 | top: "res4d_branch2a"
1509 | name: "res4d_branch2a_relu"
1510 | type: "ReLU"
1511 | }
1512 |
1513 | layer {
1514 | bottom: "res4d_branch2a"
1515 | top: "res4d_branch2b"
1516 | name: "res4d_branch2b"
1517 | type: "Convolution"
1518 | convolution_param {
1519 | num_output: 256
1520 | kernel_size: 3
1521 | pad: 1
1522 | stride: 1
1523 | bias_term: false
1524 | }
1525 | }
1526 |
1527 | layer {
1528 | bottom: "res4d_branch2b"
1529 | top: "res4d_branch2b"
1530 | name: "bn4d_branch2b"
1531 | type: "BatchNorm"
1532 | batch_norm_param {
1533 | use_global_stats: true
1534 | }
1535 | }
1536 |
1537 | layer {
1538 | bottom: "res4d_branch2b"
1539 | top: "res4d_branch2b"
1540 | name: "scale4d_branch2b"
1541 | type: "Scale"
1542 | scale_param {
1543 | bias_term: true
1544 | }
1545 | }
1546 |
1547 | layer {
1548 | bottom: "res4d_branch2b"
1549 | top: "res4d_branch2b"
1550 | name: "res4d_branch2b_relu"
1551 | type: "ReLU"
1552 | }
1553 |
1554 | layer {
1555 | bottom: "res4d_branch2b"
1556 | top: "res4d_branch2c"
1557 | name: "res4d_branch2c"
1558 | type: "Convolution"
1559 | convolution_param {
1560 | num_output: 1024
1561 | kernel_size: 1
1562 | pad: 0
1563 | stride: 1
1564 | bias_term: false
1565 | }
1566 | }
1567 |
1568 | layer {
1569 | bottom: "res4d_branch2c"
1570 | top: "res4d_branch2c"
1571 | name: "bn4d_branch2c"
1572 | type: "BatchNorm"
1573 | batch_norm_param {
1574 | use_global_stats: true
1575 | }
1576 | }
1577 |
1578 | layer {
1579 | bottom: "res4d_branch2c"
1580 | top: "res4d_branch2c"
1581 | name: "scale4d_branch2c"
1582 | type: "Scale"
1583 | scale_param {
1584 | bias_term: true
1585 | }
1586 | }
1587 |
1588 | layer {
1589 | bottom: "res4c"
1590 | bottom: "res4d_branch2c"
1591 | top: "res4d"
1592 | name: "res4d"
1593 | type: "Eltwise"
1594 | }
1595 |
1596 | layer {
1597 | bottom: "res4d"
1598 | top: "res4d"
1599 | name: "res4d_relu"
1600 | type: "ReLU"
1601 | }
1602 |
1603 | layer {
1604 | bottom: "res4d"
1605 | top: "res4e_branch2a"
1606 | name: "res4e_branch2a"
1607 | type: "Convolution"
1608 | convolution_param {
1609 | num_output: 256
1610 | kernel_size: 1
1611 | pad: 0
1612 | stride: 1
1613 | bias_term: false
1614 | }
1615 | }
1616 |
1617 | layer {
1618 | bottom: "res4e_branch2a"
1619 | top: "res4e_branch2a"
1620 | name: "bn4e_branch2a"
1621 | type: "BatchNorm"
1622 | batch_norm_param {
1623 | use_global_stats: true
1624 | }
1625 | }
1626 |
1627 | layer {
1628 | bottom: "res4e_branch2a"
1629 | top: "res4e_branch2a"
1630 | name: "scale4e_branch2a"
1631 | type: "Scale"
1632 | scale_param {
1633 | bias_term: true
1634 | }
1635 | }
1636 |
1637 | layer {
1638 | bottom: "res4e_branch2a"
1639 | top: "res4e_branch2a"
1640 | name: "res4e_branch2a_relu"
1641 | type: "ReLU"
1642 | }
1643 |
1644 | layer {
1645 | bottom: "res4e_branch2a"
1646 | top: "res4e_branch2b"
1647 | name: "res4e_branch2b"
1648 | type: "Convolution"
1649 | convolution_param {
1650 | num_output: 256
1651 | kernel_size: 3
1652 | pad: 1
1653 | stride: 1
1654 | bias_term: false
1655 | }
1656 | }
1657 |
1658 | layer {
1659 | bottom: "res4e_branch2b"
1660 | top: "res4e_branch2b"
1661 | name: "bn4e_branch2b"
1662 | type: "BatchNorm"
1663 | batch_norm_param {
1664 | use_global_stats: true
1665 | }
1666 | }
1667 |
1668 | layer {
1669 | bottom: "res4e_branch2b"
1670 | top: "res4e_branch2b"
1671 | name: "scale4e_branch2b"
1672 | type: "Scale"
1673 | scale_param {
1674 | bias_term: true
1675 | }
1676 | }
1677 |
1678 | layer {
1679 | bottom: "res4e_branch2b"
1680 | top: "res4e_branch2b"
1681 | name: "res4e_branch2b_relu"
1682 | type: "ReLU"
1683 | }
1684 |
1685 | layer {
1686 | bottom: "res4e_branch2b"
1687 | top: "res4e_branch2c"
1688 | name: "res4e_branch2c"
1689 | type: "Convolution"
1690 | convolution_param {
1691 | num_output: 1024
1692 | kernel_size: 1
1693 | pad: 0
1694 | stride: 1
1695 | bias_term: false
1696 | }
1697 | }
1698 |
1699 | layer {
1700 | bottom: "res4e_branch2c"
1701 | top: "res4e_branch2c"
1702 | name: "bn4e_branch2c"
1703 | type: "BatchNorm"
1704 | batch_norm_param {
1705 | use_global_stats: true
1706 | }
1707 | }
1708 |
1709 | layer {
1710 | bottom: "res4e_branch2c"
1711 | top: "res4e_branch2c"
1712 | name: "scale4e_branch2c"
1713 | type: "Scale"
1714 | scale_param {
1715 | bias_term: true
1716 | }
1717 | }
1718 |
1719 | layer {
1720 | bottom: "res4d"
1721 | bottom: "res4e_branch2c"
1722 | top: "res4e"
1723 | name: "res4e"
1724 | type: "Eltwise"
1725 | }
1726 |
1727 | layer {
1728 | bottom: "res4e"
1729 | top: "res4e"
1730 | name: "res4e_relu"
1731 | type: "ReLU"
1732 | }
1733 |
1734 | layer {
1735 | bottom: "res4e"
1736 | top: "res4f_branch2a"
1737 | name: "res4f_branch2a"
1738 | type: "Convolution"
1739 | convolution_param {
1740 | num_output: 256
1741 | kernel_size: 1
1742 | pad: 0
1743 | stride: 1
1744 | bias_term: false
1745 | }
1746 | }
1747 |
1748 | layer {
1749 | bottom: "res4f_branch2a"
1750 | top: "res4f_branch2a"
1751 | name: "bn4f_branch2a"
1752 | type: "BatchNorm"
1753 | batch_norm_param {
1754 | use_global_stats: true
1755 | }
1756 | }
1757 |
1758 | layer {
1759 | bottom: "res4f_branch2a"
1760 | top: "res4f_branch2a"
1761 | name: "scale4f_branch2a"
1762 | type: "Scale"
1763 | scale_param {
1764 | bias_term: true
1765 | }
1766 | }
1767 |
1768 | layer {
1769 | bottom: "res4f_branch2a"
1770 | top: "res4f_branch2a"
1771 | name: "res4f_branch2a_relu"
1772 | type: "ReLU"
1773 | }
1774 |
1775 | layer {
1776 | bottom: "res4f_branch2a"
1777 | top: "res4f_branch2b"
1778 | name: "res4f_branch2b"
1779 | type: "Convolution"
1780 | convolution_param {
1781 | num_output: 256
1782 | kernel_size: 3
1783 | pad: 1
1784 | stride: 1
1785 | bias_term: false
1786 | }
1787 | }
1788 |
1789 | layer {
1790 | bottom: "res4f_branch2b"
1791 | top: "res4f_branch2b"
1792 | name: "bn4f_branch2b"
1793 | type: "BatchNorm"
1794 | batch_norm_param {
1795 | use_global_stats: true
1796 | }
1797 | }
1798 |
1799 | layer {
1800 | bottom: "res4f_branch2b"
1801 | top: "res4f_branch2b"
1802 | name: "scale4f_branch2b"
1803 | type: "Scale"
1804 | scale_param {
1805 | bias_term: true
1806 | }
1807 | }
1808 |
1809 | layer {
1810 | bottom: "res4f_branch2b"
1811 | top: "res4f_branch2b"
1812 | name: "res4f_branch2b_relu"
1813 | type: "ReLU"
1814 | }
1815 |
1816 | layer {
1817 | bottom: "res4f_branch2b"
1818 | top: "res4f_branch2c"
1819 | name: "res4f_branch2c"
1820 | type: "Convolution"
1821 | convolution_param {
1822 | num_output: 1024
1823 | kernel_size: 1
1824 | pad: 0
1825 | stride: 1
1826 | bias_term: false
1827 | }
1828 | }
1829 |
1830 | layer {
1831 | bottom: "res4f_branch2c"
1832 | top: "res4f_branch2c"
1833 | name: "bn4f_branch2c"
1834 | type: "BatchNorm"
1835 | batch_norm_param {
1836 | use_global_stats: true
1837 | }
1838 | }
1839 |
1840 | layer {
1841 | bottom: "res4f_branch2c"
1842 | top: "res4f_branch2c"
1843 | name: "scale4f_branch2c"
1844 | type: "Scale"
1845 | scale_param {
1846 | bias_term: true
1847 | }
1848 | }
1849 |
1850 | layer {
1851 | bottom: "res4e"
1852 | bottom: "res4f_branch2c"
1853 | top: "res4f"
1854 | name: "res4f"
1855 | type: "Eltwise"
1856 | }
1857 |
1858 | layer {
1859 | bottom: "res4f"
1860 | top: "res4f"
1861 | name: "res4f_relu"
1862 | type: "ReLU"
1863 | }
1864 |
1865 | layer {
1866 | bottom: "res4f"
1867 | top: "res5a_branch1"
1868 | name: "res5a_branch1"
1869 | type: "Convolution"
1870 | convolution_param {
1871 | num_output: 2048
1872 | kernel_size: 1
1873 | pad: 0
1874 | stride: 2
1875 | bias_term: false
1876 | }
1877 | }
1878 |
1879 | layer {
1880 | bottom: "res5a_branch1"
1881 | top: "res5a_branch1"
1882 | name: "bn5a_branch1"
1883 | type: "BatchNorm"
1884 | batch_norm_param {
1885 | use_global_stats: true
1886 | }
1887 | }
1888 |
1889 | layer {
1890 | bottom: "res5a_branch1"
1891 | top: "res5a_branch1"
1892 | name: "scale5a_branch1"
1893 | type: "Scale"
1894 | scale_param {
1895 | bias_term: true
1896 | }
1897 | }
1898 |
1899 | layer {
1900 | bottom: "res4f"
1901 | top: "res5a_branch2a"
1902 | name: "res5a_branch2a"
1903 | type: "Convolution"
1904 | convolution_param {
1905 | num_output: 512
1906 | kernel_size: 1
1907 | pad: 0
1908 | stride: 2
1909 | bias_term: false
1910 | }
1911 | }
1912 |
1913 | layer {
1914 | bottom: "res5a_branch2a"
1915 | top: "res5a_branch2a"
1916 | name: "bn5a_branch2a"
1917 | type: "BatchNorm"
1918 | batch_norm_param {
1919 | use_global_stats: true
1920 | }
1921 | }
1922 |
1923 | layer {
1924 | bottom: "res5a_branch2a"
1925 | top: "res5a_branch2a"
1926 | name: "scale5a_branch2a"
1927 | type: "Scale"
1928 | scale_param {
1929 | bias_term: true
1930 | }
1931 | }
1932 |
1933 | layer {
1934 | bottom: "res5a_branch2a"
1935 | top: "res5a_branch2a"
1936 | name: "res5a_branch2a_relu"
1937 | type: "ReLU"
1938 | }
1939 |
1940 | layer {
1941 | bottom: "res5a_branch2a"
1942 | top: "res5a_branch2b"
1943 | name: "res5a_branch2b"
1944 | type: "Convolution"
1945 | convolution_param {
1946 | num_output: 512
1947 | kernel_size: 3
1948 | pad: 1
1949 | stride: 1
1950 | bias_term: false
1951 | }
1952 | }
1953 |
1954 | layer {
1955 | bottom: "res5a_branch2b"
1956 | top: "res5a_branch2b"
1957 | name: "bn5a_branch2b"
1958 | type: "BatchNorm"
1959 | batch_norm_param {
1960 | use_global_stats: true
1961 | }
1962 | }
1963 |
1964 | layer {
1965 | bottom: "res5a_branch2b"
1966 | top: "res5a_branch2b"
1967 | name: "scale5a_branch2b"
1968 | type: "Scale"
1969 | scale_param {
1970 | bias_term: true
1971 | }
1972 | }
1973 |
1974 | layer {
1975 | bottom: "res5a_branch2b"
1976 | top: "res5a_branch2b"
1977 | name: "res5a_branch2b_relu"
1978 | type: "ReLU"
1979 | }
1980 |
1981 | layer {
1982 | bottom: "res5a_branch2b"
1983 | top: "res5a_branch2c"
1984 | name: "res5a_branch2c"
1985 | type: "Convolution"
1986 | convolution_param {
1987 | num_output: 2048
1988 | kernel_size: 1
1989 | pad: 0
1990 | stride: 1
1991 | bias_term: false
1992 | }
1993 | }
1994 |
1995 | layer {
1996 | bottom: "res5a_branch2c"
1997 | top: "res5a_branch2c"
1998 | name: "bn5a_branch2c"
1999 | type: "BatchNorm"
2000 | batch_norm_param {
2001 | use_global_stats: true
2002 | }
2003 | }
2004 |
2005 | layer {
2006 | bottom: "res5a_branch2c"
2007 | top: "res5a_branch2c"
2008 | name: "scale5a_branch2c"
2009 | type: "Scale"
2010 | scale_param {
2011 | bias_term: true
2012 | }
2013 | }
2014 |
2015 | layer {
2016 | bottom: "res5a_branch1"
2017 | bottom: "res5a_branch2c"
2018 | top: "res5a"
2019 | name: "res5a"
2020 | type: "Eltwise"
2021 | }
2022 |
2023 | layer {
2024 | bottom: "res5a"
2025 | top: "res5a"
2026 | name: "res5a_relu"
2027 | type: "ReLU"
2028 | }
2029 |
2030 | layer {
2031 | bottom: "res5a"
2032 | top: "res5b_branch2a"
2033 | name: "res5b_branch2a"
2034 | type: "Convolution"
2035 | convolution_param {
2036 | num_output: 512
2037 | kernel_size: 1
2038 | pad: 0
2039 | stride: 1
2040 | bias_term: false
2041 | }
2042 | }
2043 |
2044 | layer {
2045 | bottom: "res5b_branch2a"
2046 | top: "res5b_branch2a"
2047 | name: "bn5b_branch2a"
2048 | type: "BatchNorm"
2049 | batch_norm_param {
2050 | use_global_stats: true
2051 | }
2052 | }
2053 |
2054 | layer {
2055 | bottom: "res5b_branch2a"
2056 | top: "res5b_branch2a"
2057 | name: "scale5b_branch2a"
2058 | type: "Scale"
2059 | scale_param {
2060 | bias_term: true
2061 | }
2062 | }
2063 |
2064 | layer {
2065 | bottom: "res5b_branch2a"
2066 | top: "res5b_branch2a"
2067 | name: "res5b_branch2a_relu"
2068 | type: "ReLU"
2069 | }
2070 |
2071 | layer {
2072 | bottom: "res5b_branch2a"
2073 | top: "res5b_branch2b"
2074 | name: "res5b_branch2b"
2075 | type: "Convolution"
2076 | convolution_param {
2077 | num_output: 512
2078 | kernel_size: 3
2079 | pad: 1
2080 | stride: 1
2081 | bias_term: false
2082 | }
2083 | }
2084 |
2085 | layer {
2086 | bottom: "res5b_branch2b"
2087 | top: "res5b_branch2b"
2088 | name: "bn5b_branch2b"
2089 | type: "BatchNorm"
2090 | batch_norm_param {
2091 | use_global_stats: true
2092 | }
2093 | }
2094 |
2095 | layer {
2096 | bottom: "res5b_branch2b"
2097 | top: "res5b_branch2b"
2098 | name: "scale5b_branch2b"
2099 | type: "Scale"
2100 | scale_param {
2101 | bias_term: true
2102 | }
2103 | }
2104 |
2105 | layer {
2106 | bottom: "res5b_branch2b"
2107 | top: "res5b_branch2b"
2108 | name: "res5b_branch2b_relu"
2109 | type: "ReLU"
2110 | }
2111 |
2112 | layer {
2113 | bottom: "res5b_branch2b"
2114 | top: "res5b_branch2c"
2115 | name: "res5b_branch2c"
2116 | type: "Convolution"
2117 | convolution_param {
2118 | num_output: 2048
2119 | kernel_size: 1
2120 | pad: 0
2121 | stride: 1
2122 | bias_term: false
2123 | }
2124 | }
2125 |
2126 | layer {
2127 | bottom: "res5b_branch2c"
2128 | top: "res5b_branch2c"
2129 | name: "bn5b_branch2c"
2130 | type: "BatchNorm"
2131 | batch_norm_param {
2132 | use_global_stats: true
2133 | }
2134 | }
2135 |
2136 | layer {
2137 | bottom: "res5b_branch2c"
2138 | top: "res5b_branch2c"
2139 | name: "scale5b_branch2c"
2140 | type: "Scale"
2141 | scale_param {
2142 | bias_term: true
2143 | }
2144 | }
2145 |
2146 | layer {
2147 | bottom: "res5a"
2148 | bottom: "res5b_branch2c"
2149 | top: "res5b"
2150 | name: "res5b"
2151 | type: "Eltwise"
2152 | }
2153 |
2154 | layer {
2155 | bottom: "res5b"
2156 | top: "res5b"
2157 | name: "res5b_relu"
2158 | type: "ReLU"
2159 | }
2160 |
2161 | layer {
2162 | bottom: "res5b"
2163 | top: "res5c_branch2a"
2164 | name: "res5c_branch2a"
2165 | type: "Convolution"
2166 | convolution_param {
2167 | num_output: 512
2168 | kernel_size: 1
2169 | pad: 0
2170 | stride: 1
2171 | bias_term: false
2172 | }
2173 | }
2174 |
2175 | layer {
2176 | bottom: "res5c_branch2a"
2177 | top: "res5c_branch2a"
2178 | name: "bn5c_branch2a"
2179 | type: "BatchNorm"
2180 | batch_norm_param {
2181 | use_global_stats: true
2182 | }
2183 | }
2184 |
2185 | layer {
2186 | bottom: "res5c_branch2a"
2187 | top: "res5c_branch2a"
2188 | name: "scale5c_branch2a"
2189 | type: "Scale"
2190 | scale_param {
2191 | bias_term: true
2192 | }
2193 | }
2194 |
2195 | layer {
2196 | bottom: "res5c_branch2a"
2197 | top: "res5c_branch2a"
2198 | name: "res5c_branch2a_relu"
2199 | type: "ReLU"
2200 | }
2201 |
2202 | layer {
2203 | bottom: "res5c_branch2a"
2204 | top: "res5c_branch2b"
2205 | name: "res5c_branch2b"
2206 | type: "Convolution"
2207 | convolution_param {
2208 | num_output: 512
2209 | kernel_size: 3
2210 | pad: 1
2211 | stride: 1
2212 | bias_term: false
2213 | }
2214 | }
2215 |
2216 | layer {
2217 | bottom: "res5c_branch2b"
2218 | top: "res5c_branch2b"
2219 | name: "bn5c_branch2b"
2220 | type: "BatchNorm"
2221 | batch_norm_param {
2222 | use_global_stats: true
2223 | }
2224 | }
2225 |
2226 | layer {
2227 | bottom: "res5c_branch2b"
2228 | top: "res5c_branch2b"
2229 | name: "scale5c_branch2b"
2230 | type: "Scale"
2231 | scale_param {
2232 | bias_term: true
2233 | }
2234 | }
2235 |
2236 | layer {
2237 | bottom: "res5c_branch2b"
2238 | top: "res5c_branch2b"
2239 | name: "res5c_branch2b_relu"
2240 | type: "ReLU"
2241 | }
2242 |
2243 | layer {
2244 | bottom: "res5c_branch2b"
2245 | top: "res5c_branch2c"
2246 | name: "res5c_branch2c"
2247 | type: "Convolution"
2248 | convolution_param {
2249 | num_output: 2048
2250 | kernel_size: 1
2251 | pad: 0
2252 | stride: 1
2253 | bias_term: false
2254 | }
2255 | }
2256 |
2257 | layer {
2258 | bottom: "res5c_branch2c"
2259 | top: "res5c_branch2c"
2260 | name: "bn5c_branch2c"
2261 | type: "BatchNorm"
2262 | batch_norm_param {
2263 | use_global_stats: true
2264 | }
2265 | }
2266 |
2267 | layer {
2268 | bottom: "res5c_branch2c"
2269 | top: "res5c_branch2c"
2270 | name: "scale5c_branch2c"
2271 | type: "Scale"
2272 | scale_param {
2273 | bias_term: true
2274 | }
2275 | }
2276 |
2277 | layer {
2278 | bottom: "res5b"
2279 | bottom: "res5c_branch2c"
2280 | top: "res5c"
2281 | name: "res5c"
2282 | type: "Eltwise"
2283 | }
2284 |
2285 | layer {
2286 | bottom: "res5c"
2287 | top: "res5c"
2288 | name: "res5c_relu"
2289 | type: "ReLU"
2290 | }
2291 |
2292 | layer {
2293 | bottom: "res5c"
2294 | top: "pool5"
2295 | name: "pool5"
2296 | type: "Pooling"
2297 | pooling_param {
2298 | kernel_size: 7
2299 | stride: 1
2300 | pool: AVE
2301 | }
2302 | }
2303 |
2304 | layer {
2305 | bottom: "pool5"
2306 | top: "fc1000"
2307 | name: "fc1000"
2308 | type: "InnerProduct"
2309 | inner_product_param {
2310 | num_output: 1000
2311 | }
2312 | }
2313 |
2314 | layer {
2315 | bottom: "fc1000"
2316 | top: "prob"
2317 | name: "prob"
2318 | type: "Softmax"
2319 | }
2320 |
2321 |
--------------------------------------------------------------------------------
/Deep_Learning_Algorithm/models/icnet.prototxt:
--------------------------------------------------------------------------------
1 | name: "ICNet"
2 |
3 | layer {
4 | name: "input"
5 | type: "Input"
6 | top: "data"
7 | input_param {
8 | shape {
9 | dim: 1
10 | dim: 3
11 | dim: 257
12 | dim: 513
13 | }
14 | }
15 | }
16 |
17 | #layer {
18 | # name: "data_sub1"
19 | # type: "Scale"
20 | ## bottom: "data"
21 | # top: "data_sub1"
22 | #}
23 |
24 | layer {
25 | name: "data_sub2"
26 | type: "Interp"
27 | bottom: "data"
28 | top: "data_sub2"
29 | interp_param {
30 | shrink_factor: 2
31 | }
32 | }
33 | layer {
34 | name: "conv1_1_3x3_s2"
35 | type: "Convolution"
36 | bottom: "data_sub2"
37 | top: "conv1_1_3x3_s2"
38 | param {
39 | lr_mult: 1
40 | decay_mult: 1
41 | }
42 | convolution_param {
43 | num_output: 32
44 | pad: 1
45 | kernel_size: 3
46 | stride: 2
47 | weight_filler {
48 | type: "msra"
49 | }
50 | }
51 | }
52 | layer {
53 | name: "conv1_1_3x3_s2/relu"
54 | type: "ReLU"
55 | bottom: "conv1_1_3x3_s2"
56 | top: "conv1_1_3x3_s2"
57 | }
58 | layer {
59 | name: "conv1_2_3x3"
60 | type: "Convolution"
61 | bottom: "conv1_1_3x3_s2"
62 | top: "conv1_2_3x3"
63 | param {
64 | lr_mult: 1
65 | decay_mult: 1
66 | }
67 | convolution_param {
68 | num_output: 32
69 | pad: 1
70 | kernel_size: 3
71 | stride: 1
72 | weight_filler {
73 | type: "msra"
74 | }
75 | }
76 | }
77 | layer {
78 | name: "conv1_2_3x3/relu"
79 | type: "ReLU"
80 | bottom: "conv1_2_3x3"
81 | top: "conv1_2_3x3"
82 | }
83 | layer {
84 | name: "conv1_3_3x3"
85 | type: "Convolution"
86 | bottom: "conv1_2_3x3"
87 | top: "conv1_3_3x3"
88 | param {
89 | lr_mult: 1
90 | decay_mult: 1
91 | }
92 | convolution_param {
93 | num_output: 64
94 | pad: 1
95 | kernel_size: 3
96 | stride: 1
97 | weight_filler {
98 | type: "msra"
99 | }
100 | }
101 | }
102 | layer {
103 | name: "conv1_3_3x3/relu"
104 | type: "ReLU"
105 | bottom: "conv1_3_3x3"
106 | top: "conv1_3_3x3"
107 | }
108 | layer {
109 | name: "pool1_3x3_s2"
110 | type: "Pooling"
111 | bottom: "conv1_3_3x3"
112 | top: "pool1_3x3_s2"
113 | pooling_param {
114 | pool: MAX
115 | kernel_size: 3
116 | stride: 2
117 | pad: 1
118 | }
119 | }
120 | layer {
121 | name: "conv2_1_1x1_reduce"
122 | type: "Convolution"
123 | bottom: "pool1_3x3_s2"
124 | top: "conv2_1_1x1_reduce"
125 | param {
126 | lr_mult: 1
127 | decay_mult: 1
128 | }
129 | convolution_param {
130 | num_output: 32
131 | pad: 0
132 | kernel_size: 1
133 | stride: 1
134 | weight_filler {
135 | type: "msra"
136 | }
137 | }
138 | }
139 | layer {
140 | name: "conv2_1_1x1_reduce/relu"
141 | type: "ReLU"
142 | bottom: "conv2_1_1x1_reduce"
143 | top: "conv2_1_1x1_reduce"
144 | }
145 | layer {
146 | name: "conv2_1_3x3"
147 | type: "Convolution"
148 | bottom: "conv2_1_1x1_reduce"
149 | top: "conv2_1_3x3"
150 | param {
151 | lr_mult: 1
152 | decay_mult: 1
153 | }
154 | convolution_param {
155 | num_output: 32
156 | pad: 1
157 | kernel_size: 3
158 | stride: 1
159 | weight_filler {
160 | type: "msra"
161 | }
162 | }
163 | }
164 | layer {
165 | name: "conv2_1_3x3/relu"
166 | type: "ReLU"
167 | bottom: "conv2_1_3x3"
168 | top: "conv2_1_3x3"
169 | }
170 | layer {
171 | name: "conv2_1_1x1_increase"
172 | type: "Convolution"
173 | bottom: "conv2_1_3x3"
174 | top: "conv2_1_1x1_increase"
175 | param {
176 | lr_mult: 1
177 | decay_mult: 1
178 | }
179 | convolution_param {
180 | num_output: 128
181 | pad: 0
182 | kernel_size: 1
183 | stride: 1
184 | weight_filler {
185 | type: "msra"
186 | }
187 | }
188 | }
189 | layer {
190 | name: "conv2_1_1x1_proj"
191 | type: "Convolution"
192 | bottom: "pool1_3x3_s2"
193 | top: "conv2_1_1x1_proj"
194 | param {
195 | lr_mult: 1
196 | decay_mult: 1
197 | }
198 | convolution_param {
199 | num_output: 128
200 | pad: 0
201 | kernel_size: 1
202 | stride: 1
203 | weight_filler {
204 | type: "msra"
205 | }
206 | }
207 | }
208 | layer {
209 | name: "conv2_1"
210 | type: "Eltwise"
211 | bottom: "conv2_1_1x1_proj"
212 | bottom: "conv2_1_1x1_increase"
213 | top: "conv2_1"
214 | eltwise_param {
215 | operation: SUM
216 | }
217 | }
218 | layer {
219 | name: "conv2_1/relu"
220 | type: "ReLU"
221 | bottom: "conv2_1"
222 | top: "conv2_1"
223 | }
224 | layer {
225 | name: "conv2_2_1x1_reduce"
226 | type: "Convolution"
227 | bottom: "conv2_1"
228 | top: "conv2_2_1x1_reduce"
229 | param {
230 | lr_mult: 1
231 | decay_mult: 1
232 | }
233 | convolution_param {
234 | num_output: 32
235 | pad: 0
236 | kernel_size: 1
237 | stride: 1
238 | weight_filler {
239 | type: "msra"
240 | }
241 | }
242 | }
243 | layer {
244 | name: "conv2_2_1x1_reduce/relu"
245 | type: "ReLU"
246 | bottom: "conv2_2_1x1_reduce"
247 | top: "conv2_2_1x1_reduce"
248 | }
249 | layer {
250 | name: "conv2_2_3x3"
251 | type: "Convolution"
252 | bottom: "conv2_2_1x1_reduce"
253 | top: "conv2_2_3x3"
254 | param {
255 | lr_mult: 1
256 | decay_mult: 1
257 | }
258 | convolution_param {
259 | num_output: 32
260 | pad: 1
261 | kernel_size: 3
262 | stride: 1
263 | weight_filler {
264 | type: "msra"
265 | }
266 | }
267 | }
268 | layer {
269 | name: "conv2_2_3x3/relu"
270 | type: "ReLU"
271 | bottom: "conv2_2_3x3"
272 | top: "conv2_2_3x3"
273 | }
274 | layer {
275 | name: "conv2_2_1x1_increase"
276 | type: "Convolution"
277 | bottom: "conv2_2_3x3"
278 | top: "conv2_2_1x1_increase"
279 | param {
280 | lr_mult: 1
281 | decay_mult: 1
282 | }
283 | convolution_param {
284 | num_output: 128
285 | pad: 0
286 | kernel_size: 1
287 | stride: 1
288 | weight_filler {
289 | type: "msra"
290 | }
291 | }
292 | }
293 | layer {
294 | name: "conv2_2"
295 | type: "Eltwise"
296 | bottom: "conv2_1"
297 | bottom: "conv2_2_1x1_increase"
298 | top: "conv2_2"
299 | eltwise_param {
300 | operation: SUM
301 | }
302 | }
303 | layer {
304 | name: "conv2_2/relu"
305 | type: "ReLU"
306 | bottom: "conv2_2"
307 | top: "conv2_2"
308 | }
309 | layer {
310 | name: "conv2_3_1x1_reduce"
311 | type: "Convolution"
312 | bottom: "conv2_2"
313 | top: "conv2_3_1x1_reduce"
314 | param {
315 | lr_mult: 1
316 | decay_mult: 1
317 | }
318 | convolution_param {
319 | num_output: 32
320 | pad: 0
321 | kernel_size: 1
322 | stride: 1
323 | weight_filler {
324 | type: "msra"
325 | }
326 | }
327 | }
328 | layer {
329 | name: "conv2_3_1x1_reduce/relu"
330 | type: "ReLU"
331 | bottom: "conv2_3_1x1_reduce"
332 | top: "conv2_3_1x1_reduce"
333 | }
334 | layer {
335 | name: "conv2_3_3x3"
336 | type: "Convolution"
337 | bottom: "conv2_3_1x1_reduce"
338 | top: "conv2_3_3x3"
339 | param {
340 | lr_mult: 1
341 | decay_mult: 1
342 | }
343 | convolution_param {
344 | num_output: 32
345 | pad: 1
346 | kernel_size: 3
347 | stride: 1
348 | weight_filler {
349 | type: "msra"
350 | }
351 | }
352 | }
353 | layer {
354 | name: "conv2_3_3x3/relu"
355 | type: "ReLU"
356 | bottom: "conv2_3_3x3"
357 | top: "conv2_3_3x3"
358 | }
359 | layer {
360 | name: "conv2_3_1x1_increase"
361 | type: "Convolution"
362 | bottom: "conv2_3_3x3"
363 | top: "conv2_3_1x1_increase"
364 | param {
365 | lr_mult: 1
366 | decay_mult: 1
367 | }
368 | convolution_param {
369 | num_output: 128
370 | pad: 0
371 | kernel_size: 1
372 | stride: 1
373 | weight_filler {
374 | type: "msra"
375 | }
376 | }
377 | }
378 | layer {
379 | name: "conv2_3"
380 | type: "Eltwise"
381 | bottom: "conv2_2"
382 | bottom: "conv2_3_1x1_increase"
383 | top: "conv2_3"
384 | eltwise_param {
385 | operation: SUM
386 | }
387 | }
388 | layer {
389 | name: "conv2_3/relu"
390 | type: "ReLU"
391 | bottom: "conv2_3"
392 | top: "conv2_3"
393 | }
394 | layer {
395 | name: "conv3_1_1x1_reduce"
396 | type: "Convolution"
397 | bottom: "conv2_3"
398 | top: "conv3_1_1x1_reduce"
399 | param {
400 | lr_mult: 1
401 | decay_mult: 1
402 | }
403 | convolution_param {
404 | num_output: 64
405 | pad: 0
406 | kernel_size: 1
407 | stride: 2
408 | weight_filler {
409 | type: "msra"
410 | }
411 | }
412 | }
413 | layer {
414 | name: "conv3_1_1x1_reduce/relu"
415 | type: "ReLU"
416 | bottom: "conv3_1_1x1_reduce"
417 | top: "conv3_1_1x1_reduce"
418 | }
419 | layer {
420 | name: "conv3_1_3x3"
421 | type: "Convolution"
422 | bottom: "conv3_1_1x1_reduce"
423 | top: "conv3_1_3x3"
424 | param {
425 | lr_mult: 1
426 | decay_mult: 1
427 | }
428 | convolution_param {
429 | num_output: 64
430 | pad: 1
431 | kernel_size: 3
432 | stride: 1
433 | weight_filler {
434 | type: "msra"
435 | }
436 | }
437 | }
438 | layer {
439 | name: "conv3_1_3x3/relu"
440 | type: "ReLU"
441 | bottom: "conv3_1_3x3"
442 | top: "conv3_1_3x3"
443 | }
444 | layer {
445 | name: "conv3_1_1x1_increase"
446 | type: "Convolution"
447 | bottom: "conv3_1_3x3"
448 | top: "conv3_1_1x1_increase"
449 | param {
450 | lr_mult: 1
451 | decay_mult: 1
452 | }
453 | convolution_param {
454 | num_output: 256
455 | pad: 0
456 | kernel_size: 1
457 | stride: 1
458 | weight_filler {
459 | type: "msra"
460 | }
461 | }
462 | }
463 | layer {
464 | name: "conv3_1_1x1_proj"
465 | type: "Convolution"
466 | bottom: "conv2_3"
467 | top: "conv3_1_1x1_proj"
468 | param {
469 | lr_mult: 1
470 | decay_mult: 1
471 | }
472 | convolution_param {
473 | num_output: 256
474 | pad: 0
475 | kernel_size: 1
476 | stride: 2
477 | weight_filler {
478 | type: "msra"
479 | }
480 | }
481 | }
482 | layer {
483 | name: "conv3_1"
484 | type: "Eltwise"
485 | bottom: "conv3_1_1x1_proj"
486 | bottom: "conv3_1_1x1_increase"
487 | top: "conv3_1"
488 | eltwise_param {
489 | operation: SUM
490 | }
491 | }
492 | layer {
493 | name: "conv3_1/relu"
494 | type: "ReLU"
495 | bottom: "conv3_1"
496 | top: "conv3_1"
497 | }
498 | layer {
499 | name: "conv3_1_sub4"
500 | type: "Interp"
501 | bottom: "conv3_1"
502 | top: "conv3_1_sub4"
503 | interp_param {
504 | shrink_factor: 2
505 | }
506 | }
507 | layer {
508 | name: "conv3_2_1x1_reduce"
509 | type: "Convolution"
510 | bottom: "conv3_1_sub4"
511 | top: "conv3_2_1x1_reduce"
512 | param {
513 | lr_mult: 1
514 | decay_mult: 1
515 | }
516 | convolution_param {
517 | num_output: 64
518 | pad: 0
519 | kernel_size: 1
520 | stride: 1
521 | weight_filler {
522 | type: "msra"
523 | }
524 | }
525 | }
526 | layer {
527 | name: "conv3_2_1x1_reduce/relu"
528 | type: "ReLU"
529 | bottom: "conv3_2_1x1_reduce"
530 | top: "conv3_2_1x1_reduce"
531 | }
532 | layer {
533 | name: "conv3_2_3x3"
534 | type: "Convolution"
535 | bottom: "conv3_2_1x1_reduce"
536 | top: "conv3_2_3x3"
537 | param {
538 | lr_mult: 1
539 | decay_mult: 1
540 | }
541 | convolution_param {
542 | num_output: 64
543 | pad: 1
544 | kernel_size: 3
545 | stride: 1
546 | weight_filler {
547 | type: "msra"
548 | }
549 | }
550 | }
551 | layer {
552 | name: "conv3_2_3x3/relu"
553 | type: "ReLU"
554 | bottom: "conv3_2_3x3"
555 | top: "conv3_2_3x3"
556 | }
557 | layer {
558 | name: "conv3_2_1x1_increase"
559 | type: "Convolution"
560 | bottom: "conv3_2_3x3"
561 | top: "conv3_2_1x1_increase"
562 | param {
563 | lr_mult: 1
564 | decay_mult: 1
565 | }
566 | convolution_param {
567 | num_output: 256
568 | pad: 0
569 | kernel_size: 1
570 | stride: 1
571 | weight_filler {
572 | type: "msra"
573 | }
574 | }
575 | }
576 | layer {
577 | name: "conv3_2"
578 | type: "Eltwise"
579 | bottom: "conv3_1_sub4"
580 | bottom: "conv3_2_1x1_increase"
581 | top: "conv3_2"
582 | eltwise_param {
583 | operation: SUM
584 | }
585 | }
586 | layer {
587 | name: "conv3_2/relu"
588 | type: "ReLU"
589 | bottom: "conv3_2"
590 | top: "conv3_2"
591 | }
592 | layer {
593 | name: "conv3_3_1x1_reduce"
594 | type: "Convolution"
595 | bottom: "conv3_2"
596 | top: "conv3_3_1x1_reduce"
597 | param {
598 | lr_mult: 1
599 | decay_mult: 1
600 | }
601 | convolution_param {
602 | num_output: 64
603 | pad: 0
604 | kernel_size: 1
605 | stride: 1
606 | weight_filler {
607 | type: "msra"
608 | }
609 | }
610 | }
611 | layer {
612 | name: "conv3_3_1x1_reduce/relu"
613 | type: "ReLU"
614 | bottom: "conv3_3_1x1_reduce"
615 | top: "conv3_3_1x1_reduce"
616 | }
617 | layer {
618 | name: "conv3_3_3x3"
619 | type: "Convolution"
620 | bottom: "conv3_3_1x1_reduce"
621 | top: "conv3_3_3x3"
622 | param {
623 | lr_mult: 1
624 | decay_mult: 1
625 | }
626 | convolution_param {
627 | num_output: 64
628 | pad: 1
629 | kernel_size: 3
630 | stride: 1
631 | weight_filler {
632 | type: "msra"
633 | }
634 | }
635 | }
636 | layer {
637 | name: "conv3_3_3x3/relu"
638 | type: "ReLU"
639 | bottom: "conv3_3_3x3"
640 | top: "conv3_3_3x3"
641 | }
642 | layer {
643 | name: "conv3_3_1x1_increase"
644 | type: "Convolution"
645 | bottom: "conv3_3_3x3"
646 | top: "conv3_3_1x1_increase"
647 | param {
648 | lr_mult: 1
649 | decay_mult: 1
650 | }
651 | convolution_param {
652 | num_output: 256
653 | pad: 0
654 | kernel_size: 1
655 | stride: 1
656 | weight_filler {
657 | type: "msra"
658 | }
659 | }
660 | }
661 | layer {
662 | name: "conv3_3"
663 | type: "Eltwise"
664 | bottom: "conv3_2"
665 | bottom: "conv3_3_1x1_increase"
666 | top: "conv3_3"
667 | eltwise_param {
668 | operation: SUM
669 | }
670 | }
671 | layer {
672 | name: "conv3_3/relu"
673 | type: "ReLU"
674 | bottom: "conv3_3"
675 | top: "conv3_3"
676 | }
677 | layer {
678 | name: "conv3_4_1x1_reduce"
679 | type: "Convolution"
680 | bottom: "conv3_3"
681 | top: "conv3_4_1x1_reduce"
682 | param {
683 | lr_mult: 1
684 | decay_mult: 1
685 | }
686 | convolution_param {
687 | num_output: 64
688 | pad: 0
689 | kernel_size: 1
690 | stride: 1
691 | weight_filler {
692 | type: "msra"
693 | }
694 | }
695 | }
696 | layer {
697 | name: "conv3_4_1x1_reduce/relu"
698 | type: "ReLU"
699 | bottom: "conv3_4_1x1_reduce"
700 | top: "conv3_4_1x1_reduce"
701 | }
702 | layer {
703 | name: "conv3_4_3x3"
704 | type: "Convolution"
705 | bottom: "conv3_4_1x1_reduce"
706 | top: "conv3_4_3x3"
707 | param {
708 | lr_mult: 1
709 | decay_mult: 1
710 | }
711 | convolution_param {
712 | num_output: 64
713 | pad: 1
714 | kernel_size: 3
715 | stride: 1
716 | weight_filler {
717 | type: "msra"
718 | }
719 | }
720 | }
721 | layer {
722 | name: "conv3_4_3x3/relu"
723 | type: "ReLU"
724 | bottom: "conv3_4_3x3"
725 | top: "conv3_4_3x3"
726 | }
727 | layer {
728 | name: "conv3_4_1x1_increase"
729 | type: "Convolution"
730 | bottom: "conv3_4_3x3"
731 | top: "conv3_4_1x1_increase"
732 | param {
733 | lr_mult: 1
734 | decay_mult: 1
735 | }
736 | convolution_param {
737 | num_output: 256
738 | pad: 0
739 | kernel_size: 1
740 | stride: 1
741 | weight_filler {
742 | type: "msra"
743 | }
744 | }
745 | }
746 | layer {
747 | name: "conv3_4"
748 | type: "Eltwise"
749 | bottom: "conv3_3"
750 | bottom: "conv3_4_1x1_increase"
751 | top: "conv3_4"
752 | eltwise_param {
753 | operation: SUM
754 | }
755 | }
756 | layer {
757 | name: "conv3_4/relu"
758 | type: "ReLU"
759 | bottom: "conv3_4"
760 | top: "conv3_4"
761 | }
762 | layer {
763 | name: "conv4_1_1x1_reduce"
764 | type: "Convolution"
765 | bottom: "conv3_4"
766 | top: "conv4_1_1x1_reduce"
767 | param {
768 | lr_mult: 1
769 | decay_mult: 1
770 | }
771 | convolution_param {
772 | num_output: 128
773 | pad: 0
774 | kernel_size: 1
775 | stride: 1
776 | weight_filler {
777 | type: "msra"
778 | }
779 | }
780 | }
781 | layer {
782 | name: "conv4_1_1x1_reduce/relu"
783 | type: "ReLU"
784 | bottom: "conv4_1_1x1_reduce"
785 | top: "conv4_1_1x1_reduce"
786 | }
787 | layer {
788 | name: "conv4_1_3x3"
789 | type: "Convolution"
790 | bottom: "conv4_1_1x1_reduce"
791 | top: "conv4_1_3x3"
792 | param {
793 | lr_mult: 1
794 | decay_mult: 1
795 | }
796 | convolution_param {
797 | num_output: 128
798 | pad: 2
799 | kernel_size: 3
800 | stride: 1
801 | weight_filler {
802 | type: "msra"
803 | }
804 | dilation: 2
805 | }
806 | }
807 | layer {
808 | name: "conv4_1_3x3/relu"
809 | type: "ReLU"
810 | bottom: "conv4_1_3x3"
811 | top: "conv4_1_3x3"
812 | }
813 | layer {
814 | name: "conv4_1_1x1_increase"
815 | type: "Convolution"
816 | bottom: "conv4_1_3x3"
817 | top: "conv4_1_1x1_increase"
818 | param {
819 | lr_mult: 1
820 | decay_mult: 1
821 | }
822 | convolution_param {
823 | num_output: 512
824 | pad: 0
825 | kernel_size: 1
826 | stride: 1
827 | weight_filler {
828 | type: "msra"
829 | }
830 | }
831 | }
832 | layer {
833 | name: "conv4_1_1x1_proj"
834 | type: "Convolution"
835 | bottom: "conv3_4"
836 | top: "conv4_1_1x1_proj"
837 | param {
838 | lr_mult: 1
839 | decay_mult: 1
840 | }
841 | convolution_param {
842 | num_output: 512
843 | pad: 0
844 | kernel_size: 1
845 | stride: 1
846 | weight_filler {
847 | type: "msra"
848 | }
849 | }
850 | }
851 | layer {
852 | name: "conv4_1"
853 | type: "Eltwise"
854 | bottom: "conv4_1_1x1_proj"
855 | bottom: "conv4_1_1x1_increase"
856 | top: "conv4_1"
857 | eltwise_param {
858 | operation: SUM
859 | }
860 | }
861 | layer {
862 | name: "conv4_1/relu"
863 | type: "ReLU"
864 | bottom: "conv4_1"
865 | top: "conv4_1"
866 | }
867 | layer {
868 | name: "conv4_2_1x1_reduce"
869 | type: "Convolution"
870 | bottom: "conv4_1"
871 | top: "conv4_2_1x1_reduce"
872 | param {
873 | lr_mult: 1
874 | decay_mult: 1
875 | }
876 | convolution_param {
877 | num_output: 128
878 | pad: 0
879 | kernel_size: 1
880 | stride: 1
881 | weight_filler {
882 | type: "msra"
883 | }
884 | }
885 | }
886 | layer {
887 | name: "conv4_2_1x1_reduce/relu"
888 | type: "ReLU"
889 | bottom: "conv4_2_1x1_reduce"
890 | top: "conv4_2_1x1_reduce"
891 | }
892 | layer {
893 | name: "conv4_2_3x3"
894 | type: "Convolution"
895 | bottom: "conv4_2_1x1_reduce"
896 | top: "conv4_2_3x3"
897 | param {
898 | lr_mult: 1
899 | decay_mult: 1
900 | }
901 | convolution_param {
902 | num_output: 128
903 | pad: 2
904 | kernel_size: 3
905 | stride: 1
906 | weight_filler {
907 | type: "msra"
908 | }
909 | dilation: 2
910 | }
911 | }
912 | layer {
913 | name: "conv4_2_3x3/relu"
914 | type: "ReLU"
915 | bottom: "conv4_2_3x3"
916 | top: "conv4_2_3x3"
917 | }
918 | layer {
919 | name: "conv4_2_1x1_increase"
920 | type: "Convolution"
921 | bottom: "conv4_2_3x3"
922 | top: "conv4_2_1x1_increase"
923 | param {
924 | lr_mult: 1
925 | decay_mult: 1
926 | }
927 | convolution_param {
928 | num_output: 512
929 | pad: 0
930 | kernel_size: 1
931 | stride: 1
932 | weight_filler {
933 | type: "msra"
934 | }
935 | }
936 | }
937 | layer {
938 | name: "conv4_2"
939 | type: "Eltwise"
940 | bottom: "conv4_1"
941 | bottom: "conv4_2_1x1_increase"
942 | top: "conv4_2"
943 | eltwise_param {
944 | operation: SUM
945 | }
946 | }
947 | layer {
948 | name: "conv4_2/relu"
949 | type: "ReLU"
950 | bottom: "conv4_2"
951 | top: "conv4_2"
952 | }
953 | layer {
954 | name: "conv4_3_1x1_reduce"
955 | type: "Convolution"
956 | bottom: "conv4_2"
957 | top: "conv4_3_1x1_reduce"
958 | param {
959 | lr_mult: 1
960 | decay_mult: 1
961 | }
962 | convolution_param {
963 | num_output: 128
964 | pad: 0
965 | kernel_size: 1
966 | stride: 1
967 | weight_filler {
968 | type: "msra"
969 | }
970 | }
971 | }
972 | layer {
973 | name: "conv4_3_1x1_reduce/relu"
974 | type: "ReLU"
975 | bottom: "conv4_3_1x1_reduce"
976 | top: "conv4_3_1x1_reduce"
977 | }
978 | layer {
979 | name: "conv4_3_3x3"
980 | type: "Convolution"
981 | bottom: "conv4_3_1x1_reduce"
982 | top: "conv4_3_3x3"
983 | param {
984 | lr_mult: 1
985 | decay_mult: 1
986 | }
987 | convolution_param {
988 | num_output: 128
989 | pad: 2
990 | kernel_size: 3
991 | stride: 1
992 | weight_filler {
993 | type: "msra"
994 | }
995 | dilation: 2
996 | }
997 | }
998 | layer {
999 | name: "conv4_3_3x3/relu"
1000 | type: "ReLU"
1001 | bottom: "conv4_3_3x3"
1002 | top: "conv4_3_3x3"
1003 | }
1004 | layer {
1005 | name: "conv4_3_1x1_increase"
1006 | type: "Convolution"
1007 | bottom: "conv4_3_3x3"
1008 | top: "conv4_3_1x1_increase"
1009 | param {
1010 | lr_mult: 1
1011 | decay_mult: 1
1012 | }
1013 | convolution_param {
1014 | num_output: 512
1015 | pad: 0
1016 | kernel_size: 1
1017 | stride: 1
1018 | weight_filler {
1019 | type: "msra"
1020 | }
1021 | }
1022 | }
1023 | layer {
1024 | name: "conv4_3"
1025 | type: "Eltwise"
1026 | bottom: "conv4_2"
1027 | bottom: "conv4_3_1x1_increase"
1028 | top: "conv4_3"
1029 | eltwise_param {
1030 | operation: SUM
1031 | }
1032 | }
1033 | layer {
1034 | name: "conv4_3/relu"
1035 | type: "ReLU"
1036 | bottom: "conv4_3"
1037 | top: "conv4_3"
1038 | }
1039 | layer {
1040 | name: "conv4_4_1x1_reduce"
1041 | type: "Convolution"
1042 | bottom: "conv4_3"
1043 | top: "conv4_4_1x1_reduce"
1044 | param {
1045 | lr_mult: 1
1046 | decay_mult: 1
1047 | }
1048 | convolution_param {
1049 | num_output: 128
1050 | pad: 0
1051 | kernel_size: 1
1052 | stride: 1
1053 | weight_filler {
1054 | type: "msra"
1055 | }
1056 | }
1057 | }
1058 | layer {
1059 | name: "conv4_4_1x1_reduce/relu"
1060 | type: "ReLU"
1061 | bottom: "conv4_4_1x1_reduce"
1062 | top: "conv4_4_1x1_reduce"
1063 | }
1064 | layer {
1065 | name: "conv4_4_3x3"
1066 | type: "Convolution"
1067 | bottom: "conv4_4_1x1_reduce"
1068 | top: "conv4_4_3x3"
1069 | param {
1070 | lr_mult: 1
1071 | decay_mult: 1
1072 | }
1073 | convolution_param {
1074 | num_output: 128
1075 | pad: 2
1076 | kernel_size: 3
1077 | stride: 1
1078 | weight_filler {
1079 | type: "msra"
1080 | }
1081 | dilation: 2
1082 | }
1083 | }
1084 | layer {
1085 | name: "conv4_4_3x3/relu"
1086 | type: "ReLU"
1087 | bottom: "conv4_4_3x3"
1088 | top: "conv4_4_3x3"
1089 | }
1090 | layer {
1091 | name: "conv4_4_1x1_increase"
1092 | type: "Convolution"
1093 | bottom: "conv4_4_3x3"
1094 | top: "conv4_4_1x1_increase"
1095 | param {
1096 | lr_mult: 1
1097 | decay_mult: 1
1098 | }
1099 | convolution_param {
1100 | num_output: 512
1101 | pad: 0
1102 | kernel_size: 1
1103 | stride: 1
1104 | weight_filler {
1105 | type: "msra"
1106 | }
1107 | }
1108 | }
1109 | layer {
1110 | name: "conv4_4"
1111 | type: "Eltwise"
1112 | bottom: "conv4_3"
1113 | bottom: "conv4_4_1x1_increase"
1114 | top: "conv4_4"
1115 | eltwise_param {
1116 | operation: SUM
1117 | }
1118 | }
1119 | layer {
1120 | name: "conv4_4/relu"
1121 | type: "ReLU"
1122 | bottom: "conv4_4"
1123 | top: "conv4_4"
1124 | }
1125 | layer {
1126 | name: "conv4_5_1x1_reduce"
1127 | type: "Convolution"
1128 | bottom: "conv4_4"
1129 | top: "conv4_5_1x1_reduce"
1130 | param {
1131 | lr_mult: 1
1132 | decay_mult: 1
1133 | }
1134 | convolution_param {
1135 | num_output: 128
1136 | pad: 0
1137 | kernel_size: 1
1138 | stride: 1
1139 | weight_filler {
1140 | type: "msra"
1141 | }
1142 | }
1143 | }
1144 | layer {
1145 | name: "conv4_5_1x1_reduce/relu"
1146 | type: "ReLU"
1147 | bottom: "conv4_5_1x1_reduce"
1148 | top: "conv4_5_1x1_reduce"
1149 | }
1150 | layer {
1151 | name: "conv4_5_3x3"
1152 | type: "Convolution"
1153 | bottom: "conv4_5_1x1_reduce"
1154 | top: "conv4_5_3x3"
1155 | param {
1156 | lr_mult: 1
1157 | decay_mult: 1
1158 | }
1159 | convolution_param {
1160 | num_output: 128
1161 | pad: 2
1162 | kernel_size: 3
1163 | stride: 1
1164 | weight_filler {
1165 | type: "msra"
1166 | }
1167 | dilation: 2
1168 | }
1169 | }
1170 | layer {
1171 | name: "conv4_5_3x3/relu"
1172 | type: "ReLU"
1173 | bottom: "conv4_5_3x3"
1174 | top: "conv4_5_3x3"
1175 | }
1176 | layer {
1177 | name: "conv4_5_1x1_increase"
1178 | type: "Convolution"
1179 | bottom: "conv4_5_3x3"
1180 | top: "conv4_5_1x1_increase"
1181 | param {
1182 | lr_mult: 1
1183 | decay_mult: 1
1184 | }
1185 | convolution_param {
1186 | num_output: 512
1187 | pad: 0
1188 | kernel_size: 1
1189 | stride: 1
1190 | weight_filler {
1191 | type: "msra"
1192 | }
1193 | }
1194 | }
1195 | layer {
1196 | name: "conv4_5"
1197 | type: "Eltwise"
1198 | bottom: "conv4_4"
1199 | bottom: "conv4_5_1x1_increase"
1200 | top: "conv4_5"
1201 | eltwise_param {
1202 | operation: SUM
1203 | }
1204 | }
1205 | layer {
1206 | name: "conv4_5/relu"
1207 | type: "ReLU"
1208 | bottom: "conv4_5"
1209 | top: "conv4_5"
1210 | }
1211 | layer {
1212 | name: "conv4_6_1x1_reduce"
1213 | type: "Convolution"
1214 | bottom: "conv4_5"
1215 | top: "conv4_6_1x1_reduce"
1216 | param {
1217 | lr_mult: 1
1218 | decay_mult: 1
1219 | }
1220 | convolution_param {
1221 | num_output: 128
1222 | pad: 0
1223 | kernel_size: 1
1224 | stride: 1
1225 | weight_filler {
1226 | type: "msra"
1227 | }
1228 | }
1229 | }
1230 | layer {
1231 | name: "conv4_6_1x1_reduce/relu"
1232 | type: "ReLU"
1233 | bottom: "conv4_6_1x1_reduce"
1234 | top: "conv4_6_1x1_reduce"
1235 | }
1236 | layer {
1237 | name: "conv4_6_3x3"
1238 | type: "Convolution"
1239 | bottom: "conv4_6_1x1_reduce"
1240 | top: "conv4_6_3x3"
1241 | param {
1242 | lr_mult: 1
1243 | decay_mult: 1
1244 | }
1245 | convolution_param {
1246 | num_output: 128
1247 | pad: 2
1248 | kernel_size: 3
1249 | stride: 1
1250 | weight_filler {
1251 | type: "msra"
1252 | }
1253 | dilation: 2
1254 | }
1255 | }
1256 | layer {
1257 | name: "conv4_6_3x3/relu"
1258 | type: "ReLU"
1259 | bottom: "conv4_6_3x3"
1260 | top: "conv4_6_3x3"
1261 | }
1262 | layer {
1263 | name: "conv4_6_1x1_increase"
1264 | type: "Convolution"
1265 | bottom: "conv4_6_3x3"
1266 | top: "conv4_6_1x1_increase"
1267 | param {
1268 | lr_mult: 1
1269 | decay_mult: 1
1270 | }
1271 | convolution_param {
1272 | num_output: 512
1273 | pad: 0
1274 | kernel_size: 1
1275 | stride: 1
1276 | weight_filler {
1277 | type: "msra"
1278 | }
1279 | }
1280 | }
1281 | layer {
1282 | name: "conv4_6"
1283 | type: "Eltwise"
1284 | bottom: "conv4_5"
1285 | bottom: "conv4_6_1x1_increase"
1286 | top: "conv4_6"
1287 | eltwise_param {
1288 | operation: SUM
1289 | }
1290 | }
1291 | layer {
1292 | name: "conv4_6/relu"
1293 | type: "ReLU"
1294 | bottom: "conv4_6"
1295 | top: "conv4_6"
1296 | }
1297 | layer {
1298 | name: "conv5_1_1x1_reduce"
1299 | type: "Convolution"
1300 | bottom: "conv4_6"
1301 | top: "conv5_1_1x1_reduce"
1302 | param {
1303 | lr_mult: 1
1304 | decay_mult: 1
1305 | }
1306 | convolution_param {
1307 | num_output: 256
1308 | pad: 0
1309 | kernel_size: 1
1310 | stride: 1
1311 | weight_filler {
1312 | type: "msra"
1313 | }
1314 | }
1315 | }
1316 | layer {
1317 | name: "conv5_1_1x1_reduce/relu"
1318 | type: "ReLU"
1319 | bottom: "conv5_1_1x1_reduce"
1320 | top: "conv5_1_1x1_reduce"
1321 | }
1322 | layer {
1323 | name: "conv5_1_3x3"
1324 | type: "Convolution"
1325 | bottom: "conv5_1_1x1_reduce"
1326 | top: "conv5_1_3x3"
1327 | param {
1328 | lr_mult: 1
1329 | decay_mult: 1
1330 | }
1331 | convolution_param {
1332 | num_output: 256
1333 | pad: 4
1334 | kernel_size: 3
1335 | stride: 1
1336 | weight_filler {
1337 | type: "msra"
1338 | }
1339 | dilation: 4
1340 | }
1341 | }
1342 | layer {
1343 | name: "conv5_1_3x3/relu"
1344 | type: "ReLU"
1345 | bottom: "conv5_1_3x3"
1346 | top: "conv5_1_3x3"
1347 | }
1348 | layer {
1349 | name: "conv5_1_1x1_increase"
1350 | type: "Convolution"
1351 | bottom: "conv5_1_3x3"
1352 | top: "conv5_1_1x1_increase"
1353 | param {
1354 | lr_mult: 1
1355 | decay_mult: 1
1356 | }
1357 | convolution_param {
1358 | num_output: 1024
1359 | pad: 0
1360 | kernel_size: 1
1361 | stride: 1
1362 | weight_filler {
1363 | type: "msra"
1364 | }
1365 | }
1366 | }
1367 | layer {
1368 | name: "conv5_1_1x1_proj"
1369 | type: "Convolution"
1370 | bottom: "conv4_6"
1371 | top: "conv5_1_1x1_proj"
1372 | param {
1373 | lr_mult: 1
1374 | decay_mult: 1
1375 | }
1376 | convolution_param {
1377 | num_output: 1024
1378 | pad: 0
1379 | kernel_size: 1
1380 | stride: 1
1381 | weight_filler {
1382 | type: "msra"
1383 | }
1384 | }
1385 | }
1386 | layer {
1387 | name: "conv5_1"
1388 | type: "Eltwise"
1389 | bottom: "conv5_1_1x1_proj"
1390 | bottom: "conv5_1_1x1_increase"
1391 | top: "conv5_1"
1392 | eltwise_param {
1393 | operation: SUM
1394 | }
1395 | }
1396 | layer {
1397 | name: "conv5_1/relu"
1398 | type: "ReLU"
1399 | bottom: "conv5_1"
1400 | top: "conv5_1"
1401 | }
1402 | layer {
1403 | name: "conv5_2_1x1_reduce"
1404 | type: "Convolution"
1405 | bottom: "conv5_1"
1406 | top: "conv5_2_1x1_reduce"
1407 | param {
1408 | lr_mult: 1
1409 | decay_mult: 1
1410 | }
1411 | convolution_param {
1412 | num_output: 256
1413 | pad: 0
1414 | kernel_size: 1
1415 | stride: 1
1416 | weight_filler {
1417 | type: "msra"
1418 | }
1419 | }
1420 | }
1421 | layer {
1422 | name: "conv5_2_1x1_reduce/relu"
1423 | type: "ReLU"
1424 | bottom: "conv5_2_1x1_reduce"
1425 | top: "conv5_2_1x1_reduce"
1426 | }
1427 | layer {
1428 | name: "conv5_2_3x3"
1429 | type: "Convolution"
1430 | bottom: "conv5_2_1x1_reduce"
1431 | top: "conv5_2_3x3"
1432 | param {
1433 | lr_mult: 1
1434 | decay_mult: 1
1435 | }
1436 | convolution_param {
1437 | num_output: 256
1438 | pad: 4
1439 | kernel_size: 3
1440 | stride: 1
1441 | weight_filler {
1442 | type: "msra"
1443 | }
1444 | dilation: 4
1445 | }
1446 | }
1447 | layer {
1448 | name: "conv5_2_3x3/relu"
1449 | type: "ReLU"
1450 | bottom: "conv5_2_3x3"
1451 | top: "conv5_2_3x3"
1452 | }
1453 | layer {
1454 | name: "conv5_2_1x1_increase"
1455 | type: "Convolution"
1456 | bottom: "conv5_2_3x3"
1457 | top: "conv5_2_1x1_increase"
1458 | param {
1459 | lr_mult: 1
1460 | decay_mult: 1
1461 | }
1462 | convolution_param {
1463 | num_output: 1024
1464 | pad: 0
1465 | kernel_size: 1
1466 | stride: 1
1467 | weight_filler {
1468 | type: "msra"
1469 | }
1470 | }
1471 | }
1472 | layer {
1473 | name: "conv5_2"
1474 | type: "Eltwise"
1475 | bottom: "conv5_1"
1476 | bottom: "conv5_2_1x1_increase"
1477 | top: "conv5_2"
1478 | eltwise_param {
1479 | operation: SUM
1480 | }
1481 | }
1482 | layer {
1483 | name: "conv5_2/relu"
1484 | type: "ReLU"
1485 | bottom: "conv5_2"
1486 | top: "conv5_2"
1487 | }
1488 | layer {
1489 | name: "conv5_3_1x1_reduce"
1490 | type: "Convolution"
1491 | bottom: "conv5_2"
1492 | top: "conv5_3_1x1_reduce"
1493 | param {
1494 | lr_mult: 1
1495 | decay_mult: 1
1496 | }
1497 | convolution_param {
1498 | num_output: 256
1499 | pad: 0
1500 | kernel_size: 1
1501 | stride: 1
1502 | weight_filler {
1503 | type: "msra"
1504 | }
1505 | }
1506 | }
1507 | layer {
1508 | name: "conv5_3_1x1_reduce/relu"
1509 | type: "ReLU"
1510 | bottom: "conv5_3_1x1_reduce"
1511 | top: "conv5_3_1x1_reduce"
1512 | }
1513 | layer {
1514 | name: "conv5_3_3x3"
1515 | type: "Convolution"
1516 | bottom: "conv5_3_1x1_reduce"
1517 | top: "conv5_3_3x3"
1518 | param {
1519 | lr_mult: 1
1520 | decay_mult: 1
1521 | }
1522 | convolution_param {
1523 | num_output: 256
1524 | pad: 4
1525 | kernel_size: 3
1526 | stride: 1
1527 | weight_filler {
1528 | type: "msra"
1529 | }
1530 | dilation: 4
1531 | }
1532 | }
1533 | layer {
1534 | name: "conv5_3_3x3/relu"
1535 | type: "ReLU"
1536 | bottom: "conv5_3_3x3"
1537 | top: "conv5_3_3x3"
1538 | }
1539 | layer {
1540 | name: "conv5_3_1x1_increase"
1541 | type: "Convolution"
1542 | bottom: "conv5_3_3x3"
1543 | top: "conv5_3_1x1_increase"
1544 | param {
1545 | lr_mult: 1
1546 | decay_mult: 1
1547 | }
1548 | convolution_param {
1549 | num_output: 1024
1550 | pad: 0
1551 | kernel_size: 1
1552 | stride: 1
1553 | weight_filler {
1554 | type: "msra"
1555 | }
1556 | }
1557 | }
1558 | layer {
1559 | name: "conv5_3"
1560 | type: "Eltwise"
1561 | bottom: "conv5_2"
1562 | bottom: "conv5_3_1x1_increase"
1563 | top: "conv5_3"
1564 | eltwise_param {
1565 | operation: SUM
1566 | }
1567 | }
1568 | layer {
1569 | name: "conv5_3/relu"
1570 | type: "ReLU"
1571 | bottom: "conv5_3"
1572 | top: "conv5_3"
1573 | }
1574 | layer {
1575 | name: "conv5_3_pool1"
1576 | type: "Pooling"
1577 | bottom: "conv5_3"
1578 | top: "conv5_3_pool1"
1579 | pooling_param {
1580 | pool: AVE
1581 | kernel_h: 9
1582 | kernel_w: 17
1583 | stride_h: 9
1584 | stride_w: 17
1585 | }
1586 | }
1587 | layer {
1588 | name: "conv5_3_pool1_interp"
1589 | type: "Interp"
1590 | bottom: "conv5_3_pool1"
1591 | top: "conv5_3_pool1_interp"
1592 | interp_param {
1593 | height: 9
1594 | width: 17
1595 | }
1596 | }
1597 | layer {
1598 | name: "conv5_3_pool2"
1599 | type: "Pooling"
1600 | bottom: "conv5_3"
1601 | top: "conv5_3_pool2"
1602 | pooling_param {
1603 | pool: AVE
1604 | kernel_h: 5
1605 | kernel_w: 9
1606 | stride_h: 4
1607 | stride_w: 8
1608 | }
1609 | }
1610 | layer {
1611 | name: "conv5_3_pool2_interp"
1612 | type: "Interp"
1613 | bottom: "conv5_3_pool2"
1614 | top: "conv5_3_pool2_interp"
1615 | interp_param {
1616 | height: 9
1617 | width: 17
1618 | }
1619 | }
1620 | layer {
1621 | name: "conv5_3_pool3"
1622 | type: "Pooling"
1623 | bottom: "conv5_3"
1624 | top: "conv5_3_pool3"
1625 | pooling_param {
1626 | pool: AVE
1627 | kernel_h: 4
1628 | kernel_w: 7
1629 | stride_h: 3
1630 | stride_w: 6
1631 | }
1632 | }
1633 | layer {
1634 | name: "conv5_3_pool3_interp"
1635 | type: "Interp"
1636 | bottom: "conv5_3_pool3"
1637 | top: "conv5_3_pool3_interp"
1638 | interp_param {
1639 | height: 9
1640 | width: 17
1641 | }
1642 | }
1643 | layer {
1644 | name: "conv5_3_pool6"
1645 | type: "Pooling"
1646 | bottom: "conv5_3"
1647 | top: "conv5_3_pool6"
1648 | pooling_param {
1649 | pool: AVE
1650 | kernel_h: 2
1651 | kernel_w: 3
1652 | stride_h: 1
1653 | stride_w: 3
1654 | }
1655 | }
1656 | layer {
1657 | name: "conv5_3_pool6_interp"
1658 | type: "Interp"
1659 | bottom: "conv5_3_pool6"
1660 | top: "conv5_3_pool6_interp"
1661 | interp_param {
1662 | height: 9
1663 | width: 17
1664 | }
1665 | }
1666 | layer {
1667 | name: "conv5_3_sum"
1668 | type: "Eltwise"
1669 | bottom: "conv5_3"
1670 | bottom: "conv5_3_pool6_interp"
1671 | bottom: "conv5_3_pool3_interp"
1672 | bottom: "conv5_3_pool2_interp"
1673 | bottom: "conv5_3_pool1_interp"
1674 | top: "conv5_3_sum"
1675 | }
1676 | layer {
1677 | name: "conv5_4_k1"
1678 | type: "Convolution"
1679 | bottom: "conv5_3_sum"
1680 | top: "conv5_4_k1"
1681 | param {
1682 | lr_mult: 1
1683 | decay_mult: 1
1684 | }
1685 | convolution_param {
1686 | num_output: 256
1687 | pad: 0
1688 | kernel_size: 1
1689 | stride: 1
1690 | weight_filler {
1691 | type: "msra"
1692 | }
1693 | }
1694 | }
1695 | layer {
1696 | name: "conv5_4_k1/relu"
1697 | type: "ReLU"
1698 | bottom: "conv5_4_k1"
1699 | top: "conv5_4_k1"
1700 | }
1701 | layer {
1702 | name: "conv5_4_interp"
1703 | type: "Interp"
1704 | bottom: "conv5_4_k1"
1705 | top: "conv5_4_interp"
1706 | interp_param {
1707 | zoom_factor: 2
1708 | }
1709 | }
1710 | layer {
1711 | name: "conv_sub4"
1712 | type: "Convolution"
1713 | bottom: "conv5_4_interp"
1714 | top: "conv_sub4"
1715 | param {
1716 | lr_mult: 1
1717 | decay_mult: 1
1718 | }
1719 | convolution_param {
1720 | num_output: 128
1721 | pad: 2
1722 | kernel_size: 3
1723 | stride: 1
1724 | weight_filler {
1725 | type: "msra"
1726 | }
1727 | dilation: 2
1728 | }
1729 | }
1730 | layer {
1731 | name: "conv3_1_sub2_proj"
1732 | type: "Convolution"
1733 | bottom: "conv3_1"
1734 | top: "conv3_1_sub2_proj"
1735 | param {
1736 | lr_mult: 1
1737 | decay_mult: 1
1738 | }
1739 | convolution_param {
1740 | num_output: 128
1741 | pad: 0
1742 | kernel_size: 1
1743 | stride: 1
1744 | weight_filler {
1745 | type: "msra"
1746 | }
1747 | }
1748 | }
1749 | layer {
1750 | name: "sub24_sum"
1751 | type: "Eltwise"
1752 | bottom: "conv3_1_sub2_proj"
1753 | bottom: "conv_sub4"
1754 | top: "sub24_sum"
1755 | }
1756 | layer {
1757 | name: "sub24_sum/relu"
1758 | type: "ReLU"
1759 | bottom: "sub24_sum"
1760 | top: "sub24_sum"
1761 | }
1762 | layer {
1763 | name: "sub24_sum_interp"
1764 | type: "Interp"
1765 | bottom: "sub24_sum"
1766 | top: "sub24_sum_interp"
1767 | interp_param {
1768 | zoom_factor: 2
1769 | }
1770 | }
1771 | layer {
1772 | name: "conv_sub2"
1773 | type: "Convolution"
1774 | bottom: "sub24_sum_interp"
1775 | top: "conv_sub2"
1776 | param {
1777 | lr_mult: 1
1778 | decay_mult: 1
1779 | }
1780 | convolution_param {
1781 | num_output: 128
1782 | pad: 2
1783 | kernel_size: 3
1784 | stride: 1
1785 | weight_filler {
1786 | type: "msra"
1787 | }
1788 | dilation: 2
1789 | }
1790 | }
1791 | layer {
1792 | name: "conv1_sub1"
1793 | type: "Convolution"
1794 | # bottom: "data_sub1"
1795 | bottom: "data"
1796 | top: "conv1_sub1"
1797 | param {
1798 | lr_mult: 1
1799 | decay_mult: 1
1800 | }
1801 | convolution_param {
1802 | num_output: 32
1803 | pad: 1
1804 | kernel_size: 3
1805 | stride: 2
1806 | weight_filler {
1807 | type: "msra"
1808 | }
1809 | }
1810 | }
1811 | layer {
1812 | name: "conv1_sub1/relu"
1813 | type: "ReLU"
1814 | bottom: "conv1_sub1"
1815 | top: "conv1_sub1"
1816 | }
1817 | layer {
1818 | name: "conv2_sub1"
1819 | type: "Convolution"
1820 | bottom: "conv1_sub1"
1821 | top: "conv2_sub1"
1822 | param {
1823 | lr_mult: 1
1824 | decay_mult: 1
1825 | }
1826 | convolution_param {
1827 | num_output: 32
1828 | pad: 1
1829 | kernel_size: 3
1830 | stride: 2
1831 | weight_filler {
1832 | type: "msra"
1833 | }
1834 | }
1835 | }
1836 | layer {
1837 | name: "conv2_sub1/relu"
1838 | type: "ReLU"
1839 | bottom: "conv2_sub1"
1840 | top: "conv2_sub1"
1841 | }
1842 | layer {
1843 | name: "conv3_sub1"
1844 | type: "Convolution"
1845 | bottom: "conv2_sub1"
1846 | top: "conv3_sub1"
1847 | param {
1848 | lr_mult: 1
1849 | decay_mult: 1
1850 | }
1851 | convolution_param {
1852 | num_output: 64
1853 | pad: 1
1854 | kernel_size: 3
1855 | stride: 2
1856 | weight_filler {
1857 | type: "msra"
1858 | }
1859 | }
1860 | }
1861 | layer {
1862 | name: "conv3_sub1/relu"
1863 | type: "ReLU"
1864 | bottom: "conv3_sub1"
1865 | top: "conv3_sub1"
1866 | }
1867 | layer {
1868 | name: "conv3_sub1_proj"
1869 | type: "Convolution"
1870 | bottom: "conv3_sub1"
1871 | top: "conv3_sub1_proj"
1872 | param {
1873 | lr_mult: 1
1874 | decay_mult: 1
1875 | }
1876 | convolution_param {
1877 | num_output: 128
1878 | pad: 0
1879 | kernel_size: 1
1880 | stride: 1
1881 | weight_filler {
1882 | type: "msra"
1883 | }
1884 | }
1885 | }
1886 | layer {
1887 | name: "sub12_sum"
1888 | type: "Eltwise"
1889 | bottom: "conv3_sub1_proj"
1890 | bottom: "conv_sub2"
1891 | top: "sub12_sum"
1892 | }
1893 | layer {
1894 | name: "sub12_sum/relu"
1895 | type: "ReLU"
1896 | bottom: "sub12_sum"
1897 | top: "sub12_sum"
1898 | }
1899 | layer {
1900 | name: "sub12_sum_interp"
1901 | type: "Interp"
1902 | bottom: "sub12_sum"
1903 | top: "sub12_sum_interp"
1904 | interp_param {
1905 | zoom_factor: 2
1906 | }
1907 | }
1908 | layer {
1909 | name: "conv6_cls"
1910 | type: "Convolution"
1911 | bottom: "sub12_sum_interp"
1912 | top: "conv6_cls"
1913 | param {
1914 | lr_mult: 1
1915 | decay_mult: 1
1916 | }
1917 | param {
1918 | lr_mult: 2
1919 | decay_mult: 1
1920 | }
1921 | convolution_param {
1922 | num_output: 19
1923 | kernel_size: 1
1924 | stride: 1
1925 | weight_filler {
1926 | type: "msra"
1927 | }
1928 | }
1929 | }
1930 | layer {
1931 | name: "conv6_interp"
1932 | type: "Interp"
1933 | bottom: "conv6_cls"
1934 | top: "conv6_interp"
1935 | interp_param {
1936 | zoom_factor: 4
1937 | }
1938 | }
--------------------------------------------------------------------------------
/Deep_Learning_Algorithm/models/mobilenet_v1.prototxt:
--------------------------------------------------------------------------------
1 | name: "MOBILENET"
2 | # transform_param {
3 | # scale: 0.017
4 | # mirror: false
5 | # crop_size: 224
6 | # mean_value: [103.94,116.78,123.68]
7 | # }
8 |
9 | layer {
10 | name: "input"
11 | type: "Input"
12 | top: "data"
13 | input_param {
14 | shape {
15 | dim: 1
16 | dim: 3
17 | dim: 224
18 | dim: 224
19 | }
20 | }
21 | }
22 |
23 | layer {
24 | name: "conv1"
25 | type: "Convolution"
26 | bottom: "data"
27 | top: "conv1"
28 | param {
29 | lr_mult: 1
30 | decay_mult: 1
31 | }
32 | convolution_param {
33 | num_output: 32
34 | bias_term: false
35 | pad: 1
36 | kernel_size: 3
37 | stride: 2
38 | weight_filler {
39 | type: "msra"
40 | }
41 | }
42 | }
43 | layer {
44 | name: "conv1/bn"
45 | type: "BatchNorm"
46 | bottom: "conv1"
47 | top: "conv1"
48 | param {
49 | lr_mult: 0
50 | decay_mult: 0
51 | }
52 | param {
53 | lr_mult: 0
54 | decay_mult: 0
55 | }
56 | param {
57 | lr_mult: 0
58 | decay_mult: 0
59 | }
60 | batch_norm_param {
61 | use_global_stats: true
62 | eps: 1e-5
63 | }
64 | }
65 | layer {
66 | name: "conv1/scale"
67 | type: "Scale"
68 | bottom: "conv1"
69 | top: "conv1"
70 | param {
71 | lr_mult: 1
72 | decay_mult: 0
73 | }
74 | param {
75 | lr_mult: 1
76 | decay_mult: 0
77 | }
78 | scale_param {
79 | filler {
80 | value: 1
81 | }
82 | bias_term: true
83 | bias_filler {
84 | value: 0
85 | }
86 | }
87 | }
88 | layer {
89 | name: "relu1"
90 | type: "ReLU"
91 | bottom: "conv1"
92 | top: "conv1"
93 | }
94 | layer {
95 | name: "conv2_1/dw"
96 | type: "Convolution"
97 | bottom: "conv1"
98 | top: "conv2_1/dw"
99 | param {
100 | lr_mult: 1
101 | decay_mult: 1
102 | }
103 | convolution_param {
104 | num_output: 32
105 | bias_term: false
106 | pad: 1
107 | kernel_size: 3
108 | group: 32
109 | engine: CAFFE
110 | stride: 1
111 | weight_filler {
112 | type: "msra"
113 | }
114 | }
115 | }
116 | layer {
117 | name: "conv2_1/dw/bn"
118 | type: "BatchNorm"
119 | bottom: "conv2_1/dw"
120 | top: "conv2_1/dw"
121 | param {
122 | lr_mult: 0
123 | decay_mult: 0
124 | }
125 | param {
126 | lr_mult: 0
127 | decay_mult: 0
128 | }
129 | param {
130 | lr_mult: 0
131 | decay_mult: 0
132 | }
133 | batch_norm_param {
134 | use_global_stats: true
135 | eps: 1e-5
136 | }
137 | }
138 | layer {
139 | name: "conv2_1/dw/scale"
140 | type: "Scale"
141 | bottom: "conv2_1/dw"
142 | top: "conv2_1/dw"
143 | param {
144 | lr_mult: 1
145 | decay_mult: 0
146 | }
147 | param {
148 | lr_mult: 1
149 | decay_mult: 0
150 | }
151 | scale_param {
152 | filler {
153 | value: 1
154 | }
155 | bias_term: true
156 | bias_filler {
157 | value: 0
158 | }
159 | }
160 | }
161 | layer {
162 | name: "relu2_1/dw"
163 | type: "ReLU"
164 | bottom: "conv2_1/dw"
165 | top: "conv2_1/dw"
166 | }
167 | layer {
168 | name: "conv2_1/sep"
169 | type: "Convolution"
170 | bottom: "conv2_1/dw"
171 | top: "conv2_1/sep"
172 | param {
173 | lr_mult: 1
174 | decay_mult: 1
175 | }
176 | convolution_param {
177 | num_output: 64
178 | bias_term: false
179 | pad: 0
180 | kernel_size: 1
181 | stride: 1
182 | weight_filler {
183 | type: "msra"
184 | }
185 | }
186 | }
187 | layer {
188 | name: "conv2_1/sep/bn"
189 | type: "BatchNorm"
190 | bottom: "conv2_1/sep"
191 | top: "conv2_1/sep"
192 | param {
193 | lr_mult: 0
194 | decay_mult: 0
195 | }
196 | param {
197 | lr_mult: 0
198 | decay_mult: 0
199 | }
200 | param {
201 | lr_mult: 0
202 | decay_mult: 0
203 | }
204 | batch_norm_param {
205 | use_global_stats: true
206 | eps: 1e-5
207 | }
208 | }
209 | layer {
210 | name: "conv2_1/sep/scale"
211 | type: "Scale"
212 | bottom: "conv2_1/sep"
213 | top: "conv2_1/sep"
214 | param {
215 | lr_mult: 1
216 | decay_mult: 0
217 | }
218 | param {
219 | lr_mult: 1
220 | decay_mult: 0
221 | }
222 | scale_param {
223 | filler {
224 | value: 1
225 | }
226 | bias_term: true
227 | bias_filler {
228 | value: 0
229 | }
230 | }
231 | }
232 | layer {
233 | name: "relu2_1/sep"
234 | type: "ReLU"
235 | bottom: "conv2_1/sep"
236 | top: "conv2_1/sep"
237 | }
238 | layer {
239 | name: "conv2_2/dw"
240 | type: "Convolution"
241 | bottom: "conv2_1/sep"
242 | top: "conv2_2/dw"
243 | param {
244 | lr_mult: 1
245 | decay_mult: 1
246 | }
247 | convolution_param {
248 | num_output: 64
249 | bias_term: false
250 | pad: 1
251 | kernel_size: 3
252 | group: 64
253 | engine: CAFFE
254 | stride: 2
255 | weight_filler {
256 | type: "msra"
257 | }
258 | }
259 | }
260 | layer {
261 | name: "conv2_2/dw/bn"
262 | type: "BatchNorm"
263 | bottom: "conv2_2/dw"
264 | top: "conv2_2/dw"
265 | param {
266 | lr_mult: 0
267 | decay_mult: 0
268 | }
269 | param {
270 | lr_mult: 0
271 | decay_mult: 0
272 | }
273 | param {
274 | lr_mult: 0
275 | decay_mult: 0
276 | }
277 | batch_norm_param {
278 | use_global_stats: true
279 | eps: 1e-5
280 | }
281 | }
282 | layer {
283 | name: "conv2_2/dw/scale"
284 | type: "Scale"
285 | bottom: "conv2_2/dw"
286 | top: "conv2_2/dw"
287 | param {
288 | lr_mult: 1
289 | decay_mult: 0
290 | }
291 | param {
292 | lr_mult: 1
293 | decay_mult: 0
294 | }
295 | scale_param {
296 | filler {
297 | value: 1
298 | }
299 | bias_term: true
300 | bias_filler {
301 | value: 0
302 | }
303 | }
304 | }
305 | layer {
306 | name: "relu2_2/dw"
307 | type: "ReLU"
308 | bottom: "conv2_2/dw"
309 | top: "conv2_2/dw"
310 | }
311 | layer {
312 | name: "conv2_2/sep"
313 | type: "Convolution"
314 | bottom: "conv2_2/dw"
315 | top: "conv2_2/sep"
316 | param {
317 | lr_mult: 1
318 | decay_mult: 1
319 | }
320 | convolution_param {
321 | num_output: 128
322 | bias_term: false
323 | pad: 0
324 | kernel_size: 1
325 | stride: 1
326 | weight_filler {
327 | type: "msra"
328 | }
329 | }
330 | }
331 | layer {
332 | name: "conv2_2/sep/bn"
333 | type: "BatchNorm"
334 | bottom: "conv2_2/sep"
335 | top: "conv2_2/sep"
336 | param {
337 | lr_mult: 0
338 | decay_mult: 0
339 | }
340 | param {
341 | lr_mult: 0
342 | decay_mult: 0
343 | }
344 | param {
345 | lr_mult: 0
346 | decay_mult: 0
347 | }
348 | batch_norm_param {
349 | use_global_stats: true
350 | eps: 1e-5
351 | }
352 | }
353 | layer {
354 | name: "conv2_2/sep/scale"
355 | type: "Scale"
356 | bottom: "conv2_2/sep"
357 | top: "conv2_2/sep"
358 | param {
359 | lr_mult: 1
360 | decay_mult: 0
361 | }
362 | param {
363 | lr_mult: 1
364 | decay_mult: 0
365 | }
366 | scale_param {
367 | filler {
368 | value: 1
369 | }
370 | bias_term: true
371 | bias_filler {
372 | value: 0
373 | }
374 | }
375 | }
376 | layer {
377 | name: "relu2_2/sep"
378 | type: "ReLU"
379 | bottom: "conv2_2/sep"
380 | top: "conv2_2/sep"
381 | }
382 | layer {
383 | name: "conv3_1/dw"
384 | type: "Convolution"
385 | bottom: "conv2_2/sep"
386 | top: "conv3_1/dw"
387 | param {
388 | lr_mult: 1
389 | decay_mult: 1
390 | }
391 | convolution_param {
392 | num_output: 128
393 | bias_term: false
394 | pad: 1
395 | kernel_size: 3
396 | group: 128
397 | engine: CAFFE
398 | stride: 1
399 | weight_filler {
400 | type: "msra"
401 | }
402 | }
403 | }
404 | layer {
405 | name: "conv3_1/dw/bn"
406 | type: "BatchNorm"
407 | bottom: "conv3_1/dw"
408 | top: "conv3_1/dw"
409 | param {
410 | lr_mult: 0
411 | decay_mult: 0
412 | }
413 | param {
414 | lr_mult: 0
415 | decay_mult: 0
416 | }
417 | param {
418 | lr_mult: 0
419 | decay_mult: 0
420 | }
421 | batch_norm_param {
422 | use_global_stats: true
423 | eps: 1e-5
424 | }
425 | }
426 | layer {
427 | name: "conv3_1/dw/scale"
428 | type: "Scale"
429 | bottom: "conv3_1/dw"
430 | top: "conv3_1/dw"
431 | param {
432 | lr_mult: 1
433 | decay_mult: 0
434 | }
435 | param {
436 | lr_mult: 1
437 | decay_mult: 0
438 | }
439 | scale_param {
440 | filler {
441 | value: 1
442 | }
443 | bias_term: true
444 | bias_filler {
445 | value: 0
446 | }
447 | }
448 | }
449 | layer {
450 | name: "relu3_1/dw"
451 | type: "ReLU"
452 | bottom: "conv3_1/dw"
453 | top: "conv3_1/dw"
454 | }
455 | layer {
456 | name: "conv3_1/sep"
457 | type: "Convolution"
458 | bottom: "conv3_1/dw"
459 | top: "conv3_1/sep"
460 | param {
461 | lr_mult: 1
462 | decay_mult: 1
463 | }
464 | convolution_param {
465 | num_output: 128
466 | bias_term: false
467 | pad: 0
468 | kernel_size: 1
469 | stride: 1
470 | weight_filler {
471 | type: "msra"
472 | }
473 | }
474 | }
475 | layer {
476 | name: "conv3_1/sep/bn"
477 | type: "BatchNorm"
478 | bottom: "conv3_1/sep"
479 | top: "conv3_1/sep"
480 | param {
481 | lr_mult: 0
482 | decay_mult: 0
483 | }
484 | param {
485 | lr_mult: 0
486 | decay_mult: 0
487 | }
488 | param {
489 | lr_mult: 0
490 | decay_mult: 0
491 | }
492 | batch_norm_param {
493 | use_global_stats: true
494 | eps: 1e-5
495 | }
496 | }
497 | layer {
498 | name: "conv3_1/sep/scale"
499 | type: "Scale"
500 | bottom: "conv3_1/sep"
501 | top: "conv3_1/sep"
502 | param {
503 | lr_mult: 1
504 | decay_mult: 0
505 | }
506 | param {
507 | lr_mult: 1
508 | decay_mult: 0
509 | }
510 | scale_param {
511 | filler {
512 | value: 1
513 | }
514 | bias_term: true
515 | bias_filler {
516 | value: 0
517 | }
518 | }
519 | }
520 | layer {
521 | name: "relu3_1/sep"
522 | type: "ReLU"
523 | bottom: "conv3_1/sep"
524 | top: "conv3_1/sep"
525 | }
526 | layer {
527 | name: "conv3_2/dw"
528 | type: "Convolution"
529 | bottom: "conv3_1/sep"
530 | top: "conv3_2/dw"
531 | param {
532 | lr_mult: 1
533 | decay_mult: 1
534 | }
535 | convolution_param {
536 | num_output: 128
537 | bias_term: false
538 | pad: 1
539 | kernel_size: 3
540 | group: 128
541 | engine: CAFFE
542 | stride: 2
543 | weight_filler {
544 | type: "msra"
545 | }
546 | }
547 | }
548 | layer {
549 | name: "conv3_2/dw/bn"
550 | type: "BatchNorm"
551 | bottom: "conv3_2/dw"
552 | top: "conv3_2/dw"
553 | param {
554 | lr_mult: 0
555 | decay_mult: 0
556 | }
557 | param {
558 | lr_mult: 0
559 | decay_mult: 0
560 | }
561 | param {
562 | lr_mult: 0
563 | decay_mult: 0
564 | }
565 | batch_norm_param {
566 | use_global_stats: true
567 | eps: 1e-5
568 | }
569 | }
570 | layer {
571 | name: "conv3_2/dw/scale"
572 | type: "Scale"
573 | bottom: "conv3_2/dw"
574 | top: "conv3_2/dw"
575 | param {
576 | lr_mult: 1
577 | decay_mult: 0
578 | }
579 | param {
580 | lr_mult: 1
581 | decay_mult: 0
582 | }
583 | scale_param {
584 | filler {
585 | value: 1
586 | }
587 | bias_term: true
588 | bias_filler {
589 | value: 0
590 | }
591 | }
592 | }
593 | layer {
594 | name: "relu3_2/dw"
595 | type: "ReLU"
596 | bottom: "conv3_2/dw"
597 | top: "conv3_2/dw"
598 | }
599 | layer {
600 | name: "conv3_2/sep"
601 | type: "Convolution"
602 | bottom: "conv3_2/dw"
603 | top: "conv3_2/sep"
604 | param {
605 | lr_mult: 1
606 | decay_mult: 1
607 | }
608 | convolution_param {
609 | num_output: 256
610 | bias_term: false
611 | pad: 0
612 | kernel_size: 1
613 | stride: 1
614 | weight_filler {
615 | type: "msra"
616 | }
617 | }
618 | }
619 | layer {
620 | name: "conv3_2/sep/bn"
621 | type: "BatchNorm"
622 | bottom: "conv3_2/sep"
623 | top: "conv3_2/sep"
624 | param {
625 | lr_mult: 0
626 | decay_mult: 0
627 | }
628 | param {
629 | lr_mult: 0
630 | decay_mult: 0
631 | }
632 | param {
633 | lr_mult: 0
634 | decay_mult: 0
635 | }
636 | batch_norm_param {
637 | use_global_stats: true
638 | eps: 1e-5
639 | }
640 | }
641 | layer {
642 | name: "conv3_2/sep/scale"
643 | type: "Scale"
644 | bottom: "conv3_2/sep"
645 | top: "conv3_2/sep"
646 | param {
647 | lr_mult: 1
648 | decay_mult: 0
649 | }
650 | param {
651 | lr_mult: 1
652 | decay_mult: 0
653 | }
654 | scale_param {
655 | filler {
656 | value: 1
657 | }
658 | bias_term: true
659 | bias_filler {
660 | value: 0
661 | }
662 | }
663 | }
664 | layer {
665 | name: "relu3_2/sep"
666 | type: "ReLU"
667 | bottom: "conv3_2/sep"
668 | top: "conv3_2/sep"
669 | }
670 | layer {
671 | name: "conv4_1/dw"
672 | type: "Convolution"
673 | bottom: "conv3_2/sep"
674 | top: "conv4_1/dw"
675 | param {
676 | lr_mult: 1
677 | decay_mult: 1
678 | }
679 | convolution_param {
680 | num_output: 256
681 | bias_term: false
682 | pad: 1
683 | kernel_size: 3
684 | group: 256
685 | engine: CAFFE
686 | stride: 1
687 | weight_filler {
688 | type: "msra"
689 | }
690 | }
691 | }
692 | layer {
693 | name: "conv4_1/dw/bn"
694 | type: "BatchNorm"
695 | bottom: "conv4_1/dw"
696 | top: "conv4_1/dw"
697 | param {
698 | lr_mult: 0
699 | decay_mult: 0
700 | }
701 | param {
702 | lr_mult: 0
703 | decay_mult: 0
704 | }
705 | param {
706 | lr_mult: 0
707 | decay_mult: 0
708 | }
709 | batch_norm_param {
710 | use_global_stats: true
711 | eps: 1e-5
712 | }
713 | }
714 | layer {
715 | name: "conv4_1/dw/scale"
716 | type: "Scale"
717 | bottom: "conv4_1/dw"
718 | top: "conv4_1/dw"
719 | param {
720 | lr_mult: 1
721 | decay_mult: 0
722 | }
723 | param {
724 | lr_mult: 1
725 | decay_mult: 0
726 | }
727 | scale_param {
728 | filler {
729 | value: 1
730 | }
731 | bias_term: true
732 | bias_filler {
733 | value: 0
734 | }
735 | }
736 | }
737 | layer {
738 | name: "relu4_1/dw"
739 | type: "ReLU"
740 | bottom: "conv4_1/dw"
741 | top: "conv4_1/dw"
742 | }
743 | layer {
744 | name: "conv4_1/sep"
745 | type: "Convolution"
746 | bottom: "conv4_1/dw"
747 | top: "conv4_1/sep"
748 | param {
749 | lr_mult: 1
750 | decay_mult: 1
751 | }
752 | convolution_param {
753 | num_output: 256
754 | bias_term: false
755 | pad: 0
756 | kernel_size: 1
757 | stride: 1
758 | weight_filler {
759 | type: "msra"
760 | }
761 | }
762 | }
763 | layer {
764 | name: "conv4_1/sep/bn"
765 | type: "BatchNorm"
766 | bottom: "conv4_1/sep"
767 | top: "conv4_1/sep"
768 | param {
769 | lr_mult: 0
770 | decay_mult: 0
771 | }
772 | param {
773 | lr_mult: 0
774 | decay_mult: 0
775 | }
776 | param {
777 | lr_mult: 0
778 | decay_mult: 0
779 | }
780 | batch_norm_param {
781 | use_global_stats: true
782 | eps: 1e-5
783 | }
784 | }
785 | layer {
786 | name: "conv4_1/sep/scale"
787 | type: "Scale"
788 | bottom: "conv4_1/sep"
789 | top: "conv4_1/sep"
790 | param {
791 | lr_mult: 1
792 | decay_mult: 0
793 | }
794 | param {
795 | lr_mult: 1
796 | decay_mult: 0
797 | }
798 | scale_param {
799 | filler {
800 | value: 1
801 | }
802 | bias_term: true
803 | bias_filler {
804 | value: 0
805 | }
806 | }
807 | }
808 | layer {
809 | name: "relu4_1/sep"
810 | type: "ReLU"
811 | bottom: "conv4_1/sep"
812 | top: "conv4_1/sep"
813 | }
814 | layer {
815 | name: "conv4_2/dw"
816 | type: "Convolution"
817 | bottom: "conv4_1/sep"
818 | top: "conv4_2/dw"
819 | param {
820 | lr_mult: 1
821 | decay_mult: 1
822 | }
823 | convolution_param {
824 | num_output: 256
825 | bias_term: false
826 | pad: 1
827 | kernel_size: 3
828 | group: 256
829 | engine: CAFFE
830 | stride: 2
831 | weight_filler {
832 | type: "msra"
833 | }
834 | }
835 | }
836 | layer {
837 | name: "conv4_2/dw/bn"
838 | type: "BatchNorm"
839 | bottom: "conv4_2/dw"
840 | top: "conv4_2/dw"
841 | param {
842 | lr_mult: 0
843 | decay_mult: 0
844 | }
845 | param {
846 | lr_mult: 0
847 | decay_mult: 0
848 | }
849 | param {
850 | lr_mult: 0
851 | decay_mult: 0
852 | }
853 | batch_norm_param {
854 | use_global_stats: true
855 | eps: 1e-5
856 | }
857 | }
858 | layer {
859 | name: "conv4_2/dw/scale"
860 | type: "Scale"
861 | bottom: "conv4_2/dw"
862 | top: "conv4_2/dw"
863 | param {
864 | lr_mult: 1
865 | decay_mult: 0
866 | }
867 | param {
868 | lr_mult: 1
869 | decay_mult: 0
870 | }
871 | scale_param {
872 | filler {
873 | value: 1
874 | }
875 | bias_term: true
876 | bias_filler {
877 | value: 0
878 | }
879 | }
880 | }
881 | layer {
882 | name: "relu4_2/dw"
883 | type: "ReLU"
884 | bottom: "conv4_2/dw"
885 | top: "conv4_2/dw"
886 | }
887 | layer {
888 | name: "conv4_2/sep"
889 | type: "Convolution"
890 | bottom: "conv4_2/dw"
891 | top: "conv4_2/sep"
892 | param {
893 | lr_mult: 1
894 | decay_mult: 1
895 | }
896 | convolution_param {
897 | num_output: 512
898 | bias_term: false
899 | pad: 0
900 | kernel_size: 1
901 | stride: 1
902 | weight_filler {
903 | type: "msra"
904 | }
905 | }
906 | }
907 | layer {
908 | name: "conv4_2/sep/bn"
909 | type: "BatchNorm"
910 | bottom: "conv4_2/sep"
911 | top: "conv4_2/sep"
912 | param {
913 | lr_mult: 0
914 | decay_mult: 0
915 | }
916 | param {
917 | lr_mult: 0
918 | decay_mult: 0
919 | }
920 | param {
921 | lr_mult: 0
922 | decay_mult: 0
923 | }
924 | batch_norm_param {
925 | use_global_stats: true
926 | eps: 1e-5
927 | }
928 | }
929 | layer {
930 | name: "conv4_2/sep/scale"
931 | type: "Scale"
932 | bottom: "conv4_2/sep"
933 | top: "conv4_2/sep"
934 | param {
935 | lr_mult: 1
936 | decay_mult: 0
937 | }
938 | param {
939 | lr_mult: 1
940 | decay_mult: 0
941 | }
942 | scale_param {
943 | filler {
944 | value: 1
945 | }
946 | bias_term: true
947 | bias_filler {
948 | value: 0
949 | }
950 | }
951 | }
952 | layer {
953 | name: "relu4_2/sep"
954 | type: "ReLU"
955 | bottom: "conv4_2/sep"
956 | top: "conv4_2/sep"
957 | }
958 | layer {
959 | name: "conv5_1/dw"
960 | type: "Convolution"
961 | bottom: "conv4_2/sep"
962 | top: "conv5_1/dw"
963 | param {
964 | lr_mult: 1
965 | decay_mult: 1
966 | }
967 | convolution_param {
968 | num_output: 512
969 | bias_term: false
970 | pad: 1
971 | kernel_size: 3
972 | group: 512
973 | engine: CAFFE
974 | stride: 1
975 | weight_filler {
976 | type: "msra"
977 | }
978 | }
979 | }
980 | layer {
981 | name: "conv5_1/dw/bn"
982 | type: "BatchNorm"
983 | bottom: "conv5_1/dw"
984 | top: "conv5_1/dw"
985 | param {
986 | lr_mult: 0
987 | decay_mult: 0
988 | }
989 | param {
990 | lr_mult: 0
991 | decay_mult: 0
992 | }
993 | param {
994 | lr_mult: 0
995 | decay_mult: 0
996 | }
997 | batch_norm_param {
998 | use_global_stats: true
999 | eps: 1e-5
1000 | }
1001 | }
1002 | layer {
1003 | name: "conv5_1/dw/scale"
1004 | type: "Scale"
1005 | bottom: "conv5_1/dw"
1006 | top: "conv5_1/dw"
1007 | param {
1008 | lr_mult: 1
1009 | decay_mult: 0
1010 | }
1011 | param {
1012 | lr_mult: 1
1013 | decay_mult: 0
1014 | }
1015 | scale_param {
1016 | filler {
1017 | value: 1
1018 | }
1019 | bias_term: true
1020 | bias_filler {
1021 | value: 0
1022 | }
1023 | }
1024 | }
1025 | layer {
1026 | name: "relu5_1/dw"
1027 | type: "ReLU"
1028 | bottom: "conv5_1/dw"
1029 | top: "conv5_1/dw"
1030 | }
1031 | layer {
1032 | name: "conv5_1/sep"
1033 | type: "Convolution"
1034 | bottom: "conv5_1/dw"
1035 | top: "conv5_1/sep"
1036 | param {
1037 | lr_mult: 1
1038 | decay_mult: 1
1039 | }
1040 | convolution_param {
1041 | num_output: 512
1042 | bias_term: false
1043 | pad: 0
1044 | kernel_size: 1
1045 | stride: 1
1046 | weight_filler {
1047 | type: "msra"
1048 | }
1049 | }
1050 | }
1051 | layer {
1052 | name: "conv5_1/sep/bn"
1053 | type: "BatchNorm"
1054 | bottom: "conv5_1/sep"
1055 | top: "conv5_1/sep"
1056 | param {
1057 | lr_mult: 0
1058 | decay_mult: 0
1059 | }
1060 | param {
1061 | lr_mult: 0
1062 | decay_mult: 0
1063 | }
1064 | param {
1065 | lr_mult: 0
1066 | decay_mult: 0
1067 | }
1068 | batch_norm_param {
1069 | use_global_stats: true
1070 | eps: 1e-5
1071 | }
1072 | }
1073 | layer {
1074 | name: "conv5_1/sep/scale"
1075 | type: "Scale"
1076 | bottom: "conv5_1/sep"
1077 | top: "conv5_1/sep"
1078 | param {
1079 | lr_mult: 1
1080 | decay_mult: 0
1081 | }
1082 | param {
1083 | lr_mult: 1
1084 | decay_mult: 0
1085 | }
1086 | scale_param {
1087 | filler {
1088 | value: 1
1089 | }
1090 | bias_term: true
1091 | bias_filler {
1092 | value: 0
1093 | }
1094 | }
1095 | }
1096 | layer {
1097 | name: "relu5_1/sep"
1098 | type: "ReLU"
1099 | bottom: "conv5_1/sep"
1100 | top: "conv5_1/sep"
1101 | }
1102 | layer {
1103 | name: "conv5_2/dw"
1104 | type: "Convolution"
1105 | bottom: "conv5_1/sep"
1106 | top: "conv5_2/dw"
1107 | param {
1108 | lr_mult: 1
1109 | decay_mult: 1
1110 | }
1111 | convolution_param {
1112 | num_output: 512
1113 | bias_term: false
1114 | pad: 1
1115 | kernel_size: 3
1116 | group: 512
1117 | engine: CAFFE
1118 | stride: 1
1119 | weight_filler {
1120 | type: "msra"
1121 | }
1122 | }
1123 | }
1124 | layer {
1125 | name: "conv5_2/dw/bn"
1126 | type: "BatchNorm"
1127 | bottom: "conv5_2/dw"
1128 | top: "conv5_2/dw"
1129 | param {
1130 | lr_mult: 0
1131 | decay_mult: 0
1132 | }
1133 | param {
1134 | lr_mult: 0
1135 | decay_mult: 0
1136 | }
1137 | param {
1138 | lr_mult: 0
1139 | decay_mult: 0
1140 | }
1141 | batch_norm_param {
1142 | use_global_stats: true
1143 | eps: 1e-5
1144 | }
1145 | }
1146 | layer {
1147 | name: "conv5_2/dw/scale"
1148 | type: "Scale"
1149 | bottom: "conv5_2/dw"
1150 | top: "conv5_2/dw"
1151 | param {
1152 | lr_mult: 1
1153 | decay_mult: 0
1154 | }
1155 | param {
1156 | lr_mult: 1
1157 | decay_mult: 0
1158 | }
1159 | scale_param {
1160 | filler {
1161 | value: 1
1162 | }
1163 | bias_term: true
1164 | bias_filler {
1165 | value: 0
1166 | }
1167 | }
1168 | }
1169 | layer {
1170 | name: "relu5_2/dw"
1171 | type: "ReLU"
1172 | bottom: "conv5_2/dw"
1173 | top: "conv5_2/dw"
1174 | }
1175 | layer {
1176 | name: "conv5_2/sep"
1177 | type: "Convolution"
1178 | bottom: "conv5_2/dw"
1179 | top: "conv5_2/sep"
1180 | param {
1181 | lr_mult: 1
1182 | decay_mult: 1
1183 | }
1184 | convolution_param {
1185 | num_output: 512
1186 | bias_term: false
1187 | pad: 0
1188 | kernel_size: 1
1189 | stride: 1
1190 | weight_filler {
1191 | type: "msra"
1192 | }
1193 | }
1194 | }
1195 | layer {
1196 | name: "conv5_2/sep/bn"
1197 | type: "BatchNorm"
1198 | bottom: "conv5_2/sep"
1199 | top: "conv5_2/sep"
1200 | param {
1201 | lr_mult: 0
1202 | decay_mult: 0
1203 | }
1204 | param {
1205 | lr_mult: 0
1206 | decay_mult: 0
1207 | }
1208 | param {
1209 | lr_mult: 0
1210 | decay_mult: 0
1211 | }
1212 | batch_norm_param {
1213 | use_global_stats: true
1214 | eps: 1e-5
1215 | }
1216 | }
1217 | layer {
1218 | name: "conv5_2/sep/scale"
1219 | type: "Scale"
1220 | bottom: "conv5_2/sep"
1221 | top: "conv5_2/sep"
1222 | param {
1223 | lr_mult: 1
1224 | decay_mult: 0
1225 | }
1226 | param {
1227 | lr_mult: 1
1228 | decay_mult: 0
1229 | }
1230 | scale_param {
1231 | filler {
1232 | value: 1
1233 | }
1234 | bias_term: true
1235 | bias_filler {
1236 | value: 0
1237 | }
1238 | }
1239 | }
1240 | layer {
1241 | name: "relu5_2/sep"
1242 | type: "ReLU"
1243 | bottom: "conv5_2/sep"
1244 | top: "conv5_2/sep"
1245 | }
1246 | layer {
1247 | name: "conv5_3/dw"
1248 | type: "Convolution"
1249 | bottom: "conv5_2/sep"
1250 | top: "conv5_3/dw"
1251 | param {
1252 | lr_mult: 1
1253 | decay_mult: 1
1254 | }
1255 | convolution_param {
1256 | num_output: 512
1257 | bias_term: false
1258 | pad: 1
1259 | kernel_size: 3
1260 | group: 512
1261 | engine: CAFFE
1262 | stride: 1
1263 | weight_filler {
1264 | type: "msra"
1265 | }
1266 | }
1267 | }
1268 | layer {
1269 | name: "conv5_3/dw/bn"
1270 | type: "BatchNorm"
1271 | bottom: "conv5_3/dw"
1272 | top: "conv5_3/dw"
1273 | param {
1274 | lr_mult: 0
1275 | decay_mult: 0
1276 | }
1277 | param {
1278 | lr_mult: 0
1279 | decay_mult: 0
1280 | }
1281 | param {
1282 | lr_mult: 0
1283 | decay_mult: 0
1284 | }
1285 | batch_norm_param {
1286 | use_global_stats: true
1287 | eps: 1e-5
1288 | }
1289 | }
1290 | layer {
1291 | name: "conv5_3/dw/scale"
1292 | type: "Scale"
1293 | bottom: "conv5_3/dw"
1294 | top: "conv5_3/dw"
1295 | param {
1296 | lr_mult: 1
1297 | decay_mult: 0
1298 | }
1299 | param {
1300 | lr_mult: 1
1301 | decay_mult: 0
1302 | }
1303 | scale_param {
1304 | filler {
1305 | value: 1
1306 | }
1307 | bias_term: true
1308 | bias_filler {
1309 | value: 0
1310 | }
1311 | }
1312 | }
1313 | layer {
1314 | name: "relu5_3/dw"
1315 | type: "ReLU"
1316 | bottom: "conv5_3/dw"
1317 | top: "conv5_3/dw"
1318 | }
1319 | layer {
1320 | name: "conv5_3/sep"
1321 | type: "Convolution"
1322 | bottom: "conv5_3/dw"
1323 | top: "conv5_3/sep"
1324 | param {
1325 | lr_mult: 1
1326 | decay_mult: 1
1327 | }
1328 | convolution_param {
1329 | num_output: 512
1330 | bias_term: false
1331 | pad: 0
1332 | kernel_size: 1
1333 | stride: 1
1334 | weight_filler {
1335 | type: "msra"
1336 | }
1337 | }
1338 | }
1339 | layer {
1340 | name: "conv5_3/sep/bn"
1341 | type: "BatchNorm"
1342 | bottom: "conv5_3/sep"
1343 | top: "conv5_3/sep"
1344 | param {
1345 | lr_mult: 0
1346 | decay_mult: 0
1347 | }
1348 | param {
1349 | lr_mult: 0
1350 | decay_mult: 0
1351 | }
1352 | param {
1353 | lr_mult: 0
1354 | decay_mult: 0
1355 | }
1356 | batch_norm_param {
1357 | use_global_stats: true
1358 | eps: 1e-5
1359 | }
1360 | }
1361 | layer {
1362 | name: "conv5_3/sep/scale"
1363 | type: "Scale"
1364 | bottom: "conv5_3/sep"
1365 | top: "conv5_3/sep"
1366 | param {
1367 | lr_mult: 1
1368 | decay_mult: 0
1369 | }
1370 | param {
1371 | lr_mult: 1
1372 | decay_mult: 0
1373 | }
1374 | scale_param {
1375 | filler {
1376 | value: 1
1377 | }
1378 | bias_term: true
1379 | bias_filler {
1380 | value: 0
1381 | }
1382 | }
1383 | }
1384 | layer {
1385 | name: "relu5_3/sep"
1386 | type: "ReLU"
1387 | bottom: "conv5_3/sep"
1388 | top: "conv5_3/sep"
1389 | }
1390 | layer {
1391 | name: "conv5_4/dw"
1392 | type: "Convolution"
1393 | bottom: "conv5_3/sep"
1394 | top: "conv5_4/dw"
1395 | param {
1396 | lr_mult: 1
1397 | decay_mult: 1
1398 | }
1399 | convolution_param {
1400 | num_output: 512
1401 | bias_term: false
1402 | pad: 1
1403 | kernel_size: 3
1404 | group: 512
1405 | engine: CAFFE
1406 | stride: 1
1407 | weight_filler {
1408 | type: "msra"
1409 | }
1410 | }
1411 | }
1412 | layer {
1413 | name: "conv5_4/dw/bn"
1414 | type: "BatchNorm"
1415 | bottom: "conv5_4/dw"
1416 | top: "conv5_4/dw"
1417 | param {
1418 | lr_mult: 0
1419 | decay_mult: 0
1420 | }
1421 | param {
1422 | lr_mult: 0
1423 | decay_mult: 0
1424 | }
1425 | param {
1426 | lr_mult: 0
1427 | decay_mult: 0
1428 | }
1429 | batch_norm_param {
1430 | use_global_stats: true
1431 | eps: 1e-5
1432 | }
1433 | }
1434 | layer {
1435 | name: "conv5_4/dw/scale"
1436 | type: "Scale"
1437 | bottom: "conv5_4/dw"
1438 | top: "conv5_4/dw"
1439 | param {
1440 | lr_mult: 1
1441 | decay_mult: 0
1442 | }
1443 | param {
1444 | lr_mult: 1
1445 | decay_mult: 0
1446 | }
1447 | scale_param {
1448 | filler {
1449 | value: 1
1450 | }
1451 | bias_term: true
1452 | bias_filler {
1453 | value: 0
1454 | }
1455 | }
1456 | }
1457 | layer {
1458 | name: "relu5_4/dw"
1459 | type: "ReLU"
1460 | bottom: "conv5_4/dw"
1461 | top: "conv5_4/dw"
1462 | }
1463 | layer {
1464 | name: "conv5_4/sep"
1465 | type: "Convolution"
1466 | bottom: "conv5_4/dw"
1467 | top: "conv5_4/sep"
1468 | param {
1469 | lr_mult: 1
1470 | decay_mult: 1
1471 | }
1472 | convolution_param {
1473 | num_output: 512
1474 | bias_term: false
1475 | pad: 0
1476 | kernel_size: 1
1477 | stride: 1
1478 | weight_filler {
1479 | type: "msra"
1480 | }
1481 | }
1482 | }
1483 | layer {
1484 | name: "conv5_4/sep/bn"
1485 | type: "BatchNorm"
1486 | bottom: "conv5_4/sep"
1487 | top: "conv5_4/sep"
1488 | param {
1489 | lr_mult: 0
1490 | decay_mult: 0
1491 | }
1492 | param {
1493 | lr_mult: 0
1494 | decay_mult: 0
1495 | }
1496 | param {
1497 | lr_mult: 0
1498 | decay_mult: 0
1499 | }
1500 | batch_norm_param {
1501 | use_global_stats: true
1502 | eps: 1e-5
1503 | }
1504 | }
1505 | layer {
1506 | name: "conv5_4/sep/scale"
1507 | type: "Scale"
1508 | bottom: "conv5_4/sep"
1509 | top: "conv5_4/sep"
1510 | param {
1511 | lr_mult: 1
1512 | decay_mult: 0
1513 | }
1514 | param {
1515 | lr_mult: 1
1516 | decay_mult: 0
1517 | }
1518 | scale_param {
1519 | filler {
1520 | value: 1
1521 | }
1522 | bias_term: true
1523 | bias_filler {
1524 | value: 0
1525 | }
1526 | }
1527 | }
1528 | layer {
1529 | name: "relu5_4/sep"
1530 | type: "ReLU"
1531 | bottom: "conv5_4/sep"
1532 | top: "conv5_4/sep"
1533 | }
1534 | layer {
1535 | name: "conv5_5/dw"
1536 | type: "Convolution"
1537 | bottom: "conv5_4/sep"
1538 | top: "conv5_5/dw"
1539 | param {
1540 | lr_mult: 1
1541 | decay_mult: 1
1542 | }
1543 | convolution_param {
1544 | num_output: 512
1545 | bias_term: false
1546 | pad: 1
1547 | kernel_size: 3
1548 | group: 512
1549 | engine: CAFFE
1550 | stride: 1
1551 | weight_filler {
1552 | type: "msra"
1553 | }
1554 | }
1555 | }
1556 | layer {
1557 | name: "conv5_5/dw/bn"
1558 | type: "BatchNorm"
1559 | bottom: "conv5_5/dw"
1560 | top: "conv5_5/dw"
1561 | param {
1562 | lr_mult: 0
1563 | decay_mult: 0
1564 | }
1565 | param {
1566 | lr_mult: 0
1567 | decay_mult: 0
1568 | }
1569 | param {
1570 | lr_mult: 0
1571 | decay_mult: 0
1572 | }
1573 | batch_norm_param {
1574 | use_global_stats: true
1575 | eps: 1e-5
1576 | }
1577 | }
1578 | layer {
1579 | name: "conv5_5/dw/scale"
1580 | type: "Scale"
1581 | bottom: "conv5_5/dw"
1582 | top: "conv5_5/dw"
1583 | param {
1584 | lr_mult: 1
1585 | decay_mult: 0
1586 | }
1587 | param {
1588 | lr_mult: 1
1589 | decay_mult: 0
1590 | }
1591 | scale_param {
1592 | filler {
1593 | value: 1
1594 | }
1595 | bias_term: true
1596 | bias_filler {
1597 | value: 0
1598 | }
1599 | }
1600 | }
1601 | layer {
1602 | name: "relu5_5/dw"
1603 | type: "ReLU"
1604 | bottom: "conv5_5/dw"
1605 | top: "conv5_5/dw"
1606 | }
1607 | layer {
1608 | name: "conv5_5/sep"
1609 | type: "Convolution"
1610 | bottom: "conv5_5/dw"
1611 | top: "conv5_5/sep"
1612 | param {
1613 | lr_mult: 1
1614 | decay_mult: 1
1615 | }
1616 | convolution_param {
1617 | num_output: 512
1618 | bias_term: false
1619 | pad: 0
1620 | kernel_size: 1
1621 | stride: 1
1622 | weight_filler {
1623 | type: "msra"
1624 | }
1625 | }
1626 | }
1627 | layer {
1628 | name: "conv5_5/sep/bn"
1629 | type: "BatchNorm"
1630 | bottom: "conv5_5/sep"
1631 | top: "conv5_5/sep"
1632 | param {
1633 | lr_mult: 0
1634 | decay_mult: 0
1635 | }
1636 | param {
1637 | lr_mult: 0
1638 | decay_mult: 0
1639 | }
1640 | param {
1641 | lr_mult: 0
1642 | decay_mult: 0
1643 | }
1644 | batch_norm_param {
1645 | use_global_stats: true
1646 | eps: 1e-5
1647 | }
1648 | }
1649 | layer {
1650 | name: "conv5_5/sep/scale"
1651 | type: "Scale"
1652 | bottom: "conv5_5/sep"
1653 | top: "conv5_5/sep"
1654 | param {
1655 | lr_mult: 1
1656 | decay_mult: 0
1657 | }
1658 | param {
1659 | lr_mult: 1
1660 | decay_mult: 0
1661 | }
1662 | scale_param {
1663 | filler {
1664 | value: 1
1665 | }
1666 | bias_term: true
1667 | bias_filler {
1668 | value: 0
1669 | }
1670 | }
1671 | }
1672 | layer {
1673 | name: "relu5_5/sep"
1674 | type: "ReLU"
1675 | bottom: "conv5_5/sep"
1676 | top: "conv5_5/sep"
1677 | }
1678 | layer {
1679 | name: "conv5_6/dw"
1680 | type: "Convolution"
1681 | bottom: "conv5_5/sep"
1682 | top: "conv5_6/dw"
1683 | param {
1684 | lr_mult: 1
1685 | decay_mult: 1
1686 | }
1687 | convolution_param {
1688 | num_output: 512
1689 | bias_term: false
1690 | pad: 1
1691 | kernel_size: 3
1692 | group: 512
1693 | engine: CAFFE
1694 | stride: 2
1695 | weight_filler {
1696 | type: "msra"
1697 | }
1698 | }
1699 | }
1700 | layer {
1701 | name: "conv5_6/dw/bn"
1702 | type: "BatchNorm"
1703 | bottom: "conv5_6/dw"
1704 | top: "conv5_6/dw"
1705 | param {
1706 | lr_mult: 0
1707 | decay_mult: 0
1708 | }
1709 | param {
1710 | lr_mult: 0
1711 | decay_mult: 0
1712 | }
1713 | param {
1714 | lr_mult: 0
1715 | decay_mult: 0
1716 | }
1717 | batch_norm_param {
1718 | use_global_stats: true
1719 | eps: 1e-5
1720 | }
1721 | }
1722 | layer {
1723 | name: "conv5_6/dw/scale"
1724 | type: "Scale"
1725 | bottom: "conv5_6/dw"
1726 | top: "conv5_6/dw"
1727 | param {
1728 | lr_mult: 1
1729 | decay_mult: 0
1730 | }
1731 | param {
1732 | lr_mult: 1
1733 | decay_mult: 0
1734 | }
1735 | scale_param {
1736 | filler {
1737 | value: 1
1738 | }
1739 | bias_term: true
1740 | bias_filler {
1741 | value: 0
1742 | }
1743 | }
1744 | }
1745 | layer {
1746 | name: "relu5_6/dw"
1747 | type: "ReLU"
1748 | bottom: "conv5_6/dw"
1749 | top: "conv5_6/dw"
1750 | }
1751 | layer {
1752 | name: "conv5_6/sep"
1753 | type: "Convolution"
1754 | bottom: "conv5_6/dw"
1755 | top: "conv5_6/sep"
1756 | param {
1757 | lr_mult: 1
1758 | decay_mult: 1
1759 | }
1760 | convolution_param {
1761 | num_output: 1024
1762 | bias_term: false
1763 | pad: 0
1764 | kernel_size: 1
1765 | stride: 1
1766 | weight_filler {
1767 | type: "msra"
1768 | }
1769 | }
1770 | }
1771 | layer {
1772 | name: "conv5_6/sep/bn"
1773 | type: "BatchNorm"
1774 | bottom: "conv5_6/sep"
1775 | top: "conv5_6/sep"
1776 | param {
1777 | lr_mult: 0
1778 | decay_mult: 0
1779 | }
1780 | param {
1781 | lr_mult: 0
1782 | decay_mult: 0
1783 | }
1784 | param {
1785 | lr_mult: 0
1786 | decay_mult: 0
1787 | }
1788 | batch_norm_param {
1789 | use_global_stats: true
1790 | eps: 1e-5
1791 | }
1792 | }
1793 | layer {
1794 | name: "conv5_6/sep/scale"
1795 | type: "Scale"
1796 | bottom: "conv5_6/sep"
1797 | top: "conv5_6/sep"
1798 | param {
1799 | lr_mult: 1
1800 | decay_mult: 0
1801 | }
1802 | param {
1803 | lr_mult: 1
1804 | decay_mult: 0
1805 | }
1806 | scale_param {
1807 | filler {
1808 | value: 1
1809 | }
1810 | bias_term: true
1811 | bias_filler {
1812 | value: 0
1813 | }
1814 | }
1815 | }
1816 | layer {
1817 | name: "relu5_6/sep"
1818 | type: "ReLU"
1819 | bottom: "conv5_6/sep"
1820 | top: "conv5_6/sep"
1821 | }
1822 | layer {
1823 | name: "conv6/dw"
1824 | type: "Convolution"
1825 | bottom: "conv5_6/sep"
1826 | top: "conv6/dw"
1827 | param {
1828 | lr_mult: 1
1829 | decay_mult: 1
1830 | }
1831 | convolution_param {
1832 | num_output: 1024
1833 | bias_term: false
1834 | pad: 1
1835 | kernel_size: 3
1836 | group: 1024
1837 | engine: CAFFE
1838 | stride: 1
1839 | weight_filler {
1840 | type: "msra"
1841 | }
1842 | }
1843 | }
1844 | layer {
1845 | name: "conv6/dw/bn"
1846 | type: "BatchNorm"
1847 | bottom: "conv6/dw"
1848 | top: "conv6/dw"
1849 | param {
1850 | lr_mult: 0
1851 | decay_mult: 0
1852 | }
1853 | param {
1854 | lr_mult: 0
1855 | decay_mult: 0
1856 | }
1857 | param {
1858 | lr_mult: 0
1859 | decay_mult: 0
1860 | }
1861 | batch_norm_param {
1862 | use_global_stats: true
1863 | eps: 1e-5
1864 | }
1865 | }
1866 | layer {
1867 | name: "conv6/dw/scale"
1868 | type: "Scale"
1869 | bottom: "conv6/dw"
1870 | top: "conv6/dw"
1871 | param {
1872 | lr_mult: 1
1873 | decay_mult: 0
1874 | }
1875 | param {
1876 | lr_mult: 1
1877 | decay_mult: 0
1878 | }
1879 | scale_param {
1880 | filler {
1881 | value: 1
1882 | }
1883 | bias_term: true
1884 | bias_filler {
1885 | value: 0
1886 | }
1887 | }
1888 | }
1889 | layer {
1890 | name: "relu6/dw"
1891 | type: "ReLU"
1892 | bottom: "conv6/dw"
1893 | top: "conv6/dw"
1894 | }
1895 | layer {
1896 | name: "conv6/sep"
1897 | type: "Convolution"
1898 | bottom: "conv6/dw"
1899 | top: "conv6/sep"
1900 | param {
1901 | lr_mult: 1
1902 | decay_mult: 1
1903 | }
1904 | convolution_param {
1905 | num_output: 1024
1906 | bias_term: false
1907 | pad: 0
1908 | kernel_size: 1
1909 | stride: 1
1910 | weight_filler {
1911 | type: "msra"
1912 | }
1913 | }
1914 | }
1915 | layer {
1916 | name: "conv6/sep/bn"
1917 | type: "BatchNorm"
1918 | bottom: "conv6/sep"
1919 | top: "conv6/sep"
1920 | param {
1921 | lr_mult: 0
1922 | decay_mult: 0
1923 | }
1924 | param {
1925 | lr_mult: 0
1926 | decay_mult: 0
1927 | }
1928 | param {
1929 | lr_mult: 0
1930 | decay_mult: 0
1931 | }
1932 | batch_norm_param {
1933 | use_global_stats: true
1934 | eps: 1e-5
1935 | }
1936 | }
1937 | layer {
1938 | name: "conv6/sep/scale"
1939 | type: "Scale"
1940 | bottom: "conv6/sep"
1941 | top: "conv6/sep"
1942 | param {
1943 | lr_mult: 1
1944 | decay_mult: 0
1945 | }
1946 | param {
1947 | lr_mult: 1
1948 | decay_mult: 0
1949 | }
1950 | scale_param {
1951 | filler {
1952 | value: 1
1953 | }
1954 | bias_term: true
1955 | bias_filler {
1956 | value: 0
1957 | }
1958 | }
1959 | }
1960 | layer {
1961 | name: "relu6/sep"
1962 | type: "ReLU"
1963 | bottom: "conv6/sep"
1964 | top: "conv6/sep"
1965 | }
1966 | layer {
1967 | name: "pool6"
1968 | type: "Pooling"
1969 | bottom: "conv6/sep"
1970 | top: "pool6"
1971 | pooling_param {
1972 | pool: AVE
1973 | global_pooling: true
1974 | }
1975 | }
1976 | layer {
1977 | name: "fc7"
1978 | type: "Convolution"
1979 | bottom: "pool6"
1980 | top: "fc7"
1981 | param {
1982 | lr_mult: 1
1983 | decay_mult: 1
1984 | }
1985 | param {
1986 | lr_mult: 2
1987 | decay_mult: 0
1988 | }
1989 | convolution_param {
1990 | num_output: 1000
1991 | kernel_size: 1
1992 | weight_filler {
1993 | type: "msra"
1994 | }
1995 | bias_filler {
1996 | type: "constant"
1997 | value: 0
1998 | }
1999 | }
2000 | }
2001 | layer {
2002 | name: "prob"
2003 | type: "Softmax"
2004 | bottom: "fc7"
2005 | top: "prob"
2006 | }
2007 |
--------------------------------------------------------------------------------
/Deep_Learning_Algorithm/models/mobilenet_yolov3_lite.prototxt:
--------------------------------------------------------------------------------
1 | name: "remove_bn"
2 |
3 | input: "data"
4 | input_shape {
5 | dim: 1
6 | dim: 3
7 | dim: 320
8 | dim: 320
9 | }
10 |
11 | layer {
12 | name: "conv0"
13 | type: "Convolution"
14 | bottom: "data"
15 | top: "conv0"
16 | param {
17 | lr_mult: 0.10000000149
18 | decay_mult: 0.10000000149
19 | }
20 | convolution_param {
21 | num_output: 32
22 | bias_term: true
23 | pad: 1
24 | kernel_size: 3
25 | stride: 2
26 | weight_filler {
27 | type: "msra"
28 | }
29 | }
30 | }
31 | layer {
32 | name: "conv0/relu"
33 | type: "ReLU"
34 | bottom: "conv0"
35 | top: "conv0"
36 | }
37 | layer {
38 | name: "conv1/dw"
39 | type: "DepthwiseConvolution"
40 | bottom: "conv0"
41 | top: "conv1/dw"
42 | param {
43 | lr_mult: 0.10000000149
44 | decay_mult: 0.10000000149
45 | }
46 | convolution_param {
47 | num_output: 32
48 | bias_term: true
49 | pad: 1
50 | kernel_size: 3
51 | group: 32
52 | weight_filler {
53 | type: "msra"
54 | }
55 | engine: CAFFE
56 | }
57 | }
58 | layer {
59 | name: "conv1/dw/relu"
60 | type: "ReLU"
61 | bottom: "conv1/dw"
62 | top: "conv1/dw"
63 | }
64 | layer {
65 | name: "conv1"
66 | type: "Convolution"
67 | bottom: "conv1/dw"
68 | top: "conv1"
69 | param {
70 | lr_mult: 0.10000000149
71 | decay_mult: 0.10000000149
72 | }
73 | convolution_param {
74 | num_output: 64
75 | bias_term: true
76 | kernel_size: 1
77 | weight_filler {
78 | type: "msra"
79 | }
80 | }
81 | }
82 | layer {
83 | name: "conv1/relu"
84 | type: "ReLU"
85 | bottom: "conv1"
86 | top: "conv1"
87 | }
88 | layer {
89 | name: "conv2/dw"
90 | type: "DepthwiseConvolution"
91 | bottom: "conv1"
92 | top: "conv2/dw"
93 | param {
94 | lr_mult: 0.10000000149
95 | decay_mult: 0.10000000149
96 | }
97 | convolution_param {
98 | num_output: 64
99 | bias_term: true
100 | pad: 1
101 | kernel_size: 3
102 | group: 64
103 | stride: 2
104 | weight_filler {
105 | type: "msra"
106 | }
107 | engine: CAFFE
108 | }
109 | }
110 | layer {
111 | name: "conv2/dw/relu"
112 | type: "ReLU"
113 | bottom: "conv2/dw"
114 | top: "conv2/dw"
115 | }
116 | layer {
117 | name: "conv2"
118 | type: "Convolution"
119 | bottom: "conv2/dw"
120 | top: "conv2"
121 | param {
122 | lr_mult: 0.10000000149
123 | decay_mult: 0.10000000149
124 | }
125 | convolution_param {
126 | num_output: 128
127 | bias_term: true
128 | kernel_size: 1
129 | weight_filler {
130 | type: "msra"
131 | }
132 | }
133 | }
134 | layer {
135 | name: "conv2/relu"
136 | type: "ReLU"
137 | bottom: "conv2"
138 | top: "conv2"
139 | }
140 | layer {
141 | name: "conv3/dw"
142 | type: "DepthwiseConvolution"
143 | bottom: "conv2"
144 | top: "conv3/dw"
145 | param {
146 | lr_mult: 0.10000000149
147 | decay_mult: 0.10000000149
148 | }
149 | convolution_param {
150 | num_output: 128
151 | bias_term: true
152 | pad: 1
153 | kernel_size: 3
154 | group: 128
155 | weight_filler {
156 | type: "msra"
157 | }
158 | engine: CAFFE
159 | }
160 | }
161 | layer {
162 | name: "conv3/dw/relu"
163 | type: "ReLU"
164 | bottom: "conv3/dw"
165 | top: "conv3/dw"
166 | }
167 | layer {
168 | name: "conv3"
169 | type: "Convolution"
170 | bottom: "conv3/dw"
171 | top: "conv3"
172 | param {
173 | lr_mult: 0.10000000149
174 | decay_mult: 0.10000000149
175 | }
176 | convolution_param {
177 | num_output: 128
178 | bias_term: true
179 | kernel_size: 1
180 | weight_filler {
181 | type: "msra"
182 | }
183 | }
184 | }
185 | layer {
186 | name: "conv3/relu"
187 | type: "ReLU"
188 | bottom: "conv3"
189 | top: "conv3"
190 | }
191 | layer {
192 | name: "conv4/dw"
193 | type: "DepthwiseConvolution"
194 | bottom: "conv3"
195 | top: "conv4/dw"
196 | param {
197 | lr_mult: 0.10000000149
198 | decay_mult: 0.10000000149
199 | }
200 | convolution_param {
201 | num_output: 128
202 | bias_term: true
203 | pad: 1
204 | kernel_size: 3
205 | group: 128
206 | stride: 2
207 | weight_filler {
208 | type: "msra"
209 | }
210 | engine: CAFFE
211 | }
212 | }
213 | layer {
214 | name: "conv4/dw/relu"
215 | type: "ReLU"
216 | bottom: "conv4/dw"
217 | top: "conv4/dw"
218 | }
219 | layer {
220 | name: "conv4"
221 | type: "Convolution"
222 | bottom: "conv4/dw"
223 | top: "conv4"
224 | param {
225 | lr_mult: 0.10000000149
226 | decay_mult: 0.10000000149
227 | }
228 | convolution_param {
229 | num_output: 256
230 | bias_term: true
231 | kernel_size: 1
232 | weight_filler {
233 | type: "msra"
234 | }
235 | }
236 | }
237 | layer {
238 | name: "conv4/relu"
239 | type: "ReLU"
240 | bottom: "conv4"
241 | top: "conv4"
242 | }
243 | layer {
244 | name: "conv5/dw"
245 | type: "DepthwiseConvolution"
246 | bottom: "conv4"
247 | top: "conv5/dw"
248 | param {
249 | lr_mult: 0.10000000149
250 | decay_mult: 0.10000000149
251 | }
252 | convolution_param {
253 | num_output: 256
254 | bias_term: true
255 | pad: 1
256 | kernel_size: 3
257 | group: 256
258 | weight_filler {
259 | type: "msra"
260 | }
261 | engine: CAFFE
262 | }
263 | }
264 | layer {
265 | name: "conv5/dw/relu"
266 | type: "ReLU"
267 | bottom: "conv5/dw"
268 | top: "conv5/dw"
269 | }
270 | layer {
271 | name: "conv5"
272 | type: "Convolution"
273 | bottom: "conv5/dw"
274 | top: "conv5"
275 | param {
276 | lr_mult: 0.10000000149
277 | decay_mult: 0.10000000149
278 | }
279 | convolution_param {
280 | num_output: 256
281 | bias_term: true
282 | kernel_size: 1
283 | weight_filler {
284 | type: "msra"
285 | }
286 | }
287 | }
288 | layer {
289 | name: "conv5/relu"
290 | type: "ReLU"
291 | bottom: "conv5"
292 | top: "conv5"
293 | }
294 | layer {
295 | name: "conv6/dw"
296 | type: "DepthwiseConvolution"
297 | bottom: "conv5"
298 | top: "conv6/dw"
299 | param {
300 | lr_mult: 0.10000000149
301 | decay_mult: 0.10000000149
302 | }
303 | convolution_param {
304 | num_output: 256
305 | bias_term: true
306 | pad: 1
307 | kernel_size: 3
308 | group: 256
309 | stride: 2
310 | weight_filler {
311 | type: "msra"
312 | }
313 | engine: CAFFE
314 | }
315 | }
316 | layer {
317 | name: "conv6/dw/relu"
318 | type: "ReLU"
319 | bottom: "conv6/dw"
320 | top: "conv6/dw"
321 | }
322 | layer {
323 | name: "conv6"
324 | type: "Convolution"
325 | bottom: "conv6/dw"
326 | top: "conv6"
327 | param {
328 | lr_mult: 0.10000000149
329 | decay_mult: 0.10000000149
330 | }
331 | convolution_param {
332 | num_output: 512
333 | bias_term: true
334 | kernel_size: 1
335 | weight_filler {
336 | type: "msra"
337 | }
338 | }
339 | }
340 | layer {
341 | name: "conv6/relu"
342 | type: "ReLU"
343 | bottom: "conv6"
344 | top: "conv6"
345 | }
346 | layer {
347 | name: "conv7/dw"
348 | type: "DepthwiseConvolution"
349 | bottom: "conv6"
350 | top: "conv7/dw"
351 | param {
352 | lr_mult: 0.10000000149
353 | decay_mult: 0.10000000149
354 | }
355 | convolution_param {
356 | num_output: 512
357 | bias_term: true
358 | pad: 1
359 | kernel_size: 3
360 | group: 512
361 | weight_filler {
362 | type: "msra"
363 | }
364 | engine: CAFFE
365 | }
366 | }
367 | layer {
368 | name: "conv7/dw/relu"
369 | type: "ReLU"
370 | bottom: "conv7/dw"
371 | top: "conv7/dw"
372 | }
373 | layer {
374 | name: "conv7"
375 | type: "Convolution"
376 | bottom: "conv7/dw"
377 | top: "conv7"
378 | param {
379 | lr_mult: 0.10000000149
380 | decay_mult: 0.10000000149
381 | }
382 | convolution_param {
383 | num_output: 512
384 | bias_term: true
385 | kernel_size: 1
386 | weight_filler {
387 | type: "msra"
388 | }
389 | }
390 | }
391 | layer {
392 | name: "conv7/relu"
393 | type: "ReLU"
394 | bottom: "conv7"
395 | top: "conv7"
396 | }
397 | layer {
398 | name: "conv8/dw"
399 | type: "DepthwiseConvolution"
400 | bottom: "conv7"
401 | top: "conv8/dw"
402 | param {
403 | lr_mult: 0.10000000149
404 | decay_mult: 0.10000000149
405 | }
406 | convolution_param {
407 | num_output: 512
408 | bias_term: true
409 | pad: 1
410 | kernel_size: 3
411 | group: 512
412 | weight_filler {
413 | type: "msra"
414 | }
415 | engine: CAFFE
416 | }
417 | }
418 | layer {
419 | name: "conv8/dw/relu"
420 | type: "ReLU"
421 | bottom: "conv8/dw"
422 | top: "conv8/dw"
423 | }
424 | layer {
425 | name: "conv8"
426 | type: "Convolution"
427 | bottom: "conv8/dw"
428 | top: "conv8"
429 | param {
430 | lr_mult: 0.10000000149
431 | decay_mult: 0.10000000149
432 | }
433 | convolution_param {
434 | num_output: 512
435 | bias_term: true
436 | kernel_size: 1
437 | weight_filler {
438 | type: "msra"
439 | }
440 | }
441 | }
442 | layer {
443 | name: "conv8/relu"
444 | type: "ReLU"
445 | bottom: "conv8"
446 | top: "conv8"
447 | }
448 | layer {
449 | name: "conv9/dw"
450 | type: "DepthwiseConvolution"
451 | bottom: "conv8"
452 | top: "conv9/dw"
453 | param {
454 | lr_mult: 0.10000000149
455 | decay_mult: 0.10000000149
456 | }
457 | convolution_param {
458 | num_output: 512
459 | bias_term: true
460 | pad: 1
461 | kernel_size: 3
462 | group: 512
463 | weight_filler {
464 | type: "msra"
465 | }
466 | engine: CAFFE
467 | }
468 | }
469 | layer {
470 | name: "conv9/dw/relu"
471 | type: "ReLU"
472 | bottom: "conv9/dw"
473 | top: "conv9/dw"
474 | }
475 | layer {
476 | name: "conv9"
477 | type: "Convolution"
478 | bottom: "conv9/dw"
479 | top: "conv9"
480 | param {
481 | lr_mult: 0.10000000149
482 | decay_mult: 0.10000000149
483 | }
484 | convolution_param {
485 | num_output: 512
486 | bias_term: true
487 | kernel_size: 1
488 | weight_filler {
489 | type: "msra"
490 | }
491 | }
492 | }
493 | layer {
494 | name: "conv9/relu"
495 | type: "ReLU"
496 | bottom: "conv9"
497 | top: "conv9"
498 | }
499 | layer {
500 | name: "conv10/dw"
501 | type: "DepthwiseConvolution"
502 | bottom: "conv9"
503 | top: "conv10/dw"
504 | param {
505 | lr_mult: 0.10000000149
506 | decay_mult: 0.10000000149
507 | }
508 | convolution_param {
509 | num_output: 512
510 | bias_term: true
511 | pad: 1
512 | kernel_size: 3
513 | group: 512
514 | weight_filler {
515 | type: "msra"
516 | }
517 | engine: CAFFE
518 | }
519 | }
520 | layer {
521 | name: "conv10/dw/relu"
522 | type: "ReLU"
523 | bottom: "conv10/dw"
524 | top: "conv10/dw"
525 | }
526 | layer {
527 | name: "conv10"
528 | type: "Convolution"
529 | bottom: "conv10/dw"
530 | top: "conv10"
531 | param {
532 | lr_mult: 0.10000000149
533 | decay_mult: 0.10000000149
534 | }
535 | convolution_param {
536 | num_output: 512
537 | bias_term: true
538 | kernel_size: 1
539 | weight_filler {
540 | type: "msra"
541 | }
542 | }
543 | }
544 | layer {
545 | name: "conv10/relu"
546 | type: "ReLU"
547 | bottom: "conv10"
548 | top: "conv10"
549 | }
550 | layer {
551 | name: "conv11/dw"
552 | type: "DepthwiseConvolution"
553 | bottom: "conv10"
554 | top: "conv11/dw"
555 | param {
556 | lr_mult: 0.10000000149
557 | decay_mult: 0.10000000149
558 | }
559 | convolution_param {
560 | num_output: 512
561 | bias_term: true
562 | pad: 1
563 | kernel_size: 3
564 | group: 512
565 | weight_filler {
566 | type: "msra"
567 | }
568 | engine: CAFFE
569 | }
570 | }
571 | layer {
572 | name: "conv11/dw/relu"
573 | type: "ReLU"
574 | bottom: "conv11/dw"
575 | top: "conv11/dw"
576 | }
577 | layer {
578 | name: "conv11"
579 | type: "Convolution"
580 | bottom: "conv11/dw"
581 | top: "conv11"
582 | param {
583 | lr_mult: 0.10000000149
584 | decay_mult: 0.10000000149
585 | }
586 | convolution_param {
587 | num_output: 512
588 | bias_term: true
589 | kernel_size: 1
590 | weight_filler {
591 | type: "msra"
592 | }
593 | }
594 | }
595 | layer {
596 | name: "conv11/relu"
597 | type: "ReLU"
598 | bottom: "conv11"
599 | top: "conv11"
600 | }
601 | layer {
602 | name: "conv12/dw"
603 | type: "DepthwiseConvolution"
604 | bottom: "conv11"
605 | top: "conv12/dw"
606 | param {
607 | lr_mult: 0.10000000149
608 | decay_mult: 0.10000000149
609 | }
610 | convolution_param {
611 | num_output: 512
612 | bias_term: true
613 | pad: 1
614 | kernel_size: 3
615 | group: 512
616 | stride: 2
617 | weight_filler {
618 | type: "msra"
619 | }
620 | engine: CAFFE
621 | }
622 | }
623 | layer {
624 | name: "conv12/dw/relu"
625 | type: "ReLU"
626 | bottom: "conv12/dw"
627 | top: "conv12/dw"
628 | }
629 | layer {
630 | name: "conv12"
631 | type: "Convolution"
632 | bottom: "conv12/dw"
633 | top: "conv12"
634 | param {
635 | lr_mult: 0.10000000149
636 | decay_mult: 0.10000000149
637 | }
638 | convolution_param {
639 | num_output: 1024
640 | bias_term: true
641 | kernel_size: 1
642 | weight_filler {
643 | type: "msra"
644 | }
645 | }
646 | }
647 | layer {
648 | name: "conv12/relu"
649 | type: "ReLU"
650 | bottom: "conv12"
651 | top: "conv12"
652 | }
653 | layer {
654 | name: "conv13/dw"
655 | type: "DepthwiseConvolution"
656 | bottom: "conv12"
657 | top: "conv13/dw"
658 | param {
659 | lr_mult: 0.10000000149
660 | decay_mult: 0.10000000149
661 | }
662 | convolution_param {
663 | num_output: 1024
664 | bias_term: true
665 | pad: 1
666 | kernel_size: 3
667 | group: 1024
668 | weight_filler {
669 | type: "msra"
670 | }
671 | engine: CAFFE
672 | }
673 | }
674 | layer {
675 | name: "conv13/dw/relu"
676 | type: "ReLU"
677 | bottom: "conv13/dw"
678 | top: "conv13/dw"
679 | }
680 | layer {
681 | name: "conv13"
682 | type: "Convolution"
683 | bottom: "conv13/dw"
684 | top: "conv13"
685 | param {
686 | lr_mult: 0.10000000149
687 | decay_mult: 0.10000000149
688 | }
689 | convolution_param {
690 | num_output: 1024
691 | bias_term: true
692 | kernel_size: 1
693 | weight_filler {
694 | type: "msra"
695 | }
696 | }
697 | }
698 | layer {
699 | name: "conv13/relu"
700 | type: "ReLU"
701 | bottom: "conv13"
702 | top: "conv13"
703 | }
704 | layer {
705 | name: "conv16/dw"
706 | type: "DepthwiseConvolution"
707 | bottom: "conv13"
708 | top: "conv16/dw"
709 | param {
710 | lr_mult: 1.0
711 | decay_mult: 1.0
712 | }
713 | convolution_param {
714 | num_output: 1024
715 | bias_term: true
716 | pad: 1
717 | kernel_size: 3
718 | group: 1024
719 | weight_filler {
720 | type: "msra"
721 | }
722 | engine: CAFFE
723 | }
724 | }
725 | layer {
726 | name: "conv16/dw/relu"
727 | type: "ReLU"
728 | bottom: "conv16/dw"
729 | top: "conv16/dw"
730 | }
731 | layer {
732 | name: "conv16"
733 | type: "Convolution"
734 | bottom: "conv16/dw"
735 | top: "conv16"
736 | param {
737 | lr_mult: 1.0
738 | decay_mult: 1.0
739 | }
740 | convolution_param {
741 | num_output: 1024
742 | bias_term: true
743 | kernel_size: 1
744 | weight_filler {
745 | type: "msra"
746 | }
747 | }
748 | }
749 | layer {
750 | name: "conv16/relu"
751 | type: "ReLU"
752 | bottom: "conv16"
753 | top: "conv16"
754 | }
755 | layer {
756 | name: "upsample_new"
757 | type: "Deconvolution"
758 | bottom: "conv16"
759 | top: "upsample_new"
760 | param {
761 | lr_mult: 0.0
762 | decay_mult: 0.0
763 | }
764 | convolution_param {
765 | num_output: 512
766 | bias_term: false
767 | pad: 0
768 | kernel_size: 1
769 | group: 512
770 | stride: 2
771 | weight_filler {
772 | type: "constant"
773 | value: 1.0
774 | }
775 | }
776 | }
777 | layer {
778 | name: "maxpool"
779 | type: "Pooling"
780 | bottom: "upsample_new"
781 | top: "maxpool"
782 | pooling_param {
783 | pool: MAX
784 | kernel_size: 2
785 | stride: 1
786 | pad: 1
787 | }
788 | }
789 | layer {
790 | name: "conv17/dw"
791 | type: "DepthwiseConvolution"
792 | bottom: "conv11"
793 | top: "conv17/dw"
794 | param {
795 | lr_mult: 1.0
796 | decay_mult: 1.0
797 | }
798 | convolution_param {
799 | num_output: 512
800 | bias_term: true
801 | pad: 1
802 | kernel_size: 3
803 | group: 512
804 | weight_filler {
805 | type: "msra"
806 | }
807 | engine: CAFFE
808 | }
809 | }
810 | layer {
811 | name: "conv17/dw/relu"
812 | type: "ReLU"
813 | bottom: "conv17/dw"
814 | top: "conv17/dw"
815 | }
816 | layer {
817 | name: "conv17"
818 | type: "Convolution"
819 | bottom: "conv17/dw"
820 | top: "conv17"
821 | param {
822 | lr_mult: 1.0
823 | decay_mult: 1.0
824 | }
825 | convolution_param {
826 | num_output: 512
827 | bias_term: true
828 | kernel_size: 1
829 | weight_filler {
830 | type: "msra"
831 | }
832 | }
833 | }
834 | layer {
835 | name: "conv17/relu"
836 | type: "ReLU"
837 | bottom: "conv17"
838 | top: "conv17"
839 | }
840 | layer {
841 | name: "conv17/sum"
842 | type: "Eltwise"
843 | bottom: "conv17"
844 | bottom: "maxpool"
845 | top: "conv17/sum"
846 | }
847 | layer {
848 | name: "conv18/dw"
849 | type: "DepthwiseConvolution"
850 | bottom: "conv17/sum"
851 | top: "conv18/dw"
852 | param {
853 | lr_mult: 1.0
854 | decay_mult: 1.0
855 | }
856 | convolution_param {
857 | num_output: 512
858 | bias_term: true
859 | pad: 1
860 | kernel_size: 3
861 | group: 512
862 | weight_filler {
863 | type: "msra"
864 | }
865 | engine: CAFFE
866 | }
867 | }
868 | layer {
869 | name: "conv18/dw/relu"
870 | type: "ReLU"
871 | bottom: "conv18/dw"
872 | top: "conv18/dw"
873 | }
874 | layer {
875 | name: "conv18"
876 | type: "Convolution"
877 | bottom: "conv18/dw"
878 | top: "conv18"
879 | param {
880 | lr_mult: 1.0
881 | decay_mult: 1.0
882 | }
883 | convolution_param {
884 | num_output: 1024
885 | bias_term: true
886 | kernel_size: 1
887 | weight_filler {
888 | type: "msra"
889 | }
890 | }
891 | }
892 | layer {
893 | name: "conv18/relu"
894 | type: "ReLU"
895 | bottom: "conv18"
896 | top: "conv18"
897 | }
898 | layer {
899 | name: "conv20"
900 | type: "Convolution"
901 | bottom: "conv16"
902 | top: "conv20"
903 | param {
904 | lr_mult: 1.0
905 | decay_mult: 1.0
906 | }
907 | param {
908 | lr_mult: 2.0
909 | decay_mult: 0.0
910 | }
911 | convolution_param {
912 | num_output: 75
913 | bias_term: true
914 | pad: 0
915 | kernel_size: 1
916 | stride: 1
917 | weight_filler {
918 | type: "msra"
919 | }
920 | bias_filler {
921 | value: 0.0
922 | }
923 | }
924 | }
925 | layer {
926 | name: "conv21"
927 | type: "Convolution"
928 | bottom: "conv18"
929 | top: "conv21"
930 | param {
931 | lr_mult: 1.0
932 | decay_mult: 1.0
933 | }
934 | param {
935 | lr_mult: 2.0
936 | decay_mult: 0.0
937 | }
938 | convolution_param {
939 | num_output: 75
940 | bias_term: true
941 | pad: 0
942 | kernel_size: 1
943 | stride: 1
944 | weight_filler {
945 | type: "msra"
946 | }
947 | bias_filler {
948 | value: 0.0
949 | }
950 | }
951 | }
952 | layer {
953 | name: "detection_out"
954 | type: "Yolov3DetectionOutput"
955 | bottom: "conv20"
956 | bottom: "conv21"
957 | top: "detection_out"
958 | include {
959 | phase: TEST
960 | }
961 | yolov3_detection_output_param {
962 | num_classes: 20
963 | # confidence_threshold: 0.00999999977648
964 | confidence_threshold: 0.25
965 | nms_threshold: 0.550000011921
966 | biases: 10.0
967 | biases: 14.0
968 | biases: 23.0
969 | biases: 27.0
970 | biases: 37.0
971 | biases: 58.0
972 | biases: 81.0
973 | biases: 82.0
974 | biases: 135.0
975 | biases: 169.0
976 | biases: 344.0
977 | biases: 319.0
978 | anchors_scale: 32
979 | anchors_scale: 16
980 | mask_group_num: 2
981 | mask: 3
982 | mask: 4
983 | mask: 5
984 | mask: 0
985 | mask: 1
986 | mask: 2
987 | }
988 | }
--------------------------------------------------------------------------------
/Deep_Learning_Algorithm/models/squeezenet_v1.1.prototxt:
--------------------------------------------------------------------------------
1 | name: "squeezenet_v1.1_deploy"
2 |
3 | layer {
4 | name: "data"
5 | type: "Input"
6 | top: "data"
7 | input_param { shape: { dim: 1 dim: 3 dim: 227 dim: 227 } }
8 | }
9 | layer {
10 | name: "conv1"
11 | type: "Convolution"
12 | bottom: "data"
13 | top: "conv1"
14 | convolution_param {
15 | num_output: 64
16 | kernel_size: 3
17 | stride: 2
18 | }
19 | }
20 | layer {
21 | name: "relu_conv1"
22 | type: "ReLU"
23 | bottom: "conv1"
24 | top: "conv1"
25 | }
26 | layer {
27 | name: "pool1"
28 | type: "Pooling"
29 | bottom: "conv1"
30 | top: "pool1"
31 | pooling_param {
32 | pool: MAX
33 | kernel_size: 3
34 | stride: 2
35 | }
36 | }
37 | layer {
38 | name: "fire2/squeeze1x1"
39 | type: "Convolution"
40 | bottom: "pool1"
41 | top: "fire2/squeeze1x1"
42 | convolution_param {
43 | num_output: 16
44 | kernel_size: 1
45 | }
46 | }
47 | layer {
48 | name: "fire2/relu_squeeze1x1"
49 | type: "ReLU"
50 | bottom: "fire2/squeeze1x1"
51 | top: "fire2/squeeze1x1"
52 | }
53 | layer {
54 | name: "fire2/expand1x1"
55 | type: "Convolution"
56 | bottom: "fire2/squeeze1x1"
57 | top: "fire2/expand1x1"
58 | convolution_param {
59 | num_output: 64
60 | kernel_size: 1
61 | }
62 | }
63 | layer {
64 | name: "fire2/relu_expand1x1"
65 | type: "ReLU"
66 | bottom: "fire2/expand1x1"
67 | top: "fire2/expand1x1"
68 | }
69 | layer {
70 | name: "fire2/expand3x3"
71 | type: "Convolution"
72 | bottom: "fire2/squeeze1x1"
73 | top: "fire2/expand3x3"
74 | convolution_param {
75 | num_output: 64
76 | pad: 1
77 | kernel_size: 3
78 | }
79 | }
80 | layer {
81 | name: "fire2/relu_expand3x3"
82 | type: "ReLU"
83 | bottom: "fire2/expand3x3"
84 | top: "fire2/expand3x3"
85 | }
86 | layer {
87 | name: "fire2/concat"
88 | type: "Concat"
89 | bottom: "fire2/expand1x1"
90 | bottom: "fire2/expand3x3"
91 | top: "fire2/concat"
92 | }
93 | layer {
94 | name: "fire3/squeeze1x1"
95 | type: "Convolution"
96 | bottom: "fire2/concat"
97 | top: "fire3/squeeze1x1"
98 | convolution_param {
99 | num_output: 16
100 | kernel_size: 1
101 | }
102 | }
103 | layer {
104 | name: "fire3/relu_squeeze1x1"
105 | type: "ReLU"
106 | bottom: "fire3/squeeze1x1"
107 | top: "fire3/squeeze1x1"
108 | }
109 | layer {
110 | name: "fire3/expand1x1"
111 | type: "Convolution"
112 | bottom: "fire3/squeeze1x1"
113 | top: "fire3/expand1x1"
114 | convolution_param {
115 | num_output: 64
116 | kernel_size: 1
117 | }
118 | }
119 | layer {
120 | name: "fire3/relu_expand1x1"
121 | type: "ReLU"
122 | bottom: "fire3/expand1x1"
123 | top: "fire3/expand1x1"
124 | }
125 | layer {
126 | name: "fire3/expand3x3"
127 | type: "Convolution"
128 | bottom: "fire3/squeeze1x1"
129 | top: "fire3/expand3x3"
130 | convolution_param {
131 | num_output: 64
132 | pad: 1
133 | kernel_size: 3
134 | }
135 | }
136 | layer {
137 | name: "fire3/relu_expand3x3"
138 | type: "ReLU"
139 | bottom: "fire3/expand3x3"
140 | top: "fire3/expand3x3"
141 | }
142 | layer {
143 | name: "fire3/concat"
144 | type: "Concat"
145 | bottom: "fire3/expand1x1"
146 | bottom: "fire3/expand3x3"
147 | top: "fire3/concat"
148 | }
149 | layer {
150 | name: "pool3"
151 | type: "Pooling"
152 | bottom: "fire3/concat"
153 | top: "pool3"
154 | pooling_param {
155 | pool: MAX
156 | kernel_size: 3
157 | stride: 2
158 | }
159 | }
160 | layer {
161 | name: "fire4/squeeze1x1"
162 | type: "Convolution"
163 | bottom: "pool3"
164 | top: "fire4/squeeze1x1"
165 | convolution_param {
166 | num_output: 32
167 | kernel_size: 1
168 | }
169 | }
170 | layer {
171 | name: "fire4/relu_squeeze1x1"
172 | type: "ReLU"
173 | bottom: "fire4/squeeze1x1"
174 | top: "fire4/squeeze1x1"
175 | }
176 | layer {
177 | name: "fire4/expand1x1"
178 | type: "Convolution"
179 | bottom: "fire4/squeeze1x1"
180 | top: "fire4/expand1x1"
181 | convolution_param {
182 | num_output: 128
183 | kernel_size: 1
184 | }
185 | }
186 | layer {
187 | name: "fire4/relu_expand1x1"
188 | type: "ReLU"
189 | bottom: "fire4/expand1x1"
190 | top: "fire4/expand1x1"
191 | }
192 | layer {
193 | name: "fire4/expand3x3"
194 | type: "Convolution"
195 | bottom: "fire4/squeeze1x1"
196 | top: "fire4/expand3x3"
197 | convolution_param {
198 | num_output: 128
199 | pad: 1
200 | kernel_size: 3
201 | }
202 | }
203 | layer {
204 | name: "fire4/relu_expand3x3"
205 | type: "ReLU"
206 | bottom: "fire4/expand3x3"
207 | top: "fire4/expand3x3"
208 | }
209 | layer {
210 | name: "fire4/concat"
211 | type: "Concat"
212 | bottom: "fire4/expand1x1"
213 | bottom: "fire4/expand3x3"
214 | top: "fire4/concat"
215 | }
216 | layer {
217 | name: "fire5/squeeze1x1"
218 | type: "Convolution"
219 | bottom: "fire4/concat"
220 | top: "fire5/squeeze1x1"
221 | convolution_param {
222 | num_output: 32
223 | kernel_size: 1
224 | }
225 | }
226 | layer {
227 | name: "fire5/relu_squeeze1x1"
228 | type: "ReLU"
229 | bottom: "fire5/squeeze1x1"
230 | top: "fire5/squeeze1x1"
231 | }
232 | layer {
233 | name: "fire5/expand1x1"
234 | type: "Convolution"
235 | bottom: "fire5/squeeze1x1"
236 | top: "fire5/expand1x1"
237 | convolution_param {
238 | num_output: 128
239 | kernel_size: 1
240 | }
241 | }
242 | layer {
243 | name: "fire5/relu_expand1x1"
244 | type: "ReLU"
245 | bottom: "fire5/expand1x1"
246 | top: "fire5/expand1x1"
247 | }
248 | layer {
249 | name: "fire5/expand3x3"
250 | type: "Convolution"
251 | bottom: "fire5/squeeze1x1"
252 | top: "fire5/expand3x3"
253 | convolution_param {
254 | num_output: 128
255 | pad: 1
256 | kernel_size: 3
257 | }
258 | }
259 | layer {
260 | name: "fire5/relu_expand3x3"
261 | type: "ReLU"
262 | bottom: "fire5/expand3x3"
263 | top: "fire5/expand3x3"
264 | }
265 | layer {
266 | name: "fire5/concat"
267 | type: "Concat"
268 | bottom: "fire5/expand1x1"
269 | bottom: "fire5/expand3x3"
270 | top: "fire5/concat"
271 | }
272 | layer {
273 | name: "pool5"
274 | type: "Pooling"
275 | bottom: "fire5/concat"
276 | top: "pool5"
277 | pooling_param {
278 | pool: MAX
279 | kernel_size: 3
280 | stride: 2
281 | }
282 | }
283 | layer {
284 | name: "fire6/squeeze1x1"
285 | type: "Convolution"
286 | bottom: "pool5"
287 | top: "fire6/squeeze1x1"
288 | convolution_param {
289 | num_output: 48
290 | kernel_size: 1
291 | }
292 | }
293 | layer {
294 | name: "fire6/relu_squeeze1x1"
295 | type: "ReLU"
296 | bottom: "fire6/squeeze1x1"
297 | top: "fire6/squeeze1x1"
298 | }
299 | layer {
300 | name: "fire6/expand1x1"
301 | type: "Convolution"
302 | bottom: "fire6/squeeze1x1"
303 | top: "fire6/expand1x1"
304 | convolution_param {
305 | num_output: 192
306 | kernel_size: 1
307 | }
308 | }
309 | layer {
310 | name: "fire6/relu_expand1x1"
311 | type: "ReLU"
312 | bottom: "fire6/expand1x1"
313 | top: "fire6/expand1x1"
314 | }
315 | layer {
316 | name: "fire6/expand3x3"
317 | type: "Convolution"
318 | bottom: "fire6/squeeze1x1"
319 | top: "fire6/expand3x3"
320 | convolution_param {
321 | num_output: 192
322 | pad: 1
323 | kernel_size: 3
324 | }
325 | }
326 | layer {
327 | name: "fire6/relu_expand3x3"
328 | type: "ReLU"
329 | bottom: "fire6/expand3x3"
330 | top: "fire6/expand3x3"
331 | }
332 | layer {
333 | name: "fire6/concat"
334 | type: "Concat"
335 | bottom: "fire6/expand1x1"
336 | bottom: "fire6/expand3x3"
337 | top: "fire6/concat"
338 | }
339 | layer {
340 | name: "fire7/squeeze1x1"
341 | type: "Convolution"
342 | bottom: "fire6/concat"
343 | top: "fire7/squeeze1x1"
344 | convolution_param {
345 | num_output: 48
346 | kernel_size: 1
347 | }
348 | }
349 | layer {
350 | name: "fire7/relu_squeeze1x1"
351 | type: "ReLU"
352 | bottom: "fire7/squeeze1x1"
353 | top: "fire7/squeeze1x1"
354 | }
355 | layer {
356 | name: "fire7/expand1x1"
357 | type: "Convolution"
358 | bottom: "fire7/squeeze1x1"
359 | top: "fire7/expand1x1"
360 | convolution_param {
361 | num_output: 192
362 | kernel_size: 1
363 | }
364 | }
365 | layer {
366 | name: "fire7/relu_expand1x1"
367 | type: "ReLU"
368 | bottom: "fire7/expand1x1"
369 | top: "fire7/expand1x1"
370 | }
371 | layer {
372 | name: "fire7/expand3x3"
373 | type: "Convolution"
374 | bottom: "fire7/squeeze1x1"
375 | top: "fire7/expand3x3"
376 | convolution_param {
377 | num_output: 192
378 | pad: 1
379 | kernel_size: 3
380 | }
381 | }
382 | layer {
383 | name: "fire7/relu_expand3x3"
384 | type: "ReLU"
385 | bottom: "fire7/expand3x3"
386 | top: "fire7/expand3x3"
387 | }
388 | layer {
389 | name: "fire7/concat"
390 | type: "Concat"
391 | bottom: "fire7/expand1x1"
392 | bottom: "fire7/expand3x3"
393 | top: "fire7/concat"
394 | }
395 | layer {
396 | name: "fire8/squeeze1x1"
397 | type: "Convolution"
398 | bottom: "fire7/concat"
399 | top: "fire8/squeeze1x1"
400 | convolution_param {
401 | num_output: 64
402 | kernel_size: 1
403 | }
404 | }
405 | layer {
406 | name: "fire8/relu_squeeze1x1"
407 | type: "ReLU"
408 | bottom: "fire8/squeeze1x1"
409 | top: "fire8/squeeze1x1"
410 | }
411 | layer {
412 | name: "fire8/expand1x1"
413 | type: "Convolution"
414 | bottom: "fire8/squeeze1x1"
415 | top: "fire8/expand1x1"
416 | convolution_param {
417 | num_output: 256
418 | kernel_size: 1
419 | }
420 | }
421 | layer {
422 | name: "fire8/relu_expand1x1"
423 | type: "ReLU"
424 | bottom: "fire8/expand1x1"
425 | top: "fire8/expand1x1"
426 | }
427 | layer {
428 | name: "fire8/expand3x3"
429 | type: "Convolution"
430 | bottom: "fire8/squeeze1x1"
431 | top: "fire8/expand3x3"
432 | convolution_param {
433 | num_output: 256
434 | pad: 1
435 | kernel_size: 3
436 | }
437 | }
438 | layer {
439 | name: "fire8/relu_expand3x3"
440 | type: "ReLU"
441 | bottom: "fire8/expand3x3"
442 | top: "fire8/expand3x3"
443 | }
444 | layer {
445 | name: "fire8/concat"
446 | type: "Concat"
447 | bottom: "fire8/expand1x1"
448 | bottom: "fire8/expand3x3"
449 | top: "fire8/concat"
450 | }
451 | layer {
452 | name: "fire9/squeeze1x1"
453 | type: "Convolution"
454 | bottom: "fire8/concat"
455 | top: "fire9/squeeze1x1"
456 | convolution_param {
457 | num_output: 64
458 | kernel_size: 1
459 | }
460 | }
461 | layer {
462 | name: "fire9/relu_squeeze1x1"
463 | type: "ReLU"
464 | bottom: "fire9/squeeze1x1"
465 | top: "fire9/squeeze1x1"
466 | }
467 | layer {
468 | name: "fire9/expand1x1"
469 | type: "Convolution"
470 | bottom: "fire9/squeeze1x1"
471 | top: "fire9/expand1x1"
472 | convolution_param {
473 | num_output: 256
474 | kernel_size: 1
475 | }
476 | }
477 | layer {
478 | name: "fire9/relu_expand1x1"
479 | type: "ReLU"
480 | bottom: "fire9/expand1x1"
481 | top: "fire9/expand1x1"
482 | }
483 | layer {
484 | name: "fire9/expand3x3"
485 | type: "Convolution"
486 | bottom: "fire9/squeeze1x1"
487 | top: "fire9/expand3x3"
488 | convolution_param {
489 | num_output: 256
490 | pad: 1
491 | kernel_size: 3
492 | }
493 | }
494 | layer {
495 | name: "fire9/relu_expand3x3"
496 | type: "ReLU"
497 | bottom: "fire9/expand3x3"
498 | top: "fire9/expand3x3"
499 | }
500 | layer {
501 | name: "fire9/concat"
502 | type: "Concat"
503 | bottom: "fire9/expand1x1"
504 | bottom: "fire9/expand3x3"
505 | top: "fire9/concat"
506 | }
507 | layer {
508 | name: "drop9"
509 | type: "Dropout"
510 | bottom: "fire9/concat"
511 | top: "fire9/concat"
512 | dropout_param {
513 | dropout_ratio: 0.5
514 | }
515 | }
516 | layer {
517 | name: "conv10"
518 | type: "Convolution"
519 | bottom: "fire9/concat"
520 | top: "conv10"
521 | convolution_param {
522 | num_output: 1000
523 | pad: 1
524 | kernel_size: 1
525 | }
526 | }
527 | layer {
528 | name: "relu_conv10"
529 | type: "ReLU"
530 | bottom: "conv10"
531 | top: "conv10"
532 | }
533 | layer {
534 | name: "pool10"
535 | type: "Pooling"
536 | bottom: "conv10"
537 | top: "pool10"
538 | pooling_param {
539 | pool: AVE
540 | global_pooling: true
541 | }
542 | }
543 | layer {
544 | name: "prob"
545 | type: "Softmax"
546 | bottom: "pool10"
547 | top: "prob"
548 | }
549 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 embedeep technology co., LTD
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | After four years R&D, EEP-TPU has evolved into the second-generation architecture with V3+ version, and has been embedded in three ASIC chips to achieve mass production.
2 | ### FREE TPU V3plus for FPGA has updated, which is the free version of a commercial AI processor (EEP-TPU) for Deep Learning EDGE Inference.
3 | ### User can download lastest EEP-TPU from https://github.com/embedeep/FREE-TPU-V3plus-for-FPGA
4 |
--------------------------------------------------------------------------------
/Runtime_Software/Readme.md:
--------------------------------------------------------------------------------
1 | ## FREE-TPU Runtime Software
2 | *eepdemo_arm* is the FREE-TPU's demo application.
3 |
4 | ### Usage
5 | ```
6 | ./eepdemo_arm -h
7 | Usage:
8 | ./eepdemo_arm [-options]
9 | where options include:
10 | --help(-h) # print this help message
11 | --bin # eep tpu bin file path.
12 | --image # image jpg path or folder path.
13 | --label