├── README.md ├── data └── VOC0712 │ └── labelmap_voc.prototxt ├── demo.py ├── image ├── result.jpeg ├── slam.jpeg ├── table0.png └── table1.jpg ├── model ├── _iter_180000.caffemodel ├── _iter_290000.caffemodel ├── tiny_ssd_voc_test.prototxt └── tiny_ssd_voc_train.prototxt ├── python_script ├── deploy.prototxt ├── generate.py └── train.prototxt └── solver.prototxt /README.md: -------------------------------------------------------------------------------- 1 | # TinySSD Implementation @ ULSee Inc. 2 | ### Prospective 3 | We are looking forward to have a discussion with anyone who are interested in object detection and try to develop better faster algorithms. As the authors claimed, the tiny-ssd could achieve 61.3% on VOC2007, but our released version could only get an accuracy at 59.9%(we re-train and get 61.5%, may be released in future). Therefore, we are releasing our implementation and expect some common researches and discussions. 4 | ### Description 5 | This is an implementation of the following released paper by ULSee Inc.. It is a simplified structure for SSD(Single Shot MultiBox Detector). 6 | 7 | >@article{DBLP:journals/corr/abs-1802-06488,
8 | author = {Alexander Wong and
9 | Mohammad Javad Shafiee and
10 | Francis Li and
11 | Brendan Chwyl},
12 | title = {Tiny {SSD:} {A} Tiny Single-shot Detection Deep Convolutional Neural
13 | Network for Real-time Embedded Object Detection},
14 | journal = {CoRR},
15 | volume = {abs/1802.06488},
16 | year = {2018},
17 | url = {http://arxiv.org/abs/1802.06488},
18 | archivePrefix = {arXiv},
19 | eprint = {1802.06488},
20 | timestamp = {Thu, 01 Mar 2018 19:20:48 +0100},
21 | biburl = {https://dblp.org/rec/bib/journals/corr/abs-1802-06488},
22 | bibsource = {dblp computer science bibliography, https://dblp.org}
23 | } 24 | 25 | **One Revision** 26 | Table II in the paper is not consistent with Table I and Figure 3. It should be revised as: 27 | 28 | ![origin image](image/table0.png) => ![revision image](image/table1.jpg) 29 | 30 | In our prototxt, we add every fire module id by 1. The fire1 in paper is our fire2 in protoxt. Therefore, the paper describes fire module from fire1, fire2, fire3 ... to fire10, and our supplied prototxt is from fire2, fire3, fire4 ... to fire11. 31 | 32 | ### Usage 33 | 1. Download ssd-caffe and compile the pycaffe 34 | 35 | > git clone -b ssd https://github.com/weiliu89/caffe.git 36 | 2. Download our repository 37 | 38 | > git clone https://github.com/lampsonSong/tinySSD.git 39 | 40 | 3. The hierarchy of tinySSD is: 41 | * **data** 42 | * **model** 43 | * *_iter_180000.caffemodel -> *pretrain model (in **our prototxt**, we use fire2 ~ fire9)* 44 | * *_iter_290000.caffemodel -> *final model* 45 | * tiny_ssd_voc_train.prototxt -> *train.prototxt, please modify data path* 46 | * tiny_ssd_voc_test.prototxt -> *test.prototxt, please modify data path* 47 | * **python_script** 48 | * *generate.py -> *you can generate deploy.prototxt and train.prototxt using this. Custome the corresponding path including **caffe, your project, your train lmdb*** 49 | * *deploy.prototxt -> *our deploy prototxt* 50 | * *train.prototxt -> *our train prototxt* 51 | * **image** 52 | * *slam.jpeg -> *test image* 53 | * *result.jpeg -> *test result* 54 | * *table0.png -> *table from paper* 55 | * *table1.jpg -> *table after revison* 56 | * **README.md** 57 | * **solver.prototxt** 58 | 4. At the tinySSD directory, run 59 | 60 | > python python_script/generate.py 61 | 62 | 63 | to get *deploy.txt* and *train.prototxt* under *python_script* 64 | 65 | 5. revise the demo.py to check the result 66 | > python demo.py 67 | 68 | ![origin image](image/slam.jpeg) => ![revision image](image/result.jpeg) 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /data/VOC0712/labelmap_voc.prototxt: -------------------------------------------------------------------------------- 1 | item { 2 | name: "none_of_the_above" 3 | label: 0 4 | display_name: "background" 5 | } 6 | item { 7 | name: "aeroplane" 8 | label: 1 9 | display_name: "aeroplane" 10 | } 11 | item { 12 | name: "bicycle" 13 | label: 2 14 | display_name: "bicycle" 15 | } 16 | item { 17 | name: "bird" 18 | label: 3 19 | display_name: "bird" 20 | } 21 | item { 22 | name: "boat" 23 | label: 4 24 | display_name: "boat" 25 | } 26 | item { 27 | name: "bottle" 28 | label: 5 29 | display_name: "bottle" 30 | } 31 | item { 32 | name: "bus" 33 | label: 6 34 | display_name: "bus" 35 | } 36 | item { 37 | name: "car" 38 | label: 7 39 | display_name: "car" 40 | } 41 | item { 42 | name: "cat" 43 | label: 8 44 | display_name: "cat" 45 | } 46 | item { 47 | name: "chair" 48 | label: 9 49 | display_name: "chair" 50 | } 51 | item { 52 | name: "cow" 53 | label: 10 54 | display_name: "cow" 55 | } 56 | item { 57 | name: "diningtable" 58 | label: 11 59 | display_name: "diningtable" 60 | } 61 | item { 62 | name: "dog" 63 | label: 12 64 | display_name: "dog" 65 | } 66 | item { 67 | name: "horse" 68 | label: 13 69 | display_name: "horse" 70 | } 71 | item { 72 | name: "motorbike" 73 | label: 14 74 | display_name: "motorbike" 75 | } 76 | item { 77 | name: "person" 78 | label: 15 79 | display_name: "person" 80 | } 81 | item { 82 | name: "pottedplant" 83 | label: 16 84 | display_name: "pottedplant" 85 | } 86 | item { 87 | name: "sheep" 88 | label: 17 89 | display_name: "sheep" 90 | } 91 | item { 92 | name: "sofa" 93 | label: 18 94 | display_name: "sofa" 95 | } 96 | item { 97 | name: "train" 98 | label: 19 99 | display_name: "train" 100 | } 101 | item { 102 | name: "tvmonitor" 103 | label: 20 104 | display_name: "tvmonitor" 105 | } 106 | -------------------------------------------------------------------------------- /demo.py: -------------------------------------------------------------------------------- 1 | # created by lampson.song @ 2018-07-18 2 | # a demo script of tinySSD 3 | 4 | import numpy as np 5 | import sys,os 6 | import cv2 7 | import time 8 | caffe_root = '/home/lampson/1T_disk/workspace/objectDetection/ssd-caffe/' 9 | sys.path.insert(0, caffe_root + 'python') 10 | import caffe 11 | from skimage import img_as_float 12 | 13 | net_file= './python_script/deploy.prototxt' 14 | if not os.path.exists(net_file): 15 | print("prototxt does not exist, use generate.py.") 16 | exit() 17 | 18 | caffe_model='./model/_iter_290000.caffemodel' 19 | if not os.path.exists(caffe_model): 20 | print("model does not exist.") 21 | exit() 22 | 23 | CLASSES = ('background', 24 | 'aeroplane', 'bicycle', 'bird', 'boat', 25 | 'bottle', 'bus', 'car', 'cat', 'chair', 26 | 'cow', 'diningtable', 'dog', 'horse', 27 | 'motorbike', 'person', 'pottedplant', 28 | 'sheep', 'sofa', 'train', 'tvmonitor') 29 | 30 | 31 | def postprocess(img, out): 32 | h = img.shape[0] 33 | w = img.shape[1] 34 | box = out['detection_out'][0,0,:,3:7] * np.array([w, h, w, h]) 35 | 36 | cls = out['detection_out'][0,0,:,1] 37 | conf = out['detection_out'][0,0,:,2] 38 | return (box.astype(np.int32), conf, cls) 39 | 40 | def detect(imgfile): 41 | orig_img = cv2.imread(imgfile) 42 | 43 | img = orig_img[:,:,::-1] 44 | img = img_as_float(img).astype(np.float32) 45 | img = transformer.preprocess('data', img) 46 | 47 | net.blobs['data'].data[...] = img 48 | out = net.forward() 49 | 50 | box, conf, cls = postprocess(orig_img, out) 51 | 52 | for i in range(len(box)): 53 | p1 = (box[i][0], box[i][1]) 54 | p2 = (box[i][2], box[i][3]) 55 | p3 = (max(p1[0], 15), max(p1[1], 15)) 56 | 57 | title = "%s:%.2f" % (CLASSES[int(cls[i])], conf[i]) 58 | cv2.putText(orig_img, title, p3, cv2.FONT_ITALIC, 0.6, (0, 255, 0), 1) 59 | cv2.rectangle(orig_img, p1, p2, (0,255,0)) 60 | 61 | cv2.imshow("tiny-SSD", orig_img) 62 | cv2.waitKey(0) 63 | 64 | 65 | net = caffe.Net(net_file,caffe_model,caffe.TEST) 66 | net.blobs['data'].reshape(1,3,300,300) 67 | 68 | transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) 69 | transformer.set_transpose('data', (2, 0, 1)) # H * W * C -> C * H * W 70 | transformer.set_mean('data', np.array([104, 117, 123])) 71 | transformer.set_raw_scale('data', 255) # [0, 1] -> [0, 255] 72 | transformer.set_channel_swap('data', (2, 1, 0)) # RGB -> BGR 73 | 74 | detect("image/slam.jpeg") 75 | -------------------------------------------------------------------------------- /image/result.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lampsonSong/tinySSD/b5b262e90c036e0cc535959efac73e83ff20f7fc/image/result.jpeg -------------------------------------------------------------------------------- /image/slam.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lampsonSong/tinySSD/b5b262e90c036e0cc535959efac73e83ff20f7fc/image/slam.jpeg -------------------------------------------------------------------------------- /image/table0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lampsonSong/tinySSD/b5b262e90c036e0cc535959efac73e83ff20f7fc/image/table0.png -------------------------------------------------------------------------------- /image/table1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lampsonSong/tinySSD/b5b262e90c036e0cc535959efac73e83ff20f7fc/image/table1.jpg -------------------------------------------------------------------------------- /model/_iter_180000.caffemodel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lampsonSong/tinySSD/b5b262e90c036e0cc535959efac73e83ff20f7fc/model/_iter_180000.caffemodel -------------------------------------------------------------------------------- /model/_iter_290000.caffemodel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lampsonSong/tinySSD/b5b262e90c036e0cc535959efac73e83ff20f7fc/model/_iter_290000.caffemodel -------------------------------------------------------------------------------- /model/tiny_ssd_voc_test.prototxt: -------------------------------------------------------------------------------- 1 | name: "tiny-ssd" 2 | layer { 3 | name: "data" 4 | type: "AnnotatedData" 5 | top: "data" 6 | top: "label" 7 | include { 8 | phase: TEST 9 | } 10 | transform_param { 11 | mean_value: 104 12 | mean_value: 117 13 | mean_value: 123 14 | resize_param { 15 | prob: 1.0 16 | resize_mode: WARP 17 | height: 300 18 | width: 300 19 | interp_mode: LINEAR 20 | } 21 | } 22 | data_param { 23 | source: "examples/VOC0712/VOC0712_test_lmdb" 24 | batch_size: 8 25 | backend: LMDB 26 | } 27 | annotated_data_param { 28 | batch_sampler { 29 | } 30 | label_map_file: "data/VOC0712/labelmap.prototxt" 31 | } 32 | } 33 | layer { 34 | name: "conv1" 35 | type: "Convolution" 36 | bottom: "data" 37 | top: "conv1" 38 | param { 39 | lr_mult: 1.0 40 | decay_mult: 0.0 41 | } 42 | param { 43 | lr_mult: 1.0 44 | decay_mult: 0.0 45 | } 46 | convolution_param { 47 | num_output: 57 48 | kernel_size: 3 49 | stride: 2 50 | weight_filler { 51 | type: "xavier" 52 | } 53 | } 54 | } 55 | layer { 56 | name: "relu_conv1" 57 | type: "ReLU" 58 | bottom: "conv1" 59 | top: "conv1" 60 | } 61 | layer { 62 | name: "pool1" 63 | type: "Pooling" 64 | bottom: "conv1" 65 | top: "pool1" 66 | pooling_param { 67 | pool: MAX 68 | kernel_size: 3 69 | stride: 2 70 | } 71 | } 72 | layer { 73 | name: "fire2/squeeze1x1" 74 | type: "Convolution" 75 | bottom: "pool1" 76 | top: "fire2/squeeze1x1" 77 | param { 78 | lr_mult: 1.0 79 | decay_mult: 0.0 80 | } 81 | param { 82 | lr_mult: 1.0 83 | decay_mult: 0.0 84 | } 85 | convolution_param { 86 | num_output: 15 87 | kernel_size: 1 88 | weight_filler { 89 | type: "xavier" 90 | } 91 | } 92 | } 93 | layer { 94 | name: "fire2/expand1x1" 95 | type: "Convolution" 96 | bottom: "fire2/squeeze1x1" 97 | top: "fire2/expand1x1" 98 | param { 99 | lr_mult: 1.0 100 | decay_mult: 0.0 101 | } 102 | param { 103 | lr_mult: 1.0 104 | decay_mult: 0.0 105 | } 106 | convolution_param { 107 | num_output: 49 108 | kernel_size: 1 109 | weight_filler { 110 | type: "xavier" 111 | } 112 | } 113 | } 114 | layer { 115 | name: "fire2/relu_expand1x1" 116 | type: "ReLU" 117 | bottom: "fire2/expand1x1" 118 | top: "fire2/expand1x1" 119 | } 120 | layer { 121 | name: "fire2/expand3x3" 122 | type: "Convolution" 123 | bottom: "fire2/squeeze1x1" 124 | top: "fire2/expand3x3" 125 | param { 126 | lr_mult: 1.0 127 | decay_mult: 0.0 128 | } 129 | param { 130 | lr_mult: 1.0 131 | decay_mult: 0.0 132 | } 133 | convolution_param { 134 | num_output: 53 135 | pad: 1 136 | kernel_size: 3 137 | weight_filler { 138 | type: "xavier" 139 | } 140 | } 141 | } 142 | layer { 143 | name: "fire2/relu_expand3x3" 144 | type: "ReLU" 145 | bottom: "fire2/expand3x3" 146 | top: "fire2/expand3x3" 147 | } 148 | layer { 149 | name: "fire2/concat" 150 | type: "Concat" 151 | bottom: "fire2/expand1x1" 152 | bottom: "fire2/expand3x3" 153 | top: "fire2/concat" 154 | } 155 | layer { 156 | name: "fire3/squeeze1x1" 157 | type: "Convolution" 158 | bottom: "fire2/concat" 159 | top: "fire3/squeeze1x1" 160 | param { 161 | lr_mult: 1.0 162 | decay_mult: 0.0 163 | } 164 | param { 165 | lr_mult: 1.0 166 | decay_mult: 0.0 167 | } 168 | convolution_param { 169 | num_output: 15 170 | kernel_size: 1 171 | weight_filler { 172 | type: "xavier" 173 | } 174 | } 175 | } 176 | layer { 177 | name: "fire3/expand1x1" 178 | type: "Convolution" 179 | bottom: "fire3/squeeze1x1" 180 | top: "fire3/expand1x1" 181 | param { 182 | lr_mult: 1.0 183 | decay_mult: 0.0 184 | } 185 | param { 186 | lr_mult: 1.0 187 | decay_mult: 0.0 188 | } 189 | convolution_param { 190 | num_output: 54 191 | kernel_size: 1 192 | weight_filler { 193 | type: "xavier" 194 | } 195 | } 196 | } 197 | layer { 198 | name: "fire3/relu_expand1x1" 199 | type: "ReLU" 200 | bottom: "fire3/expand1x1" 201 | top: "fire3/expand1x1" 202 | } 203 | layer { 204 | name: "fire3/expand3x3" 205 | type: "Convolution" 206 | bottom: "fire3/squeeze1x1" 207 | top: "fire3/expand3x3" 208 | param { 209 | lr_mult: 1.0 210 | decay_mult: 0.0 211 | } 212 | param { 213 | lr_mult: 1.0 214 | decay_mult: 0.0 215 | } 216 | convolution_param { 217 | num_output: 52 218 | pad: 1 219 | kernel_size: 3 220 | weight_filler { 221 | type: "xavier" 222 | } 223 | } 224 | } 225 | layer { 226 | name: "fire3/relu_expand3x3" 227 | type: "ReLU" 228 | bottom: "fire3/expand3x3" 229 | top: "fire3/expand3x3" 230 | } 231 | layer { 232 | name: "fire3/concat" 233 | type: "Concat" 234 | bottom: "fire3/expand1x1" 235 | bottom: "fire3/expand3x3" 236 | top: "fire3/concat" 237 | } 238 | layer { 239 | name: "pool3" 240 | type: "Pooling" 241 | bottom: "fire3/concat" 242 | top: "pool3" 243 | pooling_param { 244 | pool: MAX 245 | kernel_size: 3 246 | stride: 2 247 | } 248 | } 249 | layer { 250 | name: "fire4/squeeze1x1" 251 | type: "Convolution" 252 | bottom: "pool3" 253 | top: "fire4/squeeze1x1" 254 | param { 255 | lr_mult: 1.0 256 | decay_mult: 0.0 257 | } 258 | param { 259 | lr_mult: 1.0 260 | decay_mult: 0.0 261 | } 262 | convolution_param { 263 | num_output: 29 264 | kernel_size: 1 265 | weight_filler { 266 | type: "xavier" 267 | } 268 | } 269 | } 270 | layer { 271 | name: "fire4/expand1x1" 272 | type: "Convolution" 273 | bottom: "fire4/squeeze1x1" 274 | top: "fire4/expand1x1" 275 | param { 276 | lr_mult: 1.0 277 | decay_mult: 0.0 278 | } 279 | param { 280 | lr_mult: 1.0 281 | decay_mult: 0.0 282 | } 283 | convolution_param { 284 | num_output: 92 285 | kernel_size: 1 286 | weight_filler { 287 | type: "xavier" 288 | } 289 | } 290 | } 291 | layer { 292 | name: "fire4/relu_expand1x1" 293 | type: "ReLU" 294 | bottom: "fire4/expand1x1" 295 | top: "fire4/expand1x1" 296 | } 297 | layer { 298 | name: "fire4/expand3x3" 299 | type: "Convolution" 300 | bottom: "fire4/squeeze1x1" 301 | top: "fire4/expand3x3" 302 | param { 303 | lr_mult: 1.0 304 | decay_mult: 0.0 305 | } 306 | param { 307 | lr_mult: 1.0 308 | decay_mult: 0.0 309 | } 310 | convolution_param { 311 | num_output: 94 312 | pad: 1 313 | kernel_size: 3 314 | weight_filler { 315 | type: "xavier" 316 | } 317 | } 318 | } 319 | layer { 320 | name: "fire4/relu_expand3x3" 321 | type: "ReLU" 322 | bottom: "fire4/expand3x3" 323 | top: "fire4/expand3x3" 324 | } 325 | layer { 326 | name: "fire4/concat" 327 | type: "Concat" 328 | bottom: "fire4/expand1x1" 329 | bottom: "fire4/expand3x3" 330 | top: "fire4/concat" 331 | } 332 | layer { 333 | name: "fire5/squeeze1x1" 334 | type: "Convolution" 335 | bottom: "fire4/concat" 336 | top: "fire5/squeeze1x1" 337 | param { 338 | lr_mult: 1.0 339 | decay_mult: 0.0 340 | } 341 | param { 342 | lr_mult: 1.0 343 | decay_mult: 0.0 344 | } 345 | convolution_param { 346 | num_output: 29 347 | kernel_size: 1 348 | weight_filler { 349 | type: "xavier" 350 | } 351 | } 352 | } 353 | layer { 354 | name: "fire5/expand1x1" 355 | type: "Convolution" 356 | bottom: "fire5/squeeze1x1" 357 | top: "fire5/expand1x1" 358 | param { 359 | lr_mult: 1.0 360 | decay_mult: 0.0 361 | } 362 | param { 363 | lr_mult: 1.0 364 | decay_mult: 0.0 365 | } 366 | convolution_param { 367 | num_output: 90 368 | kernel_size: 1 369 | weight_filler { 370 | type: "xavier" 371 | } 372 | } 373 | } 374 | layer { 375 | name: "fire5/relu_expand1x1" 376 | type: "ReLU" 377 | bottom: "fire5/expand1x1" 378 | top: "fire5/expand1x1" 379 | } 380 | layer { 381 | name: "fire5/expand3x3" 382 | type: "Convolution" 383 | bottom: "fire5/squeeze1x1" 384 | top: "fire5/expand3x3" 385 | param { 386 | lr_mult: 1.0 387 | decay_mult: 0.0 388 | } 389 | param { 390 | lr_mult: 1.0 391 | decay_mult: 0.0 392 | } 393 | convolution_param { 394 | num_output: 83 395 | pad: 1 396 | kernel_size: 3 397 | weight_filler { 398 | type: "xavier" 399 | } 400 | } 401 | } 402 | layer { 403 | name: "fire5/relu_expand3x3" 404 | type: "ReLU" 405 | bottom: "fire5/expand3x3" 406 | top: "fire5/expand3x3" 407 | } 408 | layer { 409 | name: "fire5/concat" 410 | type: "Concat" 411 | bottom: "fire5/expand1x1" 412 | bottom: "fire5/expand3x3" 413 | top: "fire5/concat" 414 | } 415 | layer { 416 | name: "pool5" 417 | type: "Pooling" 418 | bottom: "fire5/concat" 419 | top: "pool5" 420 | pooling_param { 421 | pool: MAX 422 | kernel_size: 3 423 | stride: 2 424 | } 425 | } 426 | layer { 427 | name: "fire6/squeeze1x1" 428 | type: "Convolution" 429 | bottom: "pool5" 430 | top: "fire6/squeeze1x1" 431 | param { 432 | lr_mult: 1.0 433 | decay_mult: 0.0 434 | } 435 | param { 436 | lr_mult: 1.0 437 | decay_mult: 0.0 438 | } 439 | convolution_param { 440 | num_output: 44 441 | kernel_size: 1 442 | weight_filler { 443 | type: "xavier" 444 | } 445 | } 446 | } 447 | layer { 448 | name: "fire6/expand1x1" 449 | type: "Convolution" 450 | bottom: "fire6/squeeze1x1" 451 | top: "fire6/expand1x1" 452 | param { 453 | lr_mult: 1.0 454 | decay_mult: 0.0 455 | } 456 | param { 457 | lr_mult: 1.0 458 | decay_mult: 0.0 459 | } 460 | convolution_param { 461 | num_output: 166 462 | kernel_size: 1 463 | weight_filler { 464 | type: "xavier" 465 | } 466 | } 467 | } 468 | layer { 469 | name: "fire6/relu_expand1x1" 470 | type: "ReLU" 471 | bottom: "fire6/expand1x1" 472 | top: "fire6/expand1x1" 473 | } 474 | layer { 475 | name: "fire6/expand3x3" 476 | type: "Convolution" 477 | bottom: "fire6/squeeze1x1" 478 | top: "fire6/expand3x3" 479 | param { 480 | lr_mult: 1.0 481 | decay_mult: 0.0 482 | } 483 | param { 484 | lr_mult: 1.0 485 | decay_mult: 0.0 486 | } 487 | convolution_param { 488 | num_output: 161 489 | pad: 1 490 | kernel_size: 3 491 | weight_filler { 492 | type: "xavier" 493 | } 494 | } 495 | } 496 | layer { 497 | name: "fire6/relu_expand3x3" 498 | type: "ReLU" 499 | bottom: "fire6/expand3x3" 500 | top: "fire6/expand3x3" 501 | } 502 | layer { 503 | name: "fire6/concat" 504 | type: "Concat" 505 | bottom: "fire6/expand1x1" 506 | bottom: "fire6/expand3x3" 507 | top: "fire6/concat" 508 | } 509 | layer { 510 | name: "fire7/squeeze1x1" 511 | type: "Convolution" 512 | bottom: "fire6/concat" 513 | top: "fire7/squeeze1x1" 514 | param { 515 | lr_mult: 1.0 516 | decay_mult: 0.0 517 | } 518 | param { 519 | lr_mult: 1.0 520 | decay_mult: 0.0 521 | } 522 | convolution_param { 523 | num_output: 45 524 | kernel_size: 1 525 | weight_filler { 526 | type: "xavier" 527 | } 528 | } 529 | } 530 | layer { 531 | name: "fire7/expand1x1" 532 | type: "Convolution" 533 | bottom: "fire7/squeeze1x1" 534 | top: "fire7/expand1x1" 535 | param { 536 | lr_mult: 1.0 537 | decay_mult: 0.0 538 | } 539 | param { 540 | lr_mult: 1.0 541 | decay_mult: 0.0 542 | } 543 | convolution_param { 544 | num_output: 155 545 | kernel_size: 1 546 | weight_filler { 547 | type: "xavier" 548 | } 549 | } 550 | } 551 | layer { 552 | name: "fire7/relu_expand1x1" 553 | type: "ReLU" 554 | bottom: "fire7/expand1x1" 555 | top: "fire7/expand1x1" 556 | } 557 | layer { 558 | name: "fire7/expand3x3" 559 | type: "Convolution" 560 | bottom: "fire7/squeeze1x1" 561 | top: "fire7/expand3x3" 562 | param { 563 | lr_mult: 1.0 564 | decay_mult: 0.0 565 | } 566 | param { 567 | lr_mult: 1.0 568 | decay_mult: 0.0 569 | } 570 | convolution_param { 571 | num_output: 146 572 | pad: 1 573 | kernel_size: 3 574 | weight_filler { 575 | type: "xavier" 576 | } 577 | } 578 | } 579 | layer { 580 | name: "fire7/relu_expand3x3" 581 | type: "ReLU" 582 | bottom: "fire7/expand3x3" 583 | top: "fire7/expand3x3" 584 | } 585 | layer { 586 | name: "fire7/concat" 587 | type: "Concat" 588 | bottom: "fire7/expand1x1" 589 | bottom: "fire7/expand3x3" 590 | top: "fire7/concat" 591 | } 592 | layer { 593 | name: "fire8/squeeze1x1" 594 | type: "Convolution" 595 | bottom: "fire7/concat" 596 | top: "fire8/squeeze1x1" 597 | param { 598 | lr_mult: 1.0 599 | decay_mult: 0.0 600 | } 601 | param { 602 | lr_mult: 1.0 603 | decay_mult: 0.0 604 | } 605 | convolution_param { 606 | num_output: 49 607 | kernel_size: 1 608 | weight_filler { 609 | type: "xavier" 610 | } 611 | } 612 | } 613 | layer { 614 | name: "fire8/expand1x1" 615 | type: "Convolution" 616 | bottom: "fire8/squeeze1x1" 617 | top: "fire8/expand1x1" 618 | param { 619 | lr_mult: 1.0 620 | decay_mult: 0.0 621 | } 622 | param { 623 | lr_mult: 1.0 624 | decay_mult: 0.0 625 | } 626 | convolution_param { 627 | num_output: 163 628 | kernel_size: 1 629 | weight_filler { 630 | type: "xavier" 631 | } 632 | } 633 | } 634 | layer { 635 | name: "fire8/relu_expand1x1" 636 | type: "ReLU" 637 | bottom: "fire8/expand1x1" 638 | top: "fire8/expand1x1" 639 | } 640 | layer { 641 | name: "fire8/expand3x3" 642 | type: "Convolution" 643 | bottom: "fire8/squeeze1x1" 644 | top: "fire8/expand3x3" 645 | param { 646 | lr_mult: 1.0 647 | decay_mult: 0.0 648 | } 649 | param { 650 | lr_mult: 1.0 651 | decay_mult: 0.0 652 | } 653 | convolution_param { 654 | num_output: 171 655 | pad: 1 656 | kernel_size: 3 657 | weight_filler { 658 | type: "xavier" 659 | } 660 | } 661 | } 662 | layer { 663 | name: "fire8/relu_expand3x3" 664 | type: "ReLU" 665 | bottom: "fire8/expand3x3" 666 | top: "fire8/expand3x3" 667 | } 668 | layer { 669 | name: "fire8/concat" 670 | type: "Concat" 671 | bottom: "fire8/expand1x1" 672 | bottom: "fire8/expand3x3" 673 | top: "fire8/concat" 674 | } 675 | layer { 676 | name: "fire9/squeeze1x1" 677 | type: "Convolution" 678 | bottom: "fire8/concat" 679 | top: "fire9/squeeze1x1" 680 | param { 681 | lr_mult: 1.0 682 | decay_mult: 0.0 683 | } 684 | param { 685 | lr_mult: 1.0 686 | decay_mult: 0.0 687 | } 688 | convolution_param { 689 | num_output: 25 690 | kernel_size: 1 691 | weight_filler { 692 | type: "xavier" 693 | } 694 | } 695 | } 696 | layer { 697 | name: "fire9/expand1x1" 698 | type: "Convolution" 699 | bottom: "fire9/squeeze1x1" 700 | top: "fire9/expand1x1" 701 | param { 702 | lr_mult: 1.0 703 | decay_mult: 0.0 704 | } 705 | param { 706 | lr_mult: 1.0 707 | decay_mult: 0.0 708 | } 709 | convolution_param { 710 | num_output: 29 711 | kernel_size: 1 712 | weight_filler { 713 | type: "xavier" 714 | } 715 | } 716 | } 717 | layer { 718 | name: "fire9/expand1x1/bn" 719 | type: "BatchNorm" 720 | bottom: "fire9/expand1x1" 721 | top: "fire9/expand1x1" 722 | param { 723 | lr_mult: 0 724 | decay_mult: 0 725 | } 726 | param { 727 | lr_mult: 0 728 | decay_mult: 0 729 | } 730 | param { 731 | lr_mult: 0 732 | decay_mult: 0 733 | } 734 | } 735 | layer { 736 | name: "fire9/expand1x1/scale" 737 | type: "Scale" 738 | bottom: "fire9/expand1x1" 739 | top: "fire9/expand1x1" 740 | param { 741 | lr_mult: 1.0 742 | decay_mult: 0.0 743 | } 744 | param { 745 | lr_mult: 2.0 746 | decay_mult: 0.0 747 | } 748 | scale_param { 749 | filler { 750 | value: 1 751 | } 752 | bias_term: true 753 | bias_filler { 754 | value: 0 755 | } 756 | } 757 | } 758 | layer { 759 | name: "fire9/relu_expand1x1" 760 | type: "ReLU" 761 | bottom: "fire9/expand1x1" 762 | top: "fire9/expand1x1" 763 | } 764 | layer { 765 | name: "fire9/expand3x3" 766 | type: "Convolution" 767 | bottom: "fire9/squeeze1x1" 768 | top: "fire9/expand3x3" 769 | param { 770 | lr_mult: 1.0 771 | decay_mult: 0.0 772 | } 773 | param { 774 | lr_mult: 1.0 775 | decay_mult: 0.0 776 | } 777 | convolution_param { 778 | num_output: 54 779 | pad: 1 780 | kernel_size: 3 781 | weight_filler { 782 | type: "xavier" 783 | } 784 | } 785 | } 786 | layer { 787 | name: "fire9/expand3x3/bn" 788 | type: "BatchNorm" 789 | bottom: "fire9/expand3x3" 790 | top: "fire9/expand3x3" 791 | param { 792 | lr_mult: 0 793 | decay_mult: 0 794 | } 795 | param { 796 | lr_mult: 0 797 | decay_mult: 0 798 | } 799 | param { 800 | lr_mult: 0 801 | decay_mult: 0 802 | } 803 | } 804 | layer { 805 | name: "fire9/expand3x3/scale" 806 | type: "Scale" 807 | bottom: "fire9/expand3x3" 808 | top: "fire9/expand3x3" 809 | param { 810 | lr_mult: 1.0 811 | decay_mult: 0.0 812 | } 813 | param { 814 | lr_mult: 2.0 815 | decay_mult: 0.0 816 | } 817 | scale_param { 818 | filler { 819 | value: 1 820 | } 821 | bias_term: true 822 | bias_filler { 823 | value: 0 824 | } 825 | } 826 | } 827 | layer { 828 | name: "fire9/relu_expand3x3" 829 | type: "ReLU" 830 | bottom: "fire9/expand3x3" 831 | top: "fire9/expand3x3" 832 | } 833 | layer { 834 | name: "fire9/concat" 835 | type: "Concat" 836 | bottom: "fire9/expand1x1" 837 | bottom: "fire9/expand3x3" 838 | top: "fire9/concat" 839 | } 840 | layer { 841 | name: "pool9" 842 | type: "Pooling" 843 | bottom: "fire9/concat" 844 | top: "pool9" 845 | pooling_param { 846 | pool: MAX 847 | kernel_size: 3 848 | stride: 2 849 | } 850 | } 851 | #================ssd append layer fire10, out 9 * 9 852 | layer { 853 | name: "fire10/squeeze1x1" 854 | type: "Convolution" 855 | bottom: "pool9" 856 | top: "fire10/squeeze1x1" 857 | convolution_param { 858 | num_output: 37 859 | kernel_size: 1 860 | weight_filler { 861 | type: "xavier" 862 | } 863 | } 864 | } 865 | layer { 866 | name: "fire10/squeeze1x1/bn" 867 | type: "BatchNorm" 868 | top: "fire10/squeeze1x1" 869 | bottom: "fire10/squeeze1x1" 870 | param { 871 | lr_mult: 0 872 | decay_mult: 0 873 | } 874 | param { 875 | lr_mult: 0 876 | decay_mult: 0 877 | } 878 | param { 879 | lr_mult: 0 880 | decay_mult: 0 881 | } 882 | } 883 | layer { 884 | name: "fire10/squeeze1x1/scale" 885 | type: "Scale" 886 | top: "fire10/squeeze1x1" 887 | bottom: "fire10/squeeze1x1" 888 | param { 889 | lr_mult: 1.0 890 | decay_mult: 0.0 891 | } 892 | param { 893 | lr_mult: 2.0 894 | decay_mult: 0.0 895 | } 896 | scale_param { 897 | filler { 898 | value: 1 899 | } 900 | bias_term: true 901 | bias_filler { 902 | value: 0 903 | } 904 | } 905 | } 906 | layer { 907 | name: "fire10/expand1x1" 908 | type: "Convolution" 909 | bottom: "fire10/squeeze1x1" 910 | top: "fire10/expand1x1" 911 | convolution_param { 912 | num_output: 45 913 | kernel_size: 1 914 | weight_filler { 915 | type: "xavier" 916 | } 917 | } 918 | } 919 | layer { 920 | name: "fire10/expand1x1/bn" 921 | type: "BatchNorm" 922 | bottom: "fire10/expand1x1" 923 | top: "fire10/expand1x1" 924 | param { 925 | lr_mult: 0 926 | decay_mult: 0 927 | } 928 | param { 929 | lr_mult: 0 930 | decay_mult: 0 931 | } 932 | param { 933 | lr_mult: 0 934 | decay_mult: 0 935 | } 936 | } 937 | layer { 938 | name: "fire10/expand1x1/scale" 939 | type: "Scale" 940 | bottom: "fire10/expand1x1" 941 | top: "fire10/expand1x1" 942 | param { 943 | lr_mult: 1.0 944 | decay_mult: 0.0 945 | } 946 | param { 947 | lr_mult: 2.0 948 | decay_mult: 0.0 949 | } 950 | scale_param { 951 | filler { 952 | value: 1 953 | } 954 | bias_term: true 955 | bias_filler { 956 | value: 0 957 | } 958 | } 959 | } 960 | layer { 961 | name: "fire10/relu_expand1x1" 962 | type: "ReLU" 963 | bottom: "fire10/expand1x1" 964 | top: "fire10/expand1x1" 965 | } 966 | layer { 967 | name: "fire10/expand3x3" 968 | type: "Convolution" 969 | bottom: "fire10/squeeze1x1" 970 | top: "fire10/expand3x3" 971 | convolution_param { 972 | num_output: 56 973 | pad: 1 974 | kernel_size: 3 975 | weight_filler { 976 | type: "xavier" 977 | } 978 | } 979 | } 980 | layer { 981 | name: "fire10/expand3x3/bn" 982 | type: "BatchNorm" 983 | bottom: "fire10/expand3x3" 984 | top: "fire10/expand3x3" 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 | } 998 | layer { 999 | name: "fire10/expand3x3/scale" 1000 | type: "Scale" 1001 | bottom: "fire10/expand3x3" 1002 | top: "fire10/expand3x3" 1003 | param { 1004 | lr_mult: 1.0 1005 | decay_mult: 0.0 1006 | } 1007 | param { 1008 | lr_mult: 2.0 1009 | decay_mult: 0.0 1010 | } 1011 | scale_param { 1012 | filler { 1013 | value: 1 1014 | } 1015 | bias_term: true 1016 | bias_filler { 1017 | value: 0 1018 | } 1019 | } 1020 | } 1021 | layer { 1022 | name: "fire10/relu_expand3x3" 1023 | type: "ReLU" 1024 | bottom: "fire10/expand3x3" 1025 | top: "fire10/expand3x3" 1026 | } 1027 | layer { 1028 | name: "fire10/concat" 1029 | type: "Concat" 1030 | bottom: "fire10/expand1x1" 1031 | bottom: "fire10/expand3x3" 1032 | top: "fire10/concat" 1033 | } 1034 | #================ssd append layer fire11, out 4 * 4 1035 | layer { 1036 | name: "pool10" 1037 | type: "Pooling" 1038 | bottom: "fire10/concat" 1039 | top: "pool10" 1040 | pooling_param { 1041 | pool: MAX 1042 | kernel_size: 3 1043 | stride: 2 1044 | } 1045 | } 1046 | layer { 1047 | name: "fire11/squeeze1x1" 1048 | type: "Convolution" 1049 | bottom: "pool10" 1050 | top: "fire11/squeeze1x1" 1051 | convolution_param { 1052 | num_output: 38 1053 | kernel_size: 1 1054 | weight_filler { 1055 | type: "xavier" 1056 | } 1057 | } 1058 | } 1059 | layer { 1060 | name: "fire11/squeeze1x1/bn" 1061 | type: "BatchNorm" 1062 | top: "fire11/squeeze1x1" 1063 | bottom: "fire11/squeeze1x1" 1064 | param { 1065 | lr_mult: 0 1066 | decay_mult: 0 1067 | } 1068 | param { 1069 | lr_mult: 0 1070 | decay_mult: 0 1071 | } 1072 | param { 1073 | lr_mult: 0 1074 | decay_mult: 0 1075 | } 1076 | } 1077 | layer { 1078 | name: "fire11/squeeze1x1/scale" 1079 | type: "Scale" 1080 | top: "fire11/squeeze1x1" 1081 | bottom: "fire11/squeeze1x1" 1082 | param { 1083 | lr_mult: 1.0 1084 | decay_mult: 0.0 1085 | } 1086 | param { 1087 | lr_mult: 2.0 1088 | decay_mult: 0.0 1089 | } 1090 | scale_param { 1091 | filler { 1092 | value: 1 1093 | } 1094 | bias_term: true 1095 | bias_filler { 1096 | value: 0 1097 | } 1098 | } 1099 | } 1100 | layer { 1101 | name: "fire11/expand1x1" 1102 | type: "Convolution" 1103 | bottom: "fire11/squeeze1x1" 1104 | top: "fire11/expand1x1" 1105 | convolution_param { 1106 | num_output: 41 1107 | kernel_size: 1 1108 | weight_filler { 1109 | type: "xavier" 1110 | } 1111 | } 1112 | } 1113 | layer { 1114 | name: "fire11/expand1x1/bn" 1115 | type: "BatchNorm" 1116 | bottom: "fire11/expand1x1" 1117 | top: "fire11/expand1x1" 1118 | param { 1119 | lr_mult: 0 1120 | decay_mult: 0 1121 | } 1122 | param { 1123 | lr_mult: 0 1124 | decay_mult: 0 1125 | } 1126 | param { 1127 | lr_mult: 0 1128 | decay_mult: 0 1129 | } 1130 | } 1131 | layer { 1132 | name: "fire11/expand1x1/scale" 1133 | type: "Scale" 1134 | bottom: "fire11/expand1x1" 1135 | top: "fire11/expand1x1" 1136 | param { 1137 | lr_mult: 1.0 1138 | decay_mult: 0.0 1139 | } 1140 | param { 1141 | lr_mult: 2.0 1142 | decay_mult: 0.0 1143 | } 1144 | scale_param { 1145 | filler { 1146 | value: 1 1147 | } 1148 | bias_term: true 1149 | bias_filler { 1150 | value: 0 1151 | } 1152 | } 1153 | } 1154 | layer { 1155 | name: "fire11/relu_expand1x1" 1156 | type: "ReLU" 1157 | bottom: "fire11/expand1x1" 1158 | top: "fire11/expand1x1" 1159 | } 1160 | layer { 1161 | name: "fire11/expand3x3" 1162 | type: "Convolution" 1163 | bottom: "fire11/squeeze1x1" 1164 | top: "fire11/expand3x3" 1165 | convolution_param { 1166 | num_output: 44 1167 | pad: 1 1168 | kernel_size: 3 1169 | weight_filler { 1170 | type: "xavier" 1171 | } 1172 | } 1173 | } 1174 | layer { 1175 | name: "fire11/expand3x3/bn" 1176 | type: "BatchNorm" 1177 | bottom: "fire11/expand3x3" 1178 | top: "fire11/expand3x3" 1179 | param { 1180 | lr_mult: 0 1181 | decay_mult: 0 1182 | } 1183 | param { 1184 | lr_mult: 0 1185 | decay_mult: 0 1186 | } 1187 | param { 1188 | lr_mult: 0 1189 | decay_mult: 0 1190 | } 1191 | } 1192 | layer { 1193 | name: "fire11/expand3x3/scale" 1194 | type: "Scale" 1195 | bottom: "fire11/expand3x3" 1196 | top: "fire11/expand3x3" 1197 | param { 1198 | lr_mult: 1.0 1199 | decay_mult: 0.0 1200 | } 1201 | param { 1202 | lr_mult: 2.0 1203 | decay_mult: 0.0 1204 | } 1205 | scale_param { 1206 | filler { 1207 | value: 1 1208 | } 1209 | bias_term: true 1210 | bias_filler { 1211 | value: 0 1212 | } 1213 | } 1214 | } 1215 | layer { 1216 | name: "fire11/relu_expand3x3" 1217 | type: "ReLU" 1218 | bottom: "fire11/expand3x3" 1219 | top: "fire11/expand3x3" 1220 | } 1221 | layer { 1222 | name: "fire11/concat" 1223 | type: "Concat" 1224 | bottom: "fire11/expand1x1" 1225 | bottom: "fire11/expand3x3" 1226 | top: "fire11/concat" 1227 | } 1228 | #================ssd append layer conv12, out 2 * 2 1229 | layer { 1230 | name: "conv12_1" 1231 | type: "Convolution" 1232 | bottom: "fire11/concat" 1233 | top: "conv12_1" 1234 | param { 1235 | lr_mult: 1.0 1236 | decay_mult: 1.0 1237 | } 1238 | convolution_param { 1239 | num_output: 51 1240 | bias_term: false 1241 | kernel_size: 1 1242 | weight_filler { 1243 | type: "msra" 1244 | } 1245 | } 1246 | } 1247 | layer { 1248 | name: "conv12_1/bn" 1249 | type: "BatchNorm" 1250 | bottom: "conv12_1" 1251 | top: "conv12_1" 1252 | param { 1253 | lr_mult: 0 1254 | decay_mult: 0 1255 | } 1256 | param { 1257 | lr_mult: 0 1258 | decay_mult: 0 1259 | } 1260 | param { 1261 | lr_mult: 0 1262 | decay_mult: 0 1263 | } 1264 | } 1265 | layer { 1266 | name: "conv12_1/scale" 1267 | type: "Scale" 1268 | bottom: "conv12_1" 1269 | top: "conv12_1" 1270 | param { 1271 | lr_mult: 1.0 1272 | decay_mult: 0.0 1273 | } 1274 | param { 1275 | lr_mult: 2.0 1276 | decay_mult: 0.0 1277 | } 1278 | scale_param { 1279 | filler { 1280 | value: 1 1281 | } 1282 | bias_term: true 1283 | bias_filler { 1284 | value: 0 1285 | } 1286 | } 1287 | } 1288 | layer { 1289 | name: "conv12_1/relu" 1290 | type: "ReLU" 1291 | bottom: "conv12_1" 1292 | top: "conv12_1" 1293 | } 1294 | layer { 1295 | name: "conv12_2" 1296 | type: "Convolution" 1297 | bottom: "conv12_1" 1298 | top: "conv12_2" 1299 | param { 1300 | lr_mult: 1.0 1301 | decay_mult: 1.0 1302 | } 1303 | convolution_param { 1304 | num_output: 46 1305 | bias_term: false 1306 | pad: 1 1307 | kernel_size: 3 1308 | stride: 2 1309 | weight_filler { 1310 | type: "msra" 1311 | } 1312 | } 1313 | } 1314 | layer { 1315 | name: "conv12_2/bn" 1316 | type: "BatchNorm" 1317 | bottom: "conv12_2" 1318 | top: "conv12_2" 1319 | param { 1320 | lr_mult: 0 1321 | decay_mult: 0 1322 | } 1323 | param { 1324 | lr_mult: 0 1325 | decay_mult: 0 1326 | } 1327 | param { 1328 | lr_mult: 0 1329 | decay_mult: 0 1330 | } 1331 | } 1332 | layer { 1333 | name: "conv12_2/scale" 1334 | type: "Scale" 1335 | bottom: "conv12_2" 1336 | top: "conv12_2" 1337 | param { 1338 | lr_mult: 1.0 1339 | decay_mult: 0.0 1340 | } 1341 | param { 1342 | lr_mult: 2.0 1343 | decay_mult: 0.0 1344 | } 1345 | scale_param { 1346 | filler { 1347 | value: 1 1348 | } 1349 | bias_term: true 1350 | bias_filler { 1351 | value: 0 1352 | } 1353 | } 1354 | } 1355 | layer { 1356 | name: "conv12_2/relu" 1357 | type: "ReLU" 1358 | bottom: "conv12_2" 1359 | top: "conv12_2" 1360 | } 1361 | #================ssd append layer conv13, out 1 * 1 1362 | layer { 1363 | name: "conv13_1" 1364 | type: "Convolution" 1365 | bottom: "conv12_2" 1366 | top: "conv13_1" 1367 | param { 1368 | lr_mult: 1.0 1369 | decay_mult: 1.0 1370 | } 1371 | convolution_param { 1372 | num_output: 55 1373 | bias_term: false 1374 | kernel_size: 1 1375 | weight_filler { 1376 | type: "msra" 1377 | } 1378 | } 1379 | } 1380 | layer { 1381 | name: "conv13_1/bn" 1382 | type: "BatchNorm" 1383 | bottom: "conv13_1" 1384 | top: "conv13_1" 1385 | param { 1386 | lr_mult: 0 1387 | decay_mult: 0 1388 | } 1389 | param { 1390 | lr_mult: 0 1391 | decay_mult: 0 1392 | } 1393 | param { 1394 | lr_mult: 0 1395 | decay_mult: 0 1396 | } 1397 | } 1398 | layer { 1399 | name: "conv13_1/scale" 1400 | type: "Scale" 1401 | bottom: "conv13_1" 1402 | top: "conv13_1" 1403 | param { 1404 | lr_mult: 1.0 1405 | decay_mult: 0.0 1406 | } 1407 | param { 1408 | lr_mult: 2.0 1409 | decay_mult: 0.0 1410 | } 1411 | scale_param { 1412 | filler { 1413 | value: 1 1414 | } 1415 | bias_term: true 1416 | bias_filler { 1417 | value: 0 1418 | } 1419 | } 1420 | } 1421 | layer { 1422 | name: "conv13_1/relu" 1423 | type: "ReLU" 1424 | bottom: "conv13_1" 1425 | top: "conv13_1" 1426 | } 1427 | layer { 1428 | name: "conv13_2" 1429 | type: "Convolution" 1430 | bottom: "conv13_1" 1431 | top: "conv13_2" 1432 | param { 1433 | lr_mult: 1.0 1434 | decay_mult: 1.0 1435 | } 1436 | convolution_param { 1437 | num_output: 85 1438 | bias_term: false 1439 | pad: 1 1440 | kernel_size: 3 1441 | stride: 2 1442 | weight_filler { 1443 | type: "msra" 1444 | } 1445 | } 1446 | } 1447 | layer { 1448 | name: "conv13_2/bn" 1449 | type: "BatchNorm" 1450 | bottom: "conv13_2" 1451 | top: "conv13_2" 1452 | param { 1453 | lr_mult: 0 1454 | decay_mult: 0 1455 | } 1456 | param { 1457 | lr_mult: 0 1458 | decay_mult: 0 1459 | } 1460 | param { 1461 | lr_mult: 0 1462 | decay_mult: 0 1463 | } 1464 | } 1465 | layer { 1466 | name: "conv13_2/scale" 1467 | type: "Scale" 1468 | bottom: "conv13_2" 1469 | top: "conv13_2" 1470 | param { 1471 | lr_mult: 1.0 1472 | decay_mult: 0.0 1473 | } 1474 | param { 1475 | lr_mult: 2.0 1476 | decay_mult: 0.0 1477 | } 1478 | scale_param { 1479 | filler { 1480 | value: 1 1481 | } 1482 | bias_term: true 1483 | bias_filler { 1484 | value: 0 1485 | } 1486 | } 1487 | } 1488 | layer { 1489 | name: "conv13_2/relu" 1490 | type: "ReLU" 1491 | bottom: "conv13_2" 1492 | top: "conv13_2" 1493 | } 1494 | #================ssd mbox layer 1495 | layer { 1496 | name: "fire5/bn" 1497 | type: "BatchNorm" 1498 | bottom: "fire5/concat" 1499 | top: "fire5/normal" 1500 | param { 1501 | lr_mult: 0 1502 | decay_mult: 0 1503 | } 1504 | param { 1505 | lr_mult: 0 1506 | decay_mult: 0 1507 | } 1508 | param { 1509 | lr_mult: 0 1510 | decay_mult: 0 1511 | } 1512 | } 1513 | layer { 1514 | name: "fire5/scale" 1515 | type: "Scale" 1516 | bottom: "fire5/normal" 1517 | top: "fire5/normal" 1518 | param { 1519 | lr_mult: 1.0 1520 | decay_mult: 0.0 1521 | } 1522 | param { 1523 | lr_mult: 2.0 1524 | decay_mult: 0.0 1525 | } 1526 | scale_param { 1527 | filler { 1528 | value: 1 1529 | } 1530 | bias_term: true 1531 | bias_filler { 1532 | value: 0 1533 | } 1534 | } 1535 | } 1536 | layer { 1537 | name: "fire5_mbox_loc" 1538 | type: "Convolution" 1539 | bottom: "fire5/normal" 1540 | top: "fire5_mbox_loc" 1541 | param { 1542 | lr_mult: 1.0 1543 | decay_mult: 1.0 1544 | } 1545 | param { 1546 | lr_mult: 2.0 1547 | decay_mult: 0.0 1548 | } 1549 | convolution_param { 1550 | num_output: 16 1551 | pad: 1 1552 | kernel_size: 3 1553 | stride: 1 1554 | weight_filler { 1555 | type: "msra" 1556 | } 1557 | bias_filler { 1558 | type: "constant" 1559 | value: 0.0 1560 | } 1561 | } 1562 | } 1563 | layer { 1564 | name: "fire5_mbox_loc_perm" 1565 | type: "Permute" 1566 | bottom: "fire5_mbox_loc" 1567 | top: "fire5_mbox_loc_perm" 1568 | permute_param { 1569 | order: 0 1570 | order: 2 1571 | order: 3 1572 | order: 1 1573 | } 1574 | } 1575 | layer { 1576 | name: "fire5_mbox_loc_flat" 1577 | type: "Flatten" 1578 | bottom: "fire5_mbox_loc_perm" 1579 | top: "fire5_mbox_loc_flat" 1580 | flatten_param { 1581 | axis: 1 1582 | } 1583 | } 1584 | layer { 1585 | name: "fire5_mbox_conf" 1586 | type: "Convolution" 1587 | bottom: "fire5/normal" 1588 | top: "fire5_mbox_conf" 1589 | param { 1590 | lr_mult: 1.0 1591 | decay_mult: 1.0 1592 | } 1593 | param { 1594 | lr_mult: 2.0 1595 | decay_mult: 0.0 1596 | } 1597 | convolution_param { 1598 | num_output: 84 1599 | pad: 1 1600 | kernel_size: 3 1601 | stride: 1 1602 | weight_filler { 1603 | type: "msra" 1604 | } 1605 | bias_filler { 1606 | type: "constant" 1607 | value: 0.0 1608 | } 1609 | } 1610 | } 1611 | layer { 1612 | name: "fire5_mbox_conf_perm" 1613 | type: "Permute" 1614 | bottom: "fire5_mbox_conf" 1615 | top: "fire5_mbox_conf_perm" 1616 | permute_param { 1617 | order: 0 1618 | order: 2 1619 | order: 3 1620 | order: 1 1621 | } 1622 | } 1623 | layer { 1624 | name: "fire5_mbox_conf_flat" 1625 | type: "Flatten" 1626 | bottom: "fire5_mbox_conf_perm" 1627 | top: "fire5_mbox_conf_flat" 1628 | flatten_param { 1629 | axis: 1 1630 | } 1631 | } 1632 | layer { 1633 | name: "fire5_mbox_priorbox" 1634 | type: "PriorBox" 1635 | bottom: "fire5/normal" 1636 | bottom: "data" 1637 | top: "fire5_mbox_priorbox" 1638 | prior_box_param { 1639 | min_size: 21.0 1640 | max_size: 45.0 1641 | aspect_ratio: 2.0 1642 | flip: true 1643 | clip: false 1644 | variance: 0.1 1645 | variance: 0.1 1646 | variance: 0.2 1647 | variance: 0.2 1648 | step: 8 1649 | } 1650 | } 1651 | #================mbox fire9 1652 | layer { 1653 | name: "fire9_mbox_loc" 1654 | type: "Convolution" 1655 | bottom: "fire9/concat" 1656 | top: "fire9_mbox_loc" 1657 | param { 1658 | lr_mult: 1.0 1659 | decay_mult: 1.0 1660 | } 1661 | param { 1662 | lr_mult: 2.0 1663 | decay_mult: 0.0 1664 | } 1665 | convolution_param { 1666 | num_output: 24 1667 | pad: 1 1668 | kernel_size: 3 1669 | stride: 1 1670 | weight_filler { 1671 | type: "msra" 1672 | } 1673 | bias_filler { 1674 | type: "constant" 1675 | value: 0.0 1676 | } 1677 | } 1678 | } 1679 | layer { 1680 | name: "fire9_mbox_loc_perm" 1681 | type: "Permute" 1682 | bottom: "fire9_mbox_loc" 1683 | top: "fire9_mbox_loc_perm" 1684 | permute_param { 1685 | order: 0 1686 | order: 2 1687 | order: 3 1688 | order: 1 1689 | } 1690 | } 1691 | layer { 1692 | name: "fire9_mbox_loc_flat" 1693 | type: "Flatten" 1694 | bottom: "fire9_mbox_loc_perm" 1695 | top: "fire9_mbox_loc_flat" 1696 | flatten_param { 1697 | axis: 1 1698 | } 1699 | } 1700 | layer { 1701 | name: "fire9_mbox_conf" 1702 | type: "Convolution" 1703 | bottom: "fire9/concat" 1704 | top: "fire9_mbox_conf" 1705 | param { 1706 | lr_mult: 1.0 1707 | decay_mult: 1.0 1708 | } 1709 | param { 1710 | lr_mult: 2.0 1711 | decay_mult: 0.0 1712 | } 1713 | convolution_param { 1714 | num_output: 126 1715 | pad: 1 1716 | kernel_size: 3 1717 | stride: 1 1718 | weight_filler { 1719 | type: "msra" 1720 | } 1721 | bias_filler { 1722 | type: "constant" 1723 | value: 0.0 1724 | } 1725 | } 1726 | } 1727 | layer { 1728 | name: "fire9_mbox_conf_perm" 1729 | type: "Permute" 1730 | bottom: "fire9_mbox_conf" 1731 | top: "fire9_mbox_conf_perm" 1732 | permute_param { 1733 | order: 0 1734 | order: 2 1735 | order: 3 1736 | order: 1 1737 | } 1738 | } 1739 | layer { 1740 | name: "fire9_mbox_conf_flat" 1741 | type: "Flatten" 1742 | bottom: "fire9_mbox_conf_perm" 1743 | top: "fire9_mbox_conf_flat" 1744 | flatten_param { 1745 | axis: 1 1746 | } 1747 | } 1748 | layer { 1749 | name: "fire9_mbox_priorbox" 1750 | type: "PriorBox" 1751 | bottom: "fire9/concat" 1752 | bottom: "data" 1753 | top: "fire9_mbox_priorbox" 1754 | prior_box_param { 1755 | min_size: 45.0 1756 | max_size: 99.0 1757 | aspect_ratio: 2.0 1758 | aspect_ratio: 3.0 1759 | flip: true 1760 | clip: false 1761 | variance: 0.1 1762 | variance: 0.1 1763 | variance: 0.2 1764 | variance: 0.2 1765 | step: 16 1766 | } 1767 | } 1768 | #=====fire10 mbox 1769 | layer { 1770 | name: "fire10_mbox_loc" 1771 | type: "Convolution" 1772 | bottom: "fire10/concat" 1773 | top: "fire10_mbox_loc" 1774 | param { 1775 | lr_mult: 1.0 1776 | decay_mult: 1.0 1777 | } 1778 | param { 1779 | lr_mult: 2.0 1780 | decay_mult: 0.0 1781 | } 1782 | convolution_param { 1783 | num_output: 24 1784 | pad: 1 1785 | kernel_size: 3 1786 | stride: 1 1787 | weight_filler { 1788 | type: "msra" 1789 | } 1790 | bias_filler { 1791 | type: "constant" 1792 | value: 0.0 1793 | } 1794 | } 1795 | } 1796 | layer { 1797 | name: "fire10_mbox_loc_perm" 1798 | type: "Permute" 1799 | bottom: "fire10_mbox_loc" 1800 | top: "fire10_mbox_loc_perm" 1801 | permute_param { 1802 | order: 0 1803 | order: 2 1804 | order: 3 1805 | order: 1 1806 | } 1807 | } 1808 | layer { 1809 | name: "fire10_mbox_loc_flat" 1810 | type: "Flatten" 1811 | bottom: "fire10_mbox_loc_perm" 1812 | top: "fire10_mbox_loc_flat" 1813 | flatten_param { 1814 | axis: 1 1815 | } 1816 | } 1817 | layer { 1818 | name: "fire10_mbox_conf" 1819 | type: "Convolution" 1820 | bottom: "fire10/concat" 1821 | top: "fire10_mbox_conf" 1822 | param { 1823 | lr_mult: 1.0 1824 | decay_mult: 1.0 1825 | } 1826 | param { 1827 | lr_mult: 2.0 1828 | decay_mult: 0.0 1829 | } 1830 | convolution_param { 1831 | num_output: 126 1832 | pad: 1 1833 | kernel_size: 3 1834 | stride: 1 1835 | weight_filler { 1836 | type: "msra" 1837 | } 1838 | bias_filler { 1839 | type: "constant" 1840 | value: 0.0 1841 | } 1842 | } 1843 | } 1844 | layer { 1845 | name: "fire10_mbox_conf_perm" 1846 | type: "Permute" 1847 | bottom: "fire10_mbox_conf" 1848 | top: "fire10_mbox_conf_perm" 1849 | permute_param { 1850 | order: 0 1851 | order: 2 1852 | order: 3 1853 | order: 1 1854 | } 1855 | } 1856 | layer { 1857 | name: "fire10_mbox_conf_flat" 1858 | type: "Flatten" 1859 | bottom: "fire10_mbox_conf_perm" 1860 | top: "fire10_mbox_conf_flat" 1861 | flatten_param { 1862 | axis: 1 1863 | } 1864 | } 1865 | layer { 1866 | name: "fire10_mbox_priorbox" 1867 | type: "PriorBox" 1868 | bottom: "fire10/concat" 1869 | bottom: "data" 1870 | top: "fire10_mbox_priorbox" 1871 | prior_box_param { 1872 | min_size: 99.0 1873 | max_size: 153.0 1874 | aspect_ratio: 2.0 1875 | aspect_ratio: 3.0 1876 | flip: true 1877 | clip: false 1878 | variance: 0.1 1879 | variance: 0.1 1880 | variance: 0.2 1881 | variance: 0.2 1882 | step: 32 1883 | } 1884 | } 1885 | 1886 | #=====conv11 mbox 1887 | layer { 1888 | name: "fire11_mbox_loc" 1889 | type: "Convolution" 1890 | bottom: "fire11/concat" 1891 | top: "fire11_mbox_loc" 1892 | param { 1893 | lr_mult: 1.0 1894 | decay_mult: 1.0 1895 | } 1896 | param { 1897 | lr_mult: 2.0 1898 | decay_mult: 0.0 1899 | } 1900 | convolution_param { 1901 | num_output: 24 1902 | pad: 1 1903 | kernel_size: 3 1904 | stride: 1 1905 | weight_filler { 1906 | type: "msra" 1907 | } 1908 | bias_filler { 1909 | type: "constant" 1910 | value: 0.0 1911 | } 1912 | } 1913 | } 1914 | layer { 1915 | name: "fire11_mbox_loc_perm" 1916 | type: "Permute" 1917 | bottom: "fire11_mbox_loc" 1918 | top: "fire11_mbox_loc_perm" 1919 | permute_param { 1920 | order: 0 1921 | order: 2 1922 | order: 3 1923 | order: 1 1924 | } 1925 | } 1926 | layer { 1927 | name: "fire11_mbox_loc_flat" 1928 | type: "Flatten" 1929 | bottom: "fire11_mbox_loc_perm" 1930 | top: "fire11_mbox_loc_flat" 1931 | flatten_param { 1932 | axis: 1 1933 | } 1934 | } 1935 | layer { 1936 | name: "fire11_mbox_conf" 1937 | type: "Convolution" 1938 | bottom: "fire11/concat" 1939 | top: "fire11_mbox_conf" 1940 | param { 1941 | lr_mult: 1.0 1942 | decay_mult: 1.0 1943 | } 1944 | param { 1945 | lr_mult: 2.0 1946 | decay_mult: 0.0 1947 | } 1948 | convolution_param { 1949 | num_output: 126 1950 | pad: 1 1951 | kernel_size: 3 1952 | stride: 1 1953 | weight_filler { 1954 | type: "msra" 1955 | } 1956 | bias_filler { 1957 | type: "constant" 1958 | value: 0.0 1959 | } 1960 | } 1961 | } 1962 | layer { 1963 | name: "fire11_mbox_conf_perm" 1964 | type: "Permute" 1965 | bottom: "fire11_mbox_conf" 1966 | top: "fire11_mbox_conf_perm" 1967 | permute_param { 1968 | order: 0 1969 | order: 2 1970 | order: 3 1971 | order: 1 1972 | } 1973 | } 1974 | layer { 1975 | name: "fire11_mbox_conf_flat" 1976 | type: "Flatten" 1977 | bottom: "fire11_mbox_conf_perm" 1978 | top: "fire11_mbox_conf_flat" 1979 | flatten_param { 1980 | axis: 1 1981 | } 1982 | } 1983 | layer { 1984 | name: "fire11_mbox_priorbox" 1985 | type: "PriorBox" 1986 | bottom: "fire11/concat" 1987 | bottom: "data" 1988 | top: "fire11_mbox_priorbox" 1989 | prior_box_param { 1990 | min_size: 153.0 1991 | max_size: 207.0 1992 | aspect_ratio: 2.0 1993 | aspect_ratio: 3.0 1994 | flip: true 1995 | clip: false 1996 | variance: 0.1 1997 | variance: 0.1 1998 | variance: 0.2 1999 | variance: 0.2 2000 | step: 64 2001 | } 2002 | } 2003 | #=====conv12 mbox 2004 | layer { 2005 | name: "conv12_2_mbox_loc" 2006 | type: "Convolution" 2007 | bottom: "conv12_2" 2008 | top: "conv12_2_mbox_loc" 2009 | param { 2010 | lr_mult: 1.0 2011 | decay_mult: 1.0 2012 | } 2013 | param { 2014 | lr_mult: 2.0 2015 | decay_mult: 0.0 2016 | } 2017 | convolution_param { 2018 | num_output: 24 2019 | pad: 1 2020 | kernel_size: 3 2021 | stride: 1 2022 | weight_filler { 2023 | type: "msra" 2024 | } 2025 | bias_filler { 2026 | type: "constant" 2027 | value: 0.0 2028 | } 2029 | } 2030 | } 2031 | layer { 2032 | name: "conv12_2_mbox_loc_perm" 2033 | type: "Permute" 2034 | bottom: "conv12_2_mbox_loc" 2035 | top: "conv12_2_mbox_loc_perm" 2036 | permute_param { 2037 | order: 0 2038 | order: 2 2039 | order: 3 2040 | order: 1 2041 | } 2042 | } 2043 | layer { 2044 | name: "conv12_2_mbox_loc_flat" 2045 | type: "Flatten" 2046 | bottom: "conv12_2_mbox_loc_perm" 2047 | top: "conv12_2_mbox_loc_flat" 2048 | flatten_param { 2049 | axis: 1 2050 | } 2051 | } 2052 | layer { 2053 | name: "conv12_2_mbox_conf" 2054 | type: "Convolution" 2055 | bottom: "conv12_2" 2056 | top: "conv12_2_mbox_conf" 2057 | param { 2058 | lr_mult: 1.0 2059 | decay_mult: 1.0 2060 | } 2061 | param { 2062 | lr_mult: 2.0 2063 | decay_mult: 0.0 2064 | } 2065 | convolution_param { 2066 | num_output: 126 2067 | pad: 1 2068 | kernel_size: 3 2069 | stride: 1 2070 | weight_filler { 2071 | type: "msra" 2072 | } 2073 | bias_filler { 2074 | type: "constant" 2075 | value: 0.0 2076 | } 2077 | } 2078 | } 2079 | layer { 2080 | name: "conv12_2_mbox_conf_perm" 2081 | type: "Permute" 2082 | bottom: "conv12_2_mbox_conf" 2083 | top: "conv12_2_mbox_conf_perm" 2084 | permute_param { 2085 | order: 0 2086 | order: 2 2087 | order: 3 2088 | order: 1 2089 | } 2090 | } 2091 | layer { 2092 | name: "conv12_2_mbox_conf_flat" 2093 | type: "Flatten" 2094 | bottom: "conv12_2_mbox_conf_perm" 2095 | top: "conv12_2_mbox_conf_flat" 2096 | flatten_param { 2097 | axis: 1 2098 | } 2099 | } 2100 | layer { 2101 | name: "conv12_2_mbox_priorbox" 2102 | type: "PriorBox" 2103 | bottom: "conv12_2" 2104 | bottom: "data" 2105 | top: "conv12_2_mbox_priorbox" 2106 | prior_box_param { 2107 | min_size: 207.0 2108 | max_size: 261.0 2109 | aspect_ratio: 2.0 2110 | aspect_ratio: 3.0 2111 | flip: true 2112 | clip: false 2113 | variance: 0.1 2114 | variance: 0.1 2115 | variance: 0.2 2116 | variance: 0.2 2117 | step: 100 2118 | } 2119 | } 2120 | #=====conv13 mbox 2121 | layer { 2122 | name: "conv13_2_mbox_loc" 2123 | type: "Convolution" 2124 | bottom: "conv13_2" 2125 | top: "conv13_2_mbox_loc" 2126 | param { 2127 | lr_mult: 1.0 2128 | decay_mult: 1.0 2129 | } 2130 | param { 2131 | lr_mult: 2.0 2132 | decay_mult: 0.0 2133 | } 2134 | convolution_param { 2135 | num_output: 16 2136 | pad: 1 2137 | kernel_size: 3 2138 | stride: 1 2139 | weight_filler { 2140 | type: "msra" 2141 | } 2142 | bias_filler { 2143 | type: "constant" 2144 | value: 0.0 2145 | } 2146 | } 2147 | } 2148 | layer { 2149 | name: "conv13_2_mbox_loc_perm" 2150 | type: "Permute" 2151 | bottom: "conv13_2_mbox_loc" 2152 | top: "conv13_2_mbox_loc_perm" 2153 | permute_param { 2154 | order: 0 2155 | order: 2 2156 | order: 3 2157 | order: 1 2158 | } 2159 | } 2160 | layer { 2161 | name: "conv13_2_mbox_loc_flat" 2162 | type: "Flatten" 2163 | bottom: "conv13_2_mbox_loc_perm" 2164 | top: "conv13_2_mbox_loc_flat" 2165 | flatten_param { 2166 | axis: 1 2167 | } 2168 | } 2169 | layer { 2170 | name: "conv13_2_mbox_conf" 2171 | type: "Convolution" 2172 | bottom: "conv13_2" 2173 | top: "conv13_2_mbox_conf" 2174 | param { 2175 | lr_mult: 1.0 2176 | decay_mult: 1.0 2177 | } 2178 | param { 2179 | lr_mult: 2.0 2180 | decay_mult: 0.0 2181 | } 2182 | convolution_param { 2183 | num_output: 84 2184 | pad: 1 2185 | kernel_size: 3 2186 | stride: 1 2187 | weight_filler { 2188 | type: "msra" 2189 | } 2190 | bias_filler { 2191 | type: "constant" 2192 | value: 0.0 2193 | } 2194 | } 2195 | } 2196 | layer { 2197 | name: "conv13_2_mbox_conf_perm" 2198 | type: "Permute" 2199 | bottom: "conv13_2_mbox_conf" 2200 | top: "conv13_2_mbox_conf_perm" 2201 | permute_param { 2202 | order: 0 2203 | order: 2 2204 | order: 3 2205 | order: 1 2206 | } 2207 | } 2208 | layer { 2209 | name: "conv13_2_mbox_conf_flat" 2210 | type: "Flatten" 2211 | bottom: "conv13_2_mbox_conf_perm" 2212 | top: "conv13_2_mbox_conf_flat" 2213 | flatten_param { 2214 | axis: 1 2215 | } 2216 | } 2217 | layer { 2218 | name: "conv13_2_mbox_priorbox" 2219 | type: "PriorBox" 2220 | bottom: "conv13_2" 2221 | bottom: "data" 2222 | top: "conv13_2_mbox_priorbox" 2223 | prior_box_param { 2224 | min_size: 261.0 2225 | max_size: 315.0 2226 | aspect_ratio: 2.0 2227 | flip: true 2228 | clip: false 2229 | variance: 0.1 2230 | variance: 0.1 2231 | variance: 0.2 2232 | variance: 0.2 2233 | step: 300 2234 | } 2235 | } 2236 | layer { 2237 | name: "mbox_loc" 2238 | type: "Concat" 2239 | bottom: "fire5_mbox_loc_flat" 2240 | bottom: "fire9_mbox_loc_flat" 2241 | bottom: "fire10_mbox_loc_flat" 2242 | bottom: "fire11_mbox_loc_flat" 2243 | bottom: "conv12_2_mbox_loc_flat" 2244 | bottom: "conv13_2_mbox_loc_flat" 2245 | top: "mbox_loc" 2246 | concat_param { 2247 | axis: 1 2248 | } 2249 | } 2250 | layer { 2251 | name: "mbox_conf" 2252 | type: "Concat" 2253 | bottom: "fire5_mbox_conf_flat" 2254 | bottom: "fire9_mbox_conf_flat" 2255 | bottom: "fire10_mbox_conf_flat" 2256 | bottom: "fire11_mbox_conf_flat" 2257 | bottom: "conv12_2_mbox_conf_flat" 2258 | bottom: "conv13_2_mbox_conf_flat" 2259 | top: "mbox_conf" 2260 | concat_param { 2261 | axis: 1 2262 | } 2263 | } 2264 | layer { 2265 | name: "mbox_priorbox" 2266 | type: "Concat" 2267 | bottom: "fire5_mbox_priorbox" 2268 | bottom: "fire9_mbox_priorbox" 2269 | bottom: "fire10_mbox_priorbox" 2270 | bottom: "fire11_mbox_priorbox" 2271 | bottom: "conv12_2_mbox_priorbox" 2272 | bottom: "conv13_2_mbox_priorbox" 2273 | top: "mbox_priorbox" 2274 | concat_param { 2275 | axis: 2 2276 | } 2277 | } 2278 | layer { 2279 | name: "mbox_conf_reshape" 2280 | type: "Reshape" 2281 | bottom: "mbox_conf" 2282 | top: "mbox_conf_reshape" 2283 | reshape_param { 2284 | shape { 2285 | dim: 0 2286 | dim: -1 2287 | dim: 21 2288 | } 2289 | } 2290 | } 2291 | layer { 2292 | name: "mbox_conf_softmax" 2293 | type: "Softmax" 2294 | bottom: "mbox_conf_reshape" 2295 | top: "mbox_conf_softmax" 2296 | softmax_param { 2297 | axis: 2 2298 | } 2299 | } 2300 | layer { 2301 | name: "mbox_conf_flatten" 2302 | type: "Flatten" 2303 | bottom: "mbox_conf_softmax" 2304 | top: "mbox_conf_flatten" 2305 | flatten_param { 2306 | axis: 1 2307 | } 2308 | } 2309 | layer { 2310 | name: "detection_out" 2311 | type: "DetectionOutput" 2312 | bottom: "mbox_loc" 2313 | bottom: "mbox_conf_flatten" 2314 | bottom: "mbox_priorbox" 2315 | top: "detection_out" 2316 | include { 2317 | phase: TEST 2318 | } 2319 | detection_output_param { 2320 | num_classes: 21 2321 | share_location: true 2322 | background_label_id: 0 2323 | nms_param { 2324 | nms_threshold: 0.45 2325 | top_k: 400 2326 | } 2327 | code_type: CENTER_SIZE 2328 | keep_top_k: 200 2329 | confidence_threshold: 0.01 2330 | } 2331 | } 2332 | layer { 2333 | name: "detection_eval" 2334 | type: "DetectionEvaluate" 2335 | bottom: "detection_out" 2336 | bottom: "label" 2337 | top: "detection_eval" 2338 | include { 2339 | phase: TEST 2340 | } 2341 | detection_evaluate_param { 2342 | num_classes: 21 2343 | background_label_id: 0 2344 | overlap_threshold: 0.5 2345 | evaluate_difficult_gt: false 2346 | } 2347 | } 2348 | -------------------------------------------------------------------------------- /model/tiny_ssd_voc_train.prototxt: -------------------------------------------------------------------------------- 1 | name: "tiny-ssd" 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.0 17 | resize_mode: WARP 18 | height: 300 19 | width: 300 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.0 32 | contrast_prob: 0.5 33 | contrast_lower: 0.5 34 | contrast_upper: 1.5 35 | hue_prob: 0.5 36 | hue_delta: 18.0 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: "examples/VOC0712/VOC0712_trainval_lmdb" 49 | batch_size: 32 50 | backend: LMDB 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: "data/VOC0712/labelmap.prototxt" 136 | } 137 | } 138 | layer { 139 | name: "conv1" 140 | type: "Convolution" 141 | bottom: "data" 142 | top: "conv1" 143 | param { 144 | lr_mult: 1.0 145 | decay_mult: 0.0 146 | } 147 | param { 148 | lr_mult: 1.0 149 | decay_mult: 0.0 150 | } 151 | convolution_param { 152 | num_output: 57 153 | kernel_size: 3 154 | stride: 2 155 | weight_filler { 156 | type: "xavier" 157 | } 158 | } 159 | } 160 | layer { 161 | name: "relu_conv1" 162 | type: "ReLU" 163 | bottom: "conv1" 164 | top: "conv1" 165 | } 166 | layer { 167 | name: "pool1" 168 | type: "Pooling" 169 | bottom: "conv1" 170 | top: "pool1" 171 | pooling_param { 172 | pool: MAX 173 | kernel_size: 3 174 | stride: 2 175 | } 176 | } 177 | layer { 178 | name: "fire2/squeeze1x1" 179 | type: "Convolution" 180 | bottom: "pool1" 181 | top: "fire2/squeeze1x1" 182 | param { 183 | lr_mult: 1.0 184 | decay_mult: 0.0 185 | } 186 | param { 187 | lr_mult: 1.0 188 | decay_mult: 0.0 189 | } 190 | convolution_param { 191 | num_output: 15 192 | kernel_size: 1 193 | weight_filler { 194 | type: "xavier" 195 | } 196 | } 197 | } 198 | layer { 199 | name: "fire2/expand1x1" 200 | type: "Convolution" 201 | bottom: "fire2/squeeze1x1" 202 | top: "fire2/expand1x1" 203 | param { 204 | lr_mult: 1.0 205 | decay_mult: 0.0 206 | } 207 | param { 208 | lr_mult: 1.0 209 | decay_mult: 0.0 210 | } 211 | convolution_param { 212 | num_output: 49 213 | kernel_size: 1 214 | weight_filler { 215 | type: "xavier" 216 | } 217 | } 218 | } 219 | layer { 220 | name: "fire2/relu_expand1x1" 221 | type: "ReLU" 222 | bottom: "fire2/expand1x1" 223 | top: "fire2/expand1x1" 224 | } 225 | layer { 226 | name: "fire2/expand3x3" 227 | type: "Convolution" 228 | bottom: "fire2/squeeze1x1" 229 | top: "fire2/expand3x3" 230 | param { 231 | lr_mult: 1.0 232 | decay_mult: 0.0 233 | } 234 | param { 235 | lr_mult: 1.0 236 | decay_mult: 0.0 237 | } 238 | convolution_param { 239 | num_output: 53 240 | pad: 1 241 | kernel_size: 3 242 | weight_filler { 243 | type: "xavier" 244 | } 245 | } 246 | } 247 | layer { 248 | name: "fire2/relu_expand3x3" 249 | type: "ReLU" 250 | bottom: "fire2/expand3x3" 251 | top: "fire2/expand3x3" 252 | } 253 | layer { 254 | name: "fire2/concat" 255 | type: "Concat" 256 | bottom: "fire2/expand1x1" 257 | bottom: "fire2/expand3x3" 258 | top: "fire2/concat" 259 | } 260 | layer { 261 | name: "fire3/squeeze1x1" 262 | type: "Convolution" 263 | bottom: "fire2/concat" 264 | top: "fire3/squeeze1x1" 265 | param { 266 | lr_mult: 1.0 267 | decay_mult: 0.0 268 | } 269 | param { 270 | lr_mult: 1.0 271 | decay_mult: 0.0 272 | } 273 | convolution_param { 274 | num_output: 15 275 | kernel_size: 1 276 | weight_filler { 277 | type: "xavier" 278 | } 279 | } 280 | } 281 | layer { 282 | name: "fire3/expand1x1" 283 | type: "Convolution" 284 | bottom: "fire3/squeeze1x1" 285 | top: "fire3/expand1x1" 286 | param { 287 | lr_mult: 1.0 288 | decay_mult: 0.0 289 | } 290 | param { 291 | lr_mult: 1.0 292 | decay_mult: 0.0 293 | } 294 | convolution_param { 295 | num_output: 54 296 | kernel_size: 1 297 | weight_filler { 298 | type: "xavier" 299 | } 300 | } 301 | } 302 | layer { 303 | name: "fire3/relu_expand1x1" 304 | type: "ReLU" 305 | bottom: "fire3/expand1x1" 306 | top: "fire3/expand1x1" 307 | } 308 | layer { 309 | name: "fire3/expand3x3" 310 | type: "Convolution" 311 | bottom: "fire3/squeeze1x1" 312 | top: "fire3/expand3x3" 313 | param { 314 | lr_mult: 1.0 315 | decay_mult: 0.0 316 | } 317 | param { 318 | lr_mult: 1.0 319 | decay_mult: 0.0 320 | } 321 | convolution_param { 322 | num_output: 52 323 | pad: 1 324 | kernel_size: 3 325 | weight_filler { 326 | type: "xavier" 327 | } 328 | } 329 | } 330 | layer { 331 | name: "fire3/relu_expand3x3" 332 | type: "ReLU" 333 | bottom: "fire3/expand3x3" 334 | top: "fire3/expand3x3" 335 | } 336 | layer { 337 | name: "fire3/concat" 338 | type: "Concat" 339 | bottom: "fire3/expand1x1" 340 | bottom: "fire3/expand3x3" 341 | top: "fire3/concat" 342 | } 343 | layer { 344 | name: "pool3" 345 | type: "Pooling" 346 | bottom: "fire3/concat" 347 | top: "pool3" 348 | pooling_param { 349 | pool: MAX 350 | kernel_size: 3 351 | stride: 2 352 | } 353 | } 354 | layer { 355 | name: "fire4/squeeze1x1" 356 | type: "Convolution" 357 | bottom: "pool3" 358 | top: "fire4/squeeze1x1" 359 | param { 360 | lr_mult: 1.0 361 | decay_mult: 0.0 362 | } 363 | param { 364 | lr_mult: 1.0 365 | decay_mult: 0.0 366 | } 367 | convolution_param { 368 | num_output: 29 369 | kernel_size: 1 370 | weight_filler { 371 | type: "xavier" 372 | } 373 | } 374 | } 375 | layer { 376 | name: "fire4/expand1x1" 377 | type: "Convolution" 378 | bottom: "fire4/squeeze1x1" 379 | top: "fire4/expand1x1" 380 | param { 381 | lr_mult: 1.0 382 | decay_mult: 0.0 383 | } 384 | param { 385 | lr_mult: 1.0 386 | decay_mult: 0.0 387 | } 388 | convolution_param { 389 | num_output: 92 390 | kernel_size: 1 391 | weight_filler { 392 | type: "xavier" 393 | } 394 | } 395 | } 396 | layer { 397 | name: "fire4/relu_expand1x1" 398 | type: "ReLU" 399 | bottom: "fire4/expand1x1" 400 | top: "fire4/expand1x1" 401 | } 402 | layer { 403 | name: "fire4/expand3x3" 404 | type: "Convolution" 405 | bottom: "fire4/squeeze1x1" 406 | top: "fire4/expand3x3" 407 | param { 408 | lr_mult: 1.0 409 | decay_mult: 0.0 410 | } 411 | param { 412 | lr_mult: 1.0 413 | decay_mult: 0.0 414 | } 415 | convolution_param { 416 | num_output: 94 417 | pad: 1 418 | kernel_size: 3 419 | weight_filler { 420 | type: "xavier" 421 | } 422 | } 423 | } 424 | layer { 425 | name: "fire4/relu_expand3x3" 426 | type: "ReLU" 427 | bottom: "fire4/expand3x3" 428 | top: "fire4/expand3x3" 429 | } 430 | layer { 431 | name: "fire4/concat" 432 | type: "Concat" 433 | bottom: "fire4/expand1x1" 434 | bottom: "fire4/expand3x3" 435 | top: "fire4/concat" 436 | } 437 | layer { 438 | name: "fire5/squeeze1x1" 439 | type: "Convolution" 440 | bottom: "fire4/concat" 441 | top: "fire5/squeeze1x1" 442 | param { 443 | lr_mult: 1.0 444 | decay_mult: 0.0 445 | } 446 | param { 447 | lr_mult: 1.0 448 | decay_mult: 0.0 449 | } 450 | convolution_param { 451 | num_output: 29 452 | kernel_size: 1 453 | weight_filler { 454 | type: "xavier" 455 | } 456 | } 457 | } 458 | layer { 459 | name: "fire5/expand1x1" 460 | type: "Convolution" 461 | bottom: "fire5/squeeze1x1" 462 | top: "fire5/expand1x1" 463 | param { 464 | lr_mult: 1.0 465 | decay_mult: 0.0 466 | } 467 | param { 468 | lr_mult: 1.0 469 | decay_mult: 0.0 470 | } 471 | convolution_param { 472 | num_output: 90 473 | kernel_size: 1 474 | weight_filler { 475 | type: "xavier" 476 | } 477 | } 478 | } 479 | layer { 480 | name: "fire5/relu_expand1x1" 481 | type: "ReLU" 482 | bottom: "fire5/expand1x1" 483 | top: "fire5/expand1x1" 484 | } 485 | layer { 486 | name: "fire5/expand3x3" 487 | type: "Convolution" 488 | bottom: "fire5/squeeze1x1" 489 | top: "fire5/expand3x3" 490 | param { 491 | lr_mult: 1.0 492 | decay_mult: 0.0 493 | } 494 | param { 495 | lr_mult: 1.0 496 | decay_mult: 0.0 497 | } 498 | convolution_param { 499 | num_output: 83 500 | pad: 1 501 | kernel_size: 3 502 | weight_filler { 503 | type: "xavier" 504 | } 505 | } 506 | } 507 | layer { 508 | name: "fire5/relu_expand3x3" 509 | type: "ReLU" 510 | bottom: "fire5/expand3x3" 511 | top: "fire5/expand3x3" 512 | } 513 | layer { 514 | name: "fire5/concat" 515 | type: "Concat" 516 | bottom: "fire5/expand1x1" 517 | bottom: "fire5/expand3x3" 518 | top: "fire5/concat" 519 | } 520 | layer { 521 | name: "pool5" 522 | type: "Pooling" 523 | bottom: "fire5/concat" 524 | top: "pool5" 525 | pooling_param { 526 | pool: MAX 527 | kernel_size: 3 528 | stride: 2 529 | } 530 | } 531 | layer { 532 | name: "fire6/squeeze1x1" 533 | type: "Convolution" 534 | bottom: "pool5" 535 | top: "fire6/squeeze1x1" 536 | param { 537 | lr_mult: 1.0 538 | decay_mult: 0.0 539 | } 540 | param { 541 | lr_mult: 1.0 542 | decay_mult: 0.0 543 | } 544 | convolution_param { 545 | num_output: 44 546 | kernel_size: 1 547 | weight_filler { 548 | type: "xavier" 549 | } 550 | } 551 | } 552 | layer { 553 | name: "fire6/expand1x1" 554 | type: "Convolution" 555 | bottom: "fire6/squeeze1x1" 556 | top: "fire6/expand1x1" 557 | param { 558 | lr_mult: 1.0 559 | decay_mult: 0.0 560 | } 561 | param { 562 | lr_mult: 1.0 563 | decay_mult: 0.0 564 | } 565 | convolution_param { 566 | num_output: 166 567 | kernel_size: 1 568 | weight_filler { 569 | type: "xavier" 570 | } 571 | } 572 | } 573 | layer { 574 | name: "fire6/relu_expand1x1" 575 | type: "ReLU" 576 | bottom: "fire6/expand1x1" 577 | top: "fire6/expand1x1" 578 | } 579 | layer { 580 | name: "fire6/expand3x3" 581 | type: "Convolution" 582 | bottom: "fire6/squeeze1x1" 583 | top: "fire6/expand3x3" 584 | param { 585 | lr_mult: 1.0 586 | decay_mult: 0.0 587 | } 588 | param { 589 | lr_mult: 1.0 590 | decay_mult: 0.0 591 | } 592 | convolution_param { 593 | num_output: 161 594 | pad: 1 595 | kernel_size: 3 596 | weight_filler { 597 | type: "xavier" 598 | } 599 | } 600 | } 601 | layer { 602 | name: "fire6/relu_expand3x3" 603 | type: "ReLU" 604 | bottom: "fire6/expand3x3" 605 | top: "fire6/expand3x3" 606 | } 607 | layer { 608 | name: "fire6/concat" 609 | type: "Concat" 610 | bottom: "fire6/expand1x1" 611 | bottom: "fire6/expand3x3" 612 | top: "fire6/concat" 613 | } 614 | layer { 615 | name: "fire7/squeeze1x1" 616 | type: "Convolution" 617 | bottom: "fire6/concat" 618 | top: "fire7/squeeze1x1" 619 | param { 620 | lr_mult: 1.0 621 | decay_mult: 0.0 622 | } 623 | param { 624 | lr_mult: 1.0 625 | decay_mult: 0.0 626 | } 627 | convolution_param { 628 | num_output: 45 629 | kernel_size: 1 630 | weight_filler { 631 | type: "xavier" 632 | } 633 | } 634 | } 635 | layer { 636 | name: "fire7/expand1x1" 637 | type: "Convolution" 638 | bottom: "fire7/squeeze1x1" 639 | top: "fire7/expand1x1" 640 | param { 641 | lr_mult: 1.0 642 | decay_mult: 0.0 643 | } 644 | param { 645 | lr_mult: 1.0 646 | decay_mult: 0.0 647 | } 648 | convolution_param { 649 | num_output: 155 650 | kernel_size: 1 651 | weight_filler { 652 | type: "xavier" 653 | } 654 | } 655 | } 656 | layer { 657 | name: "fire7/relu_expand1x1" 658 | type: "ReLU" 659 | bottom: "fire7/expand1x1" 660 | top: "fire7/expand1x1" 661 | } 662 | layer { 663 | name: "fire7/expand3x3" 664 | type: "Convolution" 665 | bottom: "fire7/squeeze1x1" 666 | top: "fire7/expand3x3" 667 | param { 668 | lr_mult: 1.0 669 | decay_mult: 0.0 670 | } 671 | param { 672 | lr_mult: 1.0 673 | decay_mult: 0.0 674 | } 675 | convolution_param { 676 | num_output: 146 677 | pad: 1 678 | kernel_size: 3 679 | weight_filler { 680 | type: "xavier" 681 | } 682 | } 683 | } 684 | layer { 685 | name: "fire7/relu_expand3x3" 686 | type: "ReLU" 687 | bottom: "fire7/expand3x3" 688 | top: "fire7/expand3x3" 689 | } 690 | layer { 691 | name: "fire7/concat" 692 | type: "Concat" 693 | bottom: "fire7/expand1x1" 694 | bottom: "fire7/expand3x3" 695 | top: "fire7/concat" 696 | } 697 | layer { 698 | name: "fire8/squeeze1x1" 699 | type: "Convolution" 700 | bottom: "fire7/concat" 701 | top: "fire8/squeeze1x1" 702 | param { 703 | lr_mult: 1.0 704 | decay_mult: 0.0 705 | } 706 | param { 707 | lr_mult: 1.0 708 | decay_mult: 0.0 709 | } 710 | convolution_param { 711 | num_output: 49 712 | kernel_size: 1 713 | weight_filler { 714 | type: "xavier" 715 | } 716 | } 717 | } 718 | layer { 719 | name: "fire8/expand1x1" 720 | type: "Convolution" 721 | bottom: "fire8/squeeze1x1" 722 | top: "fire8/expand1x1" 723 | param { 724 | lr_mult: 1.0 725 | decay_mult: 0.0 726 | } 727 | param { 728 | lr_mult: 1.0 729 | decay_mult: 0.0 730 | } 731 | convolution_param { 732 | num_output: 163 733 | kernel_size: 1 734 | weight_filler { 735 | type: "xavier" 736 | } 737 | } 738 | } 739 | layer { 740 | name: "fire8/relu_expand1x1" 741 | type: "ReLU" 742 | bottom: "fire8/expand1x1" 743 | top: "fire8/expand1x1" 744 | } 745 | layer { 746 | name: "fire8/expand3x3" 747 | type: "Convolution" 748 | bottom: "fire8/squeeze1x1" 749 | top: "fire8/expand3x3" 750 | param { 751 | lr_mult: 1.0 752 | decay_mult: 0.0 753 | } 754 | param { 755 | lr_mult: 1.0 756 | decay_mult: 0.0 757 | } 758 | convolution_param { 759 | num_output: 171 760 | pad: 1 761 | kernel_size: 3 762 | weight_filler { 763 | type: "xavier" 764 | } 765 | } 766 | } 767 | layer { 768 | name: "fire8/relu_expand3x3" 769 | type: "ReLU" 770 | bottom: "fire8/expand3x3" 771 | top: "fire8/expand3x3" 772 | } 773 | layer { 774 | name: "fire8/concat" 775 | type: "Concat" 776 | bottom: "fire8/expand1x1" 777 | bottom: "fire8/expand3x3" 778 | top: "fire8/concat" 779 | } 780 | layer { 781 | name: "fire9/squeeze1x1" 782 | type: "Convolution" 783 | bottom: "fire8/concat" 784 | top: "fire9/squeeze1x1" 785 | param { 786 | lr_mult: 1.0 787 | decay_mult: 0.0 788 | } 789 | param { 790 | lr_mult: 1.0 791 | decay_mult: 0.0 792 | } 793 | convolution_param { 794 | num_output: 25 795 | kernel_size: 1 796 | weight_filler { 797 | type: "xavier" 798 | } 799 | } 800 | } 801 | layer { 802 | name: "fire9/expand1x1" 803 | type: "Convolution" 804 | bottom: "fire9/squeeze1x1" 805 | top: "fire9/expand1x1" 806 | param { 807 | lr_mult: 1.0 808 | decay_mult: 0.0 809 | } 810 | param { 811 | lr_mult: 1.0 812 | decay_mult: 0.0 813 | } 814 | convolution_param { 815 | num_output: 29 816 | kernel_size: 1 817 | weight_filler { 818 | type: "xavier" 819 | } 820 | } 821 | } 822 | layer { 823 | name: "fire9/expand1x1/bn" 824 | type: "BatchNorm" 825 | bottom: "fire9/expand1x1" 826 | top: "fire9/expand1x1" 827 | param { 828 | lr_mult: 0 829 | decay_mult: 0 830 | } 831 | param { 832 | lr_mult: 0 833 | decay_mult: 0 834 | } 835 | param { 836 | lr_mult: 0 837 | decay_mult: 0 838 | } 839 | } 840 | layer { 841 | name: "fire9/expand1x1/scale" 842 | type: "Scale" 843 | bottom: "fire9/expand1x1" 844 | top: "fire9/expand1x1" 845 | param { 846 | lr_mult: 1.0 847 | decay_mult: 0.0 848 | } 849 | param { 850 | lr_mult: 2.0 851 | decay_mult: 0.0 852 | } 853 | scale_param { 854 | filler { 855 | value: 1 856 | } 857 | bias_term: true 858 | bias_filler { 859 | value: 0 860 | } 861 | } 862 | } 863 | layer { 864 | name: "fire9/relu_expand1x1" 865 | type: "ReLU" 866 | bottom: "fire9/expand1x1" 867 | top: "fire9/expand1x1" 868 | } 869 | layer { 870 | name: "fire9/expand3x3" 871 | type: "Convolution" 872 | bottom: "fire9/squeeze1x1" 873 | top: "fire9/expand3x3" 874 | param { 875 | lr_mult: 1.0 876 | decay_mult: 0.0 877 | } 878 | param { 879 | lr_mult: 1.0 880 | decay_mult: 0.0 881 | } 882 | convolution_param { 883 | num_output: 54 884 | pad: 1 885 | kernel_size: 3 886 | weight_filler { 887 | type: "xavier" 888 | } 889 | } 890 | } 891 | layer { 892 | name: "fire9/expand3x3/bn" 893 | type: "BatchNorm" 894 | bottom: "fire9/expand3x3" 895 | top: "fire9/expand3x3" 896 | param { 897 | lr_mult: 0 898 | decay_mult: 0 899 | } 900 | param { 901 | lr_mult: 0 902 | decay_mult: 0 903 | } 904 | param { 905 | lr_mult: 0 906 | decay_mult: 0 907 | } 908 | } 909 | layer { 910 | name: "fire9/expand3x3/scale" 911 | type: "Scale" 912 | bottom: "fire9/expand3x3" 913 | top: "fire9/expand3x3" 914 | param { 915 | lr_mult: 1.0 916 | decay_mult: 0.0 917 | } 918 | param { 919 | lr_mult: 2.0 920 | decay_mult: 0.0 921 | } 922 | scale_param { 923 | filler { 924 | value: 1 925 | } 926 | bias_term: true 927 | bias_filler { 928 | value: 0 929 | } 930 | } 931 | } 932 | layer { 933 | name: "fire9/relu_expand3x3" 934 | type: "ReLU" 935 | bottom: "fire9/expand3x3" 936 | top: "fire9/expand3x3" 937 | } 938 | layer { 939 | name: "fire9/concat" 940 | type: "Concat" 941 | bottom: "fire9/expand1x1" 942 | bottom: "fire9/expand3x3" 943 | top: "fire9/concat" 944 | } 945 | layer { 946 | name: "pool9" 947 | type: "Pooling" 948 | bottom: "fire9/concat" 949 | top: "pool9" 950 | pooling_param { 951 | pool: MAX 952 | kernel_size: 3 953 | stride: 2 954 | } 955 | } 956 | #================ssd append layer fire10, out 9 * 9 957 | layer { 958 | name: "fire10/squeeze1x1" 959 | type: "Convolution" 960 | bottom: "pool9" 961 | top: "fire10/squeeze1x1" 962 | convolution_param { 963 | num_output: 37 964 | kernel_size: 1 965 | weight_filler { 966 | type: "xavier" 967 | } 968 | } 969 | } 970 | layer { 971 | name: "fire10/squeeze1x1/bn" 972 | type: "BatchNorm" 973 | top: "fire10/squeeze1x1" 974 | bottom: "fire10/squeeze1x1" 975 | param { 976 | lr_mult: 0 977 | decay_mult: 0 978 | } 979 | param { 980 | lr_mult: 0 981 | decay_mult: 0 982 | } 983 | param { 984 | lr_mult: 0 985 | decay_mult: 0 986 | } 987 | } 988 | layer { 989 | name: "fire10/squeeze1x1/scale" 990 | type: "Scale" 991 | top: "fire10/squeeze1x1" 992 | bottom: "fire10/squeeze1x1" 993 | param { 994 | lr_mult: 1.0 995 | decay_mult: 0.0 996 | } 997 | param { 998 | lr_mult: 2.0 999 | decay_mult: 0.0 1000 | } 1001 | scale_param { 1002 | filler { 1003 | value: 1 1004 | } 1005 | bias_term: true 1006 | bias_filler { 1007 | value: 0 1008 | } 1009 | } 1010 | } 1011 | layer { 1012 | name: "fire10/expand1x1" 1013 | type: "Convolution" 1014 | bottom: "fire10/squeeze1x1" 1015 | top: "fire10/expand1x1" 1016 | convolution_param { 1017 | num_output: 45 1018 | kernel_size: 1 1019 | weight_filler { 1020 | type: "xavier" 1021 | } 1022 | } 1023 | } 1024 | layer { 1025 | name: "fire10/expand1x1/bn" 1026 | type: "BatchNorm" 1027 | bottom: "fire10/expand1x1" 1028 | top: "fire10/expand1x1" 1029 | param { 1030 | lr_mult: 0 1031 | decay_mult: 0 1032 | } 1033 | param { 1034 | lr_mult: 0 1035 | decay_mult: 0 1036 | } 1037 | param { 1038 | lr_mult: 0 1039 | decay_mult: 0 1040 | } 1041 | } 1042 | layer { 1043 | name: "fire10/expand1x1/scale" 1044 | type: "Scale" 1045 | bottom: "fire10/expand1x1" 1046 | top: "fire10/expand1x1" 1047 | param { 1048 | lr_mult: 1.0 1049 | decay_mult: 0.0 1050 | } 1051 | param { 1052 | lr_mult: 2.0 1053 | decay_mult: 0.0 1054 | } 1055 | scale_param { 1056 | filler { 1057 | value: 1 1058 | } 1059 | bias_term: true 1060 | bias_filler { 1061 | value: 0 1062 | } 1063 | } 1064 | } 1065 | layer { 1066 | name: "fire10/relu_expand1x1" 1067 | type: "ReLU" 1068 | bottom: "fire10/expand1x1" 1069 | top: "fire10/expand1x1" 1070 | } 1071 | layer { 1072 | name: "fire10/expand3x3" 1073 | type: "Convolution" 1074 | bottom: "fire10/squeeze1x1" 1075 | top: "fire10/expand3x3" 1076 | convolution_param { 1077 | num_output: 56 1078 | pad: 1 1079 | kernel_size: 3 1080 | weight_filler { 1081 | type: "xavier" 1082 | } 1083 | } 1084 | } 1085 | layer { 1086 | name: "fire10/expand3x3/bn" 1087 | type: "BatchNorm" 1088 | bottom: "fire10/expand3x3" 1089 | top: "fire10/expand3x3" 1090 | param { 1091 | lr_mult: 0 1092 | decay_mult: 0 1093 | } 1094 | param { 1095 | lr_mult: 0 1096 | decay_mult: 0 1097 | } 1098 | param { 1099 | lr_mult: 0 1100 | decay_mult: 0 1101 | } 1102 | } 1103 | layer { 1104 | name: "fire10/expand3x3/scale" 1105 | type: "Scale" 1106 | bottom: "fire10/expand3x3" 1107 | top: "fire10/expand3x3" 1108 | param { 1109 | lr_mult: 1.0 1110 | decay_mult: 0.0 1111 | } 1112 | param { 1113 | lr_mult: 2.0 1114 | decay_mult: 0.0 1115 | } 1116 | scale_param { 1117 | filler { 1118 | value: 1 1119 | } 1120 | bias_term: true 1121 | bias_filler { 1122 | value: 0 1123 | } 1124 | } 1125 | } 1126 | layer { 1127 | name: "fire10/relu_expand3x3" 1128 | type: "ReLU" 1129 | bottom: "fire10/expand3x3" 1130 | top: "fire10/expand3x3" 1131 | } 1132 | layer { 1133 | name: "fire10/concat" 1134 | type: "Concat" 1135 | bottom: "fire10/expand1x1" 1136 | bottom: "fire10/expand3x3" 1137 | top: "fire10/concat" 1138 | } 1139 | #================ssd append layer fire11, out 4 * 4 1140 | layer { 1141 | name: "pool10" 1142 | type: "Pooling" 1143 | bottom: "fire10/concat" 1144 | top: "pool10" 1145 | pooling_param { 1146 | pool: MAX 1147 | kernel_size: 3 1148 | stride: 2 1149 | } 1150 | } 1151 | layer { 1152 | name: "fire11/squeeze1x1" 1153 | type: "Convolution" 1154 | bottom: "pool10" 1155 | top: "fire11/squeeze1x1" 1156 | convolution_param { 1157 | num_output: 38 1158 | kernel_size: 1 1159 | weight_filler { 1160 | type: "xavier" 1161 | } 1162 | } 1163 | } 1164 | layer { 1165 | name: "fire11/squeeze1x1/bn" 1166 | type: "BatchNorm" 1167 | top: "fire11/squeeze1x1" 1168 | bottom: "fire11/squeeze1x1" 1169 | param { 1170 | lr_mult: 0 1171 | decay_mult: 0 1172 | } 1173 | param { 1174 | lr_mult: 0 1175 | decay_mult: 0 1176 | } 1177 | param { 1178 | lr_mult: 0 1179 | decay_mult: 0 1180 | } 1181 | } 1182 | layer { 1183 | name: "fire11/squeeze1x1/scale" 1184 | type: "Scale" 1185 | top: "fire11/squeeze1x1" 1186 | bottom: "fire11/squeeze1x1" 1187 | param { 1188 | lr_mult: 1.0 1189 | decay_mult: 0.0 1190 | } 1191 | param { 1192 | lr_mult: 2.0 1193 | decay_mult: 0.0 1194 | } 1195 | scale_param { 1196 | filler { 1197 | value: 1 1198 | } 1199 | bias_term: true 1200 | bias_filler { 1201 | value: 0 1202 | } 1203 | } 1204 | } 1205 | layer { 1206 | name: "fire11/expand1x1" 1207 | type: "Convolution" 1208 | bottom: "fire11/squeeze1x1" 1209 | top: "fire11/expand1x1" 1210 | convolution_param { 1211 | num_output: 41 1212 | kernel_size: 1 1213 | weight_filler { 1214 | type: "xavier" 1215 | } 1216 | } 1217 | } 1218 | layer { 1219 | name: "fire11/expand1x1/bn" 1220 | type: "BatchNorm" 1221 | bottom: "fire11/expand1x1" 1222 | top: "fire11/expand1x1" 1223 | param { 1224 | lr_mult: 0 1225 | decay_mult: 0 1226 | } 1227 | param { 1228 | lr_mult: 0 1229 | decay_mult: 0 1230 | } 1231 | param { 1232 | lr_mult: 0 1233 | decay_mult: 0 1234 | } 1235 | } 1236 | layer { 1237 | name: "fire11/expand1x1/scale" 1238 | type: "Scale" 1239 | bottom: "fire11/expand1x1" 1240 | top: "fire11/expand1x1" 1241 | param { 1242 | lr_mult: 1.0 1243 | decay_mult: 0.0 1244 | } 1245 | param { 1246 | lr_mult: 2.0 1247 | decay_mult: 0.0 1248 | } 1249 | scale_param { 1250 | filler { 1251 | value: 1 1252 | } 1253 | bias_term: true 1254 | bias_filler { 1255 | value: 0 1256 | } 1257 | } 1258 | } 1259 | layer { 1260 | name: "fire11/relu_expand1x1" 1261 | type: "ReLU" 1262 | bottom: "fire11/expand1x1" 1263 | top: "fire11/expand1x1" 1264 | } 1265 | layer { 1266 | name: "fire11/expand3x3" 1267 | type: "Convolution" 1268 | bottom: "fire11/squeeze1x1" 1269 | top: "fire11/expand3x3" 1270 | convolution_param { 1271 | num_output: 44 1272 | pad: 1 1273 | kernel_size: 3 1274 | weight_filler { 1275 | type: "xavier" 1276 | } 1277 | } 1278 | } 1279 | layer { 1280 | name: "fire11/expand3x3/bn" 1281 | type: "BatchNorm" 1282 | bottom: "fire11/expand3x3" 1283 | top: "fire11/expand3x3" 1284 | param { 1285 | lr_mult: 0 1286 | decay_mult: 0 1287 | } 1288 | param { 1289 | lr_mult: 0 1290 | decay_mult: 0 1291 | } 1292 | param { 1293 | lr_mult: 0 1294 | decay_mult: 0 1295 | } 1296 | } 1297 | layer { 1298 | name: "fire11/expand3x3/scale" 1299 | type: "Scale" 1300 | bottom: "fire11/expand3x3" 1301 | top: "fire11/expand3x3" 1302 | param { 1303 | lr_mult: 1.0 1304 | decay_mult: 0.0 1305 | } 1306 | param { 1307 | lr_mult: 2.0 1308 | decay_mult: 0.0 1309 | } 1310 | scale_param { 1311 | filler { 1312 | value: 1 1313 | } 1314 | bias_term: true 1315 | bias_filler { 1316 | value: 0 1317 | } 1318 | } 1319 | } 1320 | layer { 1321 | name: "fire11/relu_expand3x3" 1322 | type: "ReLU" 1323 | bottom: "fire11/expand3x3" 1324 | top: "fire11/expand3x3" 1325 | } 1326 | layer { 1327 | name: "fire11/concat" 1328 | type: "Concat" 1329 | bottom: "fire11/expand1x1" 1330 | bottom: "fire11/expand3x3" 1331 | top: "fire11/concat" 1332 | } 1333 | #================ssd append layer conv12, out 2 * 2 1334 | layer { 1335 | name: "conv12_1" 1336 | type: "Convolution" 1337 | bottom: "fire11/concat" 1338 | top: "conv12_1" 1339 | param { 1340 | lr_mult: 1.0 1341 | decay_mult: 1.0 1342 | } 1343 | convolution_param { 1344 | num_output: 51 1345 | bias_term: false 1346 | kernel_size: 1 1347 | weight_filler { 1348 | type: "msra" 1349 | } 1350 | } 1351 | } 1352 | layer { 1353 | name: "conv12_1/bn" 1354 | type: "BatchNorm" 1355 | bottom: "conv12_1" 1356 | top: "conv12_1" 1357 | param { 1358 | lr_mult: 0 1359 | decay_mult: 0 1360 | } 1361 | param { 1362 | lr_mult: 0 1363 | decay_mult: 0 1364 | } 1365 | param { 1366 | lr_mult: 0 1367 | decay_mult: 0 1368 | } 1369 | } 1370 | layer { 1371 | name: "conv12_1/scale" 1372 | type: "Scale" 1373 | bottom: "conv12_1" 1374 | top: "conv12_1" 1375 | param { 1376 | lr_mult: 1.0 1377 | decay_mult: 0.0 1378 | } 1379 | param { 1380 | lr_mult: 2.0 1381 | decay_mult: 0.0 1382 | } 1383 | scale_param { 1384 | filler { 1385 | value: 1 1386 | } 1387 | bias_term: true 1388 | bias_filler { 1389 | value: 0 1390 | } 1391 | } 1392 | } 1393 | layer { 1394 | name: "conv12_1/relu" 1395 | type: "ReLU" 1396 | bottom: "conv12_1" 1397 | top: "conv12_1" 1398 | } 1399 | layer { 1400 | name: "conv12_2" 1401 | type: "Convolution" 1402 | bottom: "conv12_1" 1403 | top: "conv12_2" 1404 | param { 1405 | lr_mult: 1.0 1406 | decay_mult: 1.0 1407 | } 1408 | convolution_param { 1409 | num_output: 46 1410 | bias_term: false 1411 | pad: 1 1412 | kernel_size: 3 1413 | stride: 2 1414 | weight_filler { 1415 | type: "msra" 1416 | } 1417 | } 1418 | } 1419 | layer { 1420 | name: "conv12_2/bn" 1421 | type: "BatchNorm" 1422 | bottom: "conv12_2" 1423 | top: "conv12_2" 1424 | param { 1425 | lr_mult: 0 1426 | decay_mult: 0 1427 | } 1428 | param { 1429 | lr_mult: 0 1430 | decay_mult: 0 1431 | } 1432 | param { 1433 | lr_mult: 0 1434 | decay_mult: 0 1435 | } 1436 | } 1437 | layer { 1438 | name: "conv12_2/scale" 1439 | type: "Scale" 1440 | bottom: "conv12_2" 1441 | top: "conv12_2" 1442 | param { 1443 | lr_mult: 1.0 1444 | decay_mult: 0.0 1445 | } 1446 | param { 1447 | lr_mult: 2.0 1448 | decay_mult: 0.0 1449 | } 1450 | scale_param { 1451 | filler { 1452 | value: 1 1453 | } 1454 | bias_term: true 1455 | bias_filler { 1456 | value: 0 1457 | } 1458 | } 1459 | } 1460 | layer { 1461 | name: "conv12_2/relu" 1462 | type: "ReLU" 1463 | bottom: "conv12_2" 1464 | top: "conv12_2" 1465 | } 1466 | #================ssd append layer conv13, out 1 * 1 1467 | layer { 1468 | name: "conv13_1" 1469 | type: "Convolution" 1470 | bottom: "conv12_2" 1471 | top: "conv13_1" 1472 | param { 1473 | lr_mult: 1.0 1474 | decay_mult: 1.0 1475 | } 1476 | convolution_param { 1477 | num_output: 55 1478 | bias_term: false 1479 | kernel_size: 1 1480 | weight_filler { 1481 | type: "msra" 1482 | } 1483 | } 1484 | } 1485 | layer { 1486 | name: "conv13_1/bn" 1487 | type: "BatchNorm" 1488 | bottom: "conv13_1" 1489 | top: "conv13_1" 1490 | param { 1491 | lr_mult: 0 1492 | decay_mult: 0 1493 | } 1494 | param { 1495 | lr_mult: 0 1496 | decay_mult: 0 1497 | } 1498 | param { 1499 | lr_mult: 0 1500 | decay_mult: 0 1501 | } 1502 | } 1503 | layer { 1504 | name: "conv13_1/scale" 1505 | type: "Scale" 1506 | bottom: "conv13_1" 1507 | top: "conv13_1" 1508 | param { 1509 | lr_mult: 1.0 1510 | decay_mult: 0.0 1511 | } 1512 | param { 1513 | lr_mult: 2.0 1514 | decay_mult: 0.0 1515 | } 1516 | scale_param { 1517 | filler { 1518 | value: 1 1519 | } 1520 | bias_term: true 1521 | bias_filler { 1522 | value: 0 1523 | } 1524 | } 1525 | } 1526 | layer { 1527 | name: "conv13_1/relu" 1528 | type: "ReLU" 1529 | bottom: "conv13_1" 1530 | top: "conv13_1" 1531 | } 1532 | layer { 1533 | name: "conv13_2" 1534 | type: "Convolution" 1535 | bottom: "conv13_1" 1536 | top: "conv13_2" 1537 | param { 1538 | lr_mult: 1.0 1539 | decay_mult: 1.0 1540 | } 1541 | convolution_param { 1542 | num_output: 85 1543 | bias_term: false 1544 | pad: 1 1545 | kernel_size: 3 1546 | stride: 2 1547 | weight_filler { 1548 | type: "msra" 1549 | } 1550 | } 1551 | } 1552 | layer { 1553 | name: "conv13_2/bn" 1554 | type: "BatchNorm" 1555 | bottom: "conv13_2" 1556 | top: "conv13_2" 1557 | param { 1558 | lr_mult: 0 1559 | decay_mult: 0 1560 | } 1561 | param { 1562 | lr_mult: 0 1563 | decay_mult: 0 1564 | } 1565 | param { 1566 | lr_mult: 0 1567 | decay_mult: 0 1568 | } 1569 | } 1570 | layer { 1571 | name: "conv13_2/scale" 1572 | type: "Scale" 1573 | bottom: "conv13_2" 1574 | top: "conv13_2" 1575 | param { 1576 | lr_mult: 1.0 1577 | decay_mult: 0.0 1578 | } 1579 | param { 1580 | lr_mult: 2.0 1581 | decay_mult: 0.0 1582 | } 1583 | scale_param { 1584 | filler { 1585 | value: 1 1586 | } 1587 | bias_term: true 1588 | bias_filler { 1589 | value: 0 1590 | } 1591 | } 1592 | } 1593 | layer { 1594 | name: "conv13_2/relu" 1595 | type: "ReLU" 1596 | bottom: "conv13_2" 1597 | top: "conv13_2" 1598 | } 1599 | #================ssd mbox layer 1600 | layer { 1601 | name: "fire5/bn" 1602 | type: "BatchNorm" 1603 | bottom: "fire5/concat" 1604 | top: "fire5/normal" 1605 | param { 1606 | lr_mult: 0 1607 | decay_mult: 0 1608 | } 1609 | param { 1610 | lr_mult: 0 1611 | decay_mult: 0 1612 | } 1613 | param { 1614 | lr_mult: 0 1615 | decay_mult: 0 1616 | } 1617 | } 1618 | layer { 1619 | name: "fire5/scale" 1620 | type: "Scale" 1621 | bottom: "fire5/normal" 1622 | top: "fire5/normal" 1623 | param { 1624 | lr_mult: 1.0 1625 | decay_mult: 0.0 1626 | } 1627 | param { 1628 | lr_mult: 2.0 1629 | decay_mult: 0.0 1630 | } 1631 | scale_param { 1632 | filler { 1633 | value: 1 1634 | } 1635 | bias_term: true 1636 | bias_filler { 1637 | value: 0 1638 | } 1639 | } 1640 | } 1641 | layer { 1642 | name: "fire5_mbox_loc" 1643 | type: "Convolution" 1644 | bottom: "fire5/normal" 1645 | top: "fire5_mbox_loc" 1646 | param { 1647 | lr_mult: 1.0 1648 | decay_mult: 1.0 1649 | } 1650 | param { 1651 | lr_mult: 2.0 1652 | decay_mult: 0.0 1653 | } 1654 | convolution_param { 1655 | num_output: 16 1656 | pad: 1 1657 | kernel_size: 3 1658 | stride: 1 1659 | weight_filler { 1660 | type: "msra" 1661 | } 1662 | bias_filler { 1663 | type: "constant" 1664 | value: 0.0 1665 | } 1666 | } 1667 | } 1668 | layer { 1669 | name: "fire5_mbox_loc_perm" 1670 | type: "Permute" 1671 | bottom: "fire5_mbox_loc" 1672 | top: "fire5_mbox_loc_perm" 1673 | permute_param { 1674 | order: 0 1675 | order: 2 1676 | order: 3 1677 | order: 1 1678 | } 1679 | } 1680 | layer { 1681 | name: "fire5_mbox_loc_flat" 1682 | type: "Flatten" 1683 | bottom: "fire5_mbox_loc_perm" 1684 | top: "fire5_mbox_loc_flat" 1685 | flatten_param { 1686 | axis: 1 1687 | } 1688 | } 1689 | layer { 1690 | name: "fire5_mbox_conf" 1691 | type: "Convolution" 1692 | bottom: "fire5/normal" 1693 | top: "fire5_mbox_conf" 1694 | param { 1695 | lr_mult: 1.0 1696 | decay_mult: 1.0 1697 | } 1698 | param { 1699 | lr_mult: 2.0 1700 | decay_mult: 0.0 1701 | } 1702 | convolution_param { 1703 | num_output: 84 1704 | pad: 1 1705 | kernel_size: 3 1706 | stride: 1 1707 | weight_filler { 1708 | type: "msra" 1709 | } 1710 | bias_filler { 1711 | type: "constant" 1712 | value: 0.0 1713 | } 1714 | } 1715 | } 1716 | layer { 1717 | name: "fire5_mbox_conf_perm" 1718 | type: "Permute" 1719 | bottom: "fire5_mbox_conf" 1720 | top: "fire5_mbox_conf_perm" 1721 | permute_param { 1722 | order: 0 1723 | order: 2 1724 | order: 3 1725 | order: 1 1726 | } 1727 | } 1728 | layer { 1729 | name: "fire5_mbox_conf_flat" 1730 | type: "Flatten" 1731 | bottom: "fire5_mbox_conf_perm" 1732 | top: "fire5_mbox_conf_flat" 1733 | flatten_param { 1734 | axis: 1 1735 | } 1736 | } 1737 | layer { 1738 | name: "fire5_mbox_priorbox" 1739 | type: "PriorBox" 1740 | bottom: "fire5/normal" 1741 | bottom: "data" 1742 | top: "fire5_mbox_priorbox" 1743 | prior_box_param { 1744 | min_size: 21.0 1745 | max_size: 45.0 1746 | aspect_ratio: 2.0 1747 | flip: true 1748 | clip: false 1749 | variance: 0.1 1750 | variance: 0.1 1751 | variance: 0.2 1752 | variance: 0.2 1753 | step: 8 1754 | } 1755 | } 1756 | #================mbox fire9 1757 | layer { 1758 | name: "fire9_mbox_loc" 1759 | type: "Convolution" 1760 | bottom: "fire9/concat" 1761 | top: "fire9_mbox_loc" 1762 | param { 1763 | lr_mult: 1.0 1764 | decay_mult: 1.0 1765 | } 1766 | param { 1767 | lr_mult: 2.0 1768 | decay_mult: 0.0 1769 | } 1770 | convolution_param { 1771 | num_output: 24 1772 | pad: 1 1773 | kernel_size: 3 1774 | stride: 1 1775 | weight_filler { 1776 | type: "msra" 1777 | } 1778 | bias_filler { 1779 | type: "constant" 1780 | value: 0.0 1781 | } 1782 | } 1783 | } 1784 | layer { 1785 | name: "fire9_mbox_loc_perm" 1786 | type: "Permute" 1787 | bottom: "fire9_mbox_loc" 1788 | top: "fire9_mbox_loc_perm" 1789 | permute_param { 1790 | order: 0 1791 | order: 2 1792 | order: 3 1793 | order: 1 1794 | } 1795 | } 1796 | layer { 1797 | name: "fire9_mbox_loc_flat" 1798 | type: "Flatten" 1799 | bottom: "fire9_mbox_loc_perm" 1800 | top: "fire9_mbox_loc_flat" 1801 | flatten_param { 1802 | axis: 1 1803 | } 1804 | } 1805 | layer { 1806 | name: "fire9_mbox_conf" 1807 | type: "Convolution" 1808 | bottom: "fire9/concat" 1809 | top: "fire9_mbox_conf" 1810 | param { 1811 | lr_mult: 1.0 1812 | decay_mult: 1.0 1813 | } 1814 | param { 1815 | lr_mult: 2.0 1816 | decay_mult: 0.0 1817 | } 1818 | convolution_param { 1819 | num_output: 126 1820 | pad: 1 1821 | kernel_size: 3 1822 | stride: 1 1823 | weight_filler { 1824 | type: "msra" 1825 | } 1826 | bias_filler { 1827 | type: "constant" 1828 | value: 0.0 1829 | } 1830 | } 1831 | } 1832 | layer { 1833 | name: "fire9_mbox_conf_perm" 1834 | type: "Permute" 1835 | bottom: "fire9_mbox_conf" 1836 | top: "fire9_mbox_conf_perm" 1837 | permute_param { 1838 | order: 0 1839 | order: 2 1840 | order: 3 1841 | order: 1 1842 | } 1843 | } 1844 | layer { 1845 | name: "fire9_mbox_conf_flat" 1846 | type: "Flatten" 1847 | bottom: "fire9_mbox_conf_perm" 1848 | top: "fire9_mbox_conf_flat" 1849 | flatten_param { 1850 | axis: 1 1851 | } 1852 | } 1853 | layer { 1854 | name: "fire9_mbox_priorbox" 1855 | type: "PriorBox" 1856 | bottom: "fire9/concat" 1857 | bottom: "data" 1858 | top: "fire9_mbox_priorbox" 1859 | prior_box_param { 1860 | min_size: 45.0 1861 | max_size: 99.0 1862 | aspect_ratio: 2.0 1863 | aspect_ratio: 3.0 1864 | flip: true 1865 | clip: false 1866 | variance: 0.1 1867 | variance: 0.1 1868 | variance: 0.2 1869 | variance: 0.2 1870 | step: 16 1871 | } 1872 | } 1873 | #=====fire10 mbox 1874 | layer { 1875 | name: "fire10_mbox_loc" 1876 | type: "Convolution" 1877 | bottom: "fire10/concat" 1878 | top: "fire10_mbox_loc" 1879 | param { 1880 | lr_mult: 1.0 1881 | decay_mult: 1.0 1882 | } 1883 | param { 1884 | lr_mult: 2.0 1885 | decay_mult: 0.0 1886 | } 1887 | convolution_param { 1888 | num_output: 24 1889 | pad: 1 1890 | kernel_size: 3 1891 | stride: 1 1892 | weight_filler { 1893 | type: "msra" 1894 | } 1895 | bias_filler { 1896 | type: "constant" 1897 | value: 0.0 1898 | } 1899 | } 1900 | } 1901 | layer { 1902 | name: "fire10_mbox_loc_perm" 1903 | type: "Permute" 1904 | bottom: "fire10_mbox_loc" 1905 | top: "fire10_mbox_loc_perm" 1906 | permute_param { 1907 | order: 0 1908 | order: 2 1909 | order: 3 1910 | order: 1 1911 | } 1912 | } 1913 | layer { 1914 | name: "fire10_mbox_loc_flat" 1915 | type: "Flatten" 1916 | bottom: "fire10_mbox_loc_perm" 1917 | top: "fire10_mbox_loc_flat" 1918 | flatten_param { 1919 | axis: 1 1920 | } 1921 | } 1922 | layer { 1923 | name: "fire10_mbox_conf" 1924 | type: "Convolution" 1925 | bottom: "fire10/concat" 1926 | top: "fire10_mbox_conf" 1927 | param { 1928 | lr_mult: 1.0 1929 | decay_mult: 1.0 1930 | } 1931 | param { 1932 | lr_mult: 2.0 1933 | decay_mult: 0.0 1934 | } 1935 | convolution_param { 1936 | num_output: 126 1937 | pad: 1 1938 | kernel_size: 3 1939 | stride: 1 1940 | weight_filler { 1941 | type: "msra" 1942 | } 1943 | bias_filler { 1944 | type: "constant" 1945 | value: 0.0 1946 | } 1947 | } 1948 | } 1949 | layer { 1950 | name: "fire10_mbox_conf_perm" 1951 | type: "Permute" 1952 | bottom: "fire10_mbox_conf" 1953 | top: "fire10_mbox_conf_perm" 1954 | permute_param { 1955 | order: 0 1956 | order: 2 1957 | order: 3 1958 | order: 1 1959 | } 1960 | } 1961 | layer { 1962 | name: "fire10_mbox_conf_flat" 1963 | type: "Flatten" 1964 | bottom: "fire10_mbox_conf_perm" 1965 | top: "fire10_mbox_conf_flat" 1966 | flatten_param { 1967 | axis: 1 1968 | } 1969 | } 1970 | layer { 1971 | name: "fire10_mbox_priorbox" 1972 | type: "PriorBox" 1973 | bottom: "fire10/concat" 1974 | bottom: "data" 1975 | top: "fire10_mbox_priorbox" 1976 | prior_box_param { 1977 | min_size: 99.0 1978 | max_size: 153.0 1979 | aspect_ratio: 2.0 1980 | aspect_ratio: 3.0 1981 | flip: true 1982 | clip: false 1983 | variance: 0.1 1984 | variance: 0.1 1985 | variance: 0.2 1986 | variance: 0.2 1987 | step: 32 1988 | } 1989 | } 1990 | 1991 | #=====conv11 mbox 1992 | layer { 1993 | name: "fire11_mbox_loc" 1994 | type: "Convolution" 1995 | bottom: "fire11/concat" 1996 | top: "fire11_mbox_loc" 1997 | param { 1998 | lr_mult: 1.0 1999 | decay_mult: 1.0 2000 | } 2001 | param { 2002 | lr_mult: 2.0 2003 | decay_mult: 0.0 2004 | } 2005 | convolution_param { 2006 | num_output: 24 2007 | pad: 1 2008 | kernel_size: 3 2009 | stride: 1 2010 | weight_filler { 2011 | type: "msra" 2012 | } 2013 | bias_filler { 2014 | type: "constant" 2015 | value: 0.0 2016 | } 2017 | } 2018 | } 2019 | layer { 2020 | name: "fire11_mbox_loc_perm" 2021 | type: "Permute" 2022 | bottom: "fire11_mbox_loc" 2023 | top: "fire11_mbox_loc_perm" 2024 | permute_param { 2025 | order: 0 2026 | order: 2 2027 | order: 3 2028 | order: 1 2029 | } 2030 | } 2031 | layer { 2032 | name: "fire11_mbox_loc_flat" 2033 | type: "Flatten" 2034 | bottom: "fire11_mbox_loc_perm" 2035 | top: "fire11_mbox_loc_flat" 2036 | flatten_param { 2037 | axis: 1 2038 | } 2039 | } 2040 | layer { 2041 | name: "fire11_mbox_conf" 2042 | type: "Convolution" 2043 | bottom: "fire11/concat" 2044 | top: "fire11_mbox_conf" 2045 | param { 2046 | lr_mult: 1.0 2047 | decay_mult: 1.0 2048 | } 2049 | param { 2050 | lr_mult: 2.0 2051 | decay_mult: 0.0 2052 | } 2053 | convolution_param { 2054 | num_output: 126 2055 | pad: 1 2056 | kernel_size: 3 2057 | stride: 1 2058 | weight_filler { 2059 | type: "msra" 2060 | } 2061 | bias_filler { 2062 | type: "constant" 2063 | value: 0.0 2064 | } 2065 | } 2066 | } 2067 | layer { 2068 | name: "fire11_mbox_conf_perm" 2069 | type: "Permute" 2070 | bottom: "fire11_mbox_conf" 2071 | top: "fire11_mbox_conf_perm" 2072 | permute_param { 2073 | order: 0 2074 | order: 2 2075 | order: 3 2076 | order: 1 2077 | } 2078 | } 2079 | layer { 2080 | name: "fire11_mbox_conf_flat" 2081 | type: "Flatten" 2082 | bottom: "fire11_mbox_conf_perm" 2083 | top: "fire11_mbox_conf_flat" 2084 | flatten_param { 2085 | axis: 1 2086 | } 2087 | } 2088 | layer { 2089 | name: "fire11_mbox_priorbox" 2090 | type: "PriorBox" 2091 | bottom: "fire11/concat" 2092 | bottom: "data" 2093 | top: "fire11_mbox_priorbox" 2094 | prior_box_param { 2095 | min_size: 153.0 2096 | max_size: 207.0 2097 | aspect_ratio: 2.0 2098 | aspect_ratio: 3.0 2099 | flip: true 2100 | clip: false 2101 | variance: 0.1 2102 | variance: 0.1 2103 | variance: 0.2 2104 | variance: 0.2 2105 | step: 64 2106 | } 2107 | } 2108 | #=====conv12 mbox 2109 | layer { 2110 | name: "conv12_2_mbox_loc" 2111 | type: "Convolution" 2112 | bottom: "conv12_2" 2113 | top: "conv12_2_mbox_loc" 2114 | param { 2115 | lr_mult: 1.0 2116 | decay_mult: 1.0 2117 | } 2118 | param { 2119 | lr_mult: 2.0 2120 | decay_mult: 0.0 2121 | } 2122 | convolution_param { 2123 | num_output: 24 2124 | pad: 1 2125 | kernel_size: 3 2126 | stride: 1 2127 | weight_filler { 2128 | type: "msra" 2129 | } 2130 | bias_filler { 2131 | type: "constant" 2132 | value: 0.0 2133 | } 2134 | } 2135 | } 2136 | layer { 2137 | name: "conv12_2_mbox_loc_perm" 2138 | type: "Permute" 2139 | bottom: "conv12_2_mbox_loc" 2140 | top: "conv12_2_mbox_loc_perm" 2141 | permute_param { 2142 | order: 0 2143 | order: 2 2144 | order: 3 2145 | order: 1 2146 | } 2147 | } 2148 | layer { 2149 | name: "conv12_2_mbox_loc_flat" 2150 | type: "Flatten" 2151 | bottom: "conv12_2_mbox_loc_perm" 2152 | top: "conv12_2_mbox_loc_flat" 2153 | flatten_param { 2154 | axis: 1 2155 | } 2156 | } 2157 | layer { 2158 | name: "conv12_2_mbox_conf" 2159 | type: "Convolution" 2160 | bottom: "conv12_2" 2161 | top: "conv12_2_mbox_conf" 2162 | param { 2163 | lr_mult: 1.0 2164 | decay_mult: 1.0 2165 | } 2166 | param { 2167 | lr_mult: 2.0 2168 | decay_mult: 0.0 2169 | } 2170 | convolution_param { 2171 | num_output: 126 2172 | pad: 1 2173 | kernel_size: 3 2174 | stride: 1 2175 | weight_filler { 2176 | type: "msra" 2177 | } 2178 | bias_filler { 2179 | type: "constant" 2180 | value: 0.0 2181 | } 2182 | } 2183 | } 2184 | layer { 2185 | name: "conv12_2_mbox_conf_perm" 2186 | type: "Permute" 2187 | bottom: "conv12_2_mbox_conf" 2188 | top: "conv12_2_mbox_conf_perm" 2189 | permute_param { 2190 | order: 0 2191 | order: 2 2192 | order: 3 2193 | order: 1 2194 | } 2195 | } 2196 | layer { 2197 | name: "conv12_2_mbox_conf_flat" 2198 | type: "Flatten" 2199 | bottom: "conv12_2_mbox_conf_perm" 2200 | top: "conv12_2_mbox_conf_flat" 2201 | flatten_param { 2202 | axis: 1 2203 | } 2204 | } 2205 | layer { 2206 | name: "conv12_2_mbox_priorbox" 2207 | type: "PriorBox" 2208 | bottom: "conv12_2" 2209 | bottom: "data" 2210 | top: "conv12_2_mbox_priorbox" 2211 | prior_box_param { 2212 | min_size: 207.0 2213 | max_size: 261.0 2214 | aspect_ratio: 2.0 2215 | aspect_ratio: 3.0 2216 | flip: true 2217 | clip: false 2218 | variance: 0.1 2219 | variance: 0.1 2220 | variance: 0.2 2221 | variance: 0.2 2222 | step: 100 2223 | } 2224 | } 2225 | #=====conv13 mbox 2226 | layer { 2227 | name: "conv13_2_mbox_loc" 2228 | type: "Convolution" 2229 | bottom: "conv13_2" 2230 | top: "conv13_2_mbox_loc" 2231 | param { 2232 | lr_mult: 1.0 2233 | decay_mult: 1.0 2234 | } 2235 | param { 2236 | lr_mult: 2.0 2237 | decay_mult: 0.0 2238 | } 2239 | convolution_param { 2240 | num_output: 16 2241 | pad: 1 2242 | kernel_size: 3 2243 | stride: 1 2244 | weight_filler { 2245 | type: "msra" 2246 | } 2247 | bias_filler { 2248 | type: "constant" 2249 | value: 0.0 2250 | } 2251 | } 2252 | } 2253 | layer { 2254 | name: "conv13_2_mbox_loc_perm" 2255 | type: "Permute" 2256 | bottom: "conv13_2_mbox_loc" 2257 | top: "conv13_2_mbox_loc_perm" 2258 | permute_param { 2259 | order: 0 2260 | order: 2 2261 | order: 3 2262 | order: 1 2263 | } 2264 | } 2265 | layer { 2266 | name: "conv13_2_mbox_loc_flat" 2267 | type: "Flatten" 2268 | bottom: "conv13_2_mbox_loc_perm" 2269 | top: "conv13_2_mbox_loc_flat" 2270 | flatten_param { 2271 | axis: 1 2272 | } 2273 | } 2274 | layer { 2275 | name: "conv13_2_mbox_conf" 2276 | type: "Convolution" 2277 | bottom: "conv13_2" 2278 | top: "conv13_2_mbox_conf" 2279 | param { 2280 | lr_mult: 1.0 2281 | decay_mult: 1.0 2282 | } 2283 | param { 2284 | lr_mult: 2.0 2285 | decay_mult: 0.0 2286 | } 2287 | convolution_param { 2288 | num_output: 84 2289 | pad: 1 2290 | kernel_size: 3 2291 | stride: 1 2292 | weight_filler { 2293 | type: "msra" 2294 | } 2295 | bias_filler { 2296 | type: "constant" 2297 | value: 0.0 2298 | } 2299 | } 2300 | } 2301 | layer { 2302 | name: "conv13_2_mbox_conf_perm" 2303 | type: "Permute" 2304 | bottom: "conv13_2_mbox_conf" 2305 | top: "conv13_2_mbox_conf_perm" 2306 | permute_param { 2307 | order: 0 2308 | order: 2 2309 | order: 3 2310 | order: 1 2311 | } 2312 | } 2313 | layer { 2314 | name: "conv13_2_mbox_conf_flat" 2315 | type: "Flatten" 2316 | bottom: "conv13_2_mbox_conf_perm" 2317 | top: "conv13_2_mbox_conf_flat" 2318 | flatten_param { 2319 | axis: 1 2320 | } 2321 | } 2322 | layer { 2323 | name: "conv13_2_mbox_priorbox" 2324 | type: "PriorBox" 2325 | bottom: "conv13_2" 2326 | bottom: "data" 2327 | top: "conv13_2_mbox_priorbox" 2328 | prior_box_param { 2329 | min_size: 261.0 2330 | max_size: 315.0 2331 | aspect_ratio: 2.0 2332 | flip: true 2333 | clip: false 2334 | variance: 0.1 2335 | variance: 0.1 2336 | variance: 0.2 2337 | variance: 0.2 2338 | step: 300 2339 | } 2340 | } 2341 | layer { 2342 | name: "mbox_loc" 2343 | type: "Concat" 2344 | bottom: "fire5_mbox_loc_flat" 2345 | bottom: "fire9_mbox_loc_flat" 2346 | bottom: "fire10_mbox_loc_flat" 2347 | bottom: "fire11_mbox_loc_flat" 2348 | bottom: "conv12_2_mbox_loc_flat" 2349 | bottom: "conv13_2_mbox_loc_flat" 2350 | top: "mbox_loc" 2351 | concat_param { 2352 | axis: 1 2353 | } 2354 | } 2355 | layer { 2356 | name: "mbox_conf" 2357 | type: "Concat" 2358 | bottom: "fire5_mbox_conf_flat" 2359 | bottom: "fire9_mbox_conf_flat" 2360 | bottom: "fire10_mbox_conf_flat" 2361 | bottom: "fire11_mbox_conf_flat" 2362 | bottom: "conv12_2_mbox_conf_flat" 2363 | bottom: "conv13_2_mbox_conf_flat" 2364 | top: "mbox_conf" 2365 | concat_param { 2366 | axis: 1 2367 | } 2368 | } 2369 | layer { 2370 | name: "mbox_priorbox" 2371 | type: "Concat" 2372 | bottom: "fire5_mbox_priorbox" 2373 | bottom: "fire9_mbox_priorbox" 2374 | bottom: "fire10_mbox_priorbox" 2375 | bottom: "fire11_mbox_priorbox" 2376 | bottom: "conv12_2_mbox_priorbox" 2377 | bottom: "conv13_2_mbox_priorbox" 2378 | top: "mbox_priorbox" 2379 | concat_param { 2380 | axis: 2 2381 | } 2382 | } 2383 | layer { 2384 | name: "mbox_loss" 2385 | type: "MultiBoxLoss" 2386 | bottom: "mbox_loc" 2387 | bottom: "mbox_conf" 2388 | bottom: "mbox_priorbox" 2389 | bottom: "label" 2390 | top: "mbox_loss" 2391 | include { 2392 | phase: TRAIN 2393 | } 2394 | propagate_down: true 2395 | propagate_down: true 2396 | propagate_down: false 2397 | propagate_down: false 2398 | loss_param { 2399 | normalization: VALID 2400 | } 2401 | multibox_loss_param { 2402 | loc_loss_type: SMOOTH_L1 2403 | conf_loss_type: SOFTMAX 2404 | loc_weight: 1.0 2405 | num_classes: 21 2406 | share_location: true 2407 | match_type: PER_PREDICTION 2408 | overlap_threshold: 0.5 2409 | use_prior_for_matching: true 2410 | background_label_id: 0 2411 | use_difficult_gt: true 2412 | neg_pos_ratio: 3.0 2413 | neg_overlap: 0.5 2414 | code_type: CENTER_SIZE 2415 | ignore_cross_boundary_bbox: false 2416 | mining_type: MAX_NEGATIVE 2417 | } 2418 | } 2419 | -------------------------------------------------------------------------------- /python_script/deploy.prototxt: -------------------------------------------------------------------------------- 1 | layer { 2 | name: "data" 3 | type: "Input" 4 | top: "data" 5 | input_param { 6 | shape { 7 | dim: 1 8 | dim: 3 9 | dim: 300 10 | dim: 300 11 | } 12 | } 13 | } 14 | layer { 15 | name: "conv1" 16 | type: "Convolution" 17 | bottom: "data" 18 | top: "conv1" 19 | param { 20 | lr_mult: 1.0 21 | decay_mult: 0.0 22 | } 23 | param { 24 | lr_mult: 1.0 25 | decay_mult: 0.0 26 | } 27 | convolution_param { 28 | num_output: 57 29 | kernel_size: 3 30 | stride: 2 31 | weight_filler { 32 | type: "xavier" 33 | } 34 | } 35 | } 36 | layer { 37 | name: "relu_conv1" 38 | type: "ReLU" 39 | bottom: "conv1" 40 | top: "conv1" 41 | } 42 | layer { 43 | name: "pool1" 44 | type: "Pooling" 45 | bottom: "conv1" 46 | top: "pool1" 47 | pooling_param { 48 | pool: MAX 49 | kernel_size: 3 50 | stride: 2 51 | } 52 | } 53 | layer { 54 | name: "fire2/squeeze1x1" 55 | type: "Convolution" 56 | bottom: "pool1" 57 | top: "fire2/squeeze1x1" 58 | param { 59 | lr_mult: 1.0 60 | decay_mult: 0.0 61 | } 62 | param { 63 | lr_mult: 1.0 64 | decay_mult: 0.0 65 | } 66 | convolution_param { 67 | num_output: 15 68 | kernel_size: 1 69 | weight_filler { 70 | type: "xavier" 71 | } 72 | } 73 | } 74 | layer { 75 | name: "fire2/expand1x1" 76 | type: "Convolution" 77 | bottom: "fire2/squeeze1x1" 78 | top: "fire2/expand1x1" 79 | param { 80 | lr_mult: 1.0 81 | decay_mult: 0.0 82 | } 83 | param { 84 | lr_mult: 1.0 85 | decay_mult: 0.0 86 | } 87 | convolution_param { 88 | num_output: 49 89 | kernel_size: 1 90 | weight_filler { 91 | type: "xavier" 92 | } 93 | } 94 | } 95 | layer { 96 | name: "fire2/relu_expand1x1" 97 | type: "ReLU" 98 | bottom: "fire2/expand1x1" 99 | top: "fire2/expand1x1" 100 | } 101 | layer { 102 | name: "fire2/expand3x3" 103 | type: "Convolution" 104 | bottom: "fire2/squeeze1x1" 105 | top: "fire2/expand3x3" 106 | param { 107 | lr_mult: 1.0 108 | decay_mult: 0.0 109 | } 110 | param { 111 | lr_mult: 1.0 112 | decay_mult: 0.0 113 | } 114 | convolution_param { 115 | num_output: 53 116 | pad: 1 117 | kernel_size: 3 118 | weight_filler { 119 | type: "xavier" 120 | } 121 | } 122 | } 123 | layer { 124 | name: "fire2/relu_expand3x3" 125 | type: "ReLU" 126 | bottom: "fire2/expand3x3" 127 | top: "fire2/expand3x3" 128 | } 129 | layer { 130 | name: "fire2/concat" 131 | type: "Concat" 132 | bottom: "fire2/expand1x1" 133 | bottom: "fire2/expand3x3" 134 | top: "fire2/concat" 135 | } 136 | layer { 137 | name: "fire3/squeeze1x1" 138 | type: "Convolution" 139 | bottom: "fire2/concat" 140 | top: "fire3/squeeze1x1" 141 | param { 142 | lr_mult: 1.0 143 | decay_mult: 0.0 144 | } 145 | param { 146 | lr_mult: 1.0 147 | decay_mult: 0.0 148 | } 149 | convolution_param { 150 | num_output: 15 151 | kernel_size: 1 152 | weight_filler { 153 | type: "xavier" 154 | } 155 | } 156 | } 157 | layer { 158 | name: "fire3/expand1x1" 159 | type: "Convolution" 160 | bottom: "fire3/squeeze1x1" 161 | top: "fire3/expand1x1" 162 | param { 163 | lr_mult: 1.0 164 | decay_mult: 0.0 165 | } 166 | param { 167 | lr_mult: 1.0 168 | decay_mult: 0.0 169 | } 170 | convolution_param { 171 | num_output: 54 172 | kernel_size: 1 173 | weight_filler { 174 | type: "xavier" 175 | } 176 | } 177 | } 178 | layer { 179 | name: "fire3/relu_expand1x1" 180 | type: "ReLU" 181 | bottom: "fire3/expand1x1" 182 | top: "fire3/expand1x1" 183 | } 184 | layer { 185 | name: "fire3/expand3x3" 186 | type: "Convolution" 187 | bottom: "fire3/squeeze1x1" 188 | top: "fire3/expand3x3" 189 | param { 190 | lr_mult: 1.0 191 | decay_mult: 0.0 192 | } 193 | param { 194 | lr_mult: 1.0 195 | decay_mult: 0.0 196 | } 197 | convolution_param { 198 | num_output: 52 199 | pad: 1 200 | kernel_size: 3 201 | weight_filler { 202 | type: "xavier" 203 | } 204 | } 205 | } 206 | layer { 207 | name: "fire3/relu_expand3x3" 208 | type: "ReLU" 209 | bottom: "fire3/expand3x3" 210 | top: "fire3/expand3x3" 211 | } 212 | layer { 213 | name: "fire3/concat" 214 | type: "Concat" 215 | bottom: "fire3/expand1x1" 216 | bottom: "fire3/expand3x3" 217 | top: "fire3/concat" 218 | } 219 | layer { 220 | name: "pool3" 221 | type: "Pooling" 222 | bottom: "fire3/concat" 223 | top: "pool3" 224 | pooling_param { 225 | pool: MAX 226 | kernel_size: 3 227 | stride: 2 228 | } 229 | } 230 | layer { 231 | name: "fire4/squeeze1x1" 232 | type: "Convolution" 233 | bottom: "pool3" 234 | top: "fire4/squeeze1x1" 235 | param { 236 | lr_mult: 1.0 237 | decay_mult: 0.0 238 | } 239 | param { 240 | lr_mult: 1.0 241 | decay_mult: 0.0 242 | } 243 | convolution_param { 244 | num_output: 29 245 | kernel_size: 1 246 | weight_filler { 247 | type: "xavier" 248 | } 249 | } 250 | } 251 | layer { 252 | name: "fire4/expand1x1" 253 | type: "Convolution" 254 | bottom: "fire4/squeeze1x1" 255 | top: "fire4/expand1x1" 256 | param { 257 | lr_mult: 1.0 258 | decay_mult: 0.0 259 | } 260 | param { 261 | lr_mult: 1.0 262 | decay_mult: 0.0 263 | } 264 | convolution_param { 265 | num_output: 92 266 | kernel_size: 1 267 | weight_filler { 268 | type: "xavier" 269 | } 270 | } 271 | } 272 | layer { 273 | name: "fire4/relu_expand1x1" 274 | type: "ReLU" 275 | bottom: "fire4/expand1x1" 276 | top: "fire4/expand1x1" 277 | } 278 | layer { 279 | name: "fire4/expand3x3" 280 | type: "Convolution" 281 | bottom: "fire4/squeeze1x1" 282 | top: "fire4/expand3x3" 283 | param { 284 | lr_mult: 1.0 285 | decay_mult: 0.0 286 | } 287 | param { 288 | lr_mult: 1.0 289 | decay_mult: 0.0 290 | } 291 | convolution_param { 292 | num_output: 94 293 | pad: 1 294 | kernel_size: 3 295 | weight_filler { 296 | type: "xavier" 297 | } 298 | } 299 | } 300 | layer { 301 | name: "fire4/relu_expand3x3" 302 | type: "ReLU" 303 | bottom: "fire4/expand3x3" 304 | top: "fire4/expand3x3" 305 | } 306 | layer { 307 | name: "fire4/concat" 308 | type: "Concat" 309 | bottom: "fire4/expand1x1" 310 | bottom: "fire4/expand3x3" 311 | top: "fire4/concat" 312 | } 313 | layer { 314 | name: "fire5/squeeze1x1" 315 | type: "Convolution" 316 | bottom: "fire4/concat" 317 | top: "fire5/squeeze1x1" 318 | param { 319 | lr_mult: 1.0 320 | decay_mult: 0.0 321 | } 322 | param { 323 | lr_mult: 1.0 324 | decay_mult: 0.0 325 | } 326 | convolution_param { 327 | num_output: 29 328 | kernel_size: 1 329 | weight_filler { 330 | type: "xavier" 331 | } 332 | } 333 | } 334 | layer { 335 | name: "fire5/expand1x1" 336 | type: "Convolution" 337 | bottom: "fire5/squeeze1x1" 338 | top: "fire5/expand1x1" 339 | param { 340 | lr_mult: 1.0 341 | decay_mult: 0.0 342 | } 343 | param { 344 | lr_mult: 1.0 345 | decay_mult: 0.0 346 | } 347 | convolution_param { 348 | num_output: 90 349 | kernel_size: 1 350 | weight_filler { 351 | type: "xavier" 352 | } 353 | } 354 | } 355 | layer { 356 | name: "fire5/relu_expand1x1" 357 | type: "ReLU" 358 | bottom: "fire5/expand1x1" 359 | top: "fire5/expand1x1" 360 | } 361 | layer { 362 | name: "fire5/expand3x3" 363 | type: "Convolution" 364 | bottom: "fire5/squeeze1x1" 365 | top: "fire5/expand3x3" 366 | param { 367 | lr_mult: 1.0 368 | decay_mult: 0.0 369 | } 370 | param { 371 | lr_mult: 1.0 372 | decay_mult: 0.0 373 | } 374 | convolution_param { 375 | num_output: 83 376 | pad: 1 377 | kernel_size: 3 378 | weight_filler { 379 | type: "xavier" 380 | } 381 | } 382 | } 383 | layer { 384 | name: "fire5/relu_expand3x3" 385 | type: "ReLU" 386 | bottom: "fire5/expand3x3" 387 | top: "fire5/expand3x3" 388 | } 389 | layer { 390 | name: "fire5/concat" 391 | type: "Concat" 392 | bottom: "fire5/expand1x1" 393 | bottom: "fire5/expand3x3" 394 | top: "fire5/concat" 395 | } 396 | layer { 397 | name: "pool5" 398 | type: "Pooling" 399 | bottom: "fire5/concat" 400 | top: "pool5" 401 | pooling_param { 402 | pool: MAX 403 | kernel_size: 3 404 | stride: 2 405 | } 406 | } 407 | layer { 408 | name: "fire6/squeeze1x1" 409 | type: "Convolution" 410 | bottom: "pool5" 411 | top: "fire6/squeeze1x1" 412 | param { 413 | lr_mult: 1.0 414 | decay_mult: 0.0 415 | } 416 | param { 417 | lr_mult: 1.0 418 | decay_mult: 0.0 419 | } 420 | convolution_param { 421 | num_output: 44 422 | kernel_size: 1 423 | weight_filler { 424 | type: "xavier" 425 | } 426 | } 427 | } 428 | layer { 429 | name: "fire6/expand1x1" 430 | type: "Convolution" 431 | bottom: "fire6/squeeze1x1" 432 | top: "fire6/expand1x1" 433 | param { 434 | lr_mult: 1.0 435 | decay_mult: 0.0 436 | } 437 | param { 438 | lr_mult: 1.0 439 | decay_mult: 0.0 440 | } 441 | convolution_param { 442 | num_output: 166 443 | kernel_size: 1 444 | weight_filler { 445 | type: "xavier" 446 | } 447 | } 448 | } 449 | layer { 450 | name: "fire6/relu_expand1x1" 451 | type: "ReLU" 452 | bottom: "fire6/expand1x1" 453 | top: "fire6/expand1x1" 454 | } 455 | layer { 456 | name: "fire6/expand3x3" 457 | type: "Convolution" 458 | bottom: "fire6/squeeze1x1" 459 | top: "fire6/expand3x3" 460 | param { 461 | lr_mult: 1.0 462 | decay_mult: 0.0 463 | } 464 | param { 465 | lr_mult: 1.0 466 | decay_mult: 0.0 467 | } 468 | convolution_param { 469 | num_output: 161 470 | pad: 1 471 | kernel_size: 3 472 | weight_filler { 473 | type: "xavier" 474 | } 475 | } 476 | } 477 | layer { 478 | name: "fire6/relu_expand3x3" 479 | type: "ReLU" 480 | bottom: "fire6/expand3x3" 481 | top: "fire6/expand3x3" 482 | } 483 | layer { 484 | name: "fire6/concat" 485 | type: "Concat" 486 | bottom: "fire6/expand1x1" 487 | bottom: "fire6/expand3x3" 488 | top: "fire6/concat" 489 | } 490 | layer { 491 | name: "fire7/squeeze1x1" 492 | type: "Convolution" 493 | bottom: "fire6/concat" 494 | top: "fire7/squeeze1x1" 495 | param { 496 | lr_mult: 1.0 497 | decay_mult: 0.0 498 | } 499 | param { 500 | lr_mult: 1.0 501 | decay_mult: 0.0 502 | } 503 | convolution_param { 504 | num_output: 45 505 | kernel_size: 1 506 | weight_filler { 507 | type: "xavier" 508 | } 509 | } 510 | } 511 | layer { 512 | name: "fire7/expand1x1" 513 | type: "Convolution" 514 | bottom: "fire7/squeeze1x1" 515 | top: "fire7/expand1x1" 516 | param { 517 | lr_mult: 1.0 518 | decay_mult: 0.0 519 | } 520 | param { 521 | lr_mult: 1.0 522 | decay_mult: 0.0 523 | } 524 | convolution_param { 525 | num_output: 155 526 | kernel_size: 1 527 | weight_filler { 528 | type: "xavier" 529 | } 530 | } 531 | } 532 | layer { 533 | name: "fire7/relu_expand1x1" 534 | type: "ReLU" 535 | bottom: "fire7/expand1x1" 536 | top: "fire7/expand1x1" 537 | } 538 | layer { 539 | name: "fire7/expand3x3" 540 | type: "Convolution" 541 | bottom: "fire7/squeeze1x1" 542 | top: "fire7/expand3x3" 543 | param { 544 | lr_mult: 1.0 545 | decay_mult: 0.0 546 | } 547 | param { 548 | lr_mult: 1.0 549 | decay_mult: 0.0 550 | } 551 | convolution_param { 552 | num_output: 146 553 | pad: 1 554 | kernel_size: 3 555 | weight_filler { 556 | type: "xavier" 557 | } 558 | } 559 | } 560 | layer { 561 | name: "fire7/relu_expand3x3" 562 | type: "ReLU" 563 | bottom: "fire7/expand3x3" 564 | top: "fire7/expand3x3" 565 | } 566 | layer { 567 | name: "fire7/concat" 568 | type: "Concat" 569 | bottom: "fire7/expand1x1" 570 | bottom: "fire7/expand3x3" 571 | top: "fire7/concat" 572 | } 573 | layer { 574 | name: "fire8/squeeze1x1" 575 | type: "Convolution" 576 | bottom: "fire7/concat" 577 | top: "fire8/squeeze1x1" 578 | param { 579 | lr_mult: 1.0 580 | decay_mult: 0.0 581 | } 582 | param { 583 | lr_mult: 1.0 584 | decay_mult: 0.0 585 | } 586 | convolution_param { 587 | num_output: 49 588 | kernel_size: 1 589 | weight_filler { 590 | type: "xavier" 591 | } 592 | } 593 | } 594 | layer { 595 | name: "fire8/expand1x1" 596 | type: "Convolution" 597 | bottom: "fire8/squeeze1x1" 598 | top: "fire8/expand1x1" 599 | param { 600 | lr_mult: 1.0 601 | decay_mult: 0.0 602 | } 603 | param { 604 | lr_mult: 1.0 605 | decay_mult: 0.0 606 | } 607 | convolution_param { 608 | num_output: 163 609 | kernel_size: 1 610 | weight_filler { 611 | type: "xavier" 612 | } 613 | } 614 | } 615 | layer { 616 | name: "fire8/relu_expand1x1" 617 | type: "ReLU" 618 | bottom: "fire8/expand1x1" 619 | top: "fire8/expand1x1" 620 | } 621 | layer { 622 | name: "fire8/expand3x3" 623 | type: "Convolution" 624 | bottom: "fire8/squeeze1x1" 625 | top: "fire8/expand3x3" 626 | param { 627 | lr_mult: 1.0 628 | decay_mult: 0.0 629 | } 630 | param { 631 | lr_mult: 1.0 632 | decay_mult: 0.0 633 | } 634 | convolution_param { 635 | num_output: 171 636 | pad: 1 637 | kernel_size: 3 638 | weight_filler { 639 | type: "xavier" 640 | } 641 | } 642 | } 643 | layer { 644 | name: "fire8/relu_expand3x3" 645 | type: "ReLU" 646 | bottom: "fire8/expand3x3" 647 | top: "fire8/expand3x3" 648 | } 649 | layer { 650 | name: "fire8/concat" 651 | type: "Concat" 652 | bottom: "fire8/expand1x1" 653 | bottom: "fire8/expand3x3" 654 | top: "fire8/concat" 655 | } 656 | layer { 657 | name: "fire9/squeeze1x1" 658 | type: "Convolution" 659 | bottom: "fire8/concat" 660 | top: "fire9/squeeze1x1" 661 | param { 662 | lr_mult: 1.0 663 | decay_mult: 0.0 664 | } 665 | param { 666 | lr_mult: 1.0 667 | decay_mult: 0.0 668 | } 669 | convolution_param { 670 | num_output: 25 671 | kernel_size: 1 672 | weight_filler { 673 | type: "xavier" 674 | } 675 | } 676 | } 677 | layer { 678 | name: "fire9/expand1x1" 679 | type: "Convolution" 680 | bottom: "fire9/squeeze1x1" 681 | top: "fire9/expand1x1" 682 | param { 683 | lr_mult: 1.0 684 | decay_mult: 0.0 685 | } 686 | param { 687 | lr_mult: 1.0 688 | decay_mult: 0.0 689 | } 690 | convolution_param { 691 | num_output: 29 692 | kernel_size: 1 693 | weight_filler { 694 | type: "xavier" 695 | } 696 | } 697 | } 698 | layer { 699 | name: "fire9/expand1x1/bn" 700 | type: "BatchNorm" 701 | bottom: "fire9/expand1x1" 702 | top: "fire9/expand1x1" 703 | param { 704 | lr_mult: 0.0 705 | decay_mult: 0.0 706 | } 707 | param { 708 | lr_mult: 0.0 709 | decay_mult: 0.0 710 | } 711 | param { 712 | lr_mult: 0.0 713 | decay_mult: 0.0 714 | } 715 | } 716 | layer { 717 | name: "fire9/expand1x1/scale" 718 | type: "Scale" 719 | bottom: "fire9/expand1x1" 720 | top: "fire9/expand1x1" 721 | param { 722 | lr_mult: 1.0 723 | decay_mult: 0.0 724 | } 725 | param { 726 | lr_mult: 2.0 727 | decay_mult: 0.0 728 | } 729 | scale_param { 730 | filler { 731 | value: 1.0 732 | } 733 | bias_term: true 734 | bias_filler { 735 | value: 0.0 736 | } 737 | } 738 | } 739 | layer { 740 | name: "fire9/relu_expand1x1" 741 | type: "ReLU" 742 | bottom: "fire9/expand1x1" 743 | top: "fire9/expand1x1" 744 | } 745 | layer { 746 | name: "fire9/expand3x3" 747 | type: "Convolution" 748 | bottom: "fire9/squeeze1x1" 749 | top: "fire9/expand3x3" 750 | param { 751 | lr_mult: 1.0 752 | decay_mult: 0.0 753 | } 754 | param { 755 | lr_mult: 1.0 756 | decay_mult: 0.0 757 | } 758 | convolution_param { 759 | num_output: 54 760 | pad: 1 761 | kernel_size: 3 762 | weight_filler { 763 | type: "xavier" 764 | } 765 | } 766 | } 767 | layer { 768 | name: "fire9/expand3x3/bn" 769 | type: "BatchNorm" 770 | bottom: "fire9/expand3x3" 771 | top: "fire9/expand3x3" 772 | param { 773 | lr_mult: 0.0 774 | decay_mult: 0.0 775 | } 776 | param { 777 | lr_mult: 0.0 778 | decay_mult: 0.0 779 | } 780 | param { 781 | lr_mult: 0.0 782 | decay_mult: 0.0 783 | } 784 | } 785 | layer { 786 | name: "fire9/expand3x3/scale" 787 | type: "Scale" 788 | bottom: "fire9/expand3x3" 789 | top: "fire9/expand3x3" 790 | param { 791 | lr_mult: 1.0 792 | decay_mult: 0.0 793 | } 794 | param { 795 | lr_mult: 2.0 796 | decay_mult: 0.0 797 | } 798 | scale_param { 799 | filler { 800 | value: 1.0 801 | } 802 | bias_term: true 803 | bias_filler { 804 | value: 0.0 805 | } 806 | } 807 | } 808 | layer { 809 | name: "fire9/relu_expand3x3" 810 | type: "ReLU" 811 | bottom: "fire9/expand3x3" 812 | top: "fire9/expand3x3" 813 | } 814 | layer { 815 | name: "fire9/concat" 816 | type: "Concat" 817 | bottom: "fire9/expand1x1" 818 | bottom: "fire9/expand3x3" 819 | top: "fire9/concat" 820 | } 821 | layer { 822 | name: "pool9" 823 | type: "Pooling" 824 | bottom: "fire9/concat" 825 | top: "pool9" 826 | pooling_param { 827 | pool: MAX 828 | kernel_size: 3 829 | stride: 2 830 | } 831 | } 832 | layer { 833 | name: "fire10/squeeze1x1" 834 | type: "Convolution" 835 | bottom: "pool9" 836 | top: "fire10/squeeze1x1" 837 | convolution_param { 838 | num_output: 37 839 | kernel_size: 1 840 | weight_filler { 841 | type: "xavier" 842 | } 843 | } 844 | } 845 | layer { 846 | name: "fire10/squeeze1x1/bn" 847 | type: "BatchNorm" 848 | bottom: "fire10/squeeze1x1" 849 | top: "fire10/squeeze1x1" 850 | param { 851 | lr_mult: 0.0 852 | decay_mult: 0.0 853 | } 854 | param { 855 | lr_mult: 0.0 856 | decay_mult: 0.0 857 | } 858 | param { 859 | lr_mult: 0.0 860 | decay_mult: 0.0 861 | } 862 | } 863 | layer { 864 | name: "fire10/squeeze1x1/scale" 865 | type: "Scale" 866 | bottom: "fire10/squeeze1x1" 867 | top: "fire10/squeeze1x1" 868 | param { 869 | lr_mult: 1.0 870 | decay_mult: 0.0 871 | } 872 | param { 873 | lr_mult: 2.0 874 | decay_mult: 0.0 875 | } 876 | scale_param { 877 | filler { 878 | value: 1.0 879 | } 880 | bias_term: true 881 | bias_filler { 882 | value: 0.0 883 | } 884 | } 885 | } 886 | layer { 887 | name: "fire10/expand1x1" 888 | type: "Convolution" 889 | bottom: "fire10/squeeze1x1" 890 | top: "fire10/expand1x1" 891 | convolution_param { 892 | num_output: 45 893 | kernel_size: 1 894 | weight_filler { 895 | type: "xavier" 896 | } 897 | } 898 | } 899 | layer { 900 | name: "fire10/expand1x1/bn" 901 | type: "BatchNorm" 902 | bottom: "fire10/expand1x1" 903 | top: "fire10/expand1x1" 904 | param { 905 | lr_mult: 0.0 906 | decay_mult: 0.0 907 | } 908 | param { 909 | lr_mult: 0.0 910 | decay_mult: 0.0 911 | } 912 | param { 913 | lr_mult: 0.0 914 | decay_mult: 0.0 915 | } 916 | } 917 | layer { 918 | name: "fire10/expand1x1/scale" 919 | type: "Scale" 920 | bottom: "fire10/expand1x1" 921 | top: "fire10/expand1x1" 922 | param { 923 | lr_mult: 1.0 924 | decay_mult: 0.0 925 | } 926 | param { 927 | lr_mult: 2.0 928 | decay_mult: 0.0 929 | } 930 | scale_param { 931 | filler { 932 | value: 1.0 933 | } 934 | bias_term: true 935 | bias_filler { 936 | value: 0.0 937 | } 938 | } 939 | } 940 | layer { 941 | name: "fire10/relu_expand1x1" 942 | type: "ReLU" 943 | bottom: "fire10/expand1x1" 944 | top: "fire10/expand1x1" 945 | } 946 | layer { 947 | name: "fire10/expand3x3" 948 | type: "Convolution" 949 | bottom: "fire10/squeeze1x1" 950 | top: "fire10/expand3x3" 951 | convolution_param { 952 | num_output: 56 953 | pad: 1 954 | kernel_size: 3 955 | weight_filler { 956 | type: "xavier" 957 | } 958 | } 959 | } 960 | layer { 961 | name: "fire10/expand3x3/bn" 962 | type: "BatchNorm" 963 | bottom: "fire10/expand3x3" 964 | top: "fire10/expand3x3" 965 | param { 966 | lr_mult: 0.0 967 | decay_mult: 0.0 968 | } 969 | param { 970 | lr_mult: 0.0 971 | decay_mult: 0.0 972 | } 973 | param { 974 | lr_mult: 0.0 975 | decay_mult: 0.0 976 | } 977 | } 978 | layer { 979 | name: "fire10/expand3x3/scale" 980 | type: "Scale" 981 | bottom: "fire10/expand3x3" 982 | top: "fire10/expand3x3" 983 | param { 984 | lr_mult: 1.0 985 | decay_mult: 0.0 986 | } 987 | param { 988 | lr_mult: 2.0 989 | decay_mult: 0.0 990 | } 991 | scale_param { 992 | filler { 993 | value: 1.0 994 | } 995 | bias_term: true 996 | bias_filler { 997 | value: 0.0 998 | } 999 | } 1000 | } 1001 | layer { 1002 | name: "fire10/relu_expand3x3" 1003 | type: "ReLU" 1004 | bottom: "fire10/expand3x3" 1005 | top: "fire10/expand3x3" 1006 | } 1007 | layer { 1008 | name: "fire10/concat" 1009 | type: "Concat" 1010 | bottom: "fire10/expand1x1" 1011 | bottom: "fire10/expand3x3" 1012 | top: "fire10/concat" 1013 | } 1014 | layer { 1015 | name: "pool10" 1016 | type: "Pooling" 1017 | bottom: "fire10/concat" 1018 | top: "pool10" 1019 | pooling_param { 1020 | pool: MAX 1021 | kernel_size: 3 1022 | stride: 2 1023 | } 1024 | } 1025 | layer { 1026 | name: "fire11/squeeze1x1" 1027 | type: "Convolution" 1028 | bottom: "pool10" 1029 | top: "fire11/squeeze1x1" 1030 | convolution_param { 1031 | num_output: 38 1032 | kernel_size: 1 1033 | weight_filler { 1034 | type: "xavier" 1035 | } 1036 | } 1037 | } 1038 | layer { 1039 | name: "fire11/squeeze1x1/bn" 1040 | type: "BatchNorm" 1041 | bottom: "fire11/squeeze1x1" 1042 | top: "fire11/squeeze1x1" 1043 | param { 1044 | lr_mult: 0.0 1045 | decay_mult: 0.0 1046 | } 1047 | param { 1048 | lr_mult: 0.0 1049 | decay_mult: 0.0 1050 | } 1051 | param { 1052 | lr_mult: 0.0 1053 | decay_mult: 0.0 1054 | } 1055 | } 1056 | layer { 1057 | name: "fire11/squeeze1x1/scale" 1058 | type: "Scale" 1059 | bottom: "fire11/squeeze1x1" 1060 | top: "fire11/squeeze1x1" 1061 | param { 1062 | lr_mult: 1.0 1063 | decay_mult: 0.0 1064 | } 1065 | param { 1066 | lr_mult: 2.0 1067 | decay_mult: 0.0 1068 | } 1069 | scale_param { 1070 | filler { 1071 | value: 1.0 1072 | } 1073 | bias_term: true 1074 | bias_filler { 1075 | value: 0.0 1076 | } 1077 | } 1078 | } 1079 | layer { 1080 | name: "fire11/expand1x1" 1081 | type: "Convolution" 1082 | bottom: "fire11/squeeze1x1" 1083 | top: "fire11/expand1x1" 1084 | convolution_param { 1085 | num_output: 41 1086 | kernel_size: 1 1087 | weight_filler { 1088 | type: "xavier" 1089 | } 1090 | } 1091 | } 1092 | layer { 1093 | name: "fire11/expand1x1/bn" 1094 | type: "BatchNorm" 1095 | bottom: "fire11/expand1x1" 1096 | top: "fire11/expand1x1" 1097 | param { 1098 | lr_mult: 0.0 1099 | decay_mult: 0.0 1100 | } 1101 | param { 1102 | lr_mult: 0.0 1103 | decay_mult: 0.0 1104 | } 1105 | param { 1106 | lr_mult: 0.0 1107 | decay_mult: 0.0 1108 | } 1109 | } 1110 | layer { 1111 | name: "fire11/expand1x1/scale" 1112 | type: "Scale" 1113 | bottom: "fire11/expand1x1" 1114 | top: "fire11/expand1x1" 1115 | param { 1116 | lr_mult: 1.0 1117 | decay_mult: 0.0 1118 | } 1119 | param { 1120 | lr_mult: 2.0 1121 | decay_mult: 0.0 1122 | } 1123 | scale_param { 1124 | filler { 1125 | value: 1.0 1126 | } 1127 | bias_term: true 1128 | bias_filler { 1129 | value: 0.0 1130 | } 1131 | } 1132 | } 1133 | layer { 1134 | name: "fire11/relu_expand1x1" 1135 | type: "ReLU" 1136 | bottom: "fire11/expand1x1" 1137 | top: "fire11/expand1x1" 1138 | } 1139 | layer { 1140 | name: "fire11/expand3x3" 1141 | type: "Convolution" 1142 | bottom: "fire11/squeeze1x1" 1143 | top: "fire11/expand3x3" 1144 | convolution_param { 1145 | num_output: 44 1146 | pad: 1 1147 | kernel_size: 3 1148 | weight_filler { 1149 | type: "xavier" 1150 | } 1151 | } 1152 | } 1153 | layer { 1154 | name: "fire11/expand3x3/bn" 1155 | type: "BatchNorm" 1156 | bottom: "fire11/expand3x3" 1157 | top: "fire11/expand3x3" 1158 | param { 1159 | lr_mult: 0.0 1160 | decay_mult: 0.0 1161 | } 1162 | param { 1163 | lr_mult: 0.0 1164 | decay_mult: 0.0 1165 | } 1166 | param { 1167 | lr_mult: 0.0 1168 | decay_mult: 0.0 1169 | } 1170 | } 1171 | layer { 1172 | name: "fire11/expand3x3/scale" 1173 | type: "Scale" 1174 | bottom: "fire11/expand3x3" 1175 | top: "fire11/expand3x3" 1176 | param { 1177 | lr_mult: 1.0 1178 | decay_mult: 0.0 1179 | } 1180 | param { 1181 | lr_mult: 2.0 1182 | decay_mult: 0.0 1183 | } 1184 | scale_param { 1185 | filler { 1186 | value: 1.0 1187 | } 1188 | bias_term: true 1189 | bias_filler { 1190 | value: 0.0 1191 | } 1192 | } 1193 | } 1194 | layer { 1195 | name: "fire11/relu_expand3x3" 1196 | type: "ReLU" 1197 | bottom: "fire11/expand3x3" 1198 | top: "fire11/expand3x3" 1199 | } 1200 | layer { 1201 | name: "fire11/concat" 1202 | type: "Concat" 1203 | bottom: "fire11/expand1x1" 1204 | bottom: "fire11/expand3x3" 1205 | top: "fire11/concat" 1206 | } 1207 | layer { 1208 | name: "conv12_1" 1209 | type: "Convolution" 1210 | bottom: "fire11/concat" 1211 | top: "conv12_1" 1212 | param { 1213 | lr_mult: 1.0 1214 | decay_mult: 1.0 1215 | } 1216 | convolution_param { 1217 | num_output: 51 1218 | bias_term: false 1219 | kernel_size: 1 1220 | weight_filler { 1221 | type: "msra" 1222 | } 1223 | } 1224 | } 1225 | layer { 1226 | name: "conv12_1/bn" 1227 | type: "BatchNorm" 1228 | bottom: "conv12_1" 1229 | top: "conv12_1" 1230 | param { 1231 | lr_mult: 0.0 1232 | decay_mult: 0.0 1233 | } 1234 | param { 1235 | lr_mult: 0.0 1236 | decay_mult: 0.0 1237 | } 1238 | param { 1239 | lr_mult: 0.0 1240 | decay_mult: 0.0 1241 | } 1242 | } 1243 | layer { 1244 | name: "conv12_1/scale" 1245 | type: "Scale" 1246 | bottom: "conv12_1" 1247 | top: "conv12_1" 1248 | param { 1249 | lr_mult: 1.0 1250 | decay_mult: 0.0 1251 | } 1252 | param { 1253 | lr_mult: 2.0 1254 | decay_mult: 0.0 1255 | } 1256 | scale_param { 1257 | filler { 1258 | value: 1.0 1259 | } 1260 | bias_term: true 1261 | bias_filler { 1262 | value: 0.0 1263 | } 1264 | } 1265 | } 1266 | layer { 1267 | name: "conv12_1/relu" 1268 | type: "ReLU" 1269 | bottom: "conv12_1" 1270 | top: "conv12_1" 1271 | } 1272 | layer { 1273 | name: "conv12_2" 1274 | type: "Convolution" 1275 | bottom: "conv12_1" 1276 | top: "conv12_2" 1277 | param { 1278 | lr_mult: 1.0 1279 | decay_mult: 1.0 1280 | } 1281 | convolution_param { 1282 | num_output: 46 1283 | bias_term: false 1284 | pad: 1 1285 | kernel_size: 3 1286 | stride: 2 1287 | weight_filler { 1288 | type: "msra" 1289 | } 1290 | } 1291 | } 1292 | layer { 1293 | name: "conv12_2/bn" 1294 | type: "BatchNorm" 1295 | bottom: "conv12_2" 1296 | top: "conv12_2" 1297 | param { 1298 | lr_mult: 0.0 1299 | decay_mult: 0.0 1300 | } 1301 | param { 1302 | lr_mult: 0.0 1303 | decay_mult: 0.0 1304 | } 1305 | param { 1306 | lr_mult: 0.0 1307 | decay_mult: 0.0 1308 | } 1309 | } 1310 | layer { 1311 | name: "conv12_2/scale" 1312 | type: "Scale" 1313 | bottom: "conv12_2" 1314 | top: "conv12_2" 1315 | param { 1316 | lr_mult: 1.0 1317 | decay_mult: 0.0 1318 | } 1319 | param { 1320 | lr_mult: 2.0 1321 | decay_mult: 0.0 1322 | } 1323 | scale_param { 1324 | filler { 1325 | value: 1.0 1326 | } 1327 | bias_term: true 1328 | bias_filler { 1329 | value: 0.0 1330 | } 1331 | } 1332 | } 1333 | layer { 1334 | name: "conv12_2/relu" 1335 | type: "ReLU" 1336 | bottom: "conv12_2" 1337 | top: "conv12_2" 1338 | } 1339 | layer { 1340 | name: "conv13_1" 1341 | type: "Convolution" 1342 | bottom: "conv12_2" 1343 | top: "conv13_1" 1344 | param { 1345 | lr_mult: 1.0 1346 | decay_mult: 1.0 1347 | } 1348 | convolution_param { 1349 | num_output: 55 1350 | bias_term: false 1351 | kernel_size: 1 1352 | weight_filler { 1353 | type: "msra" 1354 | } 1355 | } 1356 | } 1357 | layer { 1358 | name: "conv13_1/bn" 1359 | type: "BatchNorm" 1360 | bottom: "conv13_1" 1361 | top: "conv13_1" 1362 | param { 1363 | lr_mult: 0.0 1364 | decay_mult: 0.0 1365 | } 1366 | param { 1367 | lr_mult: 0.0 1368 | decay_mult: 0.0 1369 | } 1370 | param { 1371 | lr_mult: 0.0 1372 | decay_mult: 0.0 1373 | } 1374 | } 1375 | layer { 1376 | name: "conv13_1/scale" 1377 | type: "Scale" 1378 | bottom: "conv13_1" 1379 | top: "conv13_1" 1380 | param { 1381 | lr_mult: 1.0 1382 | decay_mult: 0.0 1383 | } 1384 | param { 1385 | lr_mult: 2.0 1386 | decay_mult: 0.0 1387 | } 1388 | scale_param { 1389 | filler { 1390 | value: 1.0 1391 | } 1392 | bias_term: true 1393 | bias_filler { 1394 | value: 0.0 1395 | } 1396 | } 1397 | } 1398 | layer { 1399 | name: "conv13_1/relu" 1400 | type: "ReLU" 1401 | bottom: "conv13_1" 1402 | top: "conv13_1" 1403 | } 1404 | layer { 1405 | name: "conv13_2" 1406 | type: "Convolution" 1407 | bottom: "conv13_1" 1408 | top: "conv13_2" 1409 | param { 1410 | lr_mult: 1.0 1411 | decay_mult: 1.0 1412 | } 1413 | convolution_param { 1414 | num_output: 85 1415 | bias_term: false 1416 | pad: 1 1417 | kernel_size: 3 1418 | stride: 2 1419 | weight_filler { 1420 | type: "msra" 1421 | } 1422 | } 1423 | } 1424 | layer { 1425 | name: "conv13_2/bn" 1426 | type: "BatchNorm" 1427 | bottom: "conv13_2" 1428 | top: "conv13_2" 1429 | param { 1430 | lr_mult: 0.0 1431 | decay_mult: 0.0 1432 | } 1433 | param { 1434 | lr_mult: 0.0 1435 | decay_mult: 0.0 1436 | } 1437 | param { 1438 | lr_mult: 0.0 1439 | decay_mult: 0.0 1440 | } 1441 | } 1442 | layer { 1443 | name: "conv13_2/scale" 1444 | type: "Scale" 1445 | bottom: "conv13_2" 1446 | top: "conv13_2" 1447 | param { 1448 | lr_mult: 1.0 1449 | decay_mult: 0.0 1450 | } 1451 | param { 1452 | lr_mult: 2.0 1453 | decay_mult: 0.0 1454 | } 1455 | scale_param { 1456 | filler { 1457 | value: 1.0 1458 | } 1459 | bias_term: true 1460 | bias_filler { 1461 | value: 0.0 1462 | } 1463 | } 1464 | } 1465 | layer { 1466 | name: "conv13_2/relu" 1467 | type: "ReLU" 1468 | bottom: "conv13_2" 1469 | top: "conv13_2" 1470 | } 1471 | layer { 1472 | name: "fire5/bn" 1473 | type: "BatchNorm" 1474 | bottom: "fire5/concat" 1475 | top: "fire5/normal" 1476 | param { 1477 | lr_mult: 0.0 1478 | decay_mult: 0.0 1479 | } 1480 | param { 1481 | lr_mult: 0.0 1482 | decay_mult: 0.0 1483 | } 1484 | param { 1485 | lr_mult: 0.0 1486 | decay_mult: 0.0 1487 | } 1488 | } 1489 | layer { 1490 | name: "fire5/scale" 1491 | type: "Scale" 1492 | bottom: "fire5/normal" 1493 | top: "fire5/normal" 1494 | param { 1495 | lr_mult: 1.0 1496 | decay_mult: 0.0 1497 | } 1498 | param { 1499 | lr_mult: 2.0 1500 | decay_mult: 0.0 1501 | } 1502 | scale_param { 1503 | filler { 1504 | value: 1.0 1505 | } 1506 | bias_term: true 1507 | bias_filler { 1508 | value: 0.0 1509 | } 1510 | } 1511 | } 1512 | layer { 1513 | name: "fire5_mbox_loc" 1514 | type: "Convolution" 1515 | bottom: "fire5/normal" 1516 | top: "fire5_mbox_loc" 1517 | param { 1518 | lr_mult: 1.0 1519 | decay_mult: 1.0 1520 | } 1521 | param { 1522 | lr_mult: 2.0 1523 | decay_mult: 0.0 1524 | } 1525 | convolution_param { 1526 | num_output: 16 1527 | pad: 1 1528 | kernel_size: 3 1529 | stride: 1 1530 | weight_filler { 1531 | type: "msra" 1532 | } 1533 | bias_filler { 1534 | type: "constant" 1535 | value: 0.0 1536 | } 1537 | } 1538 | } 1539 | layer { 1540 | name: "fire5_mbox_loc_perm" 1541 | type: "Permute" 1542 | bottom: "fire5_mbox_loc" 1543 | top: "fire5_mbox_loc_perm" 1544 | permute_param { 1545 | order: 0 1546 | order: 2 1547 | order: 3 1548 | order: 1 1549 | } 1550 | } 1551 | layer { 1552 | name: "fire5_mbox_loc_flat" 1553 | type: "Flatten" 1554 | bottom: "fire5_mbox_loc_perm" 1555 | top: "fire5_mbox_loc_flat" 1556 | flatten_param { 1557 | axis: 1 1558 | } 1559 | } 1560 | layer { 1561 | name: "fire5_mbox_conf" 1562 | type: "Convolution" 1563 | bottom: "fire5/normal" 1564 | top: "fire5_mbox_conf" 1565 | param { 1566 | lr_mult: 1.0 1567 | decay_mult: 1.0 1568 | } 1569 | param { 1570 | lr_mult: 2.0 1571 | decay_mult: 0.0 1572 | } 1573 | convolution_param { 1574 | num_output: 84 1575 | pad: 1 1576 | kernel_size: 3 1577 | stride: 1 1578 | weight_filler { 1579 | type: "msra" 1580 | } 1581 | bias_filler { 1582 | type: "constant" 1583 | value: 0.0 1584 | } 1585 | } 1586 | } 1587 | layer { 1588 | name: "fire5_mbox_conf_perm" 1589 | type: "Permute" 1590 | bottom: "fire5_mbox_conf" 1591 | top: "fire5_mbox_conf_perm" 1592 | permute_param { 1593 | order: 0 1594 | order: 2 1595 | order: 3 1596 | order: 1 1597 | } 1598 | } 1599 | layer { 1600 | name: "fire5_mbox_conf_flat" 1601 | type: "Flatten" 1602 | bottom: "fire5_mbox_conf_perm" 1603 | top: "fire5_mbox_conf_flat" 1604 | flatten_param { 1605 | axis: 1 1606 | } 1607 | } 1608 | layer { 1609 | name: "fire5_mbox_priorbox" 1610 | type: "PriorBox" 1611 | bottom: "fire5/normal" 1612 | bottom: "data" 1613 | top: "fire5_mbox_priorbox" 1614 | prior_box_param { 1615 | min_size: 21.0 1616 | max_size: 45.0 1617 | aspect_ratio: 2.0 1618 | flip: true 1619 | clip: false 1620 | variance: 0.10000000149 1621 | variance: 0.10000000149 1622 | variance: 0.20000000298 1623 | variance: 0.20000000298 1624 | step: 8.0 1625 | } 1626 | } 1627 | layer { 1628 | name: "fire9_mbox_loc" 1629 | type: "Convolution" 1630 | bottom: "fire9/concat" 1631 | top: "fire9_mbox_loc" 1632 | param { 1633 | lr_mult: 1.0 1634 | decay_mult: 1.0 1635 | } 1636 | param { 1637 | lr_mult: 2.0 1638 | decay_mult: 0.0 1639 | } 1640 | convolution_param { 1641 | num_output: 24 1642 | pad: 1 1643 | kernel_size: 3 1644 | stride: 1 1645 | weight_filler { 1646 | type: "msra" 1647 | } 1648 | bias_filler { 1649 | type: "constant" 1650 | value: 0.0 1651 | } 1652 | } 1653 | } 1654 | layer { 1655 | name: "fire9_mbox_loc_perm" 1656 | type: "Permute" 1657 | bottom: "fire9_mbox_loc" 1658 | top: "fire9_mbox_loc_perm" 1659 | permute_param { 1660 | order: 0 1661 | order: 2 1662 | order: 3 1663 | order: 1 1664 | } 1665 | } 1666 | layer { 1667 | name: "fire9_mbox_loc_flat" 1668 | type: "Flatten" 1669 | bottom: "fire9_mbox_loc_perm" 1670 | top: "fire9_mbox_loc_flat" 1671 | flatten_param { 1672 | axis: 1 1673 | } 1674 | } 1675 | layer { 1676 | name: "fire9_mbox_conf" 1677 | type: "Convolution" 1678 | bottom: "fire9/concat" 1679 | top: "fire9_mbox_conf" 1680 | param { 1681 | lr_mult: 1.0 1682 | decay_mult: 1.0 1683 | } 1684 | param { 1685 | lr_mult: 2.0 1686 | decay_mult: 0.0 1687 | } 1688 | convolution_param { 1689 | num_output: 126 1690 | pad: 1 1691 | kernel_size: 3 1692 | stride: 1 1693 | weight_filler { 1694 | type: "msra" 1695 | } 1696 | bias_filler { 1697 | type: "constant" 1698 | value: 0.0 1699 | } 1700 | } 1701 | } 1702 | layer { 1703 | name: "fire9_mbox_conf_perm" 1704 | type: "Permute" 1705 | bottom: "fire9_mbox_conf" 1706 | top: "fire9_mbox_conf_perm" 1707 | permute_param { 1708 | order: 0 1709 | order: 2 1710 | order: 3 1711 | order: 1 1712 | } 1713 | } 1714 | layer { 1715 | name: "fire9_mbox_conf_flat" 1716 | type: "Flatten" 1717 | bottom: "fire9_mbox_conf_perm" 1718 | top: "fire9_mbox_conf_flat" 1719 | flatten_param { 1720 | axis: 1 1721 | } 1722 | } 1723 | layer { 1724 | name: "fire9_mbox_priorbox" 1725 | type: "PriorBox" 1726 | bottom: "fire9/concat" 1727 | bottom: "data" 1728 | top: "fire9_mbox_priorbox" 1729 | prior_box_param { 1730 | min_size: 45.0 1731 | max_size: 99.0 1732 | aspect_ratio: 2.0 1733 | aspect_ratio: 3.0 1734 | flip: true 1735 | clip: false 1736 | variance: 0.10000000149 1737 | variance: 0.10000000149 1738 | variance: 0.20000000298 1739 | variance: 0.20000000298 1740 | step: 16.0 1741 | } 1742 | } 1743 | layer { 1744 | name: "fire10_mbox_loc" 1745 | type: "Convolution" 1746 | bottom: "fire10/concat" 1747 | top: "fire10_mbox_loc" 1748 | param { 1749 | lr_mult: 1.0 1750 | decay_mult: 1.0 1751 | } 1752 | param { 1753 | lr_mult: 2.0 1754 | decay_mult: 0.0 1755 | } 1756 | convolution_param { 1757 | num_output: 24 1758 | pad: 1 1759 | kernel_size: 3 1760 | stride: 1 1761 | weight_filler { 1762 | type: "msra" 1763 | } 1764 | bias_filler { 1765 | type: "constant" 1766 | value: 0.0 1767 | } 1768 | } 1769 | } 1770 | layer { 1771 | name: "fire10_mbox_loc_perm" 1772 | type: "Permute" 1773 | bottom: "fire10_mbox_loc" 1774 | top: "fire10_mbox_loc_perm" 1775 | permute_param { 1776 | order: 0 1777 | order: 2 1778 | order: 3 1779 | order: 1 1780 | } 1781 | } 1782 | layer { 1783 | name: "fire10_mbox_loc_flat" 1784 | type: "Flatten" 1785 | bottom: "fire10_mbox_loc_perm" 1786 | top: "fire10_mbox_loc_flat" 1787 | flatten_param { 1788 | axis: 1 1789 | } 1790 | } 1791 | layer { 1792 | name: "fire10_mbox_conf" 1793 | type: "Convolution" 1794 | bottom: "fire10/concat" 1795 | top: "fire10_mbox_conf" 1796 | param { 1797 | lr_mult: 1.0 1798 | decay_mult: 1.0 1799 | } 1800 | param { 1801 | lr_mult: 2.0 1802 | decay_mult: 0.0 1803 | } 1804 | convolution_param { 1805 | num_output: 126 1806 | pad: 1 1807 | kernel_size: 3 1808 | stride: 1 1809 | weight_filler { 1810 | type: "msra" 1811 | } 1812 | bias_filler { 1813 | type: "constant" 1814 | value: 0.0 1815 | } 1816 | } 1817 | } 1818 | layer { 1819 | name: "fire10_mbox_conf_perm" 1820 | type: "Permute" 1821 | bottom: "fire10_mbox_conf" 1822 | top: "fire10_mbox_conf_perm" 1823 | permute_param { 1824 | order: 0 1825 | order: 2 1826 | order: 3 1827 | order: 1 1828 | } 1829 | } 1830 | layer { 1831 | name: "fire10_mbox_conf_flat" 1832 | type: "Flatten" 1833 | bottom: "fire10_mbox_conf_perm" 1834 | top: "fire10_mbox_conf_flat" 1835 | flatten_param { 1836 | axis: 1 1837 | } 1838 | } 1839 | layer { 1840 | name: "fire10_mbox_priorbox" 1841 | type: "PriorBox" 1842 | bottom: "fire10/concat" 1843 | bottom: "data" 1844 | top: "fire10_mbox_priorbox" 1845 | prior_box_param { 1846 | min_size: 99.0 1847 | max_size: 153.0 1848 | aspect_ratio: 2.0 1849 | aspect_ratio: 3.0 1850 | flip: true 1851 | clip: false 1852 | variance: 0.10000000149 1853 | variance: 0.10000000149 1854 | variance: 0.20000000298 1855 | variance: 0.20000000298 1856 | step: 32.0 1857 | } 1858 | } 1859 | layer { 1860 | name: "fire11_mbox_loc" 1861 | type: "Convolution" 1862 | bottom: "fire11/concat" 1863 | top: "fire11_mbox_loc" 1864 | param { 1865 | lr_mult: 1.0 1866 | decay_mult: 1.0 1867 | } 1868 | param { 1869 | lr_mult: 2.0 1870 | decay_mult: 0.0 1871 | } 1872 | convolution_param { 1873 | num_output: 24 1874 | pad: 1 1875 | kernel_size: 3 1876 | stride: 1 1877 | weight_filler { 1878 | type: "msra" 1879 | } 1880 | bias_filler { 1881 | type: "constant" 1882 | value: 0.0 1883 | } 1884 | } 1885 | } 1886 | layer { 1887 | name: "fire11_mbox_loc_perm" 1888 | type: "Permute" 1889 | bottom: "fire11_mbox_loc" 1890 | top: "fire11_mbox_loc_perm" 1891 | permute_param { 1892 | order: 0 1893 | order: 2 1894 | order: 3 1895 | order: 1 1896 | } 1897 | } 1898 | layer { 1899 | name: "fire11_mbox_loc_flat" 1900 | type: "Flatten" 1901 | bottom: "fire11_mbox_loc_perm" 1902 | top: "fire11_mbox_loc_flat" 1903 | flatten_param { 1904 | axis: 1 1905 | } 1906 | } 1907 | layer { 1908 | name: "fire11_mbox_conf" 1909 | type: "Convolution" 1910 | bottom: "fire11/concat" 1911 | top: "fire11_mbox_conf" 1912 | param { 1913 | lr_mult: 1.0 1914 | decay_mult: 1.0 1915 | } 1916 | param { 1917 | lr_mult: 2.0 1918 | decay_mult: 0.0 1919 | } 1920 | convolution_param { 1921 | num_output: 126 1922 | pad: 1 1923 | kernel_size: 3 1924 | stride: 1 1925 | weight_filler { 1926 | type: "msra" 1927 | } 1928 | bias_filler { 1929 | type: "constant" 1930 | value: 0.0 1931 | } 1932 | } 1933 | } 1934 | layer { 1935 | name: "fire11_mbox_conf_perm" 1936 | type: "Permute" 1937 | bottom: "fire11_mbox_conf" 1938 | top: "fire11_mbox_conf_perm" 1939 | permute_param { 1940 | order: 0 1941 | order: 2 1942 | order: 3 1943 | order: 1 1944 | } 1945 | } 1946 | layer { 1947 | name: "fire11_mbox_conf_flat" 1948 | type: "Flatten" 1949 | bottom: "fire11_mbox_conf_perm" 1950 | top: "fire11_mbox_conf_flat" 1951 | flatten_param { 1952 | axis: 1 1953 | } 1954 | } 1955 | layer { 1956 | name: "fire11_mbox_priorbox" 1957 | type: "PriorBox" 1958 | bottom: "fire11/concat" 1959 | bottom: "data" 1960 | top: "fire11_mbox_priorbox" 1961 | prior_box_param { 1962 | min_size: 153.0 1963 | max_size: 207.0 1964 | aspect_ratio: 2.0 1965 | aspect_ratio: 3.0 1966 | flip: true 1967 | clip: false 1968 | variance: 0.10000000149 1969 | variance: 0.10000000149 1970 | variance: 0.20000000298 1971 | variance: 0.20000000298 1972 | step: 64.0 1973 | } 1974 | } 1975 | layer { 1976 | name: "conv12_2_mbox_loc" 1977 | type: "Convolution" 1978 | bottom: "conv12_2" 1979 | top: "conv12_2_mbox_loc" 1980 | param { 1981 | lr_mult: 1.0 1982 | decay_mult: 1.0 1983 | } 1984 | param { 1985 | lr_mult: 2.0 1986 | decay_mult: 0.0 1987 | } 1988 | convolution_param { 1989 | num_output: 24 1990 | pad: 1 1991 | kernel_size: 3 1992 | stride: 1 1993 | weight_filler { 1994 | type: "msra" 1995 | } 1996 | bias_filler { 1997 | type: "constant" 1998 | value: 0.0 1999 | } 2000 | } 2001 | } 2002 | layer { 2003 | name: "conv12_2_mbox_loc_perm" 2004 | type: "Permute" 2005 | bottom: "conv12_2_mbox_loc" 2006 | top: "conv12_2_mbox_loc_perm" 2007 | permute_param { 2008 | order: 0 2009 | order: 2 2010 | order: 3 2011 | order: 1 2012 | } 2013 | } 2014 | layer { 2015 | name: "conv12_2_mbox_loc_flat" 2016 | type: "Flatten" 2017 | bottom: "conv12_2_mbox_loc_perm" 2018 | top: "conv12_2_mbox_loc_flat" 2019 | flatten_param { 2020 | axis: 1 2021 | } 2022 | } 2023 | layer { 2024 | name: "conv12_2_mbox_conf" 2025 | type: "Convolution" 2026 | bottom: "conv12_2" 2027 | top: "conv12_2_mbox_conf" 2028 | param { 2029 | lr_mult: 1.0 2030 | decay_mult: 1.0 2031 | } 2032 | param { 2033 | lr_mult: 2.0 2034 | decay_mult: 0.0 2035 | } 2036 | convolution_param { 2037 | num_output: 126 2038 | pad: 1 2039 | kernel_size: 3 2040 | stride: 1 2041 | weight_filler { 2042 | type: "msra" 2043 | } 2044 | bias_filler { 2045 | type: "constant" 2046 | value: 0.0 2047 | } 2048 | } 2049 | } 2050 | layer { 2051 | name: "conv12_2_mbox_conf_perm" 2052 | type: "Permute" 2053 | bottom: "conv12_2_mbox_conf" 2054 | top: "conv12_2_mbox_conf_perm" 2055 | permute_param { 2056 | order: 0 2057 | order: 2 2058 | order: 3 2059 | order: 1 2060 | } 2061 | } 2062 | layer { 2063 | name: "conv12_2_mbox_conf_flat" 2064 | type: "Flatten" 2065 | bottom: "conv12_2_mbox_conf_perm" 2066 | top: "conv12_2_mbox_conf_flat" 2067 | flatten_param { 2068 | axis: 1 2069 | } 2070 | } 2071 | layer { 2072 | name: "conv12_2_mbox_priorbox" 2073 | type: "PriorBox" 2074 | bottom: "conv12_2" 2075 | bottom: "data" 2076 | top: "conv12_2_mbox_priorbox" 2077 | prior_box_param { 2078 | min_size: 207.0 2079 | max_size: 261.0 2080 | aspect_ratio: 2.0 2081 | aspect_ratio: 3.0 2082 | flip: true 2083 | clip: false 2084 | variance: 0.10000000149 2085 | variance: 0.10000000149 2086 | variance: 0.20000000298 2087 | variance: 0.20000000298 2088 | step: 100.0 2089 | } 2090 | } 2091 | layer { 2092 | name: "conv13_2_mbox_loc" 2093 | type: "Convolution" 2094 | bottom: "conv13_2" 2095 | top: "conv13_2_mbox_loc" 2096 | param { 2097 | lr_mult: 1.0 2098 | decay_mult: 1.0 2099 | } 2100 | param { 2101 | lr_mult: 2.0 2102 | decay_mult: 0.0 2103 | } 2104 | convolution_param { 2105 | num_output: 16 2106 | pad: 1 2107 | kernel_size: 3 2108 | stride: 1 2109 | weight_filler { 2110 | type: "msra" 2111 | } 2112 | bias_filler { 2113 | type: "constant" 2114 | value: 0.0 2115 | } 2116 | } 2117 | } 2118 | layer { 2119 | name: "conv13_2_mbox_loc_perm" 2120 | type: "Permute" 2121 | bottom: "conv13_2_mbox_loc" 2122 | top: "conv13_2_mbox_loc_perm" 2123 | permute_param { 2124 | order: 0 2125 | order: 2 2126 | order: 3 2127 | order: 1 2128 | } 2129 | } 2130 | layer { 2131 | name: "conv13_2_mbox_loc_flat" 2132 | type: "Flatten" 2133 | bottom: "conv13_2_mbox_loc_perm" 2134 | top: "conv13_2_mbox_loc_flat" 2135 | flatten_param { 2136 | axis: 1 2137 | } 2138 | } 2139 | layer { 2140 | name: "conv13_2_mbox_conf" 2141 | type: "Convolution" 2142 | bottom: "conv13_2" 2143 | top: "conv13_2_mbox_conf" 2144 | param { 2145 | lr_mult: 1.0 2146 | decay_mult: 1.0 2147 | } 2148 | param { 2149 | lr_mult: 2.0 2150 | decay_mult: 0.0 2151 | } 2152 | convolution_param { 2153 | num_output: 84 2154 | pad: 1 2155 | kernel_size: 3 2156 | stride: 1 2157 | weight_filler { 2158 | type: "msra" 2159 | } 2160 | bias_filler { 2161 | type: "constant" 2162 | value: 0.0 2163 | } 2164 | } 2165 | } 2166 | layer { 2167 | name: "conv13_2_mbox_conf_perm" 2168 | type: "Permute" 2169 | bottom: "conv13_2_mbox_conf" 2170 | top: "conv13_2_mbox_conf_perm" 2171 | permute_param { 2172 | order: 0 2173 | order: 2 2174 | order: 3 2175 | order: 1 2176 | } 2177 | } 2178 | layer { 2179 | name: "conv13_2_mbox_conf_flat" 2180 | type: "Flatten" 2181 | bottom: "conv13_2_mbox_conf_perm" 2182 | top: "conv13_2_mbox_conf_flat" 2183 | flatten_param { 2184 | axis: 1 2185 | } 2186 | } 2187 | layer { 2188 | name: "conv13_2_mbox_priorbox" 2189 | type: "PriorBox" 2190 | bottom: "conv13_2" 2191 | bottom: "data" 2192 | top: "conv13_2_mbox_priorbox" 2193 | prior_box_param { 2194 | min_size: 261.0 2195 | max_size: 315.0 2196 | aspect_ratio: 2.0 2197 | flip: true 2198 | clip: false 2199 | variance: 0.10000000149 2200 | variance: 0.10000000149 2201 | variance: 0.20000000298 2202 | variance: 0.20000000298 2203 | step: 300.0 2204 | } 2205 | } 2206 | layer { 2207 | name: "mbox_loc" 2208 | type: "Concat" 2209 | bottom: "fire5_mbox_loc_flat" 2210 | bottom: "fire9_mbox_loc_flat" 2211 | bottom: "fire10_mbox_loc_flat" 2212 | bottom: "fire11_mbox_loc_flat" 2213 | bottom: "conv12_2_mbox_loc_flat" 2214 | bottom: "conv13_2_mbox_loc_flat" 2215 | top: "mbox_loc" 2216 | concat_param { 2217 | axis: 1 2218 | } 2219 | } 2220 | layer { 2221 | name: "mbox_conf" 2222 | type: "Concat" 2223 | bottom: "fire5_mbox_conf_flat" 2224 | bottom: "fire9_mbox_conf_flat" 2225 | bottom: "fire10_mbox_conf_flat" 2226 | bottom: "fire11_mbox_conf_flat" 2227 | bottom: "conv12_2_mbox_conf_flat" 2228 | bottom: "conv13_2_mbox_conf_flat" 2229 | top: "mbox_conf" 2230 | concat_param { 2231 | axis: 1 2232 | } 2233 | } 2234 | layer { 2235 | name: "mbox_priorbox" 2236 | type: "Concat" 2237 | bottom: "fire5_mbox_priorbox" 2238 | bottom: "fire9_mbox_priorbox" 2239 | bottom: "fire10_mbox_priorbox" 2240 | bottom: "fire11_mbox_priorbox" 2241 | bottom: "conv12_2_mbox_priorbox" 2242 | bottom: "conv13_2_mbox_priorbox" 2243 | top: "mbox_priorbox" 2244 | concat_param { 2245 | axis: 2 2246 | } 2247 | } 2248 | layer { 2249 | name: "mbox_conf_reshape" 2250 | type: "Reshape" 2251 | bottom: "mbox_conf" 2252 | top: "mbox_conf_reshape" 2253 | reshape_param { 2254 | shape { 2255 | dim: 0 2256 | dim: -1 2257 | dim: 21 2258 | } 2259 | } 2260 | } 2261 | layer { 2262 | name: "mbox_conf_softmax" 2263 | type: "Softmax" 2264 | bottom: "mbox_conf_reshape" 2265 | top: "mbox_conf_softmax" 2266 | softmax_param { 2267 | axis: 2 2268 | } 2269 | } 2270 | layer { 2271 | name: "mbox_conf_flatten" 2272 | type: "Flatten" 2273 | bottom: "mbox_conf_softmax" 2274 | top: "mbox_conf_flatten" 2275 | flatten_param { 2276 | axis: 1 2277 | } 2278 | } 2279 | layer { 2280 | name: "detection_out" 2281 | type: "DetectionOutput" 2282 | bottom: "mbox_loc" 2283 | bottom: "mbox_conf_flatten" 2284 | bottom: "mbox_priorbox" 2285 | top: "detection_out" 2286 | include { 2287 | phase: TEST 2288 | } 2289 | detection_output_param { 2290 | num_classes: 21 2291 | share_location: true 2292 | background_label_id: 0 2293 | nms_param { 2294 | nms_threshold: 0.449999988079 2295 | top_k: 100 2296 | } 2297 | code_type: CENTER_SIZE 2298 | keep_top_k: 100 2299 | confidence_threshold: 0.25 2300 | } 2301 | } 2302 | -------------------------------------------------------------------------------- /python_script/generate.py: -------------------------------------------------------------------------------- 1 | # created by lampson.song @ 2018-07-14 2 | # generate tiny-ssd prototxt 3 | 4 | import sys, os 5 | sys.path.insert(0,'/home/lampson/1T_disk/workspace/objectDetection/ssd-caffe/python') # your caffe path 6 | import caffe 7 | 8 | def fire(net, net_bottom, prefix, out1, out2, out3): 9 | if(prefix[0:6] == "fire10" or prefix[0:6] == "fire11"): 10 | net.tops[prefix+'/squeeze1x1'] = caffe.layers.Convolution(net_bottom, num_output=out1, 11 | kernel_size=1, weight_filler={"type":"xavier"}) 12 | net.tops[prefix+'/squeeze1x1/bn'] = caffe.layers.BatchNorm(net.tops[prefix+'/squeeze1x1'], param=[dict(lr_mult=0, decay_mult=0), 13 | dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0)], in_place=True) 14 | net.tops[prefix+'/squeeze1x1/scale'] = caffe.layers.Scale(net.tops[prefix+'/squeeze1x1/bn'], param=[dict(lr_mult=1.0, decay_mult=0.0), 15 | dict(lr_mult=2.0, decay_mult=0.0)], scale_param={'filler':{'value':1}, 'bias_term':True, 'bias_filler':{'value':0}}, in_place=True) 16 | else: 17 | net.tops[prefix+'/squeeze1x1'] = caffe.layers.Convolution(net_bottom, num_output=out1, 18 | kernel_size=1, weight_filler={"type":"xavier"}, param=[dict(lr_mult=1.0, decay_mult=0.0), dict(lr_mult=1.0, decay_mult=0.0)]) 19 | 20 | if(prefix[0:6] == "fire10" or prefix[0:6] == "fire11"): 21 | net.tops[prefix+'/expand1x1'] = caffe.layers.Convolution(net.tops[prefix+'/squeeze1x1'], num_output=out2, 22 | kernel_size=1, weight_filler={"type":"xavier"}) 23 | else: 24 | net.tops[prefix+'/expand1x1'] = caffe.layers.Convolution(net.tops[prefix+'/squeeze1x1'], num_output=out2, 25 | kernel_size=1, weight_filler={"type":"xavier"}, param=[dict(lr_mult=1.0, decay_mult=0.0), dict(lr_mult=1.0, decay_mult=0.0)]) 26 | 27 | next_top = net.tops[prefix+'/expand1x1'] 28 | if(prefix[0:5] == "fire9" or prefix[0:6] == "fire10" or prefix[0:6] == "fire11"): 29 | net.tops[prefix+'/expand1x1/bn'] = caffe.layers.BatchNorm(next_top, param=[dict(lr_mult=0, decay_mult=0), 30 | dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0)], in_place=True) 31 | net.tops[prefix+'/expand1x1/scale'] = caffe.layers.Scale(net.tops[prefix+'/expand1x1/bn'], param=[dict(lr_mult=1.0, decay_mult=0.0), 32 | dict(lr_mult=2.0, decay_mult=0.0)], scale_param={'filler':{'value':1}, 'bias_term':True, 'bias_filler':{'value':0}}, in_place=True) 33 | 34 | next_top = net.tops[prefix+'/expand1x1/scale'] 35 | 36 | net.tops[prefix+'/relu_expand1x1'] = caffe.layers.ReLU(next_top, in_place=True) 37 | 38 | if(prefix[0:6] == "fire10" or prefix[0:6] == "fire11"): 39 | net.tops[prefix+'/expand3x3'] = caffe.layers.Convolution(net.tops[prefix+'/squeeze1x1'], num_output=out3, pad=1, 40 | kernel_size=3, weight_filler={'type':'xavier'}) 41 | else: 42 | net.tops[prefix+'/expand3x3'] = caffe.layers.Convolution(net.tops[prefix+'/squeeze1x1'], num_output=out3, pad=1, 43 | kernel_size=3, weight_filler={'type':'xavier'}, param=[dict(lr_mult=1.0, decay_mult=0.0), dict(lr_mult=1.0, decay_mult=0.0)]) 44 | 45 | next_top = net.tops[prefix+'/expand3x3'] 46 | if(prefix[0:5] == "fire9" or prefix[0:6] == "fire10" or prefix[0:6] == "fire11"): 47 | net.tops[prefix+'/expand3x3/bn'] = caffe.layers.BatchNorm(next_top, param=[dict(lr_mult=0, decay_mult=0), 48 | dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0)], in_place=True) 49 | net.tops[prefix+'/expand3x3/scale'] = caffe.layers.Scale(net.tops[prefix+'/expand3x3/bn'], param=[dict(lr_mult=1.0, decay_mult=0.0), 50 | dict(lr_mult=2.0, decay_mult=0.0)], scale_param={'filler':{'value':1}, 'bias_term':True, 'bias_filler':{'value':0}}, in_place=True) 51 | 52 | next_top = net.tops[prefix+'/expand3x3/scale'] 53 | 54 | net.tops[prefix+'/relu_expand3x3'] = caffe.layers.ReLU(next_top, in_place=True) 55 | net.tops[prefix+'/concat'] = caffe.layers.Concat(net.tops[prefix+'/expand1x1'], net.tops[prefix+'/expand3x3']) 56 | 57 | return net.tops[prefix+'/concat'] 58 | 59 | 60 | def prior_box(net, net_bottom, prefix, out1, out2, min_size, max_size, aspect_ratio, step): 61 | # prior box 62 | if(prefix[0:5] == "fire5"): 63 | net.tops[prefix+'/normal'] = caffe.layers.BatchNorm(net_bottom, name=prefix+'/bn', param=[dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0)]) 64 | net.tops[prefix+'/scale'] = caffe.layers.Scale(net.tops[prefix+'/normal'], name=prefix+'/scale', param=[dict(lr_mult=1.0, decay_mult=0.0), dict(lr_mult=2.0, decay_mult=0.0)], 65 | scale_param={'filler':{'value':1}, 'bias_term':True, 'bias_filler':{'value':0}}, in_place=True) 66 | net_bottom = net.tops[prefix+'/scale'] 67 | net.tops[prefix+'_mbox_loc'] = caffe.layers.Convolution(net_bottom, param=[dict(lr_mult=1.0, decay_mult=1.0), dict(lr_mult=2.0, decay_mult=0.0)], 68 | convolution_param={'num_output':out1, 'pad':1, 'kernel_size':3, 'stride':1, 'weight_filler':{'type':'msra'},'bias_filler':{'type':'constant', 'value':0.0}}) 69 | net.tops[prefix+'_mbox_loc_perm'] = caffe.layers.Permute(net.tops[prefix+'_mbox_loc'], permute_param={'order':[0,2,3,1]}) 70 | net.tops[prefix+'_mbox_loc_flat'] = caffe.layers.Flatten(net.tops[prefix+'_mbox_loc_perm'], flatten_param={'axis':1}) 71 | 72 | net.tops[prefix+'_mbox_conf'] = caffe.layers.Convolution(net_bottom, param=[dict(lr_mult=1.0, decay_mult=1.0), dict(lr_mult=2.0, decay_mult=0.0)], 73 | convolution_param={'num_output':out2, 'pad':1, 'kernel_size':3, 'stride':1, 'weight_filler':{'type':'msra'}, 'bias_filler':{'type':'constant', 'value':0.0}}) 74 | net.tops[prefix+'_mbox_conf_perm'] = caffe.layers.Permute(net.tops[prefix+'_mbox_conf'], permute_param={'order':[0,2,3,1]}) 75 | net.tops[prefix+'_mbox_conf_flat'] = caffe.layers.Flatten(net.tops[prefix+'_mbox_conf_perm'], flatten_param={'axis':1}) 76 | 77 | net.tops[prefix+'_mbox_priorbox'] = caffe.layers.PriorBox(net_bottom, net.data, prior_box_param={'min_size':min_size, 'max_size':max_size, 'aspect_ratio':aspect_ratio, 'flip':True, 78 | 'clip':False, 'variance':[0.1, 0.1, 0.2, 0.2], 'step':step}) 79 | 80 | def generate_net(lmdb, label_file, PHASE, batch_size): 81 | net = caffe.NetSpec() 82 | 83 | if(PHASE=="TRAIN"): 84 | # data layer 85 | net.data, net.label = caffe.layers.AnnotatedData(ntop=2, include={'phase':caffe.TRAIN}, 86 | transform_param=dict(mirror=True, mean_value=[104, 117, 123], 87 | resize_param=dict(prob=1.0, resize_mode=caffe.params.Resize.WARP, height=300, width=300, 88 | interp_mode=[caffe.params.Resize.LINEAR,caffe.params.Resize.AREA,caffe.params.Resize.NEAREST,caffe.params.Resize.CUBIC,caffe.params.Resize.LANCZOS4]), 89 | emit_constraint=dict(emit_type=0), 90 | distort_param=dict(brightness_prob=0.5, brightness_delta=32.0, 91 | contrast_prob=0.5, contrast_lower=0.5, contrast_upper=1.5, hue_prob=0.5, hue_delta=18.0, 92 | saturation_prob=0.5, saturation_lower=0.5, saturation_upper=1.5, random_order_prob=0.0), 93 | expand_param=dict(prob=0.5, max_expand_ratio=4.0)), 94 | 95 | data_param=dict(source=lmdb, batch_size=batch_size, backend=caffe.params.Data.LMDB), 96 | 97 | annotated_data_param=dict( 98 | batch_sampler=[dict(max_sample=1, max_trials=1), 99 | dict(sampler=dict(min_scale=0.3, max_scale=1.0,min_aspect_ratio=0.5, max_aspect_ratio=2.0), 100 | sample_constraint=dict(min_jaccard_overlap=0.1), max_sample=1, max_trials=50), 101 | dict(sampler=dict(min_scale=0.3, max_scale=1.0,min_aspect_ratio=0.5, max_aspect_ratio=2.0), 102 | sample_constraint=dict(min_jaccard_overlap=0.3), max_sample=1, max_trials=50), 103 | dict(sampler=dict(min_scale=0.3, max_scale=1.0,min_aspect_ratio=0.5, max_aspect_ratio=2.0), 104 | sample_constraint=dict(min_jaccard_overlap=0.5), max_sample=1, max_trials=50), 105 | dict(sampler=dict(min_scale=0.3, max_scale=1.0,min_aspect_ratio=0.5, max_aspect_ratio=2.0), 106 | sample_constraint=dict(min_jaccard_overlap=0.7), max_sample=1, max_trials=50), 107 | dict(sampler=dict(min_scale=0.3, max_scale=1.0,min_aspect_ratio=0.5, max_aspect_ratio=2.0), 108 | sample_constraint=dict(min_jaccard_overlap=0.9), max_sample=1, max_trials=50), 109 | dict(sampler=dict(min_scale=0.3, max_scale=1.0,min_aspect_ratio=0.5, max_aspect_ratio=2.0), 110 | sample_constraint=dict(min_jaccard_overlap=1.0), max_sample=1, max_trials=50)], 111 | label_map_file=label_file)) 112 | elif(PHASE=="DEPLOY"): 113 | net.data = caffe.layers.Input(shape={'dim':[1,3,300,300]}) 114 | 115 | # bone 116 | net.conv1 = caffe.layers.Convolution(net.data, num_output=57, kernel_size=3, stride=2, weight_filler={"type":"xavier"}, 117 | param=[dict(lr_mult=1.0,decay_mult=0.0),dict(lr_mult=1.0,decay_mult=0.0)]) 118 | net.relu_conv1 = caffe.layers.ReLU(net.conv1,in_place=True) 119 | net.pool1 = caffe.layers.Pooling(net.relu_conv1, pool=caffe.params.Pooling.MAX, kernel_size=3, stride=2) 120 | 121 | # fire1 122 | net.tops['fire2/concat'] = fire(net, net.pool1, 'fire2', 15,49, 53) 123 | # fire2 124 | net.tops['fire3/concat'] = fire(net, net.tops['fire2/concat'], 'fire3', 15, 54, 52) 125 | net.pool3 = caffe.layers.Pooling(net.tops['fire3/concat'], pool=caffe.params.Pooling.MAX, kernel_size=3, stride=2) 126 | # fire3 127 | net.tops['fire4/concat'] = fire(net, net.pool3, 'fire4', 29, 92, 94) 128 | # fire4 129 | net.tops['fire5/concat'] = fire(net, net.tops['fire4/concat'], 'fire5', 29, 90, 83) 130 | net.pool5 = caffe.layers.Pooling(net.tops['fire5/concat'], pool=caffe.params.Pooling.MAX, kernel_size=3, stride=2) 131 | # fire5 132 | net.tops['fire6/concat'] = fire(net, net.pool5, 'fire6', 44, 166, 161) 133 | # fire6 134 | net.tops['fire7/concat'] = fire(net, net.tops['fire6/concat'], 'fire7', 45, 155, 146) 135 | # fire7 136 | net.tops['fire8/concat'] = fire(net, net.tops['fire7/concat'], 'fire8', 49, 163, 171) 137 | # fire8 138 | net.tops['fire9/concat'] = fire(net, net.tops['fire8/concat'], 'fire9', 25, 29, 54) 139 | net.pool9 = caffe.layers.Pooling(net.tops['fire9/concat'], pool=caffe.params.Pooling.MAX, kernel_size=3, stride=2) 140 | # fire9 141 | net.tops['fire10/concat'] = fire(net, net.pool9, 'fire10', 37, 45, 56) 142 | net.pool10 = caffe.layers.Pooling(net.tops['fire10/concat'], pool=caffe.params.Pooling.MAX, kernel_size=3, stride=2) 143 | # fire10 144 | net.tops['fire11/concat'] = fire(net, net.pool10, 'fire11', 38, 41, 44) 145 | 146 | # conv12 147 | net.conv12_1 = caffe.layers.Convolution(net.tops['fire11/concat'], param=[dict(lr_mult=1.0, decay_mult=1.0)], 148 | convolution_param={'num_output':51, 'bias_term':False, 'kernel_size':1, 'weight_filler':{'type':'msra'}}) 149 | net.tops['conv12_1/bn'] = caffe.layers.BatchNorm(net.conv12_1, param=[dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0)], in_place=True) 150 | net.tops['conv12_1/scale'] = caffe.layers.Scale(net.tops['conv12_1/bn'], param=[dict(lr_mult=1.0, decay_mult=0.0), dict(lr_mult=2.0, decay_mult=0.0)], 151 | scale_param={'filler':{'value':1}, 'bias_term':True, 'bias_filler':{'value':0}}, in_place=True) 152 | net.tops['conv12_1/relu'] = caffe.layers.ReLU(net.tops['conv12_1/scale'], in_place=True) 153 | net.conv12_2 = caffe.layers.Convolution(net.tops['conv12_1/relu'], param=[dict(lr_mult=1.0, decay_mult=1.0)], 154 | convolution_param={'num_output':46, 'bias_term':False, 'pad':1, 'kernel_size':3, 'stride':2, 'weight_filler':{'type':'msra'}}) 155 | net.tops['conv12_2/bn'] = caffe.layers.BatchNorm(net.conv12_2, param=[dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0)], in_place=True) 156 | net.tops['conv12_2/scale'] = caffe.layers.Scale(net.tops['conv12_2/bn'], param=[dict(lr_mult=1.0, decay_mult=0.0), dict(lr_mult=2.0, decay_mult=0.0)], 157 | scale_param={'filler':{'value':1}, 'bias_term':True, 'bias_filler':{'value':0}}, in_place=True) 158 | net.tops['conv12_2/relu'] = caffe.layers.ReLU(net.tops['conv12_2/scale'], in_place=True) 159 | 160 | # conv13 161 | net.conv13_1 = caffe.layers.Convolution(net.tops['conv12_2/relu'], param=[dict(lr_mult=1.0, decay_mult=1.0)], 162 | convolution_param={'num_output':55, 'bias_term':False, 'kernel_size':1, 'weight_filler':{'type':'msra'}}) 163 | net.tops['conv13_1/bn'] = caffe.layers.BatchNorm(net.conv13_1, param=[dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0)], in_place=True) 164 | net.tops['conv13_1/scale'] = caffe.layers.Scale(net.tops['conv13_1/bn'], param=[dict(lr_mult=1.0, decay_mult=0.0), dict(lr_mult=2.0, decay_mult=0.0)], 165 | scale_param={'filler':{'value':1}, 'bias_term':True, 'bias_filler':{'value':0}}, in_place=True) 166 | net.tops['conv13_1/relu'] = caffe.layers.ReLU(net.conv13_1, in_place=True) 167 | net.conv13_2 = caffe.layers.Convolution(net.tops['conv13_1/relu'], param=[dict(lr_mult=1.0, decay_mult=1.0)], 168 | convolution_param={'num_output':85, 'bias_term':False, 'pad':1, 'kernel_size':3, 'stride':2, 'weight_filler':{'type':'msra'}}) 169 | net.tops['conv13_2/bn'] = caffe.layers.BatchNorm(net.conv13_2, param=[dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0), dict(lr_mult=0, decay_mult=0)], in_place=True) 170 | net.tops['conv13_2/scale'] = caffe.layers.Scale(net.tops['conv13_2/bn'], param=[dict(lr_mult=1.0, decay_mult=0.0), dict(lr_mult=2.0, decay_mult=0.0)], 171 | scale_param={'filler':{'value':1}, 'bias_term':True, 'bias_filler':{'value':0}}, in_place=True) 172 | net.tops['conv13_2/relu'] = caffe.layers.ReLU(net.tops['conv13_2/scale'], in_place=True) 173 | 174 | 175 | # fire 5 prior box 176 | prior_box(net, net.tops['fire5/concat'], 'fire5', 16, 84, 21.0, 45.0, [2.0], 8) 177 | # fire 9 prior box 178 | prior_box(net, net.tops['fire9/concat'], 'fire9', 24, 126, 45.0, 99.0, [2.0, 3.0], 16) 179 | # fire 10 prior box 180 | prior_box(net, net.tops['fire10/concat'], 'fire10', 24, 126, 99.0, 153.0, [2.0, 3.0], 32) 181 | # fire 11 prior box 182 | prior_box(net, net.tops['fire11/concat'], 'fire11', 24, 126, 153.0, 207.0, [2.0, 3.0], 64) 183 | # conv12_2 prior box 184 | prior_box(net, net.tops['conv12_2'], 'conv12_2', 24, 126, 207.0, 261.0, [2.0, 3.0], 100) 185 | # conv13_2 prior box 186 | prior_box(net, net.tops['conv13_2'], 'conv13_2', 16, 84, 261.0, 315.0, [2.0], 300) 187 | 188 | # last process 189 | net.tops['mbox_loc'] = caffe.layers.Concat(net.tops['fire5_mbox_loc_flat'], net.tops['fire9_mbox_loc_flat'], net.tops['fire10_mbox_loc_flat'], net.tops['fire11_mbox_loc_flat'], 190 | net.tops['conv12_2_mbox_loc_flat'], net.tops['conv13_2_mbox_loc_flat'], concat_param={'axis':1}) 191 | net.tops['mbox_conf'] = caffe.layers.Concat(net.tops['fire5_mbox_conf_flat'], net.tops['fire9_mbox_conf_flat'], net.tops['fire10_mbox_conf_flat'], net.tops['fire11_mbox_conf_flat'], 192 | net.tops['conv12_2_mbox_conf_flat'], net.tops['conv13_2_mbox_conf_flat'], concat_param={'axis':1}) 193 | net.tops['mbox_priorbox'] = caffe.layers.Concat(net.tops['fire5_mbox_priorbox'], net.tops['fire9_mbox_priorbox'], net.tops['fire10_mbox_priorbox'], net.tops['fire11_mbox_priorbox'], 194 | net.tops['conv12_2_mbox_priorbox'], net.tops['conv13_2_mbox_priorbox'], concat_param={'axis':2}) 195 | if(PHASE=='TRAIN'): 196 | net.tops['mbox_loss'] = caffe.layers.MultiBoxLoss(net.tops['mbox_loc'], net.tops['mbox_conf'], net.tops['mbox_priorbox'], net.label, include={'phase':caffe.TRAIN}, 197 | propagate_down=[True, True, False, False], loss_param={'normalization':caffe.params.Loss.VALID}, multibox_loss_param={'loc_loss_type':caffe.params.MultiBoxLoss.SMOOTH_L1, 198 | 'conf_loss_type':caffe.params.MultiBoxLoss.SOFTMAX, 'loc_weight':1.0, 199 | 'num_classes':21, 'share_location':True, 'match_type':caffe.params.MultiBoxLoss.PER_PREDICTION, 'overlap_threshold':0.5, 'use_prior_for_matching':True, 200 | 'background_label_id':0, 'use_difficult_gt':True, 'neg_pos_ratio':3.0, 'neg_overlap':0.5, 201 | 'code_type':caffe.params.PriorBox.CENTER_SIZE, 'ignore_cross_boundary_bbox':False, 'mining_type':caffe.params.MultiBoxLoss.MAX_NEGATIVE}) 202 | elif(PHASE=='DEPLOY'): 203 | net.tops['mbox_conf_reshape'] = caffe.layers.Reshape(net.tops['mbox_conf'], reshape_param={'shape':{'dim':[0,-1,21]}}) 204 | net.tops['mbox_conf_softmax'] = caffe.layers.Softmax(net.tops['mbox_conf_reshape'], softmax_param={'axis':2}) 205 | net.tops['mbox_conf_flatten'] = caffe.layers.Flatten(net.tops['mbox_conf_softmax'], flatten_param={'axis':1}) 206 | net.tops['detection_out'] = caffe.layers.DetectionOutput(net.tops['mbox_loc'], net.tops['mbox_conf_flatten'], net.tops['mbox_priorbox'], include={ 207 | 'phase':caffe.TEST}, detection_output_param={'num_classes':21, 'share_location':True, 'background_label_id':0, 208 | 'nms_param':{'nms_threshold':0.45, 'top_k':100}, 'code_type':caffe.params.PriorBox.CENTER_SIZE, 'keep_top_k':100, 'confidence_threshold':0.25}) 209 | 210 | return str(net.to_proto()) 211 | 212 | def write_net(train_proto, train_lmdb, deploy_proto, label_file): 213 | with open(train_proto, 'w') as f: 214 | f.write(str(generate_net(train_lmdb, label_file, "TRAIN", batch_size=64))) 215 | f.close() 216 | with open(deploy_proto, 'w') as f: 217 | f.write(str(generate_net(train_lmdb, label_file, "DEPLOY", batch_size=64))) 218 | f.close() 219 | 220 | 221 | if __name__ == '__main__': 222 | project_dir = "./" # add your directory absolute path here 223 | 224 | label_file = project_dir + "data/VOC0712/labelmap_voc.prototxt" 225 | train_lmdb = project_dir + "-- your lmdb path -- /trian.lmdb" # your lmdb path 226 | train_proto = project_dir + "python_script/train.prototxt" 227 | deploy_proto = project_dir + "python_script/deploy.prototxt" 228 | 229 | write_net(train_proto, train_lmdb, deploy_proto, label_file) 230 | -------------------------------------------------------------------------------- /python_script/train.prototxt: -------------------------------------------------------------------------------- 1 | layer { 2 | name: "data" 3 | type: "AnnotatedData" 4 | top: "data" 5 | top: "label" 6 | include { 7 | phase: TRAIN 8 | } 9 | transform_param { 10 | mirror: true 11 | mean_value: 104.0 12 | mean_value: 117.0 13 | mean_value: 123.0 14 | resize_param { 15 | prob: 1.0 16 | resize_mode: WARP 17 | height: 300 18 | width: 300 19 | interp_mode: LINEAR 20 | interp_mode: AREA 21 | interp_mode: NEAREST 22 | interp_mode: CUBIC 23 | interp_mode: LANCZOS4 24 | } 25 | emit_constraint { 26 | emit_type: CENTER 27 | } 28 | distort_param { 29 | brightness_prob: 0.5 30 | brightness_delta: 32.0 31 | contrast_prob: 0.5 32 | contrast_lower: 0.5 33 | contrast_upper: 1.5 34 | hue_prob: 0.5 35 | hue_delta: 18.0 36 | saturation_prob: 0.5 37 | saturation_lower: 0.5 38 | saturation_upper: 1.5 39 | random_order_prob: 0.0 40 | } 41 | expand_param { 42 | prob: 0.5 43 | max_expand_ratio: 4.0 44 | } 45 | } 46 | data_param { 47 | source: "./-- your lmdb path -- /trian.lmdb" 48 | batch_size: 64 49 | backend: LMDB 50 | } 51 | annotated_data_param { 52 | batch_sampler { 53 | max_sample: 1 54 | max_trials: 1 55 | } 56 | batch_sampler { 57 | sampler { 58 | min_scale: 0.300000011921 59 | max_scale: 1.0 60 | min_aspect_ratio: 0.5 61 | max_aspect_ratio: 2.0 62 | } 63 | sample_constraint { 64 | min_jaccard_overlap: 0.10000000149 65 | } 66 | max_sample: 1 67 | max_trials: 50 68 | } 69 | batch_sampler { 70 | sampler { 71 | min_scale: 0.300000011921 72 | max_scale: 1.0 73 | min_aspect_ratio: 0.5 74 | max_aspect_ratio: 2.0 75 | } 76 | sample_constraint { 77 | min_jaccard_overlap: 0.300000011921 78 | } 79 | max_sample: 1 80 | max_trials: 50 81 | } 82 | batch_sampler { 83 | sampler { 84 | min_scale: 0.300000011921 85 | max_scale: 1.0 86 | min_aspect_ratio: 0.5 87 | max_aspect_ratio: 2.0 88 | } 89 | sample_constraint { 90 | min_jaccard_overlap: 0.5 91 | } 92 | max_sample: 1 93 | max_trials: 50 94 | } 95 | batch_sampler { 96 | sampler { 97 | min_scale: 0.300000011921 98 | max_scale: 1.0 99 | min_aspect_ratio: 0.5 100 | max_aspect_ratio: 2.0 101 | } 102 | sample_constraint { 103 | min_jaccard_overlap: 0.699999988079 104 | } 105 | max_sample: 1 106 | max_trials: 50 107 | } 108 | batch_sampler { 109 | sampler { 110 | min_scale: 0.300000011921 111 | max_scale: 1.0 112 | min_aspect_ratio: 0.5 113 | max_aspect_ratio: 2.0 114 | } 115 | sample_constraint { 116 | min_jaccard_overlap: 0.899999976158 117 | } 118 | max_sample: 1 119 | max_trials: 50 120 | } 121 | batch_sampler { 122 | sampler { 123 | min_scale: 0.300000011921 124 | max_scale: 1.0 125 | min_aspect_ratio: 0.5 126 | max_aspect_ratio: 2.0 127 | } 128 | sample_constraint { 129 | min_jaccard_overlap: 1.0 130 | } 131 | max_sample: 1 132 | max_trials: 50 133 | } 134 | label_map_file: "./data/VOC0712/labelmap_voc.prototxt" 135 | } 136 | } 137 | layer { 138 | name: "conv1" 139 | type: "Convolution" 140 | bottom: "data" 141 | top: "conv1" 142 | param { 143 | lr_mult: 1.0 144 | decay_mult: 0.0 145 | } 146 | param { 147 | lr_mult: 1.0 148 | decay_mult: 0.0 149 | } 150 | convolution_param { 151 | num_output: 57 152 | kernel_size: 3 153 | stride: 2 154 | weight_filler { 155 | type: "xavier" 156 | } 157 | } 158 | } 159 | layer { 160 | name: "relu_conv1" 161 | type: "ReLU" 162 | bottom: "conv1" 163 | top: "conv1" 164 | } 165 | layer { 166 | name: "pool1" 167 | type: "Pooling" 168 | bottom: "conv1" 169 | top: "pool1" 170 | pooling_param { 171 | pool: MAX 172 | kernel_size: 3 173 | stride: 2 174 | } 175 | } 176 | layer { 177 | name: "fire2/squeeze1x1" 178 | type: "Convolution" 179 | bottom: "pool1" 180 | top: "fire2/squeeze1x1" 181 | param { 182 | lr_mult: 1.0 183 | decay_mult: 0.0 184 | } 185 | param { 186 | lr_mult: 1.0 187 | decay_mult: 0.0 188 | } 189 | convolution_param { 190 | num_output: 15 191 | kernel_size: 1 192 | weight_filler { 193 | type: "xavier" 194 | } 195 | } 196 | } 197 | layer { 198 | name: "fire2/expand1x1" 199 | type: "Convolution" 200 | bottom: "fire2/squeeze1x1" 201 | top: "fire2/expand1x1" 202 | param { 203 | lr_mult: 1.0 204 | decay_mult: 0.0 205 | } 206 | param { 207 | lr_mult: 1.0 208 | decay_mult: 0.0 209 | } 210 | convolution_param { 211 | num_output: 49 212 | kernel_size: 1 213 | weight_filler { 214 | type: "xavier" 215 | } 216 | } 217 | } 218 | layer { 219 | name: "fire2/relu_expand1x1" 220 | type: "ReLU" 221 | bottom: "fire2/expand1x1" 222 | top: "fire2/expand1x1" 223 | } 224 | layer { 225 | name: "fire2/expand3x3" 226 | type: "Convolution" 227 | bottom: "fire2/squeeze1x1" 228 | top: "fire2/expand3x3" 229 | param { 230 | lr_mult: 1.0 231 | decay_mult: 0.0 232 | } 233 | param { 234 | lr_mult: 1.0 235 | decay_mult: 0.0 236 | } 237 | convolution_param { 238 | num_output: 53 239 | pad: 1 240 | kernel_size: 3 241 | weight_filler { 242 | type: "xavier" 243 | } 244 | } 245 | } 246 | layer { 247 | name: "fire2/relu_expand3x3" 248 | type: "ReLU" 249 | bottom: "fire2/expand3x3" 250 | top: "fire2/expand3x3" 251 | } 252 | layer { 253 | name: "fire2/concat" 254 | type: "Concat" 255 | bottom: "fire2/expand1x1" 256 | bottom: "fire2/expand3x3" 257 | top: "fire2/concat" 258 | } 259 | layer { 260 | name: "fire3/squeeze1x1" 261 | type: "Convolution" 262 | bottom: "fire2/concat" 263 | top: "fire3/squeeze1x1" 264 | param { 265 | lr_mult: 1.0 266 | decay_mult: 0.0 267 | } 268 | param { 269 | lr_mult: 1.0 270 | decay_mult: 0.0 271 | } 272 | convolution_param { 273 | num_output: 15 274 | kernel_size: 1 275 | weight_filler { 276 | type: "xavier" 277 | } 278 | } 279 | } 280 | layer { 281 | name: "fire3/expand1x1" 282 | type: "Convolution" 283 | bottom: "fire3/squeeze1x1" 284 | top: "fire3/expand1x1" 285 | param { 286 | lr_mult: 1.0 287 | decay_mult: 0.0 288 | } 289 | param { 290 | lr_mult: 1.0 291 | decay_mult: 0.0 292 | } 293 | convolution_param { 294 | num_output: 54 295 | kernel_size: 1 296 | weight_filler { 297 | type: "xavier" 298 | } 299 | } 300 | } 301 | layer { 302 | name: "fire3/relu_expand1x1" 303 | type: "ReLU" 304 | bottom: "fire3/expand1x1" 305 | top: "fire3/expand1x1" 306 | } 307 | layer { 308 | name: "fire3/expand3x3" 309 | type: "Convolution" 310 | bottom: "fire3/squeeze1x1" 311 | top: "fire3/expand3x3" 312 | param { 313 | lr_mult: 1.0 314 | decay_mult: 0.0 315 | } 316 | param { 317 | lr_mult: 1.0 318 | decay_mult: 0.0 319 | } 320 | convolution_param { 321 | num_output: 52 322 | pad: 1 323 | kernel_size: 3 324 | weight_filler { 325 | type: "xavier" 326 | } 327 | } 328 | } 329 | layer { 330 | name: "fire3/relu_expand3x3" 331 | type: "ReLU" 332 | bottom: "fire3/expand3x3" 333 | top: "fire3/expand3x3" 334 | } 335 | layer { 336 | name: "fire3/concat" 337 | type: "Concat" 338 | bottom: "fire3/expand1x1" 339 | bottom: "fire3/expand3x3" 340 | top: "fire3/concat" 341 | } 342 | layer { 343 | name: "pool3" 344 | type: "Pooling" 345 | bottom: "fire3/concat" 346 | top: "pool3" 347 | pooling_param { 348 | pool: MAX 349 | kernel_size: 3 350 | stride: 2 351 | } 352 | } 353 | layer { 354 | name: "fire4/squeeze1x1" 355 | type: "Convolution" 356 | bottom: "pool3" 357 | top: "fire4/squeeze1x1" 358 | param { 359 | lr_mult: 1.0 360 | decay_mult: 0.0 361 | } 362 | param { 363 | lr_mult: 1.0 364 | decay_mult: 0.0 365 | } 366 | convolution_param { 367 | num_output: 29 368 | kernel_size: 1 369 | weight_filler { 370 | type: "xavier" 371 | } 372 | } 373 | } 374 | layer { 375 | name: "fire4/expand1x1" 376 | type: "Convolution" 377 | bottom: "fire4/squeeze1x1" 378 | top: "fire4/expand1x1" 379 | param { 380 | lr_mult: 1.0 381 | decay_mult: 0.0 382 | } 383 | param { 384 | lr_mult: 1.0 385 | decay_mult: 0.0 386 | } 387 | convolution_param { 388 | num_output: 92 389 | kernel_size: 1 390 | weight_filler { 391 | type: "xavier" 392 | } 393 | } 394 | } 395 | layer { 396 | name: "fire4/relu_expand1x1" 397 | type: "ReLU" 398 | bottom: "fire4/expand1x1" 399 | top: "fire4/expand1x1" 400 | } 401 | layer { 402 | name: "fire4/expand3x3" 403 | type: "Convolution" 404 | bottom: "fire4/squeeze1x1" 405 | top: "fire4/expand3x3" 406 | param { 407 | lr_mult: 1.0 408 | decay_mult: 0.0 409 | } 410 | param { 411 | lr_mult: 1.0 412 | decay_mult: 0.0 413 | } 414 | convolution_param { 415 | num_output: 94 416 | pad: 1 417 | kernel_size: 3 418 | weight_filler { 419 | type: "xavier" 420 | } 421 | } 422 | } 423 | layer { 424 | name: "fire4/relu_expand3x3" 425 | type: "ReLU" 426 | bottom: "fire4/expand3x3" 427 | top: "fire4/expand3x3" 428 | } 429 | layer { 430 | name: "fire4/concat" 431 | type: "Concat" 432 | bottom: "fire4/expand1x1" 433 | bottom: "fire4/expand3x3" 434 | top: "fire4/concat" 435 | } 436 | layer { 437 | name: "fire5/squeeze1x1" 438 | type: "Convolution" 439 | bottom: "fire4/concat" 440 | top: "fire5/squeeze1x1" 441 | param { 442 | lr_mult: 1.0 443 | decay_mult: 0.0 444 | } 445 | param { 446 | lr_mult: 1.0 447 | decay_mult: 0.0 448 | } 449 | convolution_param { 450 | num_output: 29 451 | kernel_size: 1 452 | weight_filler { 453 | type: "xavier" 454 | } 455 | } 456 | } 457 | layer { 458 | name: "fire5/expand1x1" 459 | type: "Convolution" 460 | bottom: "fire5/squeeze1x1" 461 | top: "fire5/expand1x1" 462 | param { 463 | lr_mult: 1.0 464 | decay_mult: 0.0 465 | } 466 | param { 467 | lr_mult: 1.0 468 | decay_mult: 0.0 469 | } 470 | convolution_param { 471 | num_output: 90 472 | kernel_size: 1 473 | weight_filler { 474 | type: "xavier" 475 | } 476 | } 477 | } 478 | layer { 479 | name: "fire5/relu_expand1x1" 480 | type: "ReLU" 481 | bottom: "fire5/expand1x1" 482 | top: "fire5/expand1x1" 483 | } 484 | layer { 485 | name: "fire5/expand3x3" 486 | type: "Convolution" 487 | bottom: "fire5/squeeze1x1" 488 | top: "fire5/expand3x3" 489 | param { 490 | lr_mult: 1.0 491 | decay_mult: 0.0 492 | } 493 | param { 494 | lr_mult: 1.0 495 | decay_mult: 0.0 496 | } 497 | convolution_param { 498 | num_output: 83 499 | pad: 1 500 | kernel_size: 3 501 | weight_filler { 502 | type: "xavier" 503 | } 504 | } 505 | } 506 | layer { 507 | name: "fire5/relu_expand3x3" 508 | type: "ReLU" 509 | bottom: "fire5/expand3x3" 510 | top: "fire5/expand3x3" 511 | } 512 | layer { 513 | name: "fire5/concat" 514 | type: "Concat" 515 | bottom: "fire5/expand1x1" 516 | bottom: "fire5/expand3x3" 517 | top: "fire5/concat" 518 | } 519 | layer { 520 | name: "pool5" 521 | type: "Pooling" 522 | bottom: "fire5/concat" 523 | top: "pool5" 524 | pooling_param { 525 | pool: MAX 526 | kernel_size: 3 527 | stride: 2 528 | } 529 | } 530 | layer { 531 | name: "fire6/squeeze1x1" 532 | type: "Convolution" 533 | bottom: "pool5" 534 | top: "fire6/squeeze1x1" 535 | param { 536 | lr_mult: 1.0 537 | decay_mult: 0.0 538 | } 539 | param { 540 | lr_mult: 1.0 541 | decay_mult: 0.0 542 | } 543 | convolution_param { 544 | num_output: 44 545 | kernel_size: 1 546 | weight_filler { 547 | type: "xavier" 548 | } 549 | } 550 | } 551 | layer { 552 | name: "fire6/expand1x1" 553 | type: "Convolution" 554 | bottom: "fire6/squeeze1x1" 555 | top: "fire6/expand1x1" 556 | param { 557 | lr_mult: 1.0 558 | decay_mult: 0.0 559 | } 560 | param { 561 | lr_mult: 1.0 562 | decay_mult: 0.0 563 | } 564 | convolution_param { 565 | num_output: 166 566 | kernel_size: 1 567 | weight_filler { 568 | type: "xavier" 569 | } 570 | } 571 | } 572 | layer { 573 | name: "fire6/relu_expand1x1" 574 | type: "ReLU" 575 | bottom: "fire6/expand1x1" 576 | top: "fire6/expand1x1" 577 | } 578 | layer { 579 | name: "fire6/expand3x3" 580 | type: "Convolution" 581 | bottom: "fire6/squeeze1x1" 582 | top: "fire6/expand3x3" 583 | param { 584 | lr_mult: 1.0 585 | decay_mult: 0.0 586 | } 587 | param { 588 | lr_mult: 1.0 589 | decay_mult: 0.0 590 | } 591 | convolution_param { 592 | num_output: 161 593 | pad: 1 594 | kernel_size: 3 595 | weight_filler { 596 | type: "xavier" 597 | } 598 | } 599 | } 600 | layer { 601 | name: "fire6/relu_expand3x3" 602 | type: "ReLU" 603 | bottom: "fire6/expand3x3" 604 | top: "fire6/expand3x3" 605 | } 606 | layer { 607 | name: "fire6/concat" 608 | type: "Concat" 609 | bottom: "fire6/expand1x1" 610 | bottom: "fire6/expand3x3" 611 | top: "fire6/concat" 612 | } 613 | layer { 614 | name: "fire7/squeeze1x1" 615 | type: "Convolution" 616 | bottom: "fire6/concat" 617 | top: "fire7/squeeze1x1" 618 | param { 619 | lr_mult: 1.0 620 | decay_mult: 0.0 621 | } 622 | param { 623 | lr_mult: 1.0 624 | decay_mult: 0.0 625 | } 626 | convolution_param { 627 | num_output: 45 628 | kernel_size: 1 629 | weight_filler { 630 | type: "xavier" 631 | } 632 | } 633 | } 634 | layer { 635 | name: "fire7/expand1x1" 636 | type: "Convolution" 637 | bottom: "fire7/squeeze1x1" 638 | top: "fire7/expand1x1" 639 | param { 640 | lr_mult: 1.0 641 | decay_mult: 0.0 642 | } 643 | param { 644 | lr_mult: 1.0 645 | decay_mult: 0.0 646 | } 647 | convolution_param { 648 | num_output: 155 649 | kernel_size: 1 650 | weight_filler { 651 | type: "xavier" 652 | } 653 | } 654 | } 655 | layer { 656 | name: "fire7/relu_expand1x1" 657 | type: "ReLU" 658 | bottom: "fire7/expand1x1" 659 | top: "fire7/expand1x1" 660 | } 661 | layer { 662 | name: "fire7/expand3x3" 663 | type: "Convolution" 664 | bottom: "fire7/squeeze1x1" 665 | top: "fire7/expand3x3" 666 | param { 667 | lr_mult: 1.0 668 | decay_mult: 0.0 669 | } 670 | param { 671 | lr_mult: 1.0 672 | decay_mult: 0.0 673 | } 674 | convolution_param { 675 | num_output: 146 676 | pad: 1 677 | kernel_size: 3 678 | weight_filler { 679 | type: "xavier" 680 | } 681 | } 682 | } 683 | layer { 684 | name: "fire7/relu_expand3x3" 685 | type: "ReLU" 686 | bottom: "fire7/expand3x3" 687 | top: "fire7/expand3x3" 688 | } 689 | layer { 690 | name: "fire7/concat" 691 | type: "Concat" 692 | bottom: "fire7/expand1x1" 693 | bottom: "fire7/expand3x3" 694 | top: "fire7/concat" 695 | } 696 | layer { 697 | name: "fire8/squeeze1x1" 698 | type: "Convolution" 699 | bottom: "fire7/concat" 700 | top: "fire8/squeeze1x1" 701 | param { 702 | lr_mult: 1.0 703 | decay_mult: 0.0 704 | } 705 | param { 706 | lr_mult: 1.0 707 | decay_mult: 0.0 708 | } 709 | convolution_param { 710 | num_output: 49 711 | kernel_size: 1 712 | weight_filler { 713 | type: "xavier" 714 | } 715 | } 716 | } 717 | layer { 718 | name: "fire8/expand1x1" 719 | type: "Convolution" 720 | bottom: "fire8/squeeze1x1" 721 | top: "fire8/expand1x1" 722 | param { 723 | lr_mult: 1.0 724 | decay_mult: 0.0 725 | } 726 | param { 727 | lr_mult: 1.0 728 | decay_mult: 0.0 729 | } 730 | convolution_param { 731 | num_output: 163 732 | kernel_size: 1 733 | weight_filler { 734 | type: "xavier" 735 | } 736 | } 737 | } 738 | layer { 739 | name: "fire8/relu_expand1x1" 740 | type: "ReLU" 741 | bottom: "fire8/expand1x1" 742 | top: "fire8/expand1x1" 743 | } 744 | layer { 745 | name: "fire8/expand3x3" 746 | type: "Convolution" 747 | bottom: "fire8/squeeze1x1" 748 | top: "fire8/expand3x3" 749 | param { 750 | lr_mult: 1.0 751 | decay_mult: 0.0 752 | } 753 | param { 754 | lr_mult: 1.0 755 | decay_mult: 0.0 756 | } 757 | convolution_param { 758 | num_output: 171 759 | pad: 1 760 | kernel_size: 3 761 | weight_filler { 762 | type: "xavier" 763 | } 764 | } 765 | } 766 | layer { 767 | name: "fire8/relu_expand3x3" 768 | type: "ReLU" 769 | bottom: "fire8/expand3x3" 770 | top: "fire8/expand3x3" 771 | } 772 | layer { 773 | name: "fire8/concat" 774 | type: "Concat" 775 | bottom: "fire8/expand1x1" 776 | bottom: "fire8/expand3x3" 777 | top: "fire8/concat" 778 | } 779 | layer { 780 | name: "fire9/squeeze1x1" 781 | type: "Convolution" 782 | bottom: "fire8/concat" 783 | top: "fire9/squeeze1x1" 784 | param { 785 | lr_mult: 1.0 786 | decay_mult: 0.0 787 | } 788 | param { 789 | lr_mult: 1.0 790 | decay_mult: 0.0 791 | } 792 | convolution_param { 793 | num_output: 25 794 | kernel_size: 1 795 | weight_filler { 796 | type: "xavier" 797 | } 798 | } 799 | } 800 | layer { 801 | name: "fire9/expand1x1" 802 | type: "Convolution" 803 | bottom: "fire9/squeeze1x1" 804 | top: "fire9/expand1x1" 805 | param { 806 | lr_mult: 1.0 807 | decay_mult: 0.0 808 | } 809 | param { 810 | lr_mult: 1.0 811 | decay_mult: 0.0 812 | } 813 | convolution_param { 814 | num_output: 29 815 | kernel_size: 1 816 | weight_filler { 817 | type: "xavier" 818 | } 819 | } 820 | } 821 | layer { 822 | name: "fire9/expand1x1/bn" 823 | type: "BatchNorm" 824 | bottom: "fire9/expand1x1" 825 | top: "fire9/expand1x1" 826 | param { 827 | lr_mult: 0.0 828 | decay_mult: 0.0 829 | } 830 | param { 831 | lr_mult: 0.0 832 | decay_mult: 0.0 833 | } 834 | param { 835 | lr_mult: 0.0 836 | decay_mult: 0.0 837 | } 838 | } 839 | layer { 840 | name: "fire9/expand1x1/scale" 841 | type: "Scale" 842 | bottom: "fire9/expand1x1" 843 | top: "fire9/expand1x1" 844 | param { 845 | lr_mult: 1.0 846 | decay_mult: 0.0 847 | } 848 | param { 849 | lr_mult: 2.0 850 | decay_mult: 0.0 851 | } 852 | scale_param { 853 | filler { 854 | value: 1.0 855 | } 856 | bias_term: true 857 | bias_filler { 858 | value: 0.0 859 | } 860 | } 861 | } 862 | layer { 863 | name: "fire9/relu_expand1x1" 864 | type: "ReLU" 865 | bottom: "fire9/expand1x1" 866 | top: "fire9/expand1x1" 867 | } 868 | layer { 869 | name: "fire9/expand3x3" 870 | type: "Convolution" 871 | bottom: "fire9/squeeze1x1" 872 | top: "fire9/expand3x3" 873 | param { 874 | lr_mult: 1.0 875 | decay_mult: 0.0 876 | } 877 | param { 878 | lr_mult: 1.0 879 | decay_mult: 0.0 880 | } 881 | convolution_param { 882 | num_output: 54 883 | pad: 1 884 | kernel_size: 3 885 | weight_filler { 886 | type: "xavier" 887 | } 888 | } 889 | } 890 | layer { 891 | name: "fire9/expand3x3/bn" 892 | type: "BatchNorm" 893 | bottom: "fire9/expand3x3" 894 | top: "fire9/expand3x3" 895 | param { 896 | lr_mult: 0.0 897 | decay_mult: 0.0 898 | } 899 | param { 900 | lr_mult: 0.0 901 | decay_mult: 0.0 902 | } 903 | param { 904 | lr_mult: 0.0 905 | decay_mult: 0.0 906 | } 907 | } 908 | layer { 909 | name: "fire9/expand3x3/scale" 910 | type: "Scale" 911 | bottom: "fire9/expand3x3" 912 | top: "fire9/expand3x3" 913 | param { 914 | lr_mult: 1.0 915 | decay_mult: 0.0 916 | } 917 | param { 918 | lr_mult: 2.0 919 | decay_mult: 0.0 920 | } 921 | scale_param { 922 | filler { 923 | value: 1.0 924 | } 925 | bias_term: true 926 | bias_filler { 927 | value: 0.0 928 | } 929 | } 930 | } 931 | layer { 932 | name: "fire9/relu_expand3x3" 933 | type: "ReLU" 934 | bottom: "fire9/expand3x3" 935 | top: "fire9/expand3x3" 936 | } 937 | layer { 938 | name: "fire9/concat" 939 | type: "Concat" 940 | bottom: "fire9/expand1x1" 941 | bottom: "fire9/expand3x3" 942 | top: "fire9/concat" 943 | } 944 | layer { 945 | name: "pool9" 946 | type: "Pooling" 947 | bottom: "fire9/concat" 948 | top: "pool9" 949 | pooling_param { 950 | pool: MAX 951 | kernel_size: 3 952 | stride: 2 953 | } 954 | } 955 | layer { 956 | name: "fire10/squeeze1x1" 957 | type: "Convolution" 958 | bottom: "pool9" 959 | top: "fire10/squeeze1x1" 960 | convolution_param { 961 | num_output: 37 962 | kernel_size: 1 963 | weight_filler { 964 | type: "xavier" 965 | } 966 | } 967 | } 968 | layer { 969 | name: "fire10/squeeze1x1/bn" 970 | type: "BatchNorm" 971 | bottom: "fire10/squeeze1x1" 972 | top: "fire10/squeeze1x1" 973 | param { 974 | lr_mult: 0.0 975 | decay_mult: 0.0 976 | } 977 | param { 978 | lr_mult: 0.0 979 | decay_mult: 0.0 980 | } 981 | param { 982 | lr_mult: 0.0 983 | decay_mult: 0.0 984 | } 985 | } 986 | layer { 987 | name: "fire10/squeeze1x1/scale" 988 | type: "Scale" 989 | bottom: "fire10/squeeze1x1" 990 | top: "fire10/squeeze1x1" 991 | param { 992 | lr_mult: 1.0 993 | decay_mult: 0.0 994 | } 995 | param { 996 | lr_mult: 2.0 997 | decay_mult: 0.0 998 | } 999 | scale_param { 1000 | filler { 1001 | value: 1.0 1002 | } 1003 | bias_term: true 1004 | bias_filler { 1005 | value: 0.0 1006 | } 1007 | } 1008 | } 1009 | layer { 1010 | name: "fire10/expand1x1" 1011 | type: "Convolution" 1012 | bottom: "fire10/squeeze1x1" 1013 | top: "fire10/expand1x1" 1014 | convolution_param { 1015 | num_output: 45 1016 | kernel_size: 1 1017 | weight_filler { 1018 | type: "xavier" 1019 | } 1020 | } 1021 | } 1022 | layer { 1023 | name: "fire10/expand1x1/bn" 1024 | type: "BatchNorm" 1025 | bottom: "fire10/expand1x1" 1026 | top: "fire10/expand1x1" 1027 | param { 1028 | lr_mult: 0.0 1029 | decay_mult: 0.0 1030 | } 1031 | param { 1032 | lr_mult: 0.0 1033 | decay_mult: 0.0 1034 | } 1035 | param { 1036 | lr_mult: 0.0 1037 | decay_mult: 0.0 1038 | } 1039 | } 1040 | layer { 1041 | name: "fire10/expand1x1/scale" 1042 | type: "Scale" 1043 | bottom: "fire10/expand1x1" 1044 | top: "fire10/expand1x1" 1045 | param { 1046 | lr_mult: 1.0 1047 | decay_mult: 0.0 1048 | } 1049 | param { 1050 | lr_mult: 2.0 1051 | decay_mult: 0.0 1052 | } 1053 | scale_param { 1054 | filler { 1055 | value: 1.0 1056 | } 1057 | bias_term: true 1058 | bias_filler { 1059 | value: 0.0 1060 | } 1061 | } 1062 | } 1063 | layer { 1064 | name: "fire10/relu_expand1x1" 1065 | type: "ReLU" 1066 | bottom: "fire10/expand1x1" 1067 | top: "fire10/expand1x1" 1068 | } 1069 | layer { 1070 | name: "fire10/expand3x3" 1071 | type: "Convolution" 1072 | bottom: "fire10/squeeze1x1" 1073 | top: "fire10/expand3x3" 1074 | convolution_param { 1075 | num_output: 56 1076 | pad: 1 1077 | kernel_size: 3 1078 | weight_filler { 1079 | type: "xavier" 1080 | } 1081 | } 1082 | } 1083 | layer { 1084 | name: "fire10/expand3x3/bn" 1085 | type: "BatchNorm" 1086 | bottom: "fire10/expand3x3" 1087 | top: "fire10/expand3x3" 1088 | param { 1089 | lr_mult: 0.0 1090 | decay_mult: 0.0 1091 | } 1092 | param { 1093 | lr_mult: 0.0 1094 | decay_mult: 0.0 1095 | } 1096 | param { 1097 | lr_mult: 0.0 1098 | decay_mult: 0.0 1099 | } 1100 | } 1101 | layer { 1102 | name: "fire10/expand3x3/scale" 1103 | type: "Scale" 1104 | bottom: "fire10/expand3x3" 1105 | top: "fire10/expand3x3" 1106 | param { 1107 | lr_mult: 1.0 1108 | decay_mult: 0.0 1109 | } 1110 | param { 1111 | lr_mult: 2.0 1112 | decay_mult: 0.0 1113 | } 1114 | scale_param { 1115 | filler { 1116 | value: 1.0 1117 | } 1118 | bias_term: true 1119 | bias_filler { 1120 | value: 0.0 1121 | } 1122 | } 1123 | } 1124 | layer { 1125 | name: "fire10/relu_expand3x3" 1126 | type: "ReLU" 1127 | bottom: "fire10/expand3x3" 1128 | top: "fire10/expand3x3" 1129 | } 1130 | layer { 1131 | name: "fire10/concat" 1132 | type: "Concat" 1133 | bottom: "fire10/expand1x1" 1134 | bottom: "fire10/expand3x3" 1135 | top: "fire10/concat" 1136 | } 1137 | layer { 1138 | name: "pool10" 1139 | type: "Pooling" 1140 | bottom: "fire10/concat" 1141 | top: "pool10" 1142 | pooling_param { 1143 | pool: MAX 1144 | kernel_size: 3 1145 | stride: 2 1146 | } 1147 | } 1148 | layer { 1149 | name: "fire11/squeeze1x1" 1150 | type: "Convolution" 1151 | bottom: "pool10" 1152 | top: "fire11/squeeze1x1" 1153 | convolution_param { 1154 | num_output: 38 1155 | kernel_size: 1 1156 | weight_filler { 1157 | type: "xavier" 1158 | } 1159 | } 1160 | } 1161 | layer { 1162 | name: "fire11/squeeze1x1/bn" 1163 | type: "BatchNorm" 1164 | bottom: "fire11/squeeze1x1" 1165 | top: "fire11/squeeze1x1" 1166 | param { 1167 | lr_mult: 0.0 1168 | decay_mult: 0.0 1169 | } 1170 | param { 1171 | lr_mult: 0.0 1172 | decay_mult: 0.0 1173 | } 1174 | param { 1175 | lr_mult: 0.0 1176 | decay_mult: 0.0 1177 | } 1178 | } 1179 | layer { 1180 | name: "fire11/squeeze1x1/scale" 1181 | type: "Scale" 1182 | bottom: "fire11/squeeze1x1" 1183 | top: "fire11/squeeze1x1" 1184 | param { 1185 | lr_mult: 1.0 1186 | decay_mult: 0.0 1187 | } 1188 | param { 1189 | lr_mult: 2.0 1190 | decay_mult: 0.0 1191 | } 1192 | scale_param { 1193 | filler { 1194 | value: 1.0 1195 | } 1196 | bias_term: true 1197 | bias_filler { 1198 | value: 0.0 1199 | } 1200 | } 1201 | } 1202 | layer { 1203 | name: "fire11/expand1x1" 1204 | type: "Convolution" 1205 | bottom: "fire11/squeeze1x1" 1206 | top: "fire11/expand1x1" 1207 | convolution_param { 1208 | num_output: 41 1209 | kernel_size: 1 1210 | weight_filler { 1211 | type: "xavier" 1212 | } 1213 | } 1214 | } 1215 | layer { 1216 | name: "fire11/expand1x1/bn" 1217 | type: "BatchNorm" 1218 | bottom: "fire11/expand1x1" 1219 | top: "fire11/expand1x1" 1220 | param { 1221 | lr_mult: 0.0 1222 | decay_mult: 0.0 1223 | } 1224 | param { 1225 | lr_mult: 0.0 1226 | decay_mult: 0.0 1227 | } 1228 | param { 1229 | lr_mult: 0.0 1230 | decay_mult: 0.0 1231 | } 1232 | } 1233 | layer { 1234 | name: "fire11/expand1x1/scale" 1235 | type: "Scale" 1236 | bottom: "fire11/expand1x1" 1237 | top: "fire11/expand1x1" 1238 | param { 1239 | lr_mult: 1.0 1240 | decay_mult: 0.0 1241 | } 1242 | param { 1243 | lr_mult: 2.0 1244 | decay_mult: 0.0 1245 | } 1246 | scale_param { 1247 | filler { 1248 | value: 1.0 1249 | } 1250 | bias_term: true 1251 | bias_filler { 1252 | value: 0.0 1253 | } 1254 | } 1255 | } 1256 | layer { 1257 | name: "fire11/relu_expand1x1" 1258 | type: "ReLU" 1259 | bottom: "fire11/expand1x1" 1260 | top: "fire11/expand1x1" 1261 | } 1262 | layer { 1263 | name: "fire11/expand3x3" 1264 | type: "Convolution" 1265 | bottom: "fire11/squeeze1x1" 1266 | top: "fire11/expand3x3" 1267 | convolution_param { 1268 | num_output: 44 1269 | pad: 1 1270 | kernel_size: 3 1271 | weight_filler { 1272 | type: "xavier" 1273 | } 1274 | } 1275 | } 1276 | layer { 1277 | name: "fire11/expand3x3/bn" 1278 | type: "BatchNorm" 1279 | bottom: "fire11/expand3x3" 1280 | top: "fire11/expand3x3" 1281 | param { 1282 | lr_mult: 0.0 1283 | decay_mult: 0.0 1284 | } 1285 | param { 1286 | lr_mult: 0.0 1287 | decay_mult: 0.0 1288 | } 1289 | param { 1290 | lr_mult: 0.0 1291 | decay_mult: 0.0 1292 | } 1293 | } 1294 | layer { 1295 | name: "fire11/expand3x3/scale" 1296 | type: "Scale" 1297 | bottom: "fire11/expand3x3" 1298 | top: "fire11/expand3x3" 1299 | param { 1300 | lr_mult: 1.0 1301 | decay_mult: 0.0 1302 | } 1303 | param { 1304 | lr_mult: 2.0 1305 | decay_mult: 0.0 1306 | } 1307 | scale_param { 1308 | filler { 1309 | value: 1.0 1310 | } 1311 | bias_term: true 1312 | bias_filler { 1313 | value: 0.0 1314 | } 1315 | } 1316 | } 1317 | layer { 1318 | name: "fire11/relu_expand3x3" 1319 | type: "ReLU" 1320 | bottom: "fire11/expand3x3" 1321 | top: "fire11/expand3x3" 1322 | } 1323 | layer { 1324 | name: "fire11/concat" 1325 | type: "Concat" 1326 | bottom: "fire11/expand1x1" 1327 | bottom: "fire11/expand3x3" 1328 | top: "fire11/concat" 1329 | } 1330 | layer { 1331 | name: "conv12_1" 1332 | type: "Convolution" 1333 | bottom: "fire11/concat" 1334 | top: "conv12_1" 1335 | param { 1336 | lr_mult: 1.0 1337 | decay_mult: 1.0 1338 | } 1339 | convolution_param { 1340 | num_output: 51 1341 | bias_term: false 1342 | kernel_size: 1 1343 | weight_filler { 1344 | type: "msra" 1345 | } 1346 | } 1347 | } 1348 | layer { 1349 | name: "conv12_1/bn" 1350 | type: "BatchNorm" 1351 | bottom: "conv12_1" 1352 | top: "conv12_1" 1353 | param { 1354 | lr_mult: 0.0 1355 | decay_mult: 0.0 1356 | } 1357 | param { 1358 | lr_mult: 0.0 1359 | decay_mult: 0.0 1360 | } 1361 | param { 1362 | lr_mult: 0.0 1363 | decay_mult: 0.0 1364 | } 1365 | } 1366 | layer { 1367 | name: "conv12_1/scale" 1368 | type: "Scale" 1369 | bottom: "conv12_1" 1370 | top: "conv12_1" 1371 | param { 1372 | lr_mult: 1.0 1373 | decay_mult: 0.0 1374 | } 1375 | param { 1376 | lr_mult: 2.0 1377 | decay_mult: 0.0 1378 | } 1379 | scale_param { 1380 | filler { 1381 | value: 1.0 1382 | } 1383 | bias_term: true 1384 | bias_filler { 1385 | value: 0.0 1386 | } 1387 | } 1388 | } 1389 | layer { 1390 | name: "conv12_1/relu" 1391 | type: "ReLU" 1392 | bottom: "conv12_1" 1393 | top: "conv12_1" 1394 | } 1395 | layer { 1396 | name: "conv12_2" 1397 | type: "Convolution" 1398 | bottom: "conv12_1" 1399 | top: "conv12_2" 1400 | param { 1401 | lr_mult: 1.0 1402 | decay_mult: 1.0 1403 | } 1404 | convolution_param { 1405 | num_output: 46 1406 | bias_term: false 1407 | pad: 1 1408 | kernel_size: 3 1409 | stride: 2 1410 | weight_filler { 1411 | type: "msra" 1412 | } 1413 | } 1414 | } 1415 | layer { 1416 | name: "conv12_2/bn" 1417 | type: "BatchNorm" 1418 | bottom: "conv12_2" 1419 | top: "conv12_2" 1420 | param { 1421 | lr_mult: 0.0 1422 | decay_mult: 0.0 1423 | } 1424 | param { 1425 | lr_mult: 0.0 1426 | decay_mult: 0.0 1427 | } 1428 | param { 1429 | lr_mult: 0.0 1430 | decay_mult: 0.0 1431 | } 1432 | } 1433 | layer { 1434 | name: "conv12_2/scale" 1435 | type: "Scale" 1436 | bottom: "conv12_2" 1437 | top: "conv12_2" 1438 | param { 1439 | lr_mult: 1.0 1440 | decay_mult: 0.0 1441 | } 1442 | param { 1443 | lr_mult: 2.0 1444 | decay_mult: 0.0 1445 | } 1446 | scale_param { 1447 | filler { 1448 | value: 1.0 1449 | } 1450 | bias_term: true 1451 | bias_filler { 1452 | value: 0.0 1453 | } 1454 | } 1455 | } 1456 | layer { 1457 | name: "conv12_2/relu" 1458 | type: "ReLU" 1459 | bottom: "conv12_2" 1460 | top: "conv12_2" 1461 | } 1462 | layer { 1463 | name: "conv13_1" 1464 | type: "Convolution" 1465 | bottom: "conv12_2" 1466 | top: "conv13_1" 1467 | param { 1468 | lr_mult: 1.0 1469 | decay_mult: 1.0 1470 | } 1471 | convolution_param { 1472 | num_output: 55 1473 | bias_term: false 1474 | kernel_size: 1 1475 | weight_filler { 1476 | type: "msra" 1477 | } 1478 | } 1479 | } 1480 | layer { 1481 | name: "conv13_1/bn" 1482 | type: "BatchNorm" 1483 | bottom: "conv13_1" 1484 | top: "conv13_1" 1485 | param { 1486 | lr_mult: 0.0 1487 | decay_mult: 0.0 1488 | } 1489 | param { 1490 | lr_mult: 0.0 1491 | decay_mult: 0.0 1492 | } 1493 | param { 1494 | lr_mult: 0.0 1495 | decay_mult: 0.0 1496 | } 1497 | } 1498 | layer { 1499 | name: "conv13_1/scale" 1500 | type: "Scale" 1501 | bottom: "conv13_1" 1502 | top: "conv13_1" 1503 | param { 1504 | lr_mult: 1.0 1505 | decay_mult: 0.0 1506 | } 1507 | param { 1508 | lr_mult: 2.0 1509 | decay_mult: 0.0 1510 | } 1511 | scale_param { 1512 | filler { 1513 | value: 1.0 1514 | } 1515 | bias_term: true 1516 | bias_filler { 1517 | value: 0.0 1518 | } 1519 | } 1520 | } 1521 | layer { 1522 | name: "conv13_1/relu" 1523 | type: "ReLU" 1524 | bottom: "conv13_1" 1525 | top: "conv13_1" 1526 | } 1527 | layer { 1528 | name: "conv13_2" 1529 | type: "Convolution" 1530 | bottom: "conv13_1" 1531 | top: "conv13_2" 1532 | param { 1533 | lr_mult: 1.0 1534 | decay_mult: 1.0 1535 | } 1536 | convolution_param { 1537 | num_output: 85 1538 | bias_term: false 1539 | pad: 1 1540 | kernel_size: 3 1541 | stride: 2 1542 | weight_filler { 1543 | type: "msra" 1544 | } 1545 | } 1546 | } 1547 | layer { 1548 | name: "conv13_2/bn" 1549 | type: "BatchNorm" 1550 | bottom: "conv13_2" 1551 | top: "conv13_2" 1552 | param { 1553 | lr_mult: 0.0 1554 | decay_mult: 0.0 1555 | } 1556 | param { 1557 | lr_mult: 0.0 1558 | decay_mult: 0.0 1559 | } 1560 | param { 1561 | lr_mult: 0.0 1562 | decay_mult: 0.0 1563 | } 1564 | } 1565 | layer { 1566 | name: "conv13_2/scale" 1567 | type: "Scale" 1568 | bottom: "conv13_2" 1569 | top: "conv13_2" 1570 | param { 1571 | lr_mult: 1.0 1572 | decay_mult: 0.0 1573 | } 1574 | param { 1575 | lr_mult: 2.0 1576 | decay_mult: 0.0 1577 | } 1578 | scale_param { 1579 | filler { 1580 | value: 1.0 1581 | } 1582 | bias_term: true 1583 | bias_filler { 1584 | value: 0.0 1585 | } 1586 | } 1587 | } 1588 | layer { 1589 | name: "conv13_2/relu" 1590 | type: "ReLU" 1591 | bottom: "conv13_2" 1592 | top: "conv13_2" 1593 | } 1594 | layer { 1595 | name: "fire5/bn" 1596 | type: "BatchNorm" 1597 | bottom: "fire5/concat" 1598 | top: "fire5/normal" 1599 | param { 1600 | lr_mult: 0.0 1601 | decay_mult: 0.0 1602 | } 1603 | param { 1604 | lr_mult: 0.0 1605 | decay_mult: 0.0 1606 | } 1607 | param { 1608 | lr_mult: 0.0 1609 | decay_mult: 0.0 1610 | } 1611 | } 1612 | layer { 1613 | name: "fire5/scale" 1614 | type: "Scale" 1615 | bottom: "fire5/normal" 1616 | top: "fire5/normal" 1617 | param { 1618 | lr_mult: 1.0 1619 | decay_mult: 0.0 1620 | } 1621 | param { 1622 | lr_mult: 2.0 1623 | decay_mult: 0.0 1624 | } 1625 | scale_param { 1626 | filler { 1627 | value: 1.0 1628 | } 1629 | bias_term: true 1630 | bias_filler { 1631 | value: 0.0 1632 | } 1633 | } 1634 | } 1635 | layer { 1636 | name: "fire5_mbox_loc" 1637 | type: "Convolution" 1638 | bottom: "fire5/normal" 1639 | top: "fire5_mbox_loc" 1640 | param { 1641 | lr_mult: 1.0 1642 | decay_mult: 1.0 1643 | } 1644 | param { 1645 | lr_mult: 2.0 1646 | decay_mult: 0.0 1647 | } 1648 | convolution_param { 1649 | num_output: 16 1650 | pad: 1 1651 | kernel_size: 3 1652 | stride: 1 1653 | weight_filler { 1654 | type: "msra" 1655 | } 1656 | bias_filler { 1657 | type: "constant" 1658 | value: 0.0 1659 | } 1660 | } 1661 | } 1662 | layer { 1663 | name: "fire5_mbox_loc_perm" 1664 | type: "Permute" 1665 | bottom: "fire5_mbox_loc" 1666 | top: "fire5_mbox_loc_perm" 1667 | permute_param { 1668 | order: 0 1669 | order: 2 1670 | order: 3 1671 | order: 1 1672 | } 1673 | } 1674 | layer { 1675 | name: "fire5_mbox_loc_flat" 1676 | type: "Flatten" 1677 | bottom: "fire5_mbox_loc_perm" 1678 | top: "fire5_mbox_loc_flat" 1679 | flatten_param { 1680 | axis: 1 1681 | } 1682 | } 1683 | layer { 1684 | name: "fire5_mbox_conf" 1685 | type: "Convolution" 1686 | bottom: "fire5/normal" 1687 | top: "fire5_mbox_conf" 1688 | param { 1689 | lr_mult: 1.0 1690 | decay_mult: 1.0 1691 | } 1692 | param { 1693 | lr_mult: 2.0 1694 | decay_mult: 0.0 1695 | } 1696 | convolution_param { 1697 | num_output: 84 1698 | pad: 1 1699 | kernel_size: 3 1700 | stride: 1 1701 | weight_filler { 1702 | type: "msra" 1703 | } 1704 | bias_filler { 1705 | type: "constant" 1706 | value: 0.0 1707 | } 1708 | } 1709 | } 1710 | layer { 1711 | name: "fire5_mbox_conf_perm" 1712 | type: "Permute" 1713 | bottom: "fire5_mbox_conf" 1714 | top: "fire5_mbox_conf_perm" 1715 | permute_param { 1716 | order: 0 1717 | order: 2 1718 | order: 3 1719 | order: 1 1720 | } 1721 | } 1722 | layer { 1723 | name: "fire5_mbox_conf_flat" 1724 | type: "Flatten" 1725 | bottom: "fire5_mbox_conf_perm" 1726 | top: "fire5_mbox_conf_flat" 1727 | flatten_param { 1728 | axis: 1 1729 | } 1730 | } 1731 | layer { 1732 | name: "fire5_mbox_priorbox" 1733 | type: "PriorBox" 1734 | bottom: "fire5/normal" 1735 | bottom: "data" 1736 | top: "fire5_mbox_priorbox" 1737 | prior_box_param { 1738 | min_size: 21.0 1739 | max_size: 45.0 1740 | aspect_ratio: 2.0 1741 | flip: true 1742 | clip: false 1743 | variance: 0.10000000149 1744 | variance: 0.10000000149 1745 | variance: 0.20000000298 1746 | variance: 0.20000000298 1747 | step: 8.0 1748 | } 1749 | } 1750 | layer { 1751 | name: "fire9_mbox_loc" 1752 | type: "Convolution" 1753 | bottom: "fire9/concat" 1754 | top: "fire9_mbox_loc" 1755 | param { 1756 | lr_mult: 1.0 1757 | decay_mult: 1.0 1758 | } 1759 | param { 1760 | lr_mult: 2.0 1761 | decay_mult: 0.0 1762 | } 1763 | convolution_param { 1764 | num_output: 24 1765 | pad: 1 1766 | kernel_size: 3 1767 | stride: 1 1768 | weight_filler { 1769 | type: "msra" 1770 | } 1771 | bias_filler { 1772 | type: "constant" 1773 | value: 0.0 1774 | } 1775 | } 1776 | } 1777 | layer { 1778 | name: "fire9_mbox_loc_perm" 1779 | type: "Permute" 1780 | bottom: "fire9_mbox_loc" 1781 | top: "fire9_mbox_loc_perm" 1782 | permute_param { 1783 | order: 0 1784 | order: 2 1785 | order: 3 1786 | order: 1 1787 | } 1788 | } 1789 | layer { 1790 | name: "fire9_mbox_loc_flat" 1791 | type: "Flatten" 1792 | bottom: "fire9_mbox_loc_perm" 1793 | top: "fire9_mbox_loc_flat" 1794 | flatten_param { 1795 | axis: 1 1796 | } 1797 | } 1798 | layer { 1799 | name: "fire9_mbox_conf" 1800 | type: "Convolution" 1801 | bottom: "fire9/concat" 1802 | top: "fire9_mbox_conf" 1803 | param { 1804 | lr_mult: 1.0 1805 | decay_mult: 1.0 1806 | } 1807 | param { 1808 | lr_mult: 2.0 1809 | decay_mult: 0.0 1810 | } 1811 | convolution_param { 1812 | num_output: 126 1813 | pad: 1 1814 | kernel_size: 3 1815 | stride: 1 1816 | weight_filler { 1817 | type: "msra" 1818 | } 1819 | bias_filler { 1820 | type: "constant" 1821 | value: 0.0 1822 | } 1823 | } 1824 | } 1825 | layer { 1826 | name: "fire9_mbox_conf_perm" 1827 | type: "Permute" 1828 | bottom: "fire9_mbox_conf" 1829 | top: "fire9_mbox_conf_perm" 1830 | permute_param { 1831 | order: 0 1832 | order: 2 1833 | order: 3 1834 | order: 1 1835 | } 1836 | } 1837 | layer { 1838 | name: "fire9_mbox_conf_flat" 1839 | type: "Flatten" 1840 | bottom: "fire9_mbox_conf_perm" 1841 | top: "fire9_mbox_conf_flat" 1842 | flatten_param { 1843 | axis: 1 1844 | } 1845 | } 1846 | layer { 1847 | name: "fire9_mbox_priorbox" 1848 | type: "PriorBox" 1849 | bottom: "fire9/concat" 1850 | bottom: "data" 1851 | top: "fire9_mbox_priorbox" 1852 | prior_box_param { 1853 | min_size: 45.0 1854 | max_size: 99.0 1855 | aspect_ratio: 2.0 1856 | aspect_ratio: 3.0 1857 | flip: true 1858 | clip: false 1859 | variance: 0.10000000149 1860 | variance: 0.10000000149 1861 | variance: 0.20000000298 1862 | variance: 0.20000000298 1863 | step: 16.0 1864 | } 1865 | } 1866 | layer { 1867 | name: "fire10_mbox_loc" 1868 | type: "Convolution" 1869 | bottom: "fire10/concat" 1870 | top: "fire10_mbox_loc" 1871 | param { 1872 | lr_mult: 1.0 1873 | decay_mult: 1.0 1874 | } 1875 | param { 1876 | lr_mult: 2.0 1877 | decay_mult: 0.0 1878 | } 1879 | convolution_param { 1880 | num_output: 24 1881 | pad: 1 1882 | kernel_size: 3 1883 | stride: 1 1884 | weight_filler { 1885 | type: "msra" 1886 | } 1887 | bias_filler { 1888 | type: "constant" 1889 | value: 0.0 1890 | } 1891 | } 1892 | } 1893 | layer { 1894 | name: "fire10_mbox_loc_perm" 1895 | type: "Permute" 1896 | bottom: "fire10_mbox_loc" 1897 | top: "fire10_mbox_loc_perm" 1898 | permute_param { 1899 | order: 0 1900 | order: 2 1901 | order: 3 1902 | order: 1 1903 | } 1904 | } 1905 | layer { 1906 | name: "fire10_mbox_loc_flat" 1907 | type: "Flatten" 1908 | bottom: "fire10_mbox_loc_perm" 1909 | top: "fire10_mbox_loc_flat" 1910 | flatten_param { 1911 | axis: 1 1912 | } 1913 | } 1914 | layer { 1915 | name: "fire10_mbox_conf" 1916 | type: "Convolution" 1917 | bottom: "fire10/concat" 1918 | top: "fire10_mbox_conf" 1919 | param { 1920 | lr_mult: 1.0 1921 | decay_mult: 1.0 1922 | } 1923 | param { 1924 | lr_mult: 2.0 1925 | decay_mult: 0.0 1926 | } 1927 | convolution_param { 1928 | num_output: 126 1929 | pad: 1 1930 | kernel_size: 3 1931 | stride: 1 1932 | weight_filler { 1933 | type: "msra" 1934 | } 1935 | bias_filler { 1936 | type: "constant" 1937 | value: 0.0 1938 | } 1939 | } 1940 | } 1941 | layer { 1942 | name: "fire10_mbox_conf_perm" 1943 | type: "Permute" 1944 | bottom: "fire10_mbox_conf" 1945 | top: "fire10_mbox_conf_perm" 1946 | permute_param { 1947 | order: 0 1948 | order: 2 1949 | order: 3 1950 | order: 1 1951 | } 1952 | } 1953 | layer { 1954 | name: "fire10_mbox_conf_flat" 1955 | type: "Flatten" 1956 | bottom: "fire10_mbox_conf_perm" 1957 | top: "fire10_mbox_conf_flat" 1958 | flatten_param { 1959 | axis: 1 1960 | } 1961 | } 1962 | layer { 1963 | name: "fire10_mbox_priorbox" 1964 | type: "PriorBox" 1965 | bottom: "fire10/concat" 1966 | bottom: "data" 1967 | top: "fire10_mbox_priorbox" 1968 | prior_box_param { 1969 | min_size: 99.0 1970 | max_size: 153.0 1971 | aspect_ratio: 2.0 1972 | aspect_ratio: 3.0 1973 | flip: true 1974 | clip: false 1975 | variance: 0.10000000149 1976 | variance: 0.10000000149 1977 | variance: 0.20000000298 1978 | variance: 0.20000000298 1979 | step: 32.0 1980 | } 1981 | } 1982 | layer { 1983 | name: "fire11_mbox_loc" 1984 | type: "Convolution" 1985 | bottom: "fire11/concat" 1986 | top: "fire11_mbox_loc" 1987 | param { 1988 | lr_mult: 1.0 1989 | decay_mult: 1.0 1990 | } 1991 | param { 1992 | lr_mult: 2.0 1993 | decay_mult: 0.0 1994 | } 1995 | convolution_param { 1996 | num_output: 24 1997 | pad: 1 1998 | kernel_size: 3 1999 | stride: 1 2000 | weight_filler { 2001 | type: "msra" 2002 | } 2003 | bias_filler { 2004 | type: "constant" 2005 | value: 0.0 2006 | } 2007 | } 2008 | } 2009 | layer { 2010 | name: "fire11_mbox_loc_perm" 2011 | type: "Permute" 2012 | bottom: "fire11_mbox_loc" 2013 | top: "fire11_mbox_loc_perm" 2014 | permute_param { 2015 | order: 0 2016 | order: 2 2017 | order: 3 2018 | order: 1 2019 | } 2020 | } 2021 | layer { 2022 | name: "fire11_mbox_loc_flat" 2023 | type: "Flatten" 2024 | bottom: "fire11_mbox_loc_perm" 2025 | top: "fire11_mbox_loc_flat" 2026 | flatten_param { 2027 | axis: 1 2028 | } 2029 | } 2030 | layer { 2031 | name: "fire11_mbox_conf" 2032 | type: "Convolution" 2033 | bottom: "fire11/concat" 2034 | top: "fire11_mbox_conf" 2035 | param { 2036 | lr_mult: 1.0 2037 | decay_mult: 1.0 2038 | } 2039 | param { 2040 | lr_mult: 2.0 2041 | decay_mult: 0.0 2042 | } 2043 | convolution_param { 2044 | num_output: 126 2045 | pad: 1 2046 | kernel_size: 3 2047 | stride: 1 2048 | weight_filler { 2049 | type: "msra" 2050 | } 2051 | bias_filler { 2052 | type: "constant" 2053 | value: 0.0 2054 | } 2055 | } 2056 | } 2057 | layer { 2058 | name: "fire11_mbox_conf_perm" 2059 | type: "Permute" 2060 | bottom: "fire11_mbox_conf" 2061 | top: "fire11_mbox_conf_perm" 2062 | permute_param { 2063 | order: 0 2064 | order: 2 2065 | order: 3 2066 | order: 1 2067 | } 2068 | } 2069 | layer { 2070 | name: "fire11_mbox_conf_flat" 2071 | type: "Flatten" 2072 | bottom: "fire11_mbox_conf_perm" 2073 | top: "fire11_mbox_conf_flat" 2074 | flatten_param { 2075 | axis: 1 2076 | } 2077 | } 2078 | layer { 2079 | name: "fire11_mbox_priorbox" 2080 | type: "PriorBox" 2081 | bottom: "fire11/concat" 2082 | bottom: "data" 2083 | top: "fire11_mbox_priorbox" 2084 | prior_box_param { 2085 | min_size: 153.0 2086 | max_size: 207.0 2087 | aspect_ratio: 2.0 2088 | aspect_ratio: 3.0 2089 | flip: true 2090 | clip: false 2091 | variance: 0.10000000149 2092 | variance: 0.10000000149 2093 | variance: 0.20000000298 2094 | variance: 0.20000000298 2095 | step: 64.0 2096 | } 2097 | } 2098 | layer { 2099 | name: "conv12_2_mbox_loc" 2100 | type: "Convolution" 2101 | bottom: "conv12_2" 2102 | top: "conv12_2_mbox_loc" 2103 | param { 2104 | lr_mult: 1.0 2105 | decay_mult: 1.0 2106 | } 2107 | param { 2108 | lr_mult: 2.0 2109 | decay_mult: 0.0 2110 | } 2111 | convolution_param { 2112 | num_output: 24 2113 | pad: 1 2114 | kernel_size: 3 2115 | stride: 1 2116 | weight_filler { 2117 | type: "msra" 2118 | } 2119 | bias_filler { 2120 | type: "constant" 2121 | value: 0.0 2122 | } 2123 | } 2124 | } 2125 | layer { 2126 | name: "conv12_2_mbox_loc_perm" 2127 | type: "Permute" 2128 | bottom: "conv12_2_mbox_loc" 2129 | top: "conv12_2_mbox_loc_perm" 2130 | permute_param { 2131 | order: 0 2132 | order: 2 2133 | order: 3 2134 | order: 1 2135 | } 2136 | } 2137 | layer { 2138 | name: "conv12_2_mbox_loc_flat" 2139 | type: "Flatten" 2140 | bottom: "conv12_2_mbox_loc_perm" 2141 | top: "conv12_2_mbox_loc_flat" 2142 | flatten_param { 2143 | axis: 1 2144 | } 2145 | } 2146 | layer { 2147 | name: "conv12_2_mbox_conf" 2148 | type: "Convolution" 2149 | bottom: "conv12_2" 2150 | top: "conv12_2_mbox_conf" 2151 | param { 2152 | lr_mult: 1.0 2153 | decay_mult: 1.0 2154 | } 2155 | param { 2156 | lr_mult: 2.0 2157 | decay_mult: 0.0 2158 | } 2159 | convolution_param { 2160 | num_output: 126 2161 | pad: 1 2162 | kernel_size: 3 2163 | stride: 1 2164 | weight_filler { 2165 | type: "msra" 2166 | } 2167 | bias_filler { 2168 | type: "constant" 2169 | value: 0.0 2170 | } 2171 | } 2172 | } 2173 | layer { 2174 | name: "conv12_2_mbox_conf_perm" 2175 | type: "Permute" 2176 | bottom: "conv12_2_mbox_conf" 2177 | top: "conv12_2_mbox_conf_perm" 2178 | permute_param { 2179 | order: 0 2180 | order: 2 2181 | order: 3 2182 | order: 1 2183 | } 2184 | } 2185 | layer { 2186 | name: "conv12_2_mbox_conf_flat" 2187 | type: "Flatten" 2188 | bottom: "conv12_2_mbox_conf_perm" 2189 | top: "conv12_2_mbox_conf_flat" 2190 | flatten_param { 2191 | axis: 1 2192 | } 2193 | } 2194 | layer { 2195 | name: "conv12_2_mbox_priorbox" 2196 | type: "PriorBox" 2197 | bottom: "conv12_2" 2198 | bottom: "data" 2199 | top: "conv12_2_mbox_priorbox" 2200 | prior_box_param { 2201 | min_size: 207.0 2202 | max_size: 261.0 2203 | aspect_ratio: 2.0 2204 | aspect_ratio: 3.0 2205 | flip: true 2206 | clip: false 2207 | variance: 0.10000000149 2208 | variance: 0.10000000149 2209 | variance: 0.20000000298 2210 | variance: 0.20000000298 2211 | step: 100.0 2212 | } 2213 | } 2214 | layer { 2215 | name: "conv13_2_mbox_loc" 2216 | type: "Convolution" 2217 | bottom: "conv13_2" 2218 | top: "conv13_2_mbox_loc" 2219 | param { 2220 | lr_mult: 1.0 2221 | decay_mult: 1.0 2222 | } 2223 | param { 2224 | lr_mult: 2.0 2225 | decay_mult: 0.0 2226 | } 2227 | convolution_param { 2228 | num_output: 16 2229 | pad: 1 2230 | kernel_size: 3 2231 | stride: 1 2232 | weight_filler { 2233 | type: "msra" 2234 | } 2235 | bias_filler { 2236 | type: "constant" 2237 | value: 0.0 2238 | } 2239 | } 2240 | } 2241 | layer { 2242 | name: "conv13_2_mbox_loc_perm" 2243 | type: "Permute" 2244 | bottom: "conv13_2_mbox_loc" 2245 | top: "conv13_2_mbox_loc_perm" 2246 | permute_param { 2247 | order: 0 2248 | order: 2 2249 | order: 3 2250 | order: 1 2251 | } 2252 | } 2253 | layer { 2254 | name: "conv13_2_mbox_loc_flat" 2255 | type: "Flatten" 2256 | bottom: "conv13_2_mbox_loc_perm" 2257 | top: "conv13_2_mbox_loc_flat" 2258 | flatten_param { 2259 | axis: 1 2260 | } 2261 | } 2262 | layer { 2263 | name: "conv13_2_mbox_conf" 2264 | type: "Convolution" 2265 | bottom: "conv13_2" 2266 | top: "conv13_2_mbox_conf" 2267 | param { 2268 | lr_mult: 1.0 2269 | decay_mult: 1.0 2270 | } 2271 | param { 2272 | lr_mult: 2.0 2273 | decay_mult: 0.0 2274 | } 2275 | convolution_param { 2276 | num_output: 84 2277 | pad: 1 2278 | kernel_size: 3 2279 | stride: 1 2280 | weight_filler { 2281 | type: "msra" 2282 | } 2283 | bias_filler { 2284 | type: "constant" 2285 | value: 0.0 2286 | } 2287 | } 2288 | } 2289 | layer { 2290 | name: "conv13_2_mbox_conf_perm" 2291 | type: "Permute" 2292 | bottom: "conv13_2_mbox_conf" 2293 | top: "conv13_2_mbox_conf_perm" 2294 | permute_param { 2295 | order: 0 2296 | order: 2 2297 | order: 3 2298 | order: 1 2299 | } 2300 | } 2301 | layer { 2302 | name: "conv13_2_mbox_conf_flat" 2303 | type: "Flatten" 2304 | bottom: "conv13_2_mbox_conf_perm" 2305 | top: "conv13_2_mbox_conf_flat" 2306 | flatten_param { 2307 | axis: 1 2308 | } 2309 | } 2310 | layer { 2311 | name: "conv13_2_mbox_priorbox" 2312 | type: "PriorBox" 2313 | bottom: "conv13_2" 2314 | bottom: "data" 2315 | top: "conv13_2_mbox_priorbox" 2316 | prior_box_param { 2317 | min_size: 261.0 2318 | max_size: 315.0 2319 | aspect_ratio: 2.0 2320 | flip: true 2321 | clip: false 2322 | variance: 0.10000000149 2323 | variance: 0.10000000149 2324 | variance: 0.20000000298 2325 | variance: 0.20000000298 2326 | step: 300.0 2327 | } 2328 | } 2329 | layer { 2330 | name: "mbox_loc" 2331 | type: "Concat" 2332 | bottom: "fire5_mbox_loc_flat" 2333 | bottom: "fire9_mbox_loc_flat" 2334 | bottom: "fire10_mbox_loc_flat" 2335 | bottom: "fire11_mbox_loc_flat" 2336 | bottom: "conv12_2_mbox_loc_flat" 2337 | bottom: "conv13_2_mbox_loc_flat" 2338 | top: "mbox_loc" 2339 | concat_param { 2340 | axis: 1 2341 | } 2342 | } 2343 | layer { 2344 | name: "mbox_conf" 2345 | type: "Concat" 2346 | bottom: "fire5_mbox_conf_flat" 2347 | bottom: "fire9_mbox_conf_flat" 2348 | bottom: "fire10_mbox_conf_flat" 2349 | bottom: "fire11_mbox_conf_flat" 2350 | bottom: "conv12_2_mbox_conf_flat" 2351 | bottom: "conv13_2_mbox_conf_flat" 2352 | top: "mbox_conf" 2353 | concat_param { 2354 | axis: 1 2355 | } 2356 | } 2357 | layer { 2358 | name: "mbox_priorbox" 2359 | type: "Concat" 2360 | bottom: "fire5_mbox_priorbox" 2361 | bottom: "fire9_mbox_priorbox" 2362 | bottom: "fire10_mbox_priorbox" 2363 | bottom: "fire11_mbox_priorbox" 2364 | bottom: "conv12_2_mbox_priorbox" 2365 | bottom: "conv13_2_mbox_priorbox" 2366 | top: "mbox_priorbox" 2367 | concat_param { 2368 | axis: 2 2369 | } 2370 | } 2371 | layer { 2372 | name: "mbox_loss" 2373 | type: "MultiBoxLoss" 2374 | bottom: "mbox_loc" 2375 | bottom: "mbox_conf" 2376 | bottom: "mbox_priorbox" 2377 | bottom: "label" 2378 | top: "mbox_loss" 2379 | include { 2380 | phase: TRAIN 2381 | } 2382 | propagate_down: true 2383 | propagate_down: true 2384 | propagate_down: false 2385 | propagate_down: false 2386 | loss_param { 2387 | normalization: VALID 2388 | } 2389 | multibox_loss_param { 2390 | loc_loss_type: SMOOTH_L1 2391 | conf_loss_type: SOFTMAX 2392 | loc_weight: 1.0 2393 | num_classes: 21 2394 | share_location: true 2395 | match_type: PER_PREDICTION 2396 | overlap_threshold: 0.5 2397 | use_prior_for_matching: true 2398 | background_label_id: 0 2399 | use_difficult_gt: true 2400 | neg_pos_ratio: 3.0 2401 | neg_overlap: 0.5 2402 | code_type: CENTER_SIZE 2403 | ignore_cross_boundary_bbox: false 2404 | mining_type: MAX_NEGATIVE 2405 | } 2406 | } 2407 | -------------------------------------------------------------------------------- /solver.prototxt: -------------------------------------------------------------------------------- 1 | train_net: "models/tiny_ssd_squeezenet/tiny_ssd_voc_train.prototxt" 2 | test_net: "models/tiny_ssd_squeezenet/tiny_ssd_voc_test.prototxt" 3 | test_iter: 619 4 | test_interval: 10000 5 | base_lr: 0.0001 6 | display: 100 7 | max_iter: 400000 8 | lr_policy: "multistep" 9 | gamma: 0.5 10 | weight_decay: 0.0 11 | snapshot: 10000 12 | snapshot_prefix: "models/tiny_ssd_squeezenet/model/" 13 | solver_mode: GPU 14 | device_id: 0 15 | debug_info: false 16 | snapshot_after_train: true 17 | test_initialization: false 18 | average_loss: 10 19 | stepvalue: 190000 20 | stepvalue: 250000 21 | stepvalue: 280000 22 | iter_size: 1 23 | type: "RMSProp" 24 | eval_type: "detection" 25 | ap_version: "11point" 26 | --------------------------------------------------------------------------------