├── .gitattributes ├── LICENSE ├── README.md └── faceboxes_train.prototxt /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 lqs19881030 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. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | faceboxes 2 | The network of the faceboxes.This is for your reference only. 3 | -------------------------------------------------------------------------------- /faceboxes_train.prototxt: -------------------------------------------------------------------------------- 1 | name: "faceboxes_1024" 2 | layer { 3 | name: "data" 4 | type: "AnnotatedData" 5 | top: "data" 6 | top: "label" 7 | include { 8 | phase: TRAIN 9 | } 10 | transform_param { 11 | mirror: true 12 | mean_value: 104 13 | mean_value: 117 14 | mean_value: 123 15 | resize_param { 16 | prob: 1 17 | resize_mode: WARP 18 | height: 1024 19 | width: 1024 20 | interp_mode: LINEAR 21 | interp_mode: AREA 22 | interp_mode: NEAREST 23 | interp_mode: CUBIC 24 | interp_mode: LANCZOS4 25 | } 26 | emit_constraint { 27 | emit_type: CENTER 28 | } 29 | distort_param { 30 | brightness_prob: 0.5 31 | brightness_delta: 32 32 | contrast_prob: 0.5 33 | contrast_lower: 0.5 34 | contrast_upper: 1.5 35 | hue_prob: 0.5 36 | hue_delta: 18 37 | saturation_prob: 0.5 38 | saturation_lower: 0.5 39 | saturation_upper: 1.5 40 | random_order_prob: 0.0 41 | } 42 | expand_param { 43 | prob: 0.5 44 | max_expand_ratio: 4.0 45 | } 46 | } 47 | data_param { 48 | source: "J:/dataset/dataset/wider_annotations/widerfacetoxml/trainval_leveldb" 49 | batch_size: 32 50 | backend: LEVELDB 51 | } 52 | annotated_data_param { 53 | batch_sampler { 54 | max_sample: 1 55 | max_trials: 1 56 | } 57 | batch_sampler { 58 | sampler { 59 | min_scale: 0.3 60 | max_scale: 1.0 61 | min_aspect_ratio: 0.5 62 | max_aspect_ratio: 2.0 63 | } 64 | sample_constraint { 65 | min_jaccard_overlap: 0.1 66 | } 67 | max_sample: 1 68 | max_trials: 50 69 | } 70 | batch_sampler { 71 | sampler { 72 | min_scale: 0.3 73 | max_scale: 1.0 74 | min_aspect_ratio: 0.5 75 | max_aspect_ratio: 2.0 76 | } 77 | sample_constraint { 78 | min_jaccard_overlap: 0.3 79 | } 80 | max_sample: 1 81 | max_trials: 50 82 | } 83 | batch_sampler { 84 | sampler { 85 | min_scale: 0.3 86 | max_scale: 1.0 87 | min_aspect_ratio: 0.5 88 | max_aspect_ratio: 2.0 89 | } 90 | sample_constraint { 91 | min_jaccard_overlap: 0.5 92 | } 93 | max_sample: 1 94 | max_trials: 50 95 | } 96 | batch_sampler { 97 | sampler { 98 | min_scale: 0.3 99 | max_scale: 1.0 100 | min_aspect_ratio: 0.5 101 | max_aspect_ratio: 2.0 102 | } 103 | sample_constraint { 104 | min_jaccard_overlap: 0.7 105 | } 106 | max_sample: 1 107 | max_trials: 50 108 | } 109 | batch_sampler { 110 | sampler { 111 | min_scale: 0.3 112 | max_scale: 1.0 113 | min_aspect_ratio: 0.5 114 | max_aspect_ratio: 2.0 115 | } 116 | sample_constraint { 117 | min_jaccard_overlap: 0.9 118 | } 119 | max_sample: 1 120 | max_trials: 50 121 | } 122 | batch_sampler { 123 | sampler { 124 | min_scale: 0.3 125 | max_scale: 1.0 126 | min_aspect_ratio: 0.5 127 | max_aspect_ratio: 2.0 128 | } 129 | sample_constraint { 130 | max_jaccard_overlap: 1.0 131 | } 132 | max_sample: 1 133 | max_trials: 50 134 | } 135 | label_map_file: "J:/dataset/dataset/wider_annotations/widerfacetoxml/labelmap_face.prototxt" 136 | } 137 | } 138 | #conv1 139 | layer { 140 | name: "conv1" 141 | type: "Convolution" 142 | bottom: "data" 143 | top: "conv1" 144 | param { 145 | lr_mult: 0 146 | decay_mult: 0 147 | } 148 | param { 149 | lr_mult: 0 150 | decay_mult: 0 151 | } 152 | convolution_param { 153 | num_output: 24 154 | pad: 0 155 | kernel_size: 7 156 | stride: 4 157 | weight_filler { 158 | type: "xavier" 159 | } 160 | bias_filler { 161 | type: "constant" 162 | value: 0 163 | } 164 | } 165 | } 166 | 167 | layer { 168 | name: "conv1/bn" 169 | type: "BatchNorm" 170 | bottom: "conv1" 171 | top: "conv1" 172 | param { 173 | lr_mult: 0 174 | decay_mult: 0 175 | } 176 | param { 177 | lr_mult: 0 178 | decay_mult: 0 179 | } 180 | param { 181 | lr_mult: 0 182 | decay_mult: 0 183 | } 184 | batch_norm_param { 185 | use_global_stats: false 186 | } 187 | } 188 | 189 | layer { 190 | name: "conv1/neg" 191 | type: "Power" 192 | bottom: "conv1" 193 | top: "conv1/neg" 194 | power_param { 195 | power: 1 196 | scale: -1.0 197 | shift: 0 198 | } 199 | } 200 | 201 | layer { 202 | name: "conv1/concat" 203 | type: "Concat" 204 | bottom: "conv1" 205 | bottom: "conv1/neg" 206 | top: "conv1_CR" 207 | } 208 | 209 | layer { 210 | name: "conv1/scale" 211 | type: "Scale" 212 | bottom: "conv1_CR" 213 | top: "conv1_CR" 214 | param { 215 | lr_mult: 1.0 216 | decay_mult: 0 217 | } 218 | param { 219 | lr_mult: 2.0 220 | decay_mult: 0 221 | } 222 | scale_param { 223 | bias_term: true 224 | } 225 | } 226 | 227 | layer { 228 | name: "conv1/relu" 229 | type: "ReLU" 230 | bottom: "conv1_CR" 231 | top: "conv1_CR" 232 | } 233 | 234 | layer { 235 | name: "pool1" 236 | type: "Pooling" 237 | bottom: "conv1_CR" 238 | top: "pool1" 239 | pooling_param { 240 | pool: MAX 241 | kernel_size: 3 242 | stride: 2 243 | } 244 | } 245 | #conv2 246 | layer { 247 | name: "conv2" 248 | type: "Convolution" 249 | bottom: "pool1" 250 | top: "conv2" 251 | param { 252 | lr_mult: 0 253 | decay_mult: 0 254 | } 255 | param { 256 | lr_mult: 0 257 | decay_mult: 0 258 | } 259 | convolution_param { 260 | num_output: 64 261 | pad: 0 262 | kernel_size: 5 263 | stride: 2 264 | weight_filler { 265 | type: "xavier" 266 | } 267 | bias_filler { 268 | type: "constant" 269 | value: 0 270 | } 271 | } 272 | } 273 | 274 | layer { 275 | name: "conv2/bn" 276 | type: "BatchNorm" 277 | bottom: "conv2" 278 | top: "conv2" 279 | param { 280 | lr_mult: 0 281 | decay_mult: 0 282 | } 283 | param { 284 | lr_mult: 0 285 | decay_mult: 0 286 | } 287 | param { 288 | lr_mult: 0 289 | decay_mult: 0 290 | } 291 | batch_norm_param { 292 | use_global_stats: false 293 | } 294 | } 295 | 296 | layer { 297 | name: "conv2/neg" 298 | type: "Power" 299 | bottom: "conv2" 300 | top: "conv2/neg" 301 | power_param { 302 | power: 1 303 | scale: -1.0 304 | shift: 0 305 | } 306 | } 307 | 308 | layer { 309 | name: "conv2/concat" 310 | type: "Concat" 311 | bottom: "conv2" 312 | bottom: "conv2/neg" 313 | top: "conv2_CR" 314 | } 315 | 316 | layer { 317 | name: "conv2/scale" 318 | type: "Scale" 319 | bottom: "conv2_CR" 320 | top: "conv2_CR" 321 | param { 322 | lr_mult: 1.0 323 | decay_mult: 0 324 | } 325 | param { 326 | lr_mult: 2.0 327 | decay_mult: 0 328 | } 329 | scale_param { 330 | bias_term: true 331 | } 332 | } 333 | 334 | layer { 335 | name: "conv2/relu" 336 | type: "ReLU" 337 | bottom: "conv2_CR" 338 | top: "conv2_CR" 339 | } 340 | 341 | layer { 342 | name: "pool2" 343 | type: "Pooling" 344 | bottom: "conv2_CR" 345 | top: "pool2" 346 | pooling_param { 347 | pool: MAX 348 | kernel_size: 3 349 | stride: 2 350 | } 351 | } 352 | #Inception1 353 | layer { 354 | name: "conv3/incep0/conv" 355 | type: "Convolution" 356 | bottom: "pool2" 357 | top: "conv3/incep0/conv" 358 | param { 359 | lr_mult: 1.0 360 | decay_mult: 1.0 361 | } 362 | convolution_param { 363 | num_output: 32 364 | weight_filler { 365 | type: "xavier" 366 | } 367 | bias_filler { 368 | type: "constant" 369 | value: 0 370 | } 371 | pad: 0 372 | kernel_size: 1 373 | stride: 1 374 | } 375 | } 376 | 377 | layer { 378 | name: "conv3/incep0/bn" 379 | type: "BatchNorm" 380 | bottom: "conv3/incep0/conv" 381 | top: "conv3/incep0/conv" 382 | param { 383 | lr_mult: 0 384 | decay_mult: 0 385 | } 386 | param { 387 | lr_mult: 0 388 | decay_mult: 0 389 | } 390 | param { 391 | lr_mult: 0 392 | decay_mult: 0 393 | } 394 | batch_norm_param { 395 | use_global_stats: false 396 | } 397 | } 398 | 399 | layer { 400 | name: "conv3/incep0/bn_scale" 401 | type: "Scale" 402 | bottom: "conv3/incep0/conv" 403 | top: "conv3/incep0/conv" 404 | param { 405 | lr_mult: 1.0 406 | decay_mult: 0 407 | } 408 | param { 409 | lr_mult: 1.0 410 | decay_mult: 0 411 | } 412 | scale_param { 413 | bias_term: true 414 | } 415 | } 416 | 417 | layer { 418 | name: "conv3/incep0/relu" 419 | type: "ReLU" 420 | bottom: "conv3/incep0/conv" 421 | top: "conv3/incep0/conv" 422 | } 423 | 424 | layer { 425 | name: "conv3/incep1/conv1" 426 | type: "Convolution" 427 | bottom: "pool2" 428 | top: "conv3/incep1/conv1" 429 | param { 430 | lr_mult: 1.0 431 | decay_mult: 1.0 432 | } 433 | convolution_param { 434 | num_output: 24 435 | weight_filler { 436 | type: "xavier" 437 | } 438 | bias_filler { 439 | type: "constant" 440 | value: 0 441 | } 442 | pad: 0 443 | kernel_size: 1 444 | stride: 1 445 | } 446 | } 447 | 448 | layer { 449 | name: "conv3/incep1/bn1" 450 | type: "BatchNorm" 451 | bottom: "conv3/incep1/conv1" 452 | top: "conv3/incep1/conv1" 453 | param { 454 | lr_mult: 0 455 | decay_mult: 0 456 | } 457 | param { 458 | lr_mult: 0 459 | decay_mult: 0 460 | } 461 | param { 462 | lr_mult: 0 463 | decay_mult: 0 464 | } 465 | batch_norm_param { 466 | use_global_stats: false 467 | } 468 | } 469 | 470 | layer { 471 | name: "conv3/incep1/bn_scale1" 472 | type: "Scale" 473 | bottom: "conv3/incep1/conv1" 474 | top: "conv3/incep1/conv1" 475 | param { 476 | lr_mult: 1.0 477 | decay_mult: 0 478 | } 479 | param { 480 | lr_mult: 1.0 481 | decay_mult: 0 482 | } 483 | scale_param { 484 | bias_term: true 485 | } 486 | } 487 | 488 | layer { 489 | name: "conv3/incep1/relu1" 490 | type: "ReLU" 491 | bottom: "conv3/incep1/conv1" 492 | top: "conv3/incep1/conv1" 493 | } 494 | 495 | layer { 496 | name: "conv3/incep1/conv2" 497 | type: "Convolution" 498 | bottom: "conv3/incep1/conv1" 499 | top: "conv3/incep1/conv2" 500 | param { 501 | lr_mult: 1.0 502 | decay_mult: 1.0 503 | } 504 | convolution_param { 505 | num_output: 32 506 | weight_filler { 507 | type: "xavier" 508 | } 509 | bias_filler { 510 | type: "constant" 511 | value: 0 512 | } 513 | pad: 1 514 | kernel_size: 3 515 | stride: 1 516 | } 517 | } 518 | 519 | layer { 520 | name: "conv3/incep1/bn2" 521 | type: "BatchNorm" 522 | bottom: "conv3/incep1/conv2" 523 | top: "conv3/incep1/conv2" 524 | param { 525 | lr_mult: 0 526 | decay_mult: 0 527 | } 528 | param { 529 | lr_mult: 0 530 | decay_mult: 0 531 | } 532 | param { 533 | lr_mult: 0 534 | decay_mult: 0 535 | } 536 | batch_norm_param { 537 | use_global_stats: false 538 | } 539 | } 540 | 541 | layer { 542 | name: "conv3/incep1/bn_scale2" 543 | type: "Scale" 544 | bottom: "conv3/incep1/conv2" 545 | top: "conv3/incep1/conv2" 546 | param { 547 | lr_mult: 1.0 548 | decay_mult: 0 549 | } 550 | param { 551 | lr_mult: 1.0 552 | decay_mult: 0 553 | } 554 | scale_param { 555 | bias_term: true 556 | } 557 | } 558 | 559 | layer { 560 | name: "conv3/incep1/relu2" 561 | type: "ReLU" 562 | bottom: "conv3/incep1/conv2" 563 | top: "conv3/incep1/conv2" 564 | } 565 | 566 | layer { 567 | name: "conv3/incep2/conv1" 568 | type: "Convolution" 569 | bottom: "pool2" 570 | top: "conv3/incep2/conv1" 571 | param { 572 | lr_mult: 1.0 573 | decay_mult: 1.0 574 | } 575 | convolution_param { 576 | num_output: 24 577 | weight_filler { 578 | type: "xavier" 579 | } 580 | bias_filler { 581 | type: "constant" 582 | value: 0 583 | } 584 | pad: 0 585 | kernel_size: 1 586 | stride: 1 587 | } 588 | } 589 | 590 | layer { 591 | name: "conv3/incep2/bn1" 592 | type: "BatchNorm" 593 | bottom: "conv3/incep2/conv1" 594 | top: "conv3/incep2/conv1" 595 | param { 596 | lr_mult: 0 597 | decay_mult: 0 598 | } 599 | param { 600 | lr_mult: 0 601 | decay_mult: 0 602 | } 603 | param { 604 | lr_mult: 0 605 | decay_mult: 0 606 | } 607 | batch_norm_param { 608 | use_global_stats: false 609 | } 610 | } 611 | 612 | layer { 613 | name: "conv3/incep2/bn_scale1" 614 | type: "Scale" 615 | bottom: "conv3/incep2/conv1" 616 | top: "conv3/incep2/conv1" 617 | param { 618 | lr_mult: 1.0 619 | decay_mult: 0 620 | } 621 | param { 622 | lr_mult: 1.0 623 | decay_mult: 0 624 | } 625 | scale_param { 626 | bias_term: true 627 | } 628 | } 629 | 630 | layer { 631 | name: "conv3/incep2/relu1" 632 | type: "ReLU" 633 | bottom: "conv3/incep2/conv1" 634 | top: "conv3/incep2/conv1" 635 | } 636 | 637 | layer { 638 | name: "conv3/incep2/conv2" 639 | type: "Convolution" 640 | bottom: "conv3/incep2/conv1" 641 | top: "conv3/incep2/conv2" 642 | param { 643 | lr_mult: 1.0 644 | decay_mult: 1.0 645 | } 646 | convolution_param { 647 | num_output: 32 648 | weight_filler { 649 | type: "xavier" 650 | } 651 | bias_filler { 652 | type: "constant" 653 | value: 0 654 | } 655 | pad: 1 656 | kernel_size: 3 657 | stride: 1 658 | } 659 | } 660 | 661 | layer { 662 | name: "conv3/incep2/bn2" 663 | type: "BatchNorm" 664 | bottom: "conv3/incep2/conv2" 665 | top: "conv3/incep2/conv2" 666 | param { 667 | lr_mult: 0 668 | decay_mult: 0 669 | } 670 | param { 671 | lr_mult: 0 672 | decay_mult: 0 673 | } 674 | param { 675 | lr_mult: 0 676 | decay_mult: 0 677 | } 678 | batch_norm_param { 679 | use_global_stats: false 680 | } 681 | } 682 | 683 | layer { 684 | name: "conv3/incep2/bn_scale2" 685 | type: "Scale" 686 | bottom: "conv3/incep2/conv2" 687 | top: "conv3/incep2/conv2" 688 | param { 689 | lr_mult: 1.0 690 | decay_mult: 0 691 | } 692 | param { 693 | lr_mult: 1.0 694 | decay_mult: 0 695 | } 696 | scale_param { 697 | bias_term: true 698 | } 699 | } 700 | 701 | layer { 702 | name: "conv3/incep2/relu2" 703 | type: "ReLU" 704 | bottom: "conv3/incep2/conv2" 705 | top: "conv3/incep2/conv2" 706 | } 707 | 708 | layer { 709 | name: "conv3/incep2/conv3" 710 | type: "Convolution" 711 | bottom: "conv3/incep2/conv2" 712 | top: "conv3/incep2/conv3" 713 | param { 714 | lr_mult: 1.0 715 | decay_mult: 1.0 716 | } 717 | convolution_param { 718 | num_output: 32 719 | weight_filler { 720 | type: "xavier" 721 | } 722 | bias_filler { 723 | type: "constant" 724 | value: 0 725 | } 726 | pad: 1 727 | kernel_size: 3 728 | stride: 1 729 | } 730 | } 731 | 732 | layer { 733 | name: "conv3/incep2/bn3" 734 | type: "BatchNorm" 735 | bottom: "conv3/incep2/conv3" 736 | top: "conv3/incep2/conv3" 737 | param { 738 | lr_mult: 0 739 | decay_mult: 0 740 | } 741 | param { 742 | lr_mult: 0 743 | decay_mult: 0 744 | } 745 | param { 746 | lr_mult: 0 747 | decay_mult: 0 748 | } 749 | batch_norm_param { 750 | use_global_stats: false 751 | } 752 | } 753 | 754 | layer { 755 | name: "conv3/incep2/bn_scale3" 756 | type: "Scale" 757 | bottom: "conv3/incep2/conv3" 758 | top: "conv3/incep2/conv3" 759 | param { 760 | lr_mult: 1.0 761 | decay_mult: 0 762 | } 763 | param { 764 | lr_mult: 1.0 765 | decay_mult: 0 766 | } 767 | scale_param { 768 | bias_term: true 769 | } 770 | } 771 | 772 | layer { 773 | name: "conv3/incep2/relu3" 774 | type: "ReLU" 775 | bottom: "conv3/incep2/conv3" 776 | top: "conv3/incep2/conv3" 777 | } 778 | 779 | layer { 780 | name: "conv3/incep3/pool" 781 | type: "Pooling" 782 | bottom: "pool2" 783 | top: "conv3/incep3/pool" 784 | pooling_param { 785 | pool: MAX 786 | kernel_size: 3 787 | stride: 1 788 | pad: 1 789 | } 790 | } 791 | 792 | layer { 793 | name: "conv3/incep3/conv" 794 | type: "Convolution" 795 | bottom: "conv3/incep3/pool" 796 | top: "conv3/incep3/conv" 797 | param { 798 | lr_mult: 1.0 799 | decay_mult: 1.0 800 | } 801 | convolution_param { 802 | num_output: 32 803 | weight_filler { 804 | type: "xavier" 805 | } 806 | bias_filler { 807 | type: "constant" 808 | value: 0 809 | } 810 | pad: 0 811 | kernel_size: 1 812 | stride: 1 813 | } 814 | } 815 | 816 | layer { 817 | name: "conv3/incep3/bn" 818 | type: "BatchNorm" 819 | bottom: "conv3/incep3/conv" 820 | top: "conv3/incep3/conv" 821 | param { 822 | lr_mult: 0 823 | decay_mult: 0 824 | } 825 | param { 826 | lr_mult: 0 827 | decay_mult: 0 828 | } 829 | param { 830 | lr_mult: 0 831 | decay_mult: 0 832 | } 833 | batch_norm_param { 834 | use_global_stats: false 835 | } 836 | } 837 | 838 | layer { 839 | name: "conv3/incep3/bn_scale" 840 | type: "Scale" 841 | bottom: "conv3/incep3/conv" 842 | top: "conv3/incep3/conv" 843 | param { 844 | lr_mult: 1.0 845 | decay_mult: 0 846 | } 847 | param { 848 | lr_mult: 1.0 849 | decay_mult: 0 850 | } 851 | scale_param { 852 | bias_term: true 853 | } 854 | } 855 | 856 | layer { 857 | name: "conv3/incep3/relu" 858 | type: "ReLU" 859 | bottom: "conv3/incep3/conv" 860 | top: "conv3/incep3/conv" 861 | } 862 | 863 | layer { 864 | name: "conv3/incep" 865 | type: "Concat" 866 | bottom: "conv3/incep0/conv" 867 | bottom: "conv3/incep1/conv2" 868 | bottom: "conv3/incep2/conv3" 869 | bottom: "conv3/incep3/conv" 870 | top: "conv3/incep" 871 | } 872 | #Inception2 873 | layer { 874 | name: "conv4/incep0/conv" 875 | type: "Convolution" 876 | bottom: "conv3/incep" 877 | top: "conv4/incep0/conv" 878 | param { 879 | lr_mult: 1.0 880 | decay_mult: 1.0 881 | } 882 | convolution_param { 883 | num_output: 32 884 | weight_filler { 885 | type: "xavier" 886 | } 887 | bias_filler { 888 | type: "constant" 889 | value: 0 890 | } 891 | pad: 0 892 | kernel_size: 1 893 | stride: 1 894 | } 895 | } 896 | 897 | layer { 898 | name: "conv4/incep0/bn" 899 | type: "BatchNorm" 900 | bottom: "conv4/incep0/conv" 901 | top: "conv4/incep0/conv" 902 | param { 903 | lr_mult: 0 904 | decay_mult: 0 905 | } 906 | param { 907 | lr_mult: 0 908 | decay_mult: 0 909 | } 910 | param { 911 | lr_mult: 0 912 | decay_mult: 0 913 | } 914 | batch_norm_param { 915 | use_global_stats: false 916 | } 917 | } 918 | 919 | layer { 920 | name: "conv4/incep0/bn_scale" 921 | type: "Scale" 922 | bottom: "conv4/incep0/conv" 923 | top: "conv4/incep0/conv" 924 | param { 925 | lr_mult: 1.0 926 | decay_mult: 0 927 | } 928 | param { 929 | lr_mult: 1.0 930 | decay_mult: 0 931 | } 932 | scale_param { 933 | bias_term: true 934 | } 935 | } 936 | 937 | layer { 938 | name: "conv4/incep0/relu" 939 | type: "ReLU" 940 | bottom: "conv4/incep0/conv" 941 | top: "conv4/incep0/conv" 942 | } 943 | 944 | layer { 945 | name: "conv4/incep1/conv1" 946 | type: "Convolution" 947 | bottom: "conv3/incep" 948 | top: "conv4/incep1/conv1" 949 | param { 950 | lr_mult: 1.0 951 | decay_mult: 1.0 952 | } 953 | convolution_param { 954 | num_output: 24 955 | weight_filler { 956 | type: "xavier" 957 | } 958 | bias_filler { 959 | type: "constant" 960 | value: 0 961 | } 962 | pad: 0 963 | kernel_size: 1 964 | stride: 1 965 | } 966 | } 967 | 968 | layer { 969 | name: "conv4/incep1/bn1" 970 | type: "BatchNorm" 971 | bottom: "conv4/incep1/conv1" 972 | top: "conv4/incep1/conv1" 973 | param { 974 | lr_mult: 0 975 | decay_mult: 0 976 | } 977 | param { 978 | lr_mult: 0 979 | decay_mult: 0 980 | } 981 | param { 982 | lr_mult: 0 983 | decay_mult: 0 984 | } 985 | batch_norm_param { 986 | use_global_stats: false 987 | } 988 | } 989 | 990 | layer { 991 | name: "conv4/incep1/bn_scale1" 992 | type: "Scale" 993 | bottom: "conv4/incep1/conv1" 994 | top: "conv4/incep1/conv1" 995 | param { 996 | lr_mult: 1.0 997 | decay_mult: 0 998 | } 999 | param { 1000 | lr_mult: 1.0 1001 | decay_mult: 0 1002 | } 1003 | scale_param { 1004 | bias_term: true 1005 | } 1006 | } 1007 | 1008 | layer { 1009 | name: "conv4/incep1/relu1" 1010 | type: "ReLU" 1011 | bottom: "conv4/incep1/conv1" 1012 | top: "conv4/incep1/conv1" 1013 | } 1014 | 1015 | layer { 1016 | name: "conv4/incep1/conv2" 1017 | type: "Convolution" 1018 | bottom: "conv4/incep1/conv1" 1019 | top: "conv4/incep1/conv2" 1020 | param { 1021 | lr_mult: 1.0 1022 | decay_mult: 1.0 1023 | } 1024 | convolution_param { 1025 | num_output: 32 1026 | weight_filler { 1027 | type: "xavier" 1028 | } 1029 | bias_filler { 1030 | type: "constant" 1031 | value: 0 1032 | } 1033 | pad: 1 1034 | kernel_size: 3 1035 | stride: 1 1036 | } 1037 | } 1038 | 1039 | layer { 1040 | name: "conv4/incep1/bn2" 1041 | type: "BatchNorm" 1042 | bottom: "conv4/incep1/conv2" 1043 | top: "conv4/incep1/conv2" 1044 | param { 1045 | lr_mult: 0 1046 | decay_mult: 0 1047 | } 1048 | param { 1049 | lr_mult: 0 1050 | decay_mult: 0 1051 | } 1052 | param { 1053 | lr_mult: 0 1054 | decay_mult: 0 1055 | } 1056 | batch_norm_param { 1057 | use_global_stats: false 1058 | } 1059 | } 1060 | 1061 | layer { 1062 | name: "conv4/incep1/bn_scale2" 1063 | type: "Scale" 1064 | bottom: "conv4/incep1/conv2" 1065 | top: "conv4/incep1/conv2" 1066 | param { 1067 | lr_mult: 1.0 1068 | decay_mult: 0 1069 | } 1070 | param { 1071 | lr_mult: 1.0 1072 | decay_mult: 0 1073 | } 1074 | scale_param { 1075 | bias_term: true 1076 | } 1077 | } 1078 | 1079 | layer { 1080 | name: "conv4/incep1/relu2" 1081 | type: "ReLU" 1082 | bottom: "conv4/incep1/conv2" 1083 | top: "conv4/incep1/conv2" 1084 | } 1085 | 1086 | layer { 1087 | name: "conv4/incep2/conv1" 1088 | type: "Convolution" 1089 | bottom: "conv3/incep" 1090 | top: "conv4/incep2/conv1" 1091 | param { 1092 | lr_mult: 1.0 1093 | decay_mult: 1.0 1094 | } 1095 | convolution_param { 1096 | num_output: 24 1097 | weight_filler { 1098 | type: "xavier" 1099 | } 1100 | bias_filler { 1101 | type: "constant" 1102 | value: 0 1103 | } 1104 | pad: 0 1105 | kernel_size: 1 1106 | stride: 1 1107 | } 1108 | } 1109 | 1110 | layer { 1111 | name: "conv4/incep2/bn1" 1112 | type: "BatchNorm" 1113 | bottom: "conv4/incep2/conv1" 1114 | top: "conv4/incep2/conv1" 1115 | param { 1116 | lr_mult: 0 1117 | decay_mult: 0 1118 | } 1119 | param { 1120 | lr_mult: 0 1121 | decay_mult: 0 1122 | } 1123 | param { 1124 | lr_mult: 0 1125 | decay_mult: 0 1126 | } 1127 | batch_norm_param { 1128 | use_global_stats: false 1129 | } 1130 | } 1131 | 1132 | layer { 1133 | name: "conv4/incep2/bn_scale1" 1134 | type: "Scale" 1135 | bottom: "conv4/incep2/conv1" 1136 | top: "conv4/incep2/conv1" 1137 | param { 1138 | lr_mult: 1.0 1139 | decay_mult: 0 1140 | } 1141 | param { 1142 | lr_mult: 1.0 1143 | decay_mult: 0 1144 | } 1145 | scale_param { 1146 | bias_term: true 1147 | } 1148 | } 1149 | 1150 | layer { 1151 | name: "conv4/incep2/relu1" 1152 | type: "ReLU" 1153 | bottom: "conv4/incep2/conv1" 1154 | top: "conv4/incep2/conv1" 1155 | } 1156 | 1157 | layer { 1158 | name: "conv4/incep2/conv2" 1159 | type: "Convolution" 1160 | bottom: "conv4/incep2/conv1" 1161 | top: "conv4/incep2/conv2" 1162 | param { 1163 | lr_mult: 1.0 1164 | decay_mult: 1.0 1165 | } 1166 | convolution_param { 1167 | num_output: 32 1168 | weight_filler { 1169 | type: "xavier" 1170 | } 1171 | bias_filler { 1172 | type: "constant" 1173 | value: 0 1174 | } 1175 | pad: 1 1176 | kernel_size: 3 1177 | stride: 1 1178 | } 1179 | } 1180 | 1181 | layer { 1182 | name: "conv4/incep2/bn2" 1183 | type: "BatchNorm" 1184 | bottom: "conv4/incep2/conv2" 1185 | top: "conv4/incep2/conv2" 1186 | param { 1187 | lr_mult: 0 1188 | decay_mult: 0 1189 | } 1190 | param { 1191 | lr_mult: 0 1192 | decay_mult: 0 1193 | } 1194 | param { 1195 | lr_mult: 0 1196 | decay_mult: 0 1197 | } 1198 | batch_norm_param { 1199 | use_global_stats: false 1200 | } 1201 | } 1202 | 1203 | layer { 1204 | name: "conv4/incep2/bn_scale2" 1205 | type: "Scale" 1206 | bottom: "conv4/incep2/conv2" 1207 | top: "conv4/incep2/conv2" 1208 | param { 1209 | lr_mult: 1.0 1210 | decay_mult: 0 1211 | } 1212 | param { 1213 | lr_mult: 1.0 1214 | decay_mult: 0 1215 | } 1216 | scale_param { 1217 | bias_term: true 1218 | } 1219 | } 1220 | 1221 | layer { 1222 | name: "conv4/incep2/relu2" 1223 | type: "ReLU" 1224 | bottom: "conv4/incep2/conv2" 1225 | top: "conv4/incep2/conv2" 1226 | } 1227 | 1228 | layer { 1229 | name: "conv4/incep2/conv3" 1230 | type: "Convolution" 1231 | bottom: "conv4/incep2/conv2" 1232 | top: "conv4/incep2/conv3" 1233 | param { 1234 | lr_mult: 1.0 1235 | decay_mult: 1.0 1236 | } 1237 | convolution_param { 1238 | num_output: 32 1239 | weight_filler { 1240 | type: "xavier" 1241 | } 1242 | bias_filler { 1243 | type: "constant" 1244 | value: 0 1245 | } 1246 | pad: 1 1247 | kernel_size: 3 1248 | stride: 1 1249 | } 1250 | } 1251 | 1252 | layer { 1253 | name: "conv4/incep2/bn3" 1254 | type: "BatchNorm" 1255 | bottom: "conv4/incep2/conv3" 1256 | top: "conv4/incep2/conv3" 1257 | param { 1258 | lr_mult: 0 1259 | decay_mult: 0 1260 | } 1261 | param { 1262 | lr_mult: 0 1263 | decay_mult: 0 1264 | } 1265 | param { 1266 | lr_mult: 0 1267 | decay_mult: 0 1268 | } 1269 | batch_norm_param { 1270 | use_global_stats: false 1271 | } 1272 | } 1273 | 1274 | layer { 1275 | name: "conv4/incep2/bn_scale3" 1276 | type: "Scale" 1277 | bottom: "conv4/incep2/conv3" 1278 | top: "conv4/incep2/conv3" 1279 | param { 1280 | lr_mult: 1.0 1281 | decay_mult: 0 1282 | } 1283 | param { 1284 | lr_mult: 1.0 1285 | decay_mult: 0 1286 | } 1287 | scale_param { 1288 | bias_term: true 1289 | } 1290 | } 1291 | 1292 | layer { 1293 | name: "conv4/incep2/relu3" 1294 | type: "ReLU" 1295 | bottom: "conv4/incep2/conv3" 1296 | top: "conv4/incep2/conv3" 1297 | } 1298 | 1299 | layer { 1300 | name: "conv4/incep3/pool" 1301 | type: "Pooling" 1302 | bottom: "conv3/incep" 1303 | top: "conv4/incep3/pool" 1304 | pooling_param { 1305 | pool: MAX 1306 | kernel_size: 3 1307 | stride: 1 1308 | pad: 1 1309 | } 1310 | } 1311 | 1312 | layer { 1313 | name: "conv4/incep3/conv" 1314 | type: "Convolution" 1315 | bottom: "conv4/incep3/pool" 1316 | top: "conv4/incep3/conv" 1317 | param { 1318 | lr_mult: 1.0 1319 | decay_mult: 1.0 1320 | } 1321 | convolution_param { 1322 | num_output: 32 1323 | weight_filler { 1324 | type: "xavier" 1325 | } 1326 | bias_filler { 1327 | type: "constant" 1328 | value: 0 1329 | } 1330 | pad: 0 1331 | kernel_size: 1 1332 | stride: 1 1333 | } 1334 | } 1335 | 1336 | layer { 1337 | name: "conv4/incep3/bn" 1338 | type: "BatchNorm" 1339 | bottom: "conv4/incep3/conv" 1340 | top: "conv4/incep3/conv" 1341 | param { 1342 | lr_mult: 0 1343 | decay_mult: 0 1344 | } 1345 | param { 1346 | lr_mult: 0 1347 | decay_mult: 0 1348 | } 1349 | param { 1350 | lr_mult: 0 1351 | decay_mult: 0 1352 | } 1353 | batch_norm_param { 1354 | use_global_stats: false 1355 | } 1356 | } 1357 | 1358 | layer { 1359 | name: "conv4/incep3/bn_scale" 1360 | type: "Scale" 1361 | bottom: "conv4/incep3/conv" 1362 | top: "conv4/incep3/conv" 1363 | param { 1364 | lr_mult: 1.0 1365 | decay_mult: 0 1366 | } 1367 | param { 1368 | lr_mult: 1.0 1369 | decay_mult: 0 1370 | } 1371 | scale_param { 1372 | bias_term: true 1373 | } 1374 | } 1375 | 1376 | layer { 1377 | name: "conv4/incep3/relu" 1378 | type: "ReLU" 1379 | bottom: "conv4/incep3/conv" 1380 | top: "conv4/incep3/conv" 1381 | } 1382 | 1383 | layer { 1384 | name: "conv4/incep" 1385 | type: "Concat" 1386 | bottom: "conv4/incep0/conv" 1387 | bottom: "conv4/incep1/conv2" 1388 | bottom: "conv4/incep2/conv3" 1389 | bottom: "conv4/incep3/conv" 1390 | top: "conv4/incep" 1391 | } 1392 | 1393 | layer { 1394 | name: "conv5/incep0/conv" 1395 | type: "Convolution" 1396 | bottom: "conv4/incep" 1397 | top: "conv5/incep0/conv" 1398 | param { 1399 | lr_mult: 1.0 1400 | decay_mult: 1.0 1401 | } 1402 | convolution_param { 1403 | num_output: 32 1404 | weight_filler { 1405 | type: "xavier" 1406 | } 1407 | bias_filler { 1408 | type: "constant" 1409 | value: 0 1410 | } 1411 | pad: 0 1412 | kernel_size: 1 1413 | stride: 1 1414 | } 1415 | } 1416 | 1417 | layer { 1418 | name: "conv5/incep0/bn" 1419 | type: "BatchNorm" 1420 | bottom: "conv5/incep0/conv" 1421 | top: "conv5/incep0/conv" 1422 | param { 1423 | lr_mult: 0 1424 | decay_mult: 0 1425 | } 1426 | param { 1427 | lr_mult: 0 1428 | decay_mult: 0 1429 | } 1430 | param { 1431 | lr_mult: 0 1432 | decay_mult: 0 1433 | } 1434 | batch_norm_param { 1435 | use_global_stats: false 1436 | } 1437 | } 1438 | 1439 | layer { 1440 | name: "conv5/incep0/bn_scale" 1441 | type: "Scale" 1442 | bottom: "conv5/incep0/conv" 1443 | top: "conv5/incep0/conv" 1444 | param { 1445 | lr_mult: 1.0 1446 | decay_mult: 0 1447 | } 1448 | param { 1449 | lr_mult: 1.0 1450 | decay_mult: 0 1451 | } 1452 | scale_param { 1453 | bias_term: true 1454 | } 1455 | } 1456 | 1457 | layer { 1458 | name: "conv5/incep0/relu" 1459 | type: "ReLU" 1460 | bottom: "conv5/incep0/conv" 1461 | top: "conv5/incep0/conv" 1462 | } 1463 | 1464 | layer { 1465 | name: "conv5/incep1/conv1" 1466 | type: "Convolution" 1467 | bottom: "conv4/incep" 1468 | top: "conv5/incep1/conv1" 1469 | param { 1470 | lr_mult: 1.0 1471 | decay_mult: 1.0 1472 | } 1473 | convolution_param { 1474 | num_output: 24 1475 | weight_filler { 1476 | type: "xavier" 1477 | } 1478 | bias_filler { 1479 | type: "constant" 1480 | value: 0 1481 | } 1482 | pad: 0 1483 | kernel_size: 1 1484 | stride: 1 1485 | } 1486 | } 1487 | 1488 | layer { 1489 | name: "conv5/incep1/bn1" 1490 | type: "BatchNorm" 1491 | bottom: "conv5/incep1/conv1" 1492 | top: "conv5/incep1/conv1" 1493 | param { 1494 | lr_mult: 0 1495 | decay_mult: 0 1496 | } 1497 | param { 1498 | lr_mult: 0 1499 | decay_mult: 0 1500 | } 1501 | param { 1502 | lr_mult: 0 1503 | decay_mult: 0 1504 | } 1505 | batch_norm_param { 1506 | use_global_stats: false 1507 | } 1508 | } 1509 | 1510 | layer { 1511 | name: "conv5/incep1/bn_scale1" 1512 | type: "Scale" 1513 | bottom: "conv5/incep1/conv1" 1514 | top: "conv5/incep1/conv1" 1515 | param { 1516 | lr_mult: 1.0 1517 | decay_mult: 0 1518 | } 1519 | param { 1520 | lr_mult: 1.0 1521 | decay_mult: 0 1522 | } 1523 | scale_param { 1524 | bias_term: true 1525 | } 1526 | } 1527 | 1528 | layer { 1529 | name: "conv5/incep1/relu1" 1530 | type: "ReLU" 1531 | bottom: "conv5/incep1/conv1" 1532 | top: "conv5/incep1/conv1" 1533 | } 1534 | 1535 | layer { 1536 | name: "conv5/incep1/conv2" 1537 | type: "Convolution" 1538 | bottom: "conv5/incep1/conv1" 1539 | top: "conv5/incep1/conv2" 1540 | param { 1541 | lr_mult: 1.0 1542 | decay_mult: 1.0 1543 | } 1544 | convolution_param { 1545 | num_output: 32 1546 | weight_filler { 1547 | type: "xavier" 1548 | } 1549 | bias_filler { 1550 | type: "constant" 1551 | value: 0 1552 | } 1553 | pad: 1 1554 | kernel_size: 3 1555 | stride: 1 1556 | } 1557 | } 1558 | 1559 | layer { 1560 | name: "conv5/incep1/bn2" 1561 | type: "BatchNorm" 1562 | bottom: "conv5/incep1/conv2" 1563 | top: "conv5/incep1/conv2" 1564 | param { 1565 | lr_mult: 0 1566 | decay_mult: 0 1567 | } 1568 | param { 1569 | lr_mult: 0 1570 | decay_mult: 0 1571 | } 1572 | param { 1573 | lr_mult: 0 1574 | decay_mult: 0 1575 | } 1576 | batch_norm_param { 1577 | use_global_stats: false 1578 | } 1579 | } 1580 | 1581 | layer { 1582 | name: "conv5/incep1/bn_scale2" 1583 | type: "Scale" 1584 | bottom: "conv5/incep1/conv2" 1585 | top: "conv5/incep1/conv2" 1586 | param { 1587 | lr_mult: 1.0 1588 | decay_mult: 0 1589 | } 1590 | param { 1591 | lr_mult: 1.0 1592 | decay_mult: 0 1593 | } 1594 | scale_param { 1595 | bias_term: true 1596 | } 1597 | } 1598 | 1599 | layer { 1600 | name: "conv5/incep1/relu2" 1601 | type: "ReLU" 1602 | bottom: "conv5/incep1/conv2" 1603 | top: "conv5/incep1/conv2" 1604 | } 1605 | 1606 | layer { 1607 | name: "conv5/incep2/conv1" 1608 | type: "Convolution" 1609 | bottom: "conv4/incep" 1610 | top: "conv5/incep2/conv1" 1611 | param { 1612 | lr_mult: 1.0 1613 | decay_mult: 1.0 1614 | } 1615 | convolution_param { 1616 | num_output: 24 1617 | weight_filler { 1618 | type: "xavier" 1619 | } 1620 | bias_filler { 1621 | type: "constant" 1622 | value: 0 1623 | } 1624 | pad: 0 1625 | kernel_size: 1 1626 | stride: 1 1627 | } 1628 | } 1629 | 1630 | layer { 1631 | name: "conv5/incep2/bn1" 1632 | type: "BatchNorm" 1633 | bottom: "conv5/incep2/conv1" 1634 | top: "conv5/incep2/conv1" 1635 | param { 1636 | lr_mult: 0 1637 | decay_mult: 0 1638 | } 1639 | param { 1640 | lr_mult: 0 1641 | decay_mult: 0 1642 | } 1643 | param { 1644 | lr_mult: 0 1645 | decay_mult: 0 1646 | } 1647 | batch_norm_param { 1648 | use_global_stats: false 1649 | } 1650 | } 1651 | 1652 | layer { 1653 | name: "conv5/incep2/bn_scale1" 1654 | type: "Scale" 1655 | bottom: "conv5/incep2/conv1" 1656 | top: "conv5/incep2/conv1" 1657 | param { 1658 | lr_mult: 1.0 1659 | decay_mult: 0 1660 | } 1661 | param { 1662 | lr_mult: 1.0 1663 | decay_mult: 0 1664 | } 1665 | scale_param { 1666 | bias_term: true 1667 | } 1668 | } 1669 | 1670 | layer { 1671 | name: "conv5/incep2/relu1" 1672 | type: "ReLU" 1673 | bottom: "conv5/incep2/conv1" 1674 | top: "conv5/incep2/conv1" 1675 | } 1676 | 1677 | layer { 1678 | name: "conv5/incep2/conv2" 1679 | type: "Convolution" 1680 | bottom: "conv5/incep2/conv1" 1681 | top: "conv5/incep2/conv2" 1682 | param { 1683 | lr_mult: 1.0 1684 | decay_mult: 1.0 1685 | } 1686 | convolution_param { 1687 | num_output: 32 1688 | weight_filler { 1689 | type: "xavier" 1690 | } 1691 | bias_filler { 1692 | type: "constant" 1693 | value: 0 1694 | } 1695 | pad: 1 1696 | kernel_size: 3 1697 | stride: 1 1698 | } 1699 | } 1700 | 1701 | layer { 1702 | name: "conv5/incep2/bn2" 1703 | type: "BatchNorm" 1704 | bottom: "conv5/incep2/conv2" 1705 | top: "conv5/incep2/conv2" 1706 | param { 1707 | lr_mult: 0 1708 | decay_mult: 0 1709 | } 1710 | param { 1711 | lr_mult: 0 1712 | decay_mult: 0 1713 | } 1714 | param { 1715 | lr_mult: 0 1716 | decay_mult: 0 1717 | } 1718 | batch_norm_param { 1719 | use_global_stats: false 1720 | } 1721 | } 1722 | 1723 | layer { 1724 | name: "conv5/incep2/bn_scale2" 1725 | type: "Scale" 1726 | bottom: "conv5/incep2/conv2" 1727 | top: "conv5/incep2/conv2" 1728 | param { 1729 | lr_mult: 1.0 1730 | decay_mult: 0 1731 | } 1732 | param { 1733 | lr_mult: 1.0 1734 | decay_mult: 0 1735 | } 1736 | scale_param { 1737 | bias_term: true 1738 | } 1739 | } 1740 | 1741 | layer { 1742 | name: "conv5/incep2/relu2" 1743 | type: "ReLU" 1744 | bottom: "conv5/incep2/conv2" 1745 | top: "conv5/incep2/conv2" 1746 | } 1747 | 1748 | layer { 1749 | name: "conv5/incep2/conv3" 1750 | type: "Convolution" 1751 | bottom: "conv5/incep2/conv2" 1752 | top: "conv5/incep2/conv3" 1753 | param { 1754 | lr_mult: 1.0 1755 | decay_mult: 1.0 1756 | } 1757 | convolution_param { 1758 | num_output: 32 1759 | weight_filler { 1760 | type: "xavier" 1761 | } 1762 | bias_filler { 1763 | type: "constant" 1764 | value: 0 1765 | } 1766 | pad: 1 1767 | kernel_size: 3 1768 | stride: 1 1769 | } 1770 | } 1771 | 1772 | layer { 1773 | name: "conv5/incep2/bn3" 1774 | type: "BatchNorm" 1775 | bottom: "conv5/incep2/conv3" 1776 | top: "conv5/incep2/conv3" 1777 | param { 1778 | lr_mult: 0 1779 | decay_mult: 0 1780 | } 1781 | param { 1782 | lr_mult: 0 1783 | decay_mult: 0 1784 | } 1785 | param { 1786 | lr_mult: 0 1787 | decay_mult: 0 1788 | } 1789 | batch_norm_param { 1790 | use_global_stats: false 1791 | } 1792 | } 1793 | 1794 | layer { 1795 | name: "conv5/incep2/bn_scale3" 1796 | type: "Scale" 1797 | bottom: "conv5/incep2/conv3" 1798 | top: "conv5/incep2/conv3" 1799 | param { 1800 | lr_mult: 1.0 1801 | decay_mult: 0 1802 | } 1803 | param { 1804 | lr_mult: 1.0 1805 | decay_mult: 0 1806 | } 1807 | scale_param { 1808 | bias_term: true 1809 | } 1810 | } 1811 | 1812 | layer { 1813 | name: "conv5/incep2/relu3" 1814 | type: "ReLU" 1815 | bottom: "conv5/incep2/conv3" 1816 | top: "conv5/incep2/conv3" 1817 | } 1818 | 1819 | layer { 1820 | name: "conv5/incep3/pool" 1821 | type: "Pooling" 1822 | bottom: "conv4/incep" 1823 | top: "conv5/incep3/pool" 1824 | pooling_param { 1825 | pool: MAX 1826 | kernel_size: 3 1827 | stride: 1 1828 | pad: 1 1829 | } 1830 | } 1831 | 1832 | layer { 1833 | name: "conv5/incep3/conv" 1834 | type: "Convolution" 1835 | bottom: "conv5/incep3/pool" 1836 | top: "conv5/incep3/conv" 1837 | param { 1838 | lr_mult: 1.0 1839 | decay_mult: 1.0 1840 | } 1841 | convolution_param { 1842 | num_output: 32 1843 | weight_filler { 1844 | type: "xavier" 1845 | } 1846 | bias_filler { 1847 | type: "constant" 1848 | value: 0 1849 | } 1850 | pad: 0 1851 | kernel_size: 1 1852 | stride: 1 1853 | } 1854 | } 1855 | 1856 | layer { 1857 | name: "conv5/incep3/bn" 1858 | type: "BatchNorm" 1859 | bottom: "conv5/incep3/conv" 1860 | top: "conv5/incep3/conv" 1861 | param { 1862 | lr_mult: 0 1863 | decay_mult: 0 1864 | } 1865 | param { 1866 | lr_mult: 0 1867 | decay_mult: 0 1868 | } 1869 | param { 1870 | lr_mult: 0 1871 | decay_mult: 0 1872 | } 1873 | batch_norm_param { 1874 | use_global_stats: false 1875 | } 1876 | } 1877 | 1878 | layer { 1879 | name: "conv5/incep3/bn_scale" 1880 | type: "Scale" 1881 | bottom: "conv5/incep3/conv" 1882 | top: "conv5/incep3/conv" 1883 | param { 1884 | lr_mult: 1.0 1885 | decay_mult: 0 1886 | } 1887 | param { 1888 | lr_mult: 1.0 1889 | decay_mult: 0 1890 | } 1891 | scale_param { 1892 | bias_term: true 1893 | } 1894 | } 1895 | 1896 | layer { 1897 | name: "conv5/incep3/relu" 1898 | type: "ReLU" 1899 | bottom: "conv5/incep3/conv" 1900 | top: "conv5/incep3/conv" 1901 | } 1902 | 1903 | layer { 1904 | name: "conv5/incep" 1905 | type: "Concat" 1906 | bottom: "conv5/incep0/conv" 1907 | bottom: "conv5/incep1/conv2" 1908 | bottom: "conv5/incep2/conv3" 1909 | bottom: "conv5/incep3/conv" 1910 | top: "conv5/incep" 1911 | } 1912 | 1913 | layer { 1914 | name: "Inception3/conv/loc1" 1915 | type: "Convolution" 1916 | bottom: "conv5/incep" 1917 | top: "Inception3/conv/loc1" 1918 | param { 1919 | lr_mult: 1 1920 | decay_mult: 1 1921 | } 1922 | param { 1923 | lr_mult: 2 1924 | decay_mult: 0 1925 | } 1926 | convolution_param { 1927 | num_output: 4 1928 | pad: 1 1929 | kernel_size: 3 1930 | stride: 1 1931 | weight_filler { 1932 | type: "xavier" 1933 | } 1934 | bias_filler { 1935 | type: "constant" 1936 | value: 0 1937 | } 1938 | } 1939 | } 1940 | 1941 | layer { 1942 | name: "Inception3/conv/loc1/perm" 1943 | type: "Permute" 1944 | bottom: "Inception3/conv/loc1" 1945 | top: "Inception3/conv/loc1/perm" 1946 | permute_param { 1947 | order: 0 1948 | order: 2 1949 | order: 3 1950 | order: 1 1951 | } 1952 | } 1953 | 1954 | layer { 1955 | name: "Inception3/conv/loc1/flat" 1956 | type: "Flatten" 1957 | bottom: "Inception3/conv/loc1/perm" 1958 | top: "Inception3/conv/loc1/flat" 1959 | flatten_param { 1960 | axis: 1 1961 | } 1962 | } 1963 | 1964 | layer { 1965 | name: "Inception3/conv/conf1" 1966 | type: "Convolution" 1967 | bottom: "conv5/incep" 1968 | top: "Inception3/conv/conf1" 1969 | param { 1970 | lr_mult: 1 1971 | decay_mult: 1 1972 | } 1973 | param { 1974 | lr_mult: 2 1975 | decay_mult: 0 1976 | } 1977 | convolution_param { 1978 | num_output: 2 1979 | pad: 1 1980 | kernel_size: 3 1981 | stride: 1 1982 | weight_filler { 1983 | type: "xavier" 1984 | } 1985 | bias_filler { 1986 | type: "constant" 1987 | value: 0 1988 | } 1989 | } 1990 | } 1991 | 1992 | layer { 1993 | name: "Inception3/conv/conf1/perm" 1994 | type: "Permute" 1995 | bottom: "Inception3/conv/conf1" 1996 | top: "Inception3/conv/conf1/perm" 1997 | permute_param { 1998 | order: 0 1999 | order: 2 2000 | order: 3 2001 | order: 1 2002 | } 2003 | } 2004 | 2005 | layer { 2006 | name: "Inception3/conv/conf1/flat" 2007 | type: "Flatten" 2008 | bottom: "Inception3/conv/conf1/perm" 2009 | top: "Inception3/conv/conf1/flat" 2010 | flatten_param { 2011 | axis: 1 2012 | } 2013 | } 2014 | 2015 | layer { 2016 | name: "Inception3/conv/priorbox1" 2017 | type: "PriorBox" 2018 | bottom: "conv5/incep" 2019 | bottom: "data" 2020 | top: "Inception3/conv/priorbox1" 2021 | prior_box_param { 2022 | min_size: 32 2023 | aspect_ratio: 1 2024 | flip: true 2025 | clip: true 2026 | variance: 0.1 2027 | variance: 0.1 2028 | variance: 0.2 2029 | variance: 0.2 2030 | } 2031 | } 2032 | 2033 | layer { 2034 | name: "Inception3/conv/loc2" 2035 | type: "Convolution" 2036 | bottom: "conv5/incep" 2037 | top: "Inception3/conv/loc2" 2038 | param { 2039 | lr_mult: 1 2040 | decay_mult: 1 2041 | } 2042 | param { 2043 | lr_mult: 2 2044 | decay_mult: 0 2045 | } 2046 | convolution_param { 2047 | num_output: 4 2048 | pad: 1 2049 | kernel_size: 3 2050 | stride: 1 2051 | weight_filler { 2052 | type: "xavier" 2053 | } 2054 | bias_filler { 2055 | type: "constant" 2056 | value: 0 2057 | } 2058 | } 2059 | } 2060 | 2061 | layer { 2062 | name: "Inception3/conv/loc2/perm" 2063 | type: "Permute" 2064 | bottom: "Inception3/conv/loc2" 2065 | top: "Inception3/conv/loc2/perm" 2066 | permute_param { 2067 | order: 0 2068 | order: 2 2069 | order: 3 2070 | order: 1 2071 | } 2072 | } 2073 | 2074 | layer { 2075 | name: "Inception3/conv/loc2/flat" 2076 | type: "Flatten" 2077 | bottom: "Inception3/conv/loc2/perm" 2078 | top: "Inception3/conv/loc2/flat" 2079 | flatten_param { 2080 | axis: 1 2081 | } 2082 | } 2083 | 2084 | layer { 2085 | name: "Inception3/conv/conf2" 2086 | type: "Convolution" 2087 | bottom: "conv5/incep" 2088 | top: "Inception3/conv/conf2" 2089 | param { 2090 | lr_mult: 1 2091 | decay_mult: 1 2092 | } 2093 | param { 2094 | lr_mult: 2 2095 | decay_mult: 0 2096 | } 2097 | convolution_param { 2098 | num_output: 2 2099 | pad: 1 2100 | kernel_size: 3 2101 | stride: 1 2102 | weight_filler { 2103 | type: "xavier" 2104 | } 2105 | bias_filler { 2106 | type: "constant" 2107 | value: 0 2108 | } 2109 | } 2110 | } 2111 | 2112 | layer { 2113 | name: "Inception3/conv/conf2/perm" 2114 | type: "Permute" 2115 | bottom: "Inception3/conv/conf2" 2116 | top: "Inception3/conv/conf2/perm" 2117 | permute_param { 2118 | order: 0 2119 | order: 2 2120 | order: 3 2121 | order: 1 2122 | } 2123 | } 2124 | 2125 | layer { 2126 | name: "Inception3/conv/conf2/flat" 2127 | type: "Flatten" 2128 | bottom: "Inception3/conv/conf2/perm" 2129 | top: "Inception3/conv/conf2/flat" 2130 | flatten_param { 2131 | axis: 1 2132 | } 2133 | } 2134 | 2135 | layer { 2136 | name: "Inception3/conv/priorbox2" 2137 | type: "PriorBox" 2138 | bottom: "conv5/incep" 2139 | bottom: "data" 2140 | top: "Inception3/conv/priorbox2" 2141 | prior_box_param { 2142 | min_size: 64 2143 | aspect_ratio: 1 2144 | flip: true 2145 | clip: true 2146 | variance: 0.1 2147 | variance: 0.1 2148 | variance: 0.2 2149 | variance: 0.2 2150 | } 2151 | } 2152 | 2153 | layer { 2154 | name: "Inception3/conv/loc3" 2155 | type: "Convolution" 2156 | bottom: "conv5/incep" 2157 | top: "Inception3/conv/loc3" 2158 | param { 2159 | lr_mult: 1 2160 | decay_mult: 1 2161 | } 2162 | param { 2163 | lr_mult: 2 2164 | decay_mult: 0 2165 | } 2166 | convolution_param { 2167 | num_output: 4 2168 | pad: 1 2169 | kernel_size: 3 2170 | stride: 1 2171 | weight_filler { 2172 | type: "xavier" 2173 | } 2174 | bias_filler { 2175 | type: "constant" 2176 | value: 0 2177 | } 2178 | } 2179 | } 2180 | 2181 | layer { 2182 | name: "Inception3/conv/loc3/perm" 2183 | type: "Permute" 2184 | bottom: "Inception3/conv/loc3" 2185 | top: "Inception3/conv/loc3/perm" 2186 | permute_param { 2187 | order: 0 2188 | order: 2 2189 | order: 3 2190 | order: 1 2191 | } 2192 | } 2193 | 2194 | layer { 2195 | name: "Inception3/conv/loc3/flat" 2196 | type: "Flatten" 2197 | bottom: "Inception3/conv/loc3/perm" 2198 | top: "Inception3/conv/loc3/flat" 2199 | flatten_param { 2200 | axis: 1 2201 | } 2202 | } 2203 | 2204 | layer { 2205 | name: "Inception3/conv/conf3" 2206 | type: "Convolution" 2207 | bottom: "conv5/incep" 2208 | top: "Inception3/conv/conf3" 2209 | param { 2210 | lr_mult: 1 2211 | decay_mult: 1 2212 | } 2213 | param { 2214 | lr_mult: 2 2215 | decay_mult: 0 2216 | } 2217 | convolution_param { 2218 | num_output: 2 2219 | pad: 1 2220 | kernel_size: 3 2221 | stride: 1 2222 | weight_filler { 2223 | type: "xavier" 2224 | } 2225 | bias_filler { 2226 | type: "constant" 2227 | value: 0 2228 | } 2229 | } 2230 | } 2231 | 2232 | layer { 2233 | name: "Inception3/conv/conf3/perm" 2234 | type: "Permute" 2235 | bottom: "Inception3/conv/conf3" 2236 | top: "Inception3/conv/conf3/perm" 2237 | permute_param { 2238 | order: 0 2239 | order: 2 2240 | order: 3 2241 | order: 1 2242 | } 2243 | } 2244 | 2245 | layer { 2246 | name: "Inception3/conv/conf3/flat" 2247 | type: "Flatten" 2248 | bottom: "Inception3/conv/conf3/perm" 2249 | top: "Inception3/conv/conf3/flat" 2250 | flatten_param { 2251 | axis: 1 2252 | } 2253 | } 2254 | 2255 | layer { 2256 | name: "Inception3/conv/priorbox3" 2257 | type: "PriorBox" 2258 | bottom: "conv5/incep" 2259 | bottom: "data" 2260 | top: "Inception3/conv/priorbox3" 2261 | prior_box_param { 2262 | min_size: 128 2263 | aspect_ratio: 1 2264 | flip: true 2265 | clip: true 2266 | variance: 0.1 2267 | variance: 0.1 2268 | variance: 0.2 2269 | variance: 0.2 2270 | } 2271 | } 2272 | 2273 | layer { 2274 | name: "conv6_1" 2275 | type: "Convolution" 2276 | bottom: "conv5/incep" 2277 | top: "conv6_1" 2278 | param { 2279 | lr_mult: 1.0 2280 | decay_mult: 1.0 2281 | } 2282 | convolution_param { 2283 | num_output: 128 2284 | weight_filler { 2285 | type: "xavier" 2286 | } 2287 | bias_filler { 2288 | type: "constant" 2289 | value: 0 2290 | } 2291 | pad: 0 2292 | kernel_size: 1 2293 | stride: 1 2294 | } 2295 | } 2296 | 2297 | layer { 2298 | name: "conv6/bn1" 2299 | type: "BatchNorm" 2300 | bottom: "conv6_1" 2301 | top: "conv6_1" 2302 | param { 2303 | lr_mult: 0 2304 | decay_mult: 0 2305 | } 2306 | param { 2307 | lr_mult: 0 2308 | decay_mult: 0 2309 | } 2310 | param { 2311 | lr_mult: 0 2312 | decay_mult: 0 2313 | } 2314 | batch_norm_param { 2315 | use_global_stats: false 2316 | } 2317 | } 2318 | 2319 | layer { 2320 | name: "conv6/bn_scale1" 2321 | type: "Scale" 2322 | bottom: "conv6_1" 2323 | top: "conv6_1" 2324 | param { 2325 | lr_mult: 1.0 2326 | decay_mult: 0 2327 | } 2328 | param { 2329 | lr_mult: 1.0 2330 | decay_mult: 0 2331 | } 2332 | scale_param { 2333 | bias_term: true 2334 | } 2335 | } 2336 | 2337 | layer { 2338 | name: "conv6/relu1" 2339 | type: "ReLU" 2340 | bottom: "conv6_1" 2341 | top: "conv6_1" 2342 | } 2343 | 2344 | layer { 2345 | name: "conv6_2" 2346 | type: "Convolution" 2347 | bottom: "conv6_1" 2348 | top: "conv6_2" 2349 | param { 2350 | lr_mult: 1.0 2351 | decay_mult: 1.0 2352 | } 2353 | convolution_param { 2354 | num_output: 256 2355 | weight_filler { 2356 | type: "xavier" 2357 | } 2358 | bias_filler { 2359 | type: "constant" 2360 | value: 0 2361 | } 2362 | pad: 1 2363 | kernel_size: 3 2364 | stride: 2 2365 | } 2366 | } 2367 | 2368 | layer { 2369 | name: "conv6/bn2" 2370 | type: "BatchNorm" 2371 | bottom: "conv6_2" 2372 | top: "conv6_2" 2373 | param { 2374 | lr_mult: 0 2375 | decay_mult: 0 2376 | } 2377 | param { 2378 | lr_mult: 0 2379 | decay_mult: 0 2380 | } 2381 | param { 2382 | lr_mult: 0 2383 | decay_mult: 0 2384 | } 2385 | batch_norm_param { 2386 | use_global_stats: false 2387 | } 2388 | } 2389 | 2390 | layer { 2391 | name: "conv6/bn_scale2" 2392 | type: "Scale" 2393 | bottom: "conv6_2" 2394 | top: "conv6_2" 2395 | param { 2396 | lr_mult: 1.0 2397 | decay_mult: 0 2398 | } 2399 | param { 2400 | lr_mult: 1.0 2401 | decay_mult: 0 2402 | } 2403 | scale_param { 2404 | bias_term: true 2405 | } 2406 | } 2407 | 2408 | layer { 2409 | name: "conv6/relu2" 2410 | type: "ReLU" 2411 | bottom: "conv6_2" 2412 | top: "conv6_2" 2413 | } 2414 | 2415 | layer { 2416 | name: "conv6/loc" 2417 | type: "Convolution" 2418 | bottom: "conv6_2" 2419 | top: "conv6/loc" 2420 | param { 2421 | lr_mult: 1 2422 | decay_mult: 1 2423 | } 2424 | param { 2425 | lr_mult: 2 2426 | decay_mult: 0 2427 | } 2428 | convolution_param { 2429 | num_output: 4 2430 | pad: 1 2431 | kernel_size: 3 2432 | stride: 1 2433 | weight_filler { 2434 | type: "xavier" 2435 | } 2436 | bias_filler { 2437 | type: "constant" 2438 | value: 0 2439 | } 2440 | } 2441 | } 2442 | 2443 | layer { 2444 | name: "conv6/loc/perm" 2445 | type: "Permute" 2446 | bottom: "conv6/loc" 2447 | top: "conv6/loc/perm" 2448 | permute_param { 2449 | order: 0 2450 | order: 2 2451 | order: 3 2452 | order: 1 2453 | } 2454 | } 2455 | 2456 | layer { 2457 | name: "conv6/loc/perm/flat" 2458 | type: "Flatten" 2459 | bottom: "conv6/loc/perm" 2460 | top: "conv6/loc/perm/flat" 2461 | flatten_param { 2462 | axis: 1 2463 | } 2464 | } 2465 | 2466 | layer { 2467 | name: "conv6/conf" 2468 | type: "Convolution" 2469 | bottom: "conv6_2" 2470 | top: "conv6/conf" 2471 | param { 2472 | lr_mult: 1 2473 | decay_mult: 1 2474 | } 2475 | param { 2476 | lr_mult: 2 2477 | decay_mult: 0 2478 | } 2479 | convolution_param { 2480 | num_output: 2 2481 | pad: 1 2482 | kernel_size: 3 2483 | stride: 1 2484 | weight_filler { 2485 | type: "xavier" 2486 | } 2487 | bias_filler { 2488 | type: "constant" 2489 | value: 0 2490 | } 2491 | } 2492 | } 2493 | 2494 | layer { 2495 | name: "conv6/conf/perm" 2496 | type: "Permute" 2497 | bottom: "conv6/conf" 2498 | top: "conv6/conf/perm" 2499 | permute_param { 2500 | order: 0 2501 | order: 2 2502 | order: 3 2503 | order: 1 2504 | } 2505 | } 2506 | 2507 | layer { 2508 | name: "conv6/conf/perm/flat" 2509 | type: "Flatten" 2510 | bottom: "conv6/conf/perm" 2511 | top: "conv6/conf/perm/flat" 2512 | flatten_param { 2513 | axis: 1 2514 | } 2515 | } 2516 | 2517 | layer { 2518 | name: "conv6/priorbox" 2519 | type: "PriorBox" 2520 | bottom: "conv6_2" 2521 | bottom: "data" 2522 | top: "conv6/priorbox" 2523 | prior_box_param { 2524 | min_size: 256 2525 | aspect_ratio: 1 2526 | flip: true 2527 | clip: true 2528 | variance: 0.1 2529 | variance: 0.1 2530 | variance: 0.2 2531 | variance: 0.2 2532 | } 2533 | } 2534 | 2535 | layer { 2536 | name: "conv7_1" 2537 | type: "Convolution" 2538 | bottom: "conv6_2" 2539 | top: "conv7_1" 2540 | param { 2541 | lr_mult: 1.0 2542 | decay_mult: 1.0 2543 | } 2544 | convolution_param { 2545 | num_output: 128 2546 | weight_filler { 2547 | type: "xavier" 2548 | } 2549 | bias_filler { 2550 | type: "constant" 2551 | value: 0 2552 | } 2553 | pad: 0 2554 | kernel_size: 1 2555 | stride: 1 2556 | } 2557 | } 2558 | 2559 | layer { 2560 | name: "conv7/bn1" 2561 | type: "BatchNorm" 2562 | bottom: "conv7_1" 2563 | top: "conv7_1" 2564 | param { 2565 | lr_mult: 0 2566 | decay_mult: 0 2567 | } 2568 | param { 2569 | lr_mult: 0 2570 | decay_mult: 0 2571 | } 2572 | param { 2573 | lr_mult: 0 2574 | decay_mult: 0 2575 | } 2576 | batch_norm_param { 2577 | use_global_stats: false 2578 | } 2579 | } 2580 | 2581 | layer { 2582 | name: "conv7/bn_scale1" 2583 | type: "Scale" 2584 | bottom: "conv7_1" 2585 | top: "conv7_1" 2586 | param { 2587 | lr_mult: 1.0 2588 | decay_mult: 0 2589 | } 2590 | param { 2591 | lr_mult: 1.0 2592 | decay_mult: 0 2593 | } 2594 | scale_param { 2595 | bias_term: true 2596 | } 2597 | } 2598 | 2599 | layer { 2600 | name: "conv7/relu1" 2601 | type: "ReLU" 2602 | bottom: "conv7_1" 2603 | top: "conv7_1" 2604 | } 2605 | 2606 | layer { 2607 | name: "conv7_2" 2608 | type: "Convolution" 2609 | bottom: "conv7_1" 2610 | top: "conv7_2" 2611 | param { 2612 | lr_mult: 1.0 2613 | decay_mult: 1.0 2614 | } 2615 | convolution_param { 2616 | num_output: 256 2617 | weight_filler { 2618 | type: "xavier" 2619 | } 2620 | bias_filler { 2621 | type: "constant" 2622 | value: 0 2623 | } 2624 | pad: 1 2625 | kernel_size: 3 2626 | stride: 2 2627 | } 2628 | } 2629 | 2630 | layer { 2631 | name: "conv7/bn2" 2632 | type: "BatchNorm" 2633 | bottom: "conv7_2" 2634 | top: "conv7_2" 2635 | param { 2636 | lr_mult: 0 2637 | decay_mult: 0 2638 | } 2639 | param { 2640 | lr_mult: 0 2641 | decay_mult: 0 2642 | } 2643 | param { 2644 | lr_mult: 0 2645 | decay_mult: 0 2646 | } 2647 | batch_norm_param { 2648 | use_global_stats: false 2649 | } 2650 | } 2651 | 2652 | layer { 2653 | name: "conv7/bn_scale2" 2654 | type: "Scale" 2655 | bottom: "conv7_2" 2656 | top: "conv7_2" 2657 | param { 2658 | lr_mult: 1.0 2659 | decay_mult: 0 2660 | } 2661 | param { 2662 | lr_mult: 1.0 2663 | decay_mult: 0 2664 | } 2665 | scale_param { 2666 | bias_term: true 2667 | } 2668 | } 2669 | 2670 | layer { 2671 | name: "conv7/relu2" 2672 | type: "ReLU" 2673 | bottom: "conv7_2" 2674 | top: "conv7_2" 2675 | } 2676 | 2677 | layer { 2678 | name: "conv7/loc" 2679 | type: "Convolution" 2680 | bottom: "conv7_2" 2681 | top: "conv7/loc" 2682 | param { 2683 | lr_mult: 1 2684 | decay_mult: 1 2685 | } 2686 | param { 2687 | lr_mult: 2 2688 | decay_mult: 0 2689 | } 2690 | convolution_param { 2691 | num_output: 4 2692 | pad: 1 2693 | kernel_size: 3 2694 | stride: 1 2695 | weight_filler { 2696 | type: "xavier" 2697 | } 2698 | bias_filler { 2699 | type: "constant" 2700 | value: 0 2701 | } 2702 | } 2703 | } 2704 | 2705 | layer { 2706 | name: "conv7/loc/perm" 2707 | type: "Permute" 2708 | bottom: "conv7/loc" 2709 | top: "conv7/loc/perm" 2710 | permute_param { 2711 | order: 0 2712 | order: 2 2713 | order: 3 2714 | order: 1 2715 | } 2716 | } 2717 | 2718 | layer { 2719 | name: "conv7/loc/perm/flat" 2720 | type: "Flatten" 2721 | bottom: "conv7/loc/perm" 2722 | top: "conv7/loc/perm/flat" 2723 | flatten_param { 2724 | axis: 1 2725 | } 2726 | } 2727 | 2728 | layer { 2729 | name: "conv7/conf" 2730 | type: "Convolution" 2731 | bottom: "conv7_2" 2732 | top: "conv7/conf" 2733 | param { 2734 | lr_mult: 1 2735 | decay_mult: 1 2736 | } 2737 | param { 2738 | lr_mult: 2 2739 | decay_mult: 0 2740 | } 2741 | convolution_param { 2742 | num_output: 2 2743 | pad: 1 2744 | kernel_size: 3 2745 | stride: 1 2746 | weight_filler { 2747 | type: "xavier" 2748 | } 2749 | bias_filler { 2750 | type: "constant" 2751 | value: 0 2752 | } 2753 | } 2754 | } 2755 | 2756 | layer { 2757 | name: "conv7/conf/perm" 2758 | type: "Permute" 2759 | bottom: "conv7/conf" 2760 | top: "conv7/conf/perm" 2761 | permute_param { 2762 | order: 0 2763 | order: 2 2764 | order: 3 2765 | order: 1 2766 | } 2767 | } 2768 | 2769 | layer { 2770 | name: "conv7/conf/perm/flat" 2771 | type: "Flatten" 2772 | bottom: "conv7/conf/perm" 2773 | top: "conv7/conf/perm/flat" 2774 | flatten_param { 2775 | axis: 1 2776 | } 2777 | } 2778 | 2779 | layer { 2780 | name: "conv7/priorbox" 2781 | type: "PriorBox" 2782 | bottom: "conv7_2" 2783 | bottom: "data" 2784 | top: "conv7/priorbox" 2785 | prior_box_param { 2786 | min_size: 512 2787 | aspect_ratio: 1 2788 | flip: true 2789 | clip: true 2790 | variance: 0.1 2791 | variance: 0.1 2792 | variance: 0.2 2793 | variance: 0.2 2794 | } 2795 | } 2796 | 2797 | layer { 2798 | name: "mbox_loc" 2799 | type: "Concat" 2800 | bottom: "Inception3/conv/loc1/flat" 2801 | bottom: "Inception3/conv/loc2/flat" 2802 | bottom: "Inception3/conv/loc3/flat" 2803 | bottom: "conv6/loc/perm/flat" 2804 | bottom: "conv7/loc/perm/flat" 2805 | top: "mbox_loc" 2806 | concat_param { 2807 | axis: 1 2808 | } 2809 | } 2810 | 2811 | layer { 2812 | name: "mbox_conf" 2813 | type: "Concat" 2814 | bottom: "Inception3/conv/conf1/flat" 2815 | bottom: "Inception3/conv/conf2/flat" 2816 | bottom: "Inception3/conv/conf3/flat" 2817 | bottom: "conv6/conf/perm/flat" 2818 | bottom: "conv7/conf/perm/flat" 2819 | top: "mbox_conf" 2820 | concat_param { 2821 | axis: 1 2822 | } 2823 | } 2824 | 2825 | layer { 2826 | name: "mbox_priorbox" 2827 | type: "Concat" 2828 | bottom: "Inception3/conv/priorbox1" 2829 | bottom: "Inception3/conv/priorbox2" 2830 | bottom: "Inception3/conv/priorbox3" 2831 | bottom: "conv6/priorbox" 2832 | bottom: "conv7/priorbox" 2833 | top: "mbox_priorbox" 2834 | concat_param { 2835 | axis: 2 2836 | } 2837 | } 2838 | 2839 | layer { 2840 | name: "mbox_loss" 2841 | type: "MultiBoxLoss" 2842 | bottom: "mbox_loc" 2843 | bottom: "mbox_conf" 2844 | bottom: "mbox_priorbox" 2845 | bottom: "label" 2846 | top: "mbox_loss" 2847 | include { 2848 | phase: TRAIN 2849 | } 2850 | propagate_down: true 2851 | propagate_down: true 2852 | propagate_down: false 2853 | propagate_down: false 2854 | loss_param { 2855 | normalization: VALID 2856 | } 2857 | multibox_loss_param { 2858 | loc_loss_type: SMOOTH_L1 2859 | conf_loss_type: SOFTMAX 2860 | loc_weight: 1.0 2861 | num_classes: 2 2862 | share_location: true 2863 | match_type: PER_PREDICTION 2864 | overlap_threshold: 0.5 2865 | use_prior_for_matching: true 2866 | background_label_id: 0 2867 | use_difficult_gt: true 2868 | do_neg_mining: true 2869 | neg_pos_ratio: 3.0 2870 | neg_overlap: 0.5 2871 | code_type: CENTER_SIZE 2872 | } 2873 | } --------------------------------------------------------------------------------