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