+8
-5
README.rst
+8
-5
README.rst
···
95
95
NSFW Detection
96
96
--------------
97
97
98
-
0x0 supports classification of NSFW content via Yahoo’s open_nsfw Caffe
99
-
neural network model. This works for images and video files and requires
100
-
the following:
98
+
0x0 supports classification of NSFW content via
99
+
`a machine learning model <https://huggingface.co/giacomoarienti/nsfw-classifier>`_.
100
+
This works for images and video files and requires the following
101
+
Python modules:
101
102
102
-
* Caffe Python module (built for Python 3)
103
-
* `PyAV <https://github.com/PyAV-Org/PyAV>`_
103
+
* torch
104
+
* transformers
105
+
* pillow
106
+
* `av <https://github.com/PyAV-Org/PyAV>`_
104
107
105
108
106
109
Virus Scanning
+1
-1
fhost.py
+1
-1
fhost.py
+1
-1
instance/config.example.py
+1
-1
instance/config.example.py
+8
-59
nsfw_detect.py
+8
-59
nsfw_detect.py
···
1
1
#!/usr/bin/env python3
2
2
3
3
"""
4
-
Copyright © 2020 Mia Herkt
4
+
Copyright © 2024 Mia Herkt
5
5
Licensed under the EUPL, Version 1.2 or - as soon as approved
6
6
by the European Commission - subsequent versions of the EUPL
7
7
(the "License");
···
18
18
and limitations under the License.
19
19
"""
20
20
21
-
import numpy as np
22
21
import os
23
22
import sys
24
-
from io import BytesIO
25
23
from pathlib import Path
26
24
27
-
os.environ["GLOG_minloglevel"] = "2" # seriously :|
28
-
import caffe
29
25
import av
30
-
av.logging.set_level(av.logging.PANIC)
26
+
from transformers import pipeline
31
27
32
28
class NSFWDetector:
33
29
def __init__(self):
34
-
npath = Path(__file__).parent / "nsfw_model"
35
-
self.nsfw_net = caffe.Net(
36
-
str(npath / "deploy.prototxt"),
37
-
caffe.TEST,
38
-
weights = str(npath / "resnet_50_1by2_nsfw.caffemodel")
39
-
)
40
-
self.caffe_transformer = caffe.io.Transformer({
41
-
'data': self.nsfw_net.blobs['data'].data.shape
42
-
})
43
-
# move image channels to outermost
44
-
self.caffe_transformer.set_transpose('data', (2, 0, 1))
45
-
# subtract the dataset-mean value in each channel
46
-
self.caffe_transformer.set_mean('data', np.array([104, 117, 123]))
47
-
# rescale from [0, 1] to [0, 255]
48
-
self.caffe_transformer.set_raw_scale('data', 255)
49
-
# swap channels from RGB to BGR
50
-
self.caffe_transformer.set_channel_swap('data', (2, 1, 0))
51
-
52
-
def _compute(self, img):
53
-
image = caffe.io.load_image(img)
54
-
55
-
H, W, _ = image.shape
56
-
_, _, h, w = self.nsfw_net.blobs["data"].data.shape
57
-
h_off = int(max((H - h) / 2, 0))
58
-
w_off = int(max((W - w) / 2, 0))
59
-
crop = image[h_off:h_off + h, w_off:w_off + w, :]
60
-
61
-
transformed_image = self.caffe_transformer.preprocess('data', crop)
62
-
transformed_image.shape = (1,) + transformed_image.shape
63
-
64
-
input_name = self.nsfw_net.inputs[0]
65
-
output_layers = ["prob"]
66
-
all_outputs = self.nsfw_net.forward_all(
67
-
blobs=output_layers, **{input_name: transformed_image})
68
-
69
-
outputs = all_outputs[output_layers[0]][0].astype(float)
70
-
71
-
return outputs
30
+
self.classifier = pipeline("image-classification", model="giacomoarienti/nsfw-classifier")
72
31
73
32
def detect(self, fpath):
74
33
try:
···
77
36
except: container.seek(0)
78
37
79
38
frame = next(container.decode(video=0))
39
+
img = frame.to_image()
40
+
res = self.classifier(img)
80
41
81
-
if frame.width >= frame.height:
82
-
w = 256
83
-
h = int(frame.height * (256 / frame.width))
84
-
else:
85
-
w = int(frame.width * (256 / frame.height))
86
-
h = 256
87
-
frame = frame.reformat(width=w, height=h, format="rgb24")
88
-
img = BytesIO()
89
-
frame.to_image().save(img, format="ppm")
42
+
return max([x["score"] for x in res if x["label"] not in ["neutral", "drawings"]])
43
+
except: pass
90
44
91
-
scores = self._compute(img)
92
-
except:
93
-
return -1.0
94
-
95
-
return scores[1]
96
-
45
+
return -1.0
97
46
98
47
if __name__ == "__main__":
99
48
n = NSFWDetector()
-11
nsfw_model/LICENSE.md
-11
nsfw_model/LICENSE.md
···
1
-
2
-
Copyright 2016, Yahoo Inc.
3
-
4
-
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
5
-
6
-
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7
-
8
-
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
9
-
10
-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11
-
-3488
nsfw_model/deploy.prototxt
-3488
nsfw_model/deploy.prototxt
···
1
-
name: "ResNet_50_1by2_nsfw"
2
-
layer {
3
-
name: "data"
4
-
type: "Input"
5
-
top: "data"
6
-
input_param { shape: { dim: 1 dim: 3 dim: 224 dim: 224 } }
7
-
}
8
-
layer {
9
-
name: "conv_1"
10
-
type: "Convolution"
11
-
bottom: "data"
12
-
top: "conv_1"
13
-
param {
14
-
lr_mult: 1
15
-
decay_mult: 1
16
-
}
17
-
param {
18
-
lr_mult: 2
19
-
decay_mult: 0
20
-
}
21
-
convolution_param {
22
-
num_output: 64
23
-
pad: 3
24
-
kernel_size: 7
25
-
stride: 2
26
-
weight_filler {
27
-
type: "xavier"
28
-
}
29
-
bias_filler {
30
-
type: "constant"
31
-
value: 0
32
-
}
33
-
}
34
-
}
35
-
layer {
36
-
name: "bn_1"
37
-
type: "BatchNorm"
38
-
bottom: "conv_1"
39
-
top: "conv_1"
40
-
param {
41
-
lr_mult: 0
42
-
decay_mult: 0
43
-
}
44
-
param {
45
-
lr_mult: 0
46
-
decay_mult: 0
47
-
}
48
-
param {
49
-
lr_mult: 0
50
-
decay_mult: 0
51
-
}
52
-
batch_norm_param {
53
-
use_global_stats: true
54
-
}
55
-
}
56
-
layer {
57
-
name: "scale_1"
58
-
type: "Scale"
59
-
bottom: "conv_1"
60
-
top: "conv_1"
61
-
scale_param {
62
-
bias_term: true
63
-
}
64
-
}
65
-
layer {
66
-
name: "relu_1"
67
-
type: "ReLU"
68
-
bottom: "conv_1"
69
-
top: "conv_1"
70
-
}
71
-
layer {
72
-
name: "pool1"
73
-
type: "Pooling"
74
-
bottom: "conv_1"
75
-
top: "pool1"
76
-
pooling_param {
77
-
pool: MAX
78
-
kernel_size: 3
79
-
stride: 2
80
-
}
81
-
}
82
-
layer {
83
-
name: "conv_stage0_block0_proj_shortcut"
84
-
type: "Convolution"
85
-
bottom: "pool1"
86
-
top: "conv_stage0_block0_proj_shortcut"
87
-
param {
88
-
lr_mult: 1
89
-
decay_mult: 1
90
-
}
91
-
param {
92
-
lr_mult: 2
93
-
decay_mult: 0
94
-
}
95
-
convolution_param {
96
-
num_output: 128
97
-
pad: 0
98
-
kernel_size: 1
99
-
stride: 1
100
-
weight_filler {
101
-
type: "xavier"
102
-
}
103
-
bias_filler {
104
-
type: "constant"
105
-
value: 0
106
-
}
107
-
}
108
-
}
109
-
layer {
110
-
name: "bn_stage0_block0_proj_shortcut"
111
-
type: "BatchNorm"
112
-
bottom: "conv_stage0_block0_proj_shortcut"
113
-
top: "conv_stage0_block0_proj_shortcut"
114
-
param {
115
-
lr_mult: 0
116
-
decay_mult: 0
117
-
}
118
-
param {
119
-
lr_mult: 0
120
-
decay_mult: 0
121
-
}
122
-
param {
123
-
lr_mult: 0
124
-
decay_mult: 0
125
-
}
126
-
batch_norm_param {
127
-
use_global_stats: true
128
-
}
129
-
}
130
-
layer {
131
-
name: "scale_stage0_block0_proj_shortcut"
132
-
type: "Scale"
133
-
bottom: "conv_stage0_block0_proj_shortcut"
134
-
top: "conv_stage0_block0_proj_shortcut"
135
-
scale_param {
136
-
bias_term: true
137
-
}
138
-
}
139
-
layer {
140
-
name: "conv_stage0_block0_branch2a"
141
-
type: "Convolution"
142
-
bottom: "pool1"
143
-
top: "conv_stage0_block0_branch2a"
144
-
param {
145
-
lr_mult: 1
146
-
decay_mult: 1
147
-
}
148
-
param {
149
-
lr_mult: 2
150
-
decay_mult: 0
151
-
}
152
-
convolution_param {
153
-
num_output: 32
154
-
pad: 0
155
-
kernel_size: 1
156
-
stride: 1
157
-
weight_filler {
158
-
type: "xavier"
159
-
}
160
-
bias_filler {
161
-
type: "constant"
162
-
value: 0
163
-
}
164
-
}
165
-
}
166
-
layer {
167
-
name: "bn_stage0_block0_branch2a"
168
-
type: "BatchNorm"
169
-
bottom: "conv_stage0_block0_branch2a"
170
-
top: "conv_stage0_block0_branch2a"
171
-
param {
172
-
lr_mult: 0
173
-
decay_mult: 0
174
-
}
175
-
param {
176
-
lr_mult: 0
177
-
decay_mult: 0
178
-
}
179
-
param {
180
-
lr_mult: 0
181
-
decay_mult: 0
182
-
}
183
-
batch_norm_param {
184
-
use_global_stats: true
185
-
}
186
-
}
187
-
layer {
188
-
name: "scale_stage0_block0_branch2a"
189
-
type: "Scale"
190
-
bottom: "conv_stage0_block0_branch2a"
191
-
top: "conv_stage0_block0_branch2a"
192
-
scale_param {
193
-
bias_term: true
194
-
}
195
-
}
196
-
layer {
197
-
name: "relu_stage0_block0_branch2a"
198
-
type: "ReLU"
199
-
bottom: "conv_stage0_block0_branch2a"
200
-
top: "conv_stage0_block0_branch2a"
201
-
}
202
-
layer {
203
-
name: "conv_stage0_block0_branch2b"
204
-
type: "Convolution"
205
-
bottom: "conv_stage0_block0_branch2a"
206
-
top: "conv_stage0_block0_branch2b"
207
-
param {
208
-
lr_mult: 1
209
-
decay_mult: 1
210
-
}
211
-
param {
212
-
lr_mult: 2
213
-
decay_mult: 0
214
-
}
215
-
convolution_param {
216
-
num_output: 32
217
-
pad: 1
218
-
kernel_size: 3
219
-
stride: 1
220
-
weight_filler {
221
-
type: "xavier"
222
-
}
223
-
bias_filler {
224
-
type: "constant"
225
-
value: 0
226
-
}
227
-
}
228
-
}
229
-
layer {
230
-
name: "bn_stage0_block0_branch2b"
231
-
type: "BatchNorm"
232
-
bottom: "conv_stage0_block0_branch2b"
233
-
top: "conv_stage0_block0_branch2b"
234
-
param {
235
-
lr_mult: 0
236
-
decay_mult: 0
237
-
}
238
-
param {
239
-
lr_mult: 0
240
-
decay_mult: 0
241
-
}
242
-
param {
243
-
lr_mult: 0
244
-
decay_mult: 0
245
-
}
246
-
batch_norm_param {
247
-
use_global_stats: true
248
-
}
249
-
}
250
-
layer {
251
-
name: "scale_stage0_block0_branch2b"
252
-
type: "Scale"
253
-
bottom: "conv_stage0_block0_branch2b"
254
-
top: "conv_stage0_block0_branch2b"
255
-
scale_param {
256
-
bias_term: true
257
-
}
258
-
}
259
-
layer {
260
-
name: "relu_stage0_block0_branch2b"
261
-
type: "ReLU"
262
-
bottom: "conv_stage0_block0_branch2b"
263
-
top: "conv_stage0_block0_branch2b"
264
-
}
265
-
layer {
266
-
name: "conv_stage0_block0_branch2c"
267
-
type: "Convolution"
268
-
bottom: "conv_stage0_block0_branch2b"
269
-
top: "conv_stage0_block0_branch2c"
270
-
param {
271
-
lr_mult: 1
272
-
decay_mult: 1
273
-
}
274
-
param {
275
-
lr_mult: 2
276
-
decay_mult: 0
277
-
}
278
-
convolution_param {
279
-
num_output: 128
280
-
pad: 0
281
-
kernel_size: 1
282
-
stride: 1
283
-
weight_filler {
284
-
type: "xavier"
285
-
}
286
-
bias_filler {
287
-
type: "constant"
288
-
value: 0
289
-
}
290
-
}
291
-
}
292
-
layer {
293
-
name: "bn_stage0_block0_branch2c"
294
-
type: "BatchNorm"
295
-
bottom: "conv_stage0_block0_branch2c"
296
-
top: "conv_stage0_block0_branch2c"
297
-
param {
298
-
lr_mult: 0
299
-
decay_mult: 0
300
-
}
301
-
param {
302
-
lr_mult: 0
303
-
decay_mult: 0
304
-
}
305
-
param {
306
-
lr_mult: 0
307
-
decay_mult: 0
308
-
}
309
-
batch_norm_param {
310
-
use_global_stats: true
311
-
}
312
-
}
313
-
layer {
314
-
name: "scale_stage0_block0_branch2c"
315
-
type: "Scale"
316
-
bottom: "conv_stage0_block0_branch2c"
317
-
top: "conv_stage0_block0_branch2c"
318
-
scale_param {
319
-
bias_term: true
320
-
}
321
-
}
322
-
layer {
323
-
name: "eltwise_stage0_block0"
324
-
type: "Eltwise"
325
-
bottom: "conv_stage0_block0_proj_shortcut"
326
-
bottom: "conv_stage0_block0_branch2c"
327
-
top: "eltwise_stage0_block0"
328
-
}
329
-
layer {
330
-
name: "relu_stage0_block0"
331
-
type: "ReLU"
332
-
bottom: "eltwise_stage0_block0"
333
-
top: "eltwise_stage0_block0"
334
-
}
335
-
layer {
336
-
name: "conv_stage0_block1_branch2a"
337
-
type: "Convolution"
338
-
bottom: "eltwise_stage0_block0"
339
-
top: "conv_stage0_block1_branch2a"
340
-
param {
341
-
lr_mult: 1
342
-
decay_mult: 1
343
-
}
344
-
param {
345
-
lr_mult: 2
346
-
decay_mult: 0
347
-
}
348
-
convolution_param {
349
-
num_output: 32
350
-
pad: 0
351
-
kernel_size: 1
352
-
stride: 1
353
-
weight_filler {
354
-
type: "xavier"
355
-
}
356
-
bias_filler {
357
-
type: "constant"
358
-
value: 0
359
-
}
360
-
}
361
-
}
362
-
layer {
363
-
name: "bn_stage0_block1_branch2a"
364
-
type: "BatchNorm"
365
-
bottom: "conv_stage0_block1_branch2a"
366
-
top: "conv_stage0_block1_branch2a"
367
-
param {
368
-
lr_mult: 0
369
-
decay_mult: 0
370
-
}
371
-
param {
372
-
lr_mult: 0
373
-
decay_mult: 0
374
-
}
375
-
param {
376
-
lr_mult: 0
377
-
decay_mult: 0
378
-
}
379
-
batch_norm_param {
380
-
use_global_stats: true
381
-
}
382
-
}
383
-
layer {
384
-
name: "scale_stage0_block1_branch2a"
385
-
type: "Scale"
386
-
bottom: "conv_stage0_block1_branch2a"
387
-
top: "conv_stage0_block1_branch2a"
388
-
scale_param {
389
-
bias_term: true
390
-
}
391
-
}
392
-
layer {
393
-
name: "relu_stage0_block1_branch2a"
394
-
type: "ReLU"
395
-
bottom: "conv_stage0_block1_branch2a"
396
-
top: "conv_stage0_block1_branch2a"
397
-
}
398
-
layer {
399
-
name: "conv_stage0_block1_branch2b"
400
-
type: "Convolution"
401
-
bottom: "conv_stage0_block1_branch2a"
402
-
top: "conv_stage0_block1_branch2b"
403
-
param {
404
-
lr_mult: 1
405
-
decay_mult: 1
406
-
}
407
-
param {
408
-
lr_mult: 2
409
-
decay_mult: 0
410
-
}
411
-
convolution_param {
412
-
num_output: 32
413
-
pad: 1
414
-
kernel_size: 3
415
-
stride: 1
416
-
weight_filler {
417
-
type: "xavier"
418
-
}
419
-
bias_filler {
420
-
type: "constant"
421
-
value: 0
422
-
}
423
-
}
424
-
}
425
-
layer {
426
-
name: "bn_stage0_block1_branch2b"
427
-
type: "BatchNorm"
428
-
bottom: "conv_stage0_block1_branch2b"
429
-
top: "conv_stage0_block1_branch2b"
430
-
param {
431
-
lr_mult: 0
432
-
decay_mult: 0
433
-
}
434
-
param {
435
-
lr_mult: 0
436
-
decay_mult: 0
437
-
}
438
-
param {
439
-
lr_mult: 0
440
-
decay_mult: 0
441
-
}
442
-
batch_norm_param {
443
-
use_global_stats: true
444
-
}
445
-
}
446
-
layer {
447
-
name: "scale_stage0_block1_branch2b"
448
-
type: "Scale"
449
-
bottom: "conv_stage0_block1_branch2b"
450
-
top: "conv_stage0_block1_branch2b"
451
-
scale_param {
452
-
bias_term: true
453
-
}
454
-
}
455
-
layer {
456
-
name: "relu_stage0_block1_branch2b"
457
-
type: "ReLU"
458
-
bottom: "conv_stage0_block1_branch2b"
459
-
top: "conv_stage0_block1_branch2b"
460
-
}
461
-
layer {
462
-
name: "conv_stage0_block1_branch2c"
463
-
type: "Convolution"
464
-
bottom: "conv_stage0_block1_branch2b"
465
-
top: "conv_stage0_block1_branch2c"
466
-
param {
467
-
lr_mult: 1
468
-
decay_mult: 1
469
-
}
470
-
param {
471
-
lr_mult: 2
472
-
decay_mult: 0
473
-
}
474
-
convolution_param {
475
-
num_output: 128
476
-
pad: 0
477
-
kernel_size: 1
478
-
stride: 1
479
-
weight_filler {
480
-
type: "xavier"
481
-
}
482
-
bias_filler {
483
-
type: "constant"
484
-
value: 0
485
-
}
486
-
}
487
-
}
488
-
layer {
489
-
name: "bn_stage0_block1_branch2c"
490
-
type: "BatchNorm"
491
-
bottom: "conv_stage0_block1_branch2c"
492
-
top: "conv_stage0_block1_branch2c"
493
-
param {
494
-
lr_mult: 0
495
-
decay_mult: 0
496
-
}
497
-
param {
498
-
lr_mult: 0
499
-
decay_mult: 0
500
-
}
501
-
param {
502
-
lr_mult: 0
503
-
decay_mult: 0
504
-
}
505
-
batch_norm_param {
506
-
use_global_stats: true
507
-
}
508
-
}
509
-
layer {
510
-
name: "scale_stage0_block1_branch2c"
511
-
type: "Scale"
512
-
bottom: "conv_stage0_block1_branch2c"
513
-
top: "conv_stage0_block1_branch2c"
514
-
scale_param {
515
-
bias_term: true
516
-
}
517
-
}
518
-
layer {
519
-
name: "eltwise_stage0_block1"
520
-
type: "Eltwise"
521
-
bottom: "eltwise_stage0_block0"
522
-
bottom: "conv_stage0_block1_branch2c"
523
-
top: "eltwise_stage0_block1"
524
-
}
525
-
layer {
526
-
name: "relu_stage0_block1"
527
-
type: "ReLU"
528
-
bottom: "eltwise_stage0_block1"
529
-
top: "eltwise_stage0_block1"
530
-
}
531
-
layer {
532
-
name: "conv_stage0_block2_branch2a"
533
-
type: "Convolution"
534
-
bottom: "eltwise_stage0_block1"
535
-
top: "conv_stage0_block2_branch2a"
536
-
param {
537
-
lr_mult: 1
538
-
decay_mult: 1
539
-
}
540
-
param {
541
-
lr_mult: 2
542
-
decay_mult: 0
543
-
}
544
-
convolution_param {
545
-
num_output: 32
546
-
pad: 0
547
-
kernel_size: 1
548
-
stride: 1
549
-
weight_filler {
550
-
type: "xavier"
551
-
}
552
-
bias_filler {
553
-
type: "constant"
554
-
value: 0
555
-
}
556
-
}
557
-
}
558
-
layer {
559
-
name: "bn_stage0_block2_branch2a"
560
-
type: "BatchNorm"
561
-
bottom: "conv_stage0_block2_branch2a"
562
-
top: "conv_stage0_block2_branch2a"
563
-
param {
564
-
lr_mult: 0
565
-
decay_mult: 0
566
-
}
567
-
param {
568
-
lr_mult: 0
569
-
decay_mult: 0
570
-
}
571
-
param {
572
-
lr_mult: 0
573
-
decay_mult: 0
574
-
}
575
-
batch_norm_param {
576
-
use_global_stats: true
577
-
}
578
-
}
579
-
layer {
580
-
name: "scale_stage0_block2_branch2a"
581
-
type: "Scale"
582
-
bottom: "conv_stage0_block2_branch2a"
583
-
top: "conv_stage0_block2_branch2a"
584
-
scale_param {
585
-
bias_term: true
586
-
}
587
-
}
588
-
layer {
589
-
name: "relu_stage0_block2_branch2a"
590
-
type: "ReLU"
591
-
bottom: "conv_stage0_block2_branch2a"
592
-
top: "conv_stage0_block2_branch2a"
593
-
}
594
-
layer {
595
-
name: "conv_stage0_block2_branch2b"
596
-
type: "Convolution"
597
-
bottom: "conv_stage0_block2_branch2a"
598
-
top: "conv_stage0_block2_branch2b"
599
-
param {
600
-
lr_mult: 1
601
-
decay_mult: 1
602
-
}
603
-
param {
604
-
lr_mult: 2
605
-
decay_mult: 0
606
-
}
607
-
convolution_param {
608
-
num_output: 32
609
-
pad: 1
610
-
kernel_size: 3
611
-
stride: 1
612
-
weight_filler {
613
-
type: "xavier"
614
-
}
615
-
bias_filler {
616
-
type: "constant"
617
-
value: 0
618
-
}
619
-
}
620
-
}
621
-
layer {
622
-
name: "bn_stage0_block2_branch2b"
623
-
type: "BatchNorm"
624
-
bottom: "conv_stage0_block2_branch2b"
625
-
top: "conv_stage0_block2_branch2b"
626
-
param {
627
-
lr_mult: 0
628
-
decay_mult: 0
629
-
}
630
-
param {
631
-
lr_mult: 0
632
-
decay_mult: 0
633
-
}
634
-
param {
635
-
lr_mult: 0
636
-
decay_mult: 0
637
-
}
638
-
batch_norm_param {
639
-
use_global_stats: true
640
-
}
641
-
}
642
-
layer {
643
-
name: "scale_stage0_block2_branch2b"
644
-
type: "Scale"
645
-
bottom: "conv_stage0_block2_branch2b"
646
-
top: "conv_stage0_block2_branch2b"
647
-
scale_param {
648
-
bias_term: true
649
-
}
650
-
}
651
-
layer {
652
-
name: "relu_stage0_block2_branch2b"
653
-
type: "ReLU"
654
-
bottom: "conv_stage0_block2_branch2b"
655
-
top: "conv_stage0_block2_branch2b"
656
-
}
657
-
layer {
658
-
name: "conv_stage0_block2_branch2c"
659
-
type: "Convolution"
660
-
bottom: "conv_stage0_block2_branch2b"
661
-
top: "conv_stage0_block2_branch2c"
662
-
param {
663
-
lr_mult: 1
664
-
decay_mult: 1
665
-
}
666
-
param {
667
-
lr_mult: 2
668
-
decay_mult: 0
669
-
}
670
-
convolution_param {
671
-
num_output: 128
672
-
pad: 0
673
-
kernel_size: 1
674
-
stride: 1
675
-
weight_filler {
676
-
type: "xavier"
677
-
}
678
-
bias_filler {
679
-
type: "constant"
680
-
value: 0
681
-
}
682
-
}
683
-
}
684
-
layer {
685
-
name: "bn_stage0_block2_branch2c"
686
-
type: "BatchNorm"
687
-
bottom: "conv_stage0_block2_branch2c"
688
-
top: "conv_stage0_block2_branch2c"
689
-
param {
690
-
lr_mult: 0
691
-
decay_mult: 0
692
-
}
693
-
param {
694
-
lr_mult: 0
695
-
decay_mult: 0
696
-
}
697
-
param {
698
-
lr_mult: 0
699
-
decay_mult: 0
700
-
}
701
-
batch_norm_param {
702
-
use_global_stats: true
703
-
}
704
-
}
705
-
layer {
706
-
name: "scale_stage0_block2_branch2c"
707
-
type: "Scale"
708
-
bottom: "conv_stage0_block2_branch2c"
709
-
top: "conv_stage0_block2_branch2c"
710
-
scale_param {
711
-
bias_term: true
712
-
}
713
-
}
714
-
layer {
715
-
name: "eltwise_stage0_block2"
716
-
type: "Eltwise"
717
-
bottom: "eltwise_stage0_block1"
718
-
bottom: "conv_stage0_block2_branch2c"
719
-
top: "eltwise_stage0_block2"
720
-
}
721
-
layer {
722
-
name: "relu_stage0_block2"
723
-
type: "ReLU"
724
-
bottom: "eltwise_stage0_block2"
725
-
top: "eltwise_stage0_block2"
726
-
}
727
-
layer {
728
-
name: "conv_stage1_block0_proj_shortcut"
729
-
type: "Convolution"
730
-
bottom: "eltwise_stage0_block2"
731
-
top: "conv_stage1_block0_proj_shortcut"
732
-
param {
733
-
lr_mult: 1
734
-
decay_mult: 1
735
-
}
736
-
param {
737
-
lr_mult: 2
738
-
decay_mult: 0
739
-
}
740
-
convolution_param {
741
-
num_output: 256
742
-
pad: 0
743
-
kernel_size: 1
744
-
stride: 2
745
-
weight_filler {
746
-
type: "xavier"
747
-
}
748
-
bias_filler {
749
-
type: "constant"
750
-
value: 0
751
-
}
752
-
}
753
-
}
754
-
layer {
755
-
name: "bn_stage1_block0_proj_shortcut"
756
-
type: "BatchNorm"
757
-
bottom: "conv_stage1_block0_proj_shortcut"
758
-
top: "conv_stage1_block0_proj_shortcut"
759
-
param {
760
-
lr_mult: 0
761
-
decay_mult: 0
762
-
}
763
-
param {
764
-
lr_mult: 0
765
-
decay_mult: 0
766
-
}
767
-
param {
768
-
lr_mult: 0
769
-
decay_mult: 0
770
-
}
771
-
batch_norm_param {
772
-
use_global_stats: true
773
-
}
774
-
}
775
-
layer {
776
-
name: "scale_stage1_block0_proj_shortcut"
777
-
type: "Scale"
778
-
bottom: "conv_stage1_block0_proj_shortcut"
779
-
top: "conv_stage1_block0_proj_shortcut"
780
-
scale_param {
781
-
bias_term: true
782
-
}
783
-
}
784
-
layer {
785
-
name: "conv_stage1_block0_branch2a"
786
-
type: "Convolution"
787
-
bottom: "eltwise_stage0_block2"
788
-
top: "conv_stage1_block0_branch2a"
789
-
param {
790
-
lr_mult: 1
791
-
decay_mult: 1
792
-
}
793
-
param {
794
-
lr_mult: 2
795
-
decay_mult: 0
796
-
}
797
-
convolution_param {
798
-
num_output: 64
799
-
pad: 0
800
-
kernel_size: 1
801
-
stride: 2
802
-
weight_filler {
803
-
type: "xavier"
804
-
}
805
-
bias_filler {
806
-
type: "constant"
807
-
value: 0
808
-
}
809
-
}
810
-
}
811
-
layer {
812
-
name: "bn_stage1_block0_branch2a"
813
-
type: "BatchNorm"
814
-
bottom: "conv_stage1_block0_branch2a"
815
-
top: "conv_stage1_block0_branch2a"
816
-
param {
817
-
lr_mult: 0
818
-
decay_mult: 0
819
-
}
820
-
param {
821
-
lr_mult: 0
822
-
decay_mult: 0
823
-
}
824
-
param {
825
-
lr_mult: 0
826
-
decay_mult: 0
827
-
}
828
-
batch_norm_param {
829
-
use_global_stats: true
830
-
}
831
-
}
832
-
layer {
833
-
name: "scale_stage1_block0_branch2a"
834
-
type: "Scale"
835
-
bottom: "conv_stage1_block0_branch2a"
836
-
top: "conv_stage1_block0_branch2a"
837
-
scale_param {
838
-
bias_term: true
839
-
}
840
-
}
841
-
layer {
842
-
name: "relu_stage1_block0_branch2a"
843
-
type: "ReLU"
844
-
bottom: "conv_stage1_block0_branch2a"
845
-
top: "conv_stage1_block0_branch2a"
846
-
}
847
-
layer {
848
-
name: "conv_stage1_block0_branch2b"
849
-
type: "Convolution"
850
-
bottom: "conv_stage1_block0_branch2a"
851
-
top: "conv_stage1_block0_branch2b"
852
-
param {
853
-
lr_mult: 1
854
-
decay_mult: 1
855
-
}
856
-
param {
857
-
lr_mult: 2
858
-
decay_mult: 0
859
-
}
860
-
convolution_param {
861
-
num_output: 64
862
-
pad: 1
863
-
kernel_size: 3
864
-
stride: 1
865
-
weight_filler {
866
-
type: "xavier"
867
-
}
868
-
bias_filler {
869
-
type: "constant"
870
-
value: 0
871
-
}
872
-
}
873
-
}
874
-
layer {
875
-
name: "bn_stage1_block0_branch2b"
876
-
type: "BatchNorm"
877
-
bottom: "conv_stage1_block0_branch2b"
878
-
top: "conv_stage1_block0_branch2b"
879
-
param {
880
-
lr_mult: 0
881
-
decay_mult: 0
882
-
}
883
-
param {
884
-
lr_mult: 0
885
-
decay_mult: 0
886
-
}
887
-
param {
888
-
lr_mult: 0
889
-
decay_mult: 0
890
-
}
891
-
batch_norm_param {
892
-
use_global_stats: true
893
-
}
894
-
}
895
-
layer {
896
-
name: "scale_stage1_block0_branch2b"
897
-
type: "Scale"
898
-
bottom: "conv_stage1_block0_branch2b"
899
-
top: "conv_stage1_block0_branch2b"
900
-
scale_param {
901
-
bias_term: true
902
-
}
903
-
}
904
-
layer {
905
-
name: "relu_stage1_block0_branch2b"
906
-
type: "ReLU"
907
-
bottom: "conv_stage1_block0_branch2b"
908
-
top: "conv_stage1_block0_branch2b"
909
-
}
910
-
layer {
911
-
name: "conv_stage1_block0_branch2c"
912
-
type: "Convolution"
913
-
bottom: "conv_stage1_block0_branch2b"
914
-
top: "conv_stage1_block0_branch2c"
915
-
param {
916
-
lr_mult: 1
917
-
decay_mult: 1
918
-
}
919
-
param {
920
-
lr_mult: 2
921
-
decay_mult: 0
922
-
}
923
-
convolution_param {
924
-
num_output: 256
925
-
pad: 0
926
-
kernel_size: 1
927
-
stride: 1
928
-
weight_filler {
929
-
type: "xavier"
930
-
}
931
-
bias_filler {
932
-
type: "constant"
933
-
value: 0
934
-
}
935
-
}
936
-
}
937
-
layer {
938
-
name: "bn_stage1_block0_branch2c"
939
-
type: "BatchNorm"
940
-
bottom: "conv_stage1_block0_branch2c"
941
-
top: "conv_stage1_block0_branch2c"
942
-
param {
943
-
lr_mult: 0
944
-
decay_mult: 0
945
-
}
946
-
param {
947
-
lr_mult: 0
948
-
decay_mult: 0
949
-
}
950
-
param {
951
-
lr_mult: 0
952
-
decay_mult: 0
953
-
}
954
-
batch_norm_param {
955
-
use_global_stats: true
956
-
}
957
-
}
958
-
layer {
959
-
name: "scale_stage1_block0_branch2c"
960
-
type: "Scale"
961
-
bottom: "conv_stage1_block0_branch2c"
962
-
top: "conv_stage1_block0_branch2c"
963
-
scale_param {
964
-
bias_term: true
965
-
}
966
-
}
967
-
layer {
968
-
name: "eltwise_stage1_block0"
969
-
type: "Eltwise"
970
-
bottom: "conv_stage1_block0_proj_shortcut"
971
-
bottom: "conv_stage1_block0_branch2c"
972
-
top: "eltwise_stage1_block0"
973
-
}
974
-
layer {
975
-
name: "relu_stage1_block0"
976
-
type: "ReLU"
977
-
bottom: "eltwise_stage1_block0"
978
-
top: "eltwise_stage1_block0"
979
-
}
980
-
layer {
981
-
name: "conv_stage1_block1_branch2a"
982
-
type: "Convolution"
983
-
bottom: "eltwise_stage1_block0"
984
-
top: "conv_stage1_block1_branch2a"
985
-
param {
986
-
lr_mult: 1
987
-
decay_mult: 1
988
-
}
989
-
param {
990
-
lr_mult: 2
991
-
decay_mult: 0
992
-
}
993
-
convolution_param {
994
-
num_output: 64
995
-
pad: 0
996
-
kernel_size: 1
997
-
stride: 1
998
-
weight_filler {
999
-
type: "xavier"
1000
-
}
1001
-
bias_filler {
1002
-
type: "constant"
1003
-
value: 0
1004
-
}
1005
-
}
1006
-
}
1007
-
layer {
1008
-
name: "bn_stage1_block1_branch2a"
1009
-
type: "BatchNorm"
1010
-
bottom: "conv_stage1_block1_branch2a"
1011
-
top: "conv_stage1_block1_branch2a"
1012
-
param {
1013
-
lr_mult: 0
1014
-
decay_mult: 0
1015
-
}
1016
-
param {
1017
-
lr_mult: 0
1018
-
decay_mult: 0
1019
-
}
1020
-
param {
1021
-
lr_mult: 0
1022
-
decay_mult: 0
1023
-
}
1024
-
batch_norm_param {
1025
-
use_global_stats: true
1026
-
}
1027
-
}
1028
-
layer {
1029
-
name: "scale_stage1_block1_branch2a"
1030
-
type: "Scale"
1031
-
bottom: "conv_stage1_block1_branch2a"
1032
-
top: "conv_stage1_block1_branch2a"
1033
-
scale_param {
1034
-
bias_term: true
1035
-
}
1036
-
}
1037
-
layer {
1038
-
name: "relu_stage1_block1_branch2a"
1039
-
type: "ReLU"
1040
-
bottom: "conv_stage1_block1_branch2a"
1041
-
top: "conv_stage1_block1_branch2a"
1042
-
}
1043
-
layer {
1044
-
name: "conv_stage1_block1_branch2b"
1045
-
type: "Convolution"
1046
-
bottom: "conv_stage1_block1_branch2a"
1047
-
top: "conv_stage1_block1_branch2b"
1048
-
param {
1049
-
lr_mult: 1
1050
-
decay_mult: 1
1051
-
}
1052
-
param {
1053
-
lr_mult: 2
1054
-
decay_mult: 0
1055
-
}
1056
-
convolution_param {
1057
-
num_output: 64
1058
-
pad: 1
1059
-
kernel_size: 3
1060
-
stride: 1
1061
-
weight_filler {
1062
-
type: "xavier"
1063
-
}
1064
-
bias_filler {
1065
-
type: "constant"
1066
-
value: 0
1067
-
}
1068
-
}
1069
-
}
1070
-
layer {
1071
-
name: "bn_stage1_block1_branch2b"
1072
-
type: "BatchNorm"
1073
-
bottom: "conv_stage1_block1_branch2b"
1074
-
top: "conv_stage1_block1_branch2b"
1075
-
param {
1076
-
lr_mult: 0
1077
-
decay_mult: 0
1078
-
}
1079
-
param {
1080
-
lr_mult: 0
1081
-
decay_mult: 0
1082
-
}
1083
-
param {
1084
-
lr_mult: 0
1085
-
decay_mult: 0
1086
-
}
1087
-
batch_norm_param {
1088
-
use_global_stats: true
1089
-
}
1090
-
}
1091
-
layer {
1092
-
name: "scale_stage1_block1_branch2b"
1093
-
type: "Scale"
1094
-
bottom: "conv_stage1_block1_branch2b"
1095
-
top: "conv_stage1_block1_branch2b"
1096
-
scale_param {
1097
-
bias_term: true
1098
-
}
1099
-
}
1100
-
layer {
1101
-
name: "relu_stage1_block1_branch2b"
1102
-
type: "ReLU"
1103
-
bottom: "conv_stage1_block1_branch2b"
1104
-
top: "conv_stage1_block1_branch2b"
1105
-
}
1106
-
layer {
1107
-
name: "conv_stage1_block1_branch2c"
1108
-
type: "Convolution"
1109
-
bottom: "conv_stage1_block1_branch2b"
1110
-
top: "conv_stage1_block1_branch2c"
1111
-
param {
1112
-
lr_mult: 1
1113
-
decay_mult: 1
1114
-
}
1115
-
param {
1116
-
lr_mult: 2
1117
-
decay_mult: 0
1118
-
}
1119
-
convolution_param {
1120
-
num_output: 256
1121
-
pad: 0
1122
-
kernel_size: 1
1123
-
stride: 1
1124
-
weight_filler {
1125
-
type: "xavier"
1126
-
}
1127
-
bias_filler {
1128
-
type: "constant"
1129
-
value: 0
1130
-
}
1131
-
}
1132
-
}
1133
-
layer {
1134
-
name: "bn_stage1_block1_branch2c"
1135
-
type: "BatchNorm"
1136
-
bottom: "conv_stage1_block1_branch2c"
1137
-
top: "conv_stage1_block1_branch2c"
1138
-
param {
1139
-
lr_mult: 0
1140
-
decay_mult: 0
1141
-
}
1142
-
param {
1143
-
lr_mult: 0
1144
-
decay_mult: 0
1145
-
}
1146
-
param {
1147
-
lr_mult: 0
1148
-
decay_mult: 0
1149
-
}
1150
-
batch_norm_param {
1151
-
use_global_stats: true
1152
-
}
1153
-
}
1154
-
layer {
1155
-
name: "scale_stage1_block1_branch2c"
1156
-
type: "Scale"
1157
-
bottom: "conv_stage1_block1_branch2c"
1158
-
top: "conv_stage1_block1_branch2c"
1159
-
scale_param {
1160
-
bias_term: true
1161
-
}
1162
-
}
1163
-
layer {
1164
-
name: "eltwise_stage1_block1"
1165
-
type: "Eltwise"
1166
-
bottom: "eltwise_stage1_block0"
1167
-
bottom: "conv_stage1_block1_branch2c"
1168
-
top: "eltwise_stage1_block1"
1169
-
}
1170
-
layer {
1171
-
name: "relu_stage1_block1"
1172
-
type: "ReLU"
1173
-
bottom: "eltwise_stage1_block1"
1174
-
top: "eltwise_stage1_block1"
1175
-
}
1176
-
layer {
1177
-
name: "conv_stage1_block2_branch2a"
1178
-
type: "Convolution"
1179
-
bottom: "eltwise_stage1_block1"
1180
-
top: "conv_stage1_block2_branch2a"
1181
-
param {
1182
-
lr_mult: 1
1183
-
decay_mult: 1
1184
-
}
1185
-
param {
1186
-
lr_mult: 2
1187
-
decay_mult: 0
1188
-
}
1189
-
convolution_param {
1190
-
num_output: 64
1191
-
pad: 0
1192
-
kernel_size: 1
1193
-
stride: 1
1194
-
weight_filler {
1195
-
type: "xavier"
1196
-
}
1197
-
bias_filler {
1198
-
type: "constant"
1199
-
value: 0
1200
-
}
1201
-
}
1202
-
}
1203
-
layer {
1204
-
name: "bn_stage1_block2_branch2a"
1205
-
type: "BatchNorm"
1206
-
bottom: "conv_stage1_block2_branch2a"
1207
-
top: "conv_stage1_block2_branch2a"
1208
-
param {
1209
-
lr_mult: 0
1210
-
decay_mult: 0
1211
-
}
1212
-
param {
1213
-
lr_mult: 0
1214
-
decay_mult: 0
1215
-
}
1216
-
param {
1217
-
lr_mult: 0
1218
-
decay_mult: 0
1219
-
}
1220
-
batch_norm_param {
1221
-
use_global_stats: true
1222
-
}
1223
-
}
1224
-
layer {
1225
-
name: "scale_stage1_block2_branch2a"
1226
-
type: "Scale"
1227
-
bottom: "conv_stage1_block2_branch2a"
1228
-
top: "conv_stage1_block2_branch2a"
1229
-
scale_param {
1230
-
bias_term: true
1231
-
}
1232
-
}
1233
-
layer {
1234
-
name: "relu_stage1_block2_branch2a"
1235
-
type: "ReLU"
1236
-
bottom: "conv_stage1_block2_branch2a"
1237
-
top: "conv_stage1_block2_branch2a"
1238
-
}
1239
-
layer {
1240
-
name: "conv_stage1_block2_branch2b"
1241
-
type: "Convolution"
1242
-
bottom: "conv_stage1_block2_branch2a"
1243
-
top: "conv_stage1_block2_branch2b"
1244
-
param {
1245
-
lr_mult: 1
1246
-
decay_mult: 1
1247
-
}
1248
-
param {
1249
-
lr_mult: 2
1250
-
decay_mult: 0
1251
-
}
1252
-
convolution_param {
1253
-
num_output: 64
1254
-
pad: 1
1255
-
kernel_size: 3
1256
-
stride: 1
1257
-
weight_filler {
1258
-
type: "xavier"
1259
-
}
1260
-
bias_filler {
1261
-
type: "constant"
1262
-
value: 0
1263
-
}
1264
-
}
1265
-
}
1266
-
layer {
1267
-
name: "bn_stage1_block2_branch2b"
1268
-
type: "BatchNorm"
1269
-
bottom: "conv_stage1_block2_branch2b"
1270
-
top: "conv_stage1_block2_branch2b"
1271
-
param {
1272
-
lr_mult: 0
1273
-
decay_mult: 0
1274
-
}
1275
-
param {
1276
-
lr_mult: 0
1277
-
decay_mult: 0
1278
-
}
1279
-
param {
1280
-
lr_mult: 0
1281
-
decay_mult: 0
1282
-
}
1283
-
batch_norm_param {
1284
-
use_global_stats: true
1285
-
}
1286
-
}
1287
-
layer {
1288
-
name: "scale_stage1_block2_branch2b"
1289
-
type: "Scale"
1290
-
bottom: "conv_stage1_block2_branch2b"
1291
-
top: "conv_stage1_block2_branch2b"
1292
-
scale_param {
1293
-
bias_term: true
1294
-
}
1295
-
}
1296
-
layer {
1297
-
name: "relu_stage1_block2_branch2b"
1298
-
type: "ReLU"
1299
-
bottom: "conv_stage1_block2_branch2b"
1300
-
top: "conv_stage1_block2_branch2b"
1301
-
}
1302
-
layer {
1303
-
name: "conv_stage1_block2_branch2c"
1304
-
type: "Convolution"
1305
-
bottom: "conv_stage1_block2_branch2b"
1306
-
top: "conv_stage1_block2_branch2c"
1307
-
param {
1308
-
lr_mult: 1
1309
-
decay_mult: 1
1310
-
}
1311
-
param {
1312
-
lr_mult: 2
1313
-
decay_mult: 0
1314
-
}
1315
-
convolution_param {
1316
-
num_output: 256
1317
-
pad: 0
1318
-
kernel_size: 1
1319
-
stride: 1
1320
-
weight_filler {
1321
-
type: "xavier"
1322
-
}
1323
-
bias_filler {
1324
-
type: "constant"
1325
-
value: 0
1326
-
}
1327
-
}
1328
-
}
1329
-
layer {
1330
-
name: "bn_stage1_block2_branch2c"
1331
-
type: "BatchNorm"
1332
-
bottom: "conv_stage1_block2_branch2c"
1333
-
top: "conv_stage1_block2_branch2c"
1334
-
param {
1335
-
lr_mult: 0
1336
-
decay_mult: 0
1337
-
}
1338
-
param {
1339
-
lr_mult: 0
1340
-
decay_mult: 0
1341
-
}
1342
-
param {
1343
-
lr_mult: 0
1344
-
decay_mult: 0
1345
-
}
1346
-
batch_norm_param {
1347
-
use_global_stats: true
1348
-
}
1349
-
}
1350
-
layer {
1351
-
name: "scale_stage1_block2_branch2c"
1352
-
type: "Scale"
1353
-
bottom: "conv_stage1_block2_branch2c"
1354
-
top: "conv_stage1_block2_branch2c"
1355
-
scale_param {
1356
-
bias_term: true
1357
-
}
1358
-
}
1359
-
layer {
1360
-
name: "eltwise_stage1_block2"
1361
-
type: "Eltwise"
1362
-
bottom: "eltwise_stage1_block1"
1363
-
bottom: "conv_stage1_block2_branch2c"
1364
-
top: "eltwise_stage1_block2"
1365
-
}
1366
-
layer {
1367
-
name: "relu_stage1_block2"
1368
-
type: "ReLU"
1369
-
bottom: "eltwise_stage1_block2"
1370
-
top: "eltwise_stage1_block2"
1371
-
}
1372
-
layer {
1373
-
name: "conv_stage1_block3_branch2a"
1374
-
type: "Convolution"
1375
-
bottom: "eltwise_stage1_block2"
1376
-
top: "conv_stage1_block3_branch2a"
1377
-
param {
1378
-
lr_mult: 1
1379
-
decay_mult: 1
1380
-
}
1381
-
param {
1382
-
lr_mult: 2
1383
-
decay_mult: 0
1384
-
}
1385
-
convolution_param {
1386
-
num_output: 64
1387
-
pad: 0
1388
-
kernel_size: 1
1389
-
stride: 1
1390
-
weight_filler {
1391
-
type: "xavier"
1392
-
}
1393
-
bias_filler {
1394
-
type: "constant"
1395
-
value: 0
1396
-
}
1397
-
}
1398
-
}
1399
-
layer {
1400
-
name: "bn_stage1_block3_branch2a"
1401
-
type: "BatchNorm"
1402
-
bottom: "conv_stage1_block3_branch2a"
1403
-
top: "conv_stage1_block3_branch2a"
1404
-
param {
1405
-
lr_mult: 0
1406
-
decay_mult: 0
1407
-
}
1408
-
param {
1409
-
lr_mult: 0
1410
-
decay_mult: 0
1411
-
}
1412
-
param {
1413
-
lr_mult: 0
1414
-
decay_mult: 0
1415
-
}
1416
-
batch_norm_param {
1417
-
use_global_stats: true
1418
-
}
1419
-
}
1420
-
layer {
1421
-
name: "scale_stage1_block3_branch2a"
1422
-
type: "Scale"
1423
-
bottom: "conv_stage1_block3_branch2a"
1424
-
top: "conv_stage1_block3_branch2a"
1425
-
scale_param {
1426
-
bias_term: true
1427
-
}
1428
-
}
1429
-
layer {
1430
-
name: "relu_stage1_block3_branch2a"
1431
-
type: "ReLU"
1432
-
bottom: "conv_stage1_block3_branch2a"
1433
-
top: "conv_stage1_block3_branch2a"
1434
-
}
1435
-
layer {
1436
-
name: "conv_stage1_block3_branch2b"
1437
-
type: "Convolution"
1438
-
bottom: "conv_stage1_block3_branch2a"
1439
-
top: "conv_stage1_block3_branch2b"
1440
-
param {
1441
-
lr_mult: 1
1442
-
decay_mult: 1
1443
-
}
1444
-
param {
1445
-
lr_mult: 2
1446
-
decay_mult: 0
1447
-
}
1448
-
convolution_param {
1449
-
num_output: 64
1450
-
pad: 1
1451
-
kernel_size: 3
1452
-
stride: 1
1453
-
weight_filler {
1454
-
type: "xavier"
1455
-
}
1456
-
bias_filler {
1457
-
type: "constant"
1458
-
value: 0
1459
-
}
1460
-
}
1461
-
}
1462
-
layer {
1463
-
name: "bn_stage1_block3_branch2b"
1464
-
type: "BatchNorm"
1465
-
bottom: "conv_stage1_block3_branch2b"
1466
-
top: "conv_stage1_block3_branch2b"
1467
-
param {
1468
-
lr_mult: 0
1469
-
decay_mult: 0
1470
-
}
1471
-
param {
1472
-
lr_mult: 0
1473
-
decay_mult: 0
1474
-
}
1475
-
param {
1476
-
lr_mult: 0
1477
-
decay_mult: 0
1478
-
}
1479
-
batch_norm_param {
1480
-
use_global_stats: true
1481
-
}
1482
-
}
1483
-
layer {
1484
-
name: "scale_stage1_block3_branch2b"
1485
-
type: "Scale"
1486
-
bottom: "conv_stage1_block3_branch2b"
1487
-
top: "conv_stage1_block3_branch2b"
1488
-
scale_param {
1489
-
bias_term: true
1490
-
}
1491
-
}
1492
-
layer {
1493
-
name: "relu_stage1_block3_branch2b"
1494
-
type: "ReLU"
1495
-
bottom: "conv_stage1_block3_branch2b"
1496
-
top: "conv_stage1_block3_branch2b"
1497
-
}
1498
-
layer {
1499
-
name: "conv_stage1_block3_branch2c"
1500
-
type: "Convolution"
1501
-
bottom: "conv_stage1_block3_branch2b"
1502
-
top: "conv_stage1_block3_branch2c"
1503
-
param {
1504
-
lr_mult: 1
1505
-
decay_mult: 1
1506
-
}
1507
-
param {
1508
-
lr_mult: 2
1509
-
decay_mult: 0
1510
-
}
1511
-
convolution_param {
1512
-
num_output: 256
1513
-
pad: 0
1514
-
kernel_size: 1
1515
-
stride: 1
1516
-
weight_filler {
1517
-
type: "xavier"
1518
-
}
1519
-
bias_filler {
1520
-
type: "constant"
1521
-
value: 0
1522
-
}
1523
-
}
1524
-
}
1525
-
layer {
1526
-
name: "bn_stage1_block3_branch2c"
1527
-
type: "BatchNorm"
1528
-
bottom: "conv_stage1_block3_branch2c"
1529
-
top: "conv_stage1_block3_branch2c"
1530
-
param {
1531
-
lr_mult: 0
1532
-
decay_mult: 0
1533
-
}
1534
-
param {
1535
-
lr_mult: 0
1536
-
decay_mult: 0
1537
-
}
1538
-
param {
1539
-
lr_mult: 0
1540
-
decay_mult: 0
1541
-
}
1542
-
batch_norm_param {
1543
-
use_global_stats: true
1544
-
}
1545
-
}
1546
-
layer {
1547
-
name: "scale_stage1_block3_branch2c"
1548
-
type: "Scale"
1549
-
bottom: "conv_stage1_block3_branch2c"
1550
-
top: "conv_stage1_block3_branch2c"
1551
-
scale_param {
1552
-
bias_term: true
1553
-
}
1554
-
}
1555
-
layer {
1556
-
name: "eltwise_stage1_block3"
1557
-
type: "Eltwise"
1558
-
bottom: "eltwise_stage1_block2"
1559
-
bottom: "conv_stage1_block3_branch2c"
1560
-
top: "eltwise_stage1_block3"
1561
-
}
1562
-
layer {
1563
-
name: "relu_stage1_block3"
1564
-
type: "ReLU"
1565
-
bottom: "eltwise_stage1_block3"
1566
-
top: "eltwise_stage1_block3"
1567
-
}
1568
-
layer {
1569
-
name: "conv_stage2_block0_proj_shortcut"
1570
-
type: "Convolution"
1571
-
bottom: "eltwise_stage1_block3"
1572
-
top: "conv_stage2_block0_proj_shortcut"
1573
-
param {
1574
-
lr_mult: 1
1575
-
decay_mult: 1
1576
-
}
1577
-
param {
1578
-
lr_mult: 2
1579
-
decay_mult: 0
1580
-
}
1581
-
convolution_param {
1582
-
num_output: 512
1583
-
pad: 0
1584
-
kernel_size: 1
1585
-
stride: 2
1586
-
weight_filler {
1587
-
type: "xavier"
1588
-
}
1589
-
bias_filler {
1590
-
type: "constant"
1591
-
value: 0
1592
-
}
1593
-
}
1594
-
}
1595
-
layer {
1596
-
name: "bn_stage2_block0_proj_shortcut"
1597
-
type: "BatchNorm"
1598
-
bottom: "conv_stage2_block0_proj_shortcut"
1599
-
top: "conv_stage2_block0_proj_shortcut"
1600
-
param {
1601
-
lr_mult: 0
1602
-
decay_mult: 0
1603
-
}
1604
-
param {
1605
-
lr_mult: 0
1606
-
decay_mult: 0
1607
-
}
1608
-
param {
1609
-
lr_mult: 0
1610
-
decay_mult: 0
1611
-
}
1612
-
batch_norm_param {
1613
-
use_global_stats: true
1614
-
}
1615
-
}
1616
-
layer {
1617
-
name: "scale_stage2_block0_proj_shortcut"
1618
-
type: "Scale"
1619
-
bottom: "conv_stage2_block0_proj_shortcut"
1620
-
top: "conv_stage2_block0_proj_shortcut"
1621
-
scale_param {
1622
-
bias_term: true
1623
-
}
1624
-
}
1625
-
layer {
1626
-
name: "conv_stage2_block0_branch2a"
1627
-
type: "Convolution"
1628
-
bottom: "eltwise_stage1_block3"
1629
-
top: "conv_stage2_block0_branch2a"
1630
-
param {
1631
-
lr_mult: 1
1632
-
decay_mult: 1
1633
-
}
1634
-
param {
1635
-
lr_mult: 2
1636
-
decay_mult: 0
1637
-
}
1638
-
convolution_param {
1639
-
num_output: 128
1640
-
pad: 0
1641
-
kernel_size: 1
1642
-
stride: 2
1643
-
weight_filler {
1644
-
type: "xavier"
1645
-
}
1646
-
bias_filler {
1647
-
type: "constant"
1648
-
value: 0
1649
-
}
1650
-
}
1651
-
}
1652
-
layer {
1653
-
name: "bn_stage2_block0_branch2a"
1654
-
type: "BatchNorm"
1655
-
bottom: "conv_stage2_block0_branch2a"
1656
-
top: "conv_stage2_block0_branch2a"
1657
-
param {
1658
-
lr_mult: 0
1659
-
decay_mult: 0
1660
-
}
1661
-
param {
1662
-
lr_mult: 0
1663
-
decay_mult: 0
1664
-
}
1665
-
param {
1666
-
lr_mult: 0
1667
-
decay_mult: 0
1668
-
}
1669
-
batch_norm_param {
1670
-
use_global_stats: true
1671
-
}
1672
-
}
1673
-
layer {
1674
-
name: "scale_stage2_block0_branch2a"
1675
-
type: "Scale"
1676
-
bottom: "conv_stage2_block0_branch2a"
1677
-
top: "conv_stage2_block0_branch2a"
1678
-
scale_param {
1679
-
bias_term: true
1680
-
}
1681
-
}
1682
-
layer {
1683
-
name: "relu_stage2_block0_branch2a"
1684
-
type: "ReLU"
1685
-
bottom: "conv_stage2_block0_branch2a"
1686
-
top: "conv_stage2_block0_branch2a"
1687
-
}
1688
-
layer {
1689
-
name: "conv_stage2_block0_branch2b"
1690
-
type: "Convolution"
1691
-
bottom: "conv_stage2_block0_branch2a"
1692
-
top: "conv_stage2_block0_branch2b"
1693
-
param {
1694
-
lr_mult: 1
1695
-
decay_mult: 1
1696
-
}
1697
-
param {
1698
-
lr_mult: 2
1699
-
decay_mult: 0
1700
-
}
1701
-
convolution_param {
1702
-
num_output: 128
1703
-
pad: 1
1704
-
kernel_size: 3
1705
-
stride: 1
1706
-
weight_filler {
1707
-
type: "xavier"
1708
-
}
1709
-
bias_filler {
1710
-
type: "constant"
1711
-
value: 0
1712
-
}
1713
-
}
1714
-
}
1715
-
layer {
1716
-
name: "bn_stage2_block0_branch2b"
1717
-
type: "BatchNorm"
1718
-
bottom: "conv_stage2_block0_branch2b"
1719
-
top: "conv_stage2_block0_branch2b"
1720
-
param {
1721
-
lr_mult: 0
1722
-
decay_mult: 0
1723
-
}
1724
-
param {
1725
-
lr_mult: 0
1726
-
decay_mult: 0
1727
-
}
1728
-
param {
1729
-
lr_mult: 0
1730
-
decay_mult: 0
1731
-
}
1732
-
batch_norm_param {
1733
-
use_global_stats: true
1734
-
}
1735
-
}
1736
-
layer {
1737
-
name: "scale_stage2_block0_branch2b"
1738
-
type: "Scale"
1739
-
bottom: "conv_stage2_block0_branch2b"
1740
-
top: "conv_stage2_block0_branch2b"
1741
-
scale_param {
1742
-
bias_term: true
1743
-
}
1744
-
}
1745
-
layer {
1746
-
name: "relu_stage2_block0_branch2b"
1747
-
type: "ReLU"
1748
-
bottom: "conv_stage2_block0_branch2b"
1749
-
top: "conv_stage2_block0_branch2b"
1750
-
}
1751
-
layer {
1752
-
name: "conv_stage2_block0_branch2c"
1753
-
type: "Convolution"
1754
-
bottom: "conv_stage2_block0_branch2b"
1755
-
top: "conv_stage2_block0_branch2c"
1756
-
param {
1757
-
lr_mult: 1
1758
-
decay_mult: 1
1759
-
}
1760
-
param {
1761
-
lr_mult: 2
1762
-
decay_mult: 0
1763
-
}
1764
-
convolution_param {
1765
-
num_output: 512
1766
-
pad: 0
1767
-
kernel_size: 1
1768
-
stride: 1
1769
-
weight_filler {
1770
-
type: "xavier"
1771
-
}
1772
-
bias_filler {
1773
-
type: "constant"
1774
-
value: 0
1775
-
}
1776
-
}
1777
-
}
1778
-
layer {
1779
-
name: "bn_stage2_block0_branch2c"
1780
-
type: "BatchNorm"
1781
-
bottom: "conv_stage2_block0_branch2c"
1782
-
top: "conv_stage2_block0_branch2c"
1783
-
param {
1784
-
lr_mult: 0
1785
-
decay_mult: 0
1786
-
}
1787
-
param {
1788
-
lr_mult: 0
1789
-
decay_mult: 0
1790
-
}
1791
-
param {
1792
-
lr_mult: 0
1793
-
decay_mult: 0
1794
-
}
1795
-
batch_norm_param {
1796
-
use_global_stats: true
1797
-
}
1798
-
}
1799
-
layer {
1800
-
name: "scale_stage2_block0_branch2c"
1801
-
type: "Scale"
1802
-
bottom: "conv_stage2_block0_branch2c"
1803
-
top: "conv_stage2_block0_branch2c"
1804
-
scale_param {
1805
-
bias_term: true
1806
-
}
1807
-
}
1808
-
layer {
1809
-
name: "eltwise_stage2_block0"
1810
-
type: "Eltwise"
1811
-
bottom: "conv_stage2_block0_proj_shortcut"
1812
-
bottom: "conv_stage2_block0_branch2c"
1813
-
top: "eltwise_stage2_block0"
1814
-
}
1815
-
layer {
1816
-
name: "relu_stage2_block0"
1817
-
type: "ReLU"
1818
-
bottom: "eltwise_stage2_block0"
1819
-
top: "eltwise_stage2_block0"
1820
-
}
1821
-
layer {
1822
-
name: "conv_stage2_block1_branch2a"
1823
-
type: "Convolution"
1824
-
bottom: "eltwise_stage2_block0"
1825
-
top: "conv_stage2_block1_branch2a"
1826
-
param {
1827
-
lr_mult: 1
1828
-
decay_mult: 1
1829
-
}
1830
-
param {
1831
-
lr_mult: 2
1832
-
decay_mult: 0
1833
-
}
1834
-
convolution_param {
1835
-
num_output: 128
1836
-
pad: 0
1837
-
kernel_size: 1
1838
-
stride: 1
1839
-
weight_filler {
1840
-
type: "xavier"
1841
-
}
1842
-
bias_filler {
1843
-
type: "constant"
1844
-
value: 0
1845
-
}
1846
-
}
1847
-
}
1848
-
layer {
1849
-
name: "bn_stage2_block1_branch2a"
1850
-
type: "BatchNorm"
1851
-
bottom: "conv_stage2_block1_branch2a"
1852
-
top: "conv_stage2_block1_branch2a"
1853
-
param {
1854
-
lr_mult: 0
1855
-
decay_mult: 0
1856
-
}
1857
-
param {
1858
-
lr_mult: 0
1859
-
decay_mult: 0
1860
-
}
1861
-
param {
1862
-
lr_mult: 0
1863
-
decay_mult: 0
1864
-
}
1865
-
batch_norm_param {
1866
-
use_global_stats: true
1867
-
}
1868
-
}
1869
-
layer {
1870
-
name: "scale_stage2_block1_branch2a"
1871
-
type: "Scale"
1872
-
bottom: "conv_stage2_block1_branch2a"
1873
-
top: "conv_stage2_block1_branch2a"
1874
-
scale_param {
1875
-
bias_term: true
1876
-
}
1877
-
}
1878
-
layer {
1879
-
name: "relu_stage2_block1_branch2a"
1880
-
type: "ReLU"
1881
-
bottom: "conv_stage2_block1_branch2a"
1882
-
top: "conv_stage2_block1_branch2a"
1883
-
}
1884
-
layer {
1885
-
name: "conv_stage2_block1_branch2b"
1886
-
type: "Convolution"
1887
-
bottom: "conv_stage2_block1_branch2a"
1888
-
top: "conv_stage2_block1_branch2b"
1889
-
param {
1890
-
lr_mult: 1
1891
-
decay_mult: 1
1892
-
}
1893
-
param {
1894
-
lr_mult: 2
1895
-
decay_mult: 0
1896
-
}
1897
-
convolution_param {
1898
-
num_output: 128
1899
-
pad: 1
1900
-
kernel_size: 3
1901
-
stride: 1
1902
-
weight_filler {
1903
-
type: "xavier"
1904
-
}
1905
-
bias_filler {
1906
-
type: "constant"
1907
-
value: 0
1908
-
}
1909
-
}
1910
-
}
1911
-
layer {
1912
-
name: "bn_stage2_block1_branch2b"
1913
-
type: "BatchNorm"
1914
-
bottom: "conv_stage2_block1_branch2b"
1915
-
top: "conv_stage2_block1_branch2b"
1916
-
param {
1917
-
lr_mult: 0
1918
-
decay_mult: 0
1919
-
}
1920
-
param {
1921
-
lr_mult: 0
1922
-
decay_mult: 0
1923
-
}
1924
-
param {
1925
-
lr_mult: 0
1926
-
decay_mult: 0
1927
-
}
1928
-
batch_norm_param {
1929
-
use_global_stats: true
1930
-
}
1931
-
}
1932
-
layer {
1933
-
name: "scale_stage2_block1_branch2b"
1934
-
type: "Scale"
1935
-
bottom: "conv_stage2_block1_branch2b"
1936
-
top: "conv_stage2_block1_branch2b"
1937
-
scale_param {
1938
-
bias_term: true
1939
-
}
1940
-
}
1941
-
layer {
1942
-
name: "relu_stage2_block1_branch2b"
1943
-
type: "ReLU"
1944
-
bottom: "conv_stage2_block1_branch2b"
1945
-
top: "conv_stage2_block1_branch2b"
1946
-
}
1947
-
layer {
1948
-
name: "conv_stage2_block1_branch2c"
1949
-
type: "Convolution"
1950
-
bottom: "conv_stage2_block1_branch2b"
1951
-
top: "conv_stage2_block1_branch2c"
1952
-
param {
1953
-
lr_mult: 1
1954
-
decay_mult: 1
1955
-
}
1956
-
param {
1957
-
lr_mult: 2
1958
-
decay_mult: 0
1959
-
}
1960
-
convolution_param {
1961
-
num_output: 512
1962
-
pad: 0
1963
-
kernel_size: 1
1964
-
stride: 1
1965
-
weight_filler {
1966
-
type: "xavier"
1967
-
}
1968
-
bias_filler {
1969
-
type: "constant"
1970
-
value: 0
1971
-
}
1972
-
}
1973
-
}
1974
-
layer {
1975
-
name: "bn_stage2_block1_branch2c"
1976
-
type: "BatchNorm"
1977
-
bottom: "conv_stage2_block1_branch2c"
1978
-
top: "conv_stage2_block1_branch2c"
1979
-
param {
1980
-
lr_mult: 0
1981
-
decay_mult: 0
1982
-
}
1983
-
param {
1984
-
lr_mult: 0
1985
-
decay_mult: 0
1986
-
}
1987
-
param {
1988
-
lr_mult: 0
1989
-
decay_mult: 0
1990
-
}
1991
-
batch_norm_param {
1992
-
use_global_stats: true
1993
-
}
1994
-
}
1995
-
layer {
1996
-
name: "scale_stage2_block1_branch2c"
1997
-
type: "Scale"
1998
-
bottom: "conv_stage2_block1_branch2c"
1999
-
top: "conv_stage2_block1_branch2c"
2000
-
scale_param {
2001
-
bias_term: true
2002
-
}
2003
-
}
2004
-
layer {
2005
-
name: "eltwise_stage2_block1"
2006
-
type: "Eltwise"
2007
-
bottom: "eltwise_stage2_block0"
2008
-
bottom: "conv_stage2_block1_branch2c"
2009
-
top: "eltwise_stage2_block1"
2010
-
}
2011
-
layer {
2012
-
name: "relu_stage2_block1"
2013
-
type: "ReLU"
2014
-
bottom: "eltwise_stage2_block1"
2015
-
top: "eltwise_stage2_block1"
2016
-
}
2017
-
layer {
2018
-
name: "conv_stage2_block2_branch2a"
2019
-
type: "Convolution"
2020
-
bottom: "eltwise_stage2_block1"
2021
-
top: "conv_stage2_block2_branch2a"
2022
-
param {
2023
-
lr_mult: 1
2024
-
decay_mult: 1
2025
-
}
2026
-
param {
2027
-
lr_mult: 2
2028
-
decay_mult: 0
2029
-
}
2030
-
convolution_param {
2031
-
num_output: 128
2032
-
pad: 0
2033
-
kernel_size: 1
2034
-
stride: 1
2035
-
weight_filler {
2036
-
type: "xavier"
2037
-
}
2038
-
bias_filler {
2039
-
type: "constant"
2040
-
value: 0
2041
-
}
2042
-
}
2043
-
}
2044
-
layer {
2045
-
name: "bn_stage2_block2_branch2a"
2046
-
type: "BatchNorm"
2047
-
bottom: "conv_stage2_block2_branch2a"
2048
-
top: "conv_stage2_block2_branch2a"
2049
-
param {
2050
-
lr_mult: 0
2051
-
decay_mult: 0
2052
-
}
2053
-
param {
2054
-
lr_mult: 0
2055
-
decay_mult: 0
2056
-
}
2057
-
param {
2058
-
lr_mult: 0
2059
-
decay_mult: 0
2060
-
}
2061
-
batch_norm_param {
2062
-
use_global_stats: true
2063
-
}
2064
-
}
2065
-
layer {
2066
-
name: "scale_stage2_block2_branch2a"
2067
-
type: "Scale"
2068
-
bottom: "conv_stage2_block2_branch2a"
2069
-
top: "conv_stage2_block2_branch2a"
2070
-
scale_param {
2071
-
bias_term: true
2072
-
}
2073
-
}
2074
-
layer {
2075
-
name: "relu_stage2_block2_branch2a"
2076
-
type: "ReLU"
2077
-
bottom: "conv_stage2_block2_branch2a"
2078
-
top: "conv_stage2_block2_branch2a"
2079
-
}
2080
-
layer {
2081
-
name: "conv_stage2_block2_branch2b"
2082
-
type: "Convolution"
2083
-
bottom: "conv_stage2_block2_branch2a"
2084
-
top: "conv_stage2_block2_branch2b"
2085
-
param {
2086
-
lr_mult: 1
2087
-
decay_mult: 1
2088
-
}
2089
-
param {
2090
-
lr_mult: 2
2091
-
decay_mult: 0
2092
-
}
2093
-
convolution_param {
2094
-
num_output: 128
2095
-
pad: 1
2096
-
kernel_size: 3
2097
-
stride: 1
2098
-
weight_filler {
2099
-
type: "xavier"
2100
-
}
2101
-
bias_filler {
2102
-
type: "constant"
2103
-
value: 0
2104
-
}
2105
-
}
2106
-
}
2107
-
layer {
2108
-
name: "bn_stage2_block2_branch2b"
2109
-
type: "BatchNorm"
2110
-
bottom: "conv_stage2_block2_branch2b"
2111
-
top: "conv_stage2_block2_branch2b"
2112
-
param {
2113
-
lr_mult: 0
2114
-
decay_mult: 0
2115
-
}
2116
-
param {
2117
-
lr_mult: 0
2118
-
decay_mult: 0
2119
-
}
2120
-
param {
2121
-
lr_mult: 0
2122
-
decay_mult: 0
2123
-
}
2124
-
batch_norm_param {
2125
-
use_global_stats: true
2126
-
}
2127
-
}
2128
-
layer {
2129
-
name: "scale_stage2_block2_branch2b"
2130
-
type: "Scale"
2131
-
bottom: "conv_stage2_block2_branch2b"
2132
-
top: "conv_stage2_block2_branch2b"
2133
-
scale_param {
2134
-
bias_term: true
2135
-
}
2136
-
}
2137
-
layer {
2138
-
name: "relu_stage2_block2_branch2b"
2139
-
type: "ReLU"
2140
-
bottom: "conv_stage2_block2_branch2b"
2141
-
top: "conv_stage2_block2_branch2b"
2142
-
}
2143
-
layer {
2144
-
name: "conv_stage2_block2_branch2c"
2145
-
type: "Convolution"
2146
-
bottom: "conv_stage2_block2_branch2b"
2147
-
top: "conv_stage2_block2_branch2c"
2148
-
param {
2149
-
lr_mult: 1
2150
-
decay_mult: 1
2151
-
}
2152
-
param {
2153
-
lr_mult: 2
2154
-
decay_mult: 0
2155
-
}
2156
-
convolution_param {
2157
-
num_output: 512
2158
-
pad: 0
2159
-
kernel_size: 1
2160
-
stride: 1
2161
-
weight_filler {
2162
-
type: "xavier"
2163
-
}
2164
-
bias_filler {
2165
-
type: "constant"
2166
-
value: 0
2167
-
}
2168
-
}
2169
-
}
2170
-
layer {
2171
-
name: "bn_stage2_block2_branch2c"
2172
-
type: "BatchNorm"
2173
-
bottom: "conv_stage2_block2_branch2c"
2174
-
top: "conv_stage2_block2_branch2c"
2175
-
param {
2176
-
lr_mult: 0
2177
-
decay_mult: 0
2178
-
}
2179
-
param {
2180
-
lr_mult: 0
2181
-
decay_mult: 0
2182
-
}
2183
-
param {
2184
-
lr_mult: 0
2185
-
decay_mult: 0
2186
-
}
2187
-
batch_norm_param {
2188
-
use_global_stats: true
2189
-
}
2190
-
}
2191
-
layer {
2192
-
name: "scale_stage2_block2_branch2c"
2193
-
type: "Scale"
2194
-
bottom: "conv_stage2_block2_branch2c"
2195
-
top: "conv_stage2_block2_branch2c"
2196
-
scale_param {
2197
-
bias_term: true
2198
-
}
2199
-
}
2200
-
layer {
2201
-
name: "eltwise_stage2_block2"
2202
-
type: "Eltwise"
2203
-
bottom: "eltwise_stage2_block1"
2204
-
bottom: "conv_stage2_block2_branch2c"
2205
-
top: "eltwise_stage2_block2"
2206
-
}
2207
-
layer {
2208
-
name: "relu_stage2_block2"
2209
-
type: "ReLU"
2210
-
bottom: "eltwise_stage2_block2"
2211
-
top: "eltwise_stage2_block2"
2212
-
}
2213
-
layer {
2214
-
name: "conv_stage2_block3_branch2a"
2215
-
type: "Convolution"
2216
-
bottom: "eltwise_stage2_block2"
2217
-
top: "conv_stage2_block3_branch2a"
2218
-
param {
2219
-
lr_mult: 1
2220
-
decay_mult: 1
2221
-
}
2222
-
param {
2223
-
lr_mult: 2
2224
-
decay_mult: 0
2225
-
}
2226
-
convolution_param {
2227
-
num_output: 128
2228
-
pad: 0
2229
-
kernel_size: 1
2230
-
stride: 1
2231
-
weight_filler {
2232
-
type: "xavier"
2233
-
}
2234
-
bias_filler {
2235
-
type: "constant"
2236
-
value: 0
2237
-
}
2238
-
}
2239
-
}
2240
-
layer {
2241
-
name: "bn_stage2_block3_branch2a"
2242
-
type: "BatchNorm"
2243
-
bottom: "conv_stage2_block3_branch2a"
2244
-
top: "conv_stage2_block3_branch2a"
2245
-
param {
2246
-
lr_mult: 0
2247
-
decay_mult: 0
2248
-
}
2249
-
param {
2250
-
lr_mult: 0
2251
-
decay_mult: 0
2252
-
}
2253
-
param {
2254
-
lr_mult: 0
2255
-
decay_mult: 0
2256
-
}
2257
-
batch_norm_param {
2258
-
use_global_stats: true
2259
-
}
2260
-
}
2261
-
layer {
2262
-
name: "scale_stage2_block3_branch2a"
2263
-
type: "Scale"
2264
-
bottom: "conv_stage2_block3_branch2a"
2265
-
top: "conv_stage2_block3_branch2a"
2266
-
scale_param {
2267
-
bias_term: true
2268
-
}
2269
-
}
2270
-
layer {
2271
-
name: "relu_stage2_block3_branch2a"
2272
-
type: "ReLU"
2273
-
bottom: "conv_stage2_block3_branch2a"
2274
-
top: "conv_stage2_block3_branch2a"
2275
-
}
2276
-
layer {
2277
-
name: "conv_stage2_block3_branch2b"
2278
-
type: "Convolution"
2279
-
bottom: "conv_stage2_block3_branch2a"
2280
-
top: "conv_stage2_block3_branch2b"
2281
-
param {
2282
-
lr_mult: 1
2283
-
decay_mult: 1
2284
-
}
2285
-
param {
2286
-
lr_mult: 2
2287
-
decay_mult: 0
2288
-
}
2289
-
convolution_param {
2290
-
num_output: 128
2291
-
pad: 1
2292
-
kernel_size: 3
2293
-
stride: 1
2294
-
weight_filler {
2295
-
type: "xavier"
2296
-
}
2297
-
bias_filler {
2298
-
type: "constant"
2299
-
value: 0
2300
-
}
2301
-
}
2302
-
}
2303
-
layer {
2304
-
name: "bn_stage2_block3_branch2b"
2305
-
type: "BatchNorm"
2306
-
bottom: "conv_stage2_block3_branch2b"
2307
-
top: "conv_stage2_block3_branch2b"
2308
-
param {
2309
-
lr_mult: 0
2310
-
decay_mult: 0
2311
-
}
2312
-
param {
2313
-
lr_mult: 0
2314
-
decay_mult: 0
2315
-
}
2316
-
param {
2317
-
lr_mult: 0
2318
-
decay_mult: 0
2319
-
}
2320
-
batch_norm_param {
2321
-
use_global_stats: true
2322
-
}
2323
-
}
2324
-
layer {
2325
-
name: "scale_stage2_block3_branch2b"
2326
-
type: "Scale"
2327
-
bottom: "conv_stage2_block3_branch2b"
2328
-
top: "conv_stage2_block3_branch2b"
2329
-
scale_param {
2330
-
bias_term: true
2331
-
}
2332
-
}
2333
-
layer {
2334
-
name: "relu_stage2_block3_branch2b"
2335
-
type: "ReLU"
2336
-
bottom: "conv_stage2_block3_branch2b"
2337
-
top: "conv_stage2_block3_branch2b"
2338
-
}
2339
-
layer {
2340
-
name: "conv_stage2_block3_branch2c"
2341
-
type: "Convolution"
2342
-
bottom: "conv_stage2_block3_branch2b"
2343
-
top: "conv_stage2_block3_branch2c"
2344
-
param {
2345
-
lr_mult: 1
2346
-
decay_mult: 1
2347
-
}
2348
-
param {
2349
-
lr_mult: 2
2350
-
decay_mult: 0
2351
-
}
2352
-
convolution_param {
2353
-
num_output: 512
2354
-
pad: 0
2355
-
kernel_size: 1
2356
-
stride: 1
2357
-
weight_filler {
2358
-
type: "xavier"
2359
-
}
2360
-
bias_filler {
2361
-
type: "constant"
2362
-
value: 0
2363
-
}
2364
-
}
2365
-
}
2366
-
layer {
2367
-
name: "bn_stage2_block3_branch2c"
2368
-
type: "BatchNorm"
2369
-
bottom: "conv_stage2_block3_branch2c"
2370
-
top: "conv_stage2_block3_branch2c"
2371
-
param {
2372
-
lr_mult: 0
2373
-
decay_mult: 0
2374
-
}
2375
-
param {
2376
-
lr_mult: 0
2377
-
decay_mult: 0
2378
-
}
2379
-
param {
2380
-
lr_mult: 0
2381
-
decay_mult: 0
2382
-
}
2383
-
batch_norm_param {
2384
-
use_global_stats: true
2385
-
}
2386
-
}
2387
-
layer {
2388
-
name: "scale_stage2_block3_branch2c"
2389
-
type: "Scale"
2390
-
bottom: "conv_stage2_block3_branch2c"
2391
-
top: "conv_stage2_block3_branch2c"
2392
-
scale_param {
2393
-
bias_term: true
2394
-
}
2395
-
}
2396
-
layer {
2397
-
name: "eltwise_stage2_block3"
2398
-
type: "Eltwise"
2399
-
bottom: "eltwise_stage2_block2"
2400
-
bottom: "conv_stage2_block3_branch2c"
2401
-
top: "eltwise_stage2_block3"
2402
-
}
2403
-
layer {
2404
-
name: "relu_stage2_block3"
2405
-
type: "ReLU"
2406
-
bottom: "eltwise_stage2_block3"
2407
-
top: "eltwise_stage2_block3"
2408
-
}
2409
-
layer {
2410
-
name: "conv_stage2_block4_branch2a"
2411
-
type: "Convolution"
2412
-
bottom: "eltwise_stage2_block3"
2413
-
top: "conv_stage2_block4_branch2a"
2414
-
param {
2415
-
lr_mult: 1
2416
-
decay_mult: 1
2417
-
}
2418
-
param {
2419
-
lr_mult: 2
2420
-
decay_mult: 0
2421
-
}
2422
-
convolution_param {
2423
-
num_output: 128
2424
-
pad: 0
2425
-
kernel_size: 1
2426
-
stride: 1
2427
-
weight_filler {
2428
-
type: "xavier"
2429
-
}
2430
-
bias_filler {
2431
-
type: "constant"
2432
-
value: 0
2433
-
}
2434
-
}
2435
-
}
2436
-
layer {
2437
-
name: "bn_stage2_block4_branch2a"
2438
-
type: "BatchNorm"
2439
-
bottom: "conv_stage2_block4_branch2a"
2440
-
top: "conv_stage2_block4_branch2a"
2441
-
param {
2442
-
lr_mult: 0
2443
-
decay_mult: 0
2444
-
}
2445
-
param {
2446
-
lr_mult: 0
2447
-
decay_mult: 0
2448
-
}
2449
-
param {
2450
-
lr_mult: 0
2451
-
decay_mult: 0
2452
-
}
2453
-
batch_norm_param {
2454
-
use_global_stats: true
2455
-
}
2456
-
}
2457
-
layer {
2458
-
name: "scale_stage2_block4_branch2a"
2459
-
type: "Scale"
2460
-
bottom: "conv_stage2_block4_branch2a"
2461
-
top: "conv_stage2_block4_branch2a"
2462
-
scale_param {
2463
-
bias_term: true
2464
-
}
2465
-
}
2466
-
layer {
2467
-
name: "relu_stage2_block4_branch2a"
2468
-
type: "ReLU"
2469
-
bottom: "conv_stage2_block4_branch2a"
2470
-
top: "conv_stage2_block4_branch2a"
2471
-
}
2472
-
layer {
2473
-
name: "conv_stage2_block4_branch2b"
2474
-
type: "Convolution"
2475
-
bottom: "conv_stage2_block4_branch2a"
2476
-
top: "conv_stage2_block4_branch2b"
2477
-
param {
2478
-
lr_mult: 1
2479
-
decay_mult: 1
2480
-
}
2481
-
param {
2482
-
lr_mult: 2
2483
-
decay_mult: 0
2484
-
}
2485
-
convolution_param {
2486
-
num_output: 128
2487
-
pad: 1
2488
-
kernel_size: 3
2489
-
stride: 1
2490
-
weight_filler {
2491
-
type: "xavier"
2492
-
}
2493
-
bias_filler {
2494
-
type: "constant"
2495
-
value: 0
2496
-
}
2497
-
}
2498
-
}
2499
-
layer {
2500
-
name: "bn_stage2_block4_branch2b"
2501
-
type: "BatchNorm"
2502
-
bottom: "conv_stage2_block4_branch2b"
2503
-
top: "conv_stage2_block4_branch2b"
2504
-
param {
2505
-
lr_mult: 0
2506
-
decay_mult: 0
2507
-
}
2508
-
param {
2509
-
lr_mult: 0
2510
-
decay_mult: 0
2511
-
}
2512
-
param {
2513
-
lr_mult: 0
2514
-
decay_mult: 0
2515
-
}
2516
-
batch_norm_param {
2517
-
use_global_stats: true
2518
-
}
2519
-
}
2520
-
layer {
2521
-
name: "scale_stage2_block4_branch2b"
2522
-
type: "Scale"
2523
-
bottom: "conv_stage2_block4_branch2b"
2524
-
top: "conv_stage2_block4_branch2b"
2525
-
scale_param {
2526
-
bias_term: true
2527
-
}
2528
-
}
2529
-
layer {
2530
-
name: "relu_stage2_block4_branch2b"
2531
-
type: "ReLU"
2532
-
bottom: "conv_stage2_block4_branch2b"
2533
-
top: "conv_stage2_block4_branch2b"
2534
-
}
2535
-
layer {
2536
-
name: "conv_stage2_block4_branch2c"
2537
-
type: "Convolution"
2538
-
bottom: "conv_stage2_block4_branch2b"
2539
-
top: "conv_stage2_block4_branch2c"
2540
-
param {
2541
-
lr_mult: 1
2542
-
decay_mult: 1
2543
-
}
2544
-
param {
2545
-
lr_mult: 2
2546
-
decay_mult: 0
2547
-
}
2548
-
convolution_param {
2549
-
num_output: 512
2550
-
pad: 0
2551
-
kernel_size: 1
2552
-
stride: 1
2553
-
weight_filler {
2554
-
type: "xavier"
2555
-
}
2556
-
bias_filler {
2557
-
type: "constant"
2558
-
value: 0
2559
-
}
2560
-
}
2561
-
}
2562
-
layer {
2563
-
name: "bn_stage2_block4_branch2c"
2564
-
type: "BatchNorm"
2565
-
bottom: "conv_stage2_block4_branch2c"
2566
-
top: "conv_stage2_block4_branch2c"
2567
-
param {
2568
-
lr_mult: 0
2569
-
decay_mult: 0
2570
-
}
2571
-
param {
2572
-
lr_mult: 0
2573
-
decay_mult: 0
2574
-
}
2575
-
param {
2576
-
lr_mult: 0
2577
-
decay_mult: 0
2578
-
}
2579
-
batch_norm_param {
2580
-
use_global_stats: true
2581
-
}
2582
-
}
2583
-
layer {
2584
-
name: "scale_stage2_block4_branch2c"
2585
-
type: "Scale"
2586
-
bottom: "conv_stage2_block4_branch2c"
2587
-
top: "conv_stage2_block4_branch2c"
2588
-
scale_param {
2589
-
bias_term: true
2590
-
}
2591
-
}
2592
-
layer {
2593
-
name: "eltwise_stage2_block4"
2594
-
type: "Eltwise"
2595
-
bottom: "eltwise_stage2_block3"
2596
-
bottom: "conv_stage2_block4_branch2c"
2597
-
top: "eltwise_stage2_block4"
2598
-
}
2599
-
layer {
2600
-
name: "relu_stage2_block4"
2601
-
type: "ReLU"
2602
-
bottom: "eltwise_stage2_block4"
2603
-
top: "eltwise_stage2_block4"
2604
-
}
2605
-
layer {
2606
-
name: "conv_stage2_block5_branch2a"
2607
-
type: "Convolution"
2608
-
bottom: "eltwise_stage2_block4"
2609
-
top: "conv_stage2_block5_branch2a"
2610
-
param {
2611
-
lr_mult: 1
2612
-
decay_mult: 1
2613
-
}
2614
-
param {
2615
-
lr_mult: 2
2616
-
decay_mult: 0
2617
-
}
2618
-
convolution_param {
2619
-
num_output: 128
2620
-
pad: 0
2621
-
kernel_size: 1
2622
-
stride: 1
2623
-
weight_filler {
2624
-
type: "xavier"
2625
-
}
2626
-
bias_filler {
2627
-
type: "constant"
2628
-
value: 0
2629
-
}
2630
-
}
2631
-
}
2632
-
layer {
2633
-
name: "bn_stage2_block5_branch2a"
2634
-
type: "BatchNorm"
2635
-
bottom: "conv_stage2_block5_branch2a"
2636
-
top: "conv_stage2_block5_branch2a"
2637
-
param {
2638
-
lr_mult: 0
2639
-
decay_mult: 0
2640
-
}
2641
-
param {
2642
-
lr_mult: 0
2643
-
decay_mult: 0
2644
-
}
2645
-
param {
2646
-
lr_mult: 0
2647
-
decay_mult: 0
2648
-
}
2649
-
batch_norm_param {
2650
-
use_global_stats: true
2651
-
}
2652
-
}
2653
-
layer {
2654
-
name: "scale_stage2_block5_branch2a"
2655
-
type: "Scale"
2656
-
bottom: "conv_stage2_block5_branch2a"
2657
-
top: "conv_stage2_block5_branch2a"
2658
-
scale_param {
2659
-
bias_term: true
2660
-
}
2661
-
}
2662
-
layer {
2663
-
name: "relu_stage2_block5_branch2a"
2664
-
type: "ReLU"
2665
-
bottom: "conv_stage2_block5_branch2a"
2666
-
top: "conv_stage2_block5_branch2a"
2667
-
}
2668
-
layer {
2669
-
name: "conv_stage2_block5_branch2b"
2670
-
type: "Convolution"
2671
-
bottom: "conv_stage2_block5_branch2a"
2672
-
top: "conv_stage2_block5_branch2b"
2673
-
param {
2674
-
lr_mult: 1
2675
-
decay_mult: 1
2676
-
}
2677
-
param {
2678
-
lr_mult: 2
2679
-
decay_mult: 0
2680
-
}
2681
-
convolution_param {
2682
-
num_output: 128
2683
-
pad: 1
2684
-
kernel_size: 3
2685
-
stride: 1
2686
-
weight_filler {
2687
-
type: "xavier"
2688
-
}
2689
-
bias_filler {
2690
-
type: "constant"
2691
-
value: 0
2692
-
}
2693
-
}
2694
-
}
2695
-
layer {
2696
-
name: "bn_stage2_block5_branch2b"
2697
-
type: "BatchNorm"
2698
-
bottom: "conv_stage2_block5_branch2b"
2699
-
top: "conv_stage2_block5_branch2b"
2700
-
param {
2701
-
lr_mult: 0
2702
-
decay_mult: 0
2703
-
}
2704
-
param {
2705
-
lr_mult: 0
2706
-
decay_mult: 0
2707
-
}
2708
-
param {
2709
-
lr_mult: 0
2710
-
decay_mult: 0
2711
-
}
2712
-
batch_norm_param {
2713
-
use_global_stats: true
2714
-
}
2715
-
}
2716
-
layer {
2717
-
name: "scale_stage2_block5_branch2b"
2718
-
type: "Scale"
2719
-
bottom: "conv_stage2_block5_branch2b"
2720
-
top: "conv_stage2_block5_branch2b"
2721
-
scale_param {
2722
-
bias_term: true
2723
-
}
2724
-
}
2725
-
layer {
2726
-
name: "relu_stage2_block5_branch2b"
2727
-
type: "ReLU"
2728
-
bottom: "conv_stage2_block5_branch2b"
2729
-
top: "conv_stage2_block5_branch2b"
2730
-
}
2731
-
layer {
2732
-
name: "conv_stage2_block5_branch2c"
2733
-
type: "Convolution"
2734
-
bottom: "conv_stage2_block5_branch2b"
2735
-
top: "conv_stage2_block5_branch2c"
2736
-
param {
2737
-
lr_mult: 1
2738
-
decay_mult: 1
2739
-
}
2740
-
param {
2741
-
lr_mult: 2
2742
-
decay_mult: 0
2743
-
}
2744
-
convolution_param {
2745
-
num_output: 512
2746
-
pad: 0
2747
-
kernel_size: 1
2748
-
stride: 1
2749
-
weight_filler {
2750
-
type: "xavier"
2751
-
}
2752
-
bias_filler {
2753
-
type: "constant"
2754
-
value: 0
2755
-
}
2756
-
}
2757
-
}
2758
-
layer {
2759
-
name: "bn_stage2_block5_branch2c"
2760
-
type: "BatchNorm"
2761
-
bottom: "conv_stage2_block5_branch2c"
2762
-
top: "conv_stage2_block5_branch2c"
2763
-
param {
2764
-
lr_mult: 0
2765
-
decay_mult: 0
2766
-
}
2767
-
param {
2768
-
lr_mult: 0
2769
-
decay_mult: 0
2770
-
}
2771
-
param {
2772
-
lr_mult: 0
2773
-
decay_mult: 0
2774
-
}
2775
-
batch_norm_param {
2776
-
use_global_stats: true
2777
-
}
2778
-
}
2779
-
layer {
2780
-
name: "scale_stage2_block5_branch2c"
2781
-
type: "Scale"
2782
-
bottom: "conv_stage2_block5_branch2c"
2783
-
top: "conv_stage2_block5_branch2c"
2784
-
scale_param {
2785
-
bias_term: true
2786
-
}
2787
-
}
2788
-
layer {
2789
-
name: "eltwise_stage2_block5"
2790
-
type: "Eltwise"
2791
-
bottom: "eltwise_stage2_block4"
2792
-
bottom: "conv_stage2_block5_branch2c"
2793
-
top: "eltwise_stage2_block5"
2794
-
}
2795
-
layer {
2796
-
name: "relu_stage2_block5"
2797
-
type: "ReLU"
2798
-
bottom: "eltwise_stage2_block5"
2799
-
top: "eltwise_stage2_block5"
2800
-
}
2801
-
layer {
2802
-
name: "conv_stage3_block0_proj_shortcut"
2803
-
type: "Convolution"
2804
-
bottom: "eltwise_stage2_block5"
2805
-
top: "conv_stage3_block0_proj_shortcut"
2806
-
param {
2807
-
lr_mult: 1
2808
-
decay_mult: 1
2809
-
}
2810
-
param {
2811
-
lr_mult: 2
2812
-
decay_mult: 0
2813
-
}
2814
-
convolution_param {
2815
-
num_output: 1024
2816
-
pad: 0
2817
-
kernel_size: 1
2818
-
stride: 2
2819
-
weight_filler {
2820
-
type: "xavier"
2821
-
}
2822
-
bias_filler {
2823
-
type: "constant"
2824
-
value: 0
2825
-
}
2826
-
}
2827
-
}
2828
-
layer {
2829
-
name: "bn_stage3_block0_proj_shortcut"
2830
-
type: "BatchNorm"
2831
-
bottom: "conv_stage3_block0_proj_shortcut"
2832
-
top: "conv_stage3_block0_proj_shortcut"
2833
-
param {
2834
-
lr_mult: 0
2835
-
decay_mult: 0
2836
-
}
2837
-
param {
2838
-
lr_mult: 0
2839
-
decay_mult: 0
2840
-
}
2841
-
param {
2842
-
lr_mult: 0
2843
-
decay_mult: 0
2844
-
}
2845
-
batch_norm_param {
2846
-
use_global_stats: true
2847
-
}
2848
-
}
2849
-
layer {
2850
-
name: "scale_stage3_block0_proj_shortcut"
2851
-
type: "Scale"
2852
-
bottom: "conv_stage3_block0_proj_shortcut"
2853
-
top: "conv_stage3_block0_proj_shortcut"
2854
-
scale_param {
2855
-
bias_term: true
2856
-
}
2857
-
}
2858
-
layer {
2859
-
name: "conv_stage3_block0_branch2a"
2860
-
type: "Convolution"
2861
-
bottom: "eltwise_stage2_block5"
2862
-
top: "conv_stage3_block0_branch2a"
2863
-
param {
2864
-
lr_mult: 1
2865
-
decay_mult: 1
2866
-
}
2867
-
param {
2868
-
lr_mult: 2
2869
-
decay_mult: 0
2870
-
}
2871
-
convolution_param {
2872
-
num_output: 256
2873
-
pad: 0
2874
-
kernel_size: 1
2875
-
stride: 2
2876
-
weight_filler {
2877
-
type: "xavier"
2878
-
}
2879
-
bias_filler {
2880
-
type: "constant"
2881
-
value: 0
2882
-
}
2883
-
}
2884
-
}
2885
-
layer {
2886
-
name: "bn_stage3_block0_branch2a"
2887
-
type: "BatchNorm"
2888
-
bottom: "conv_stage3_block0_branch2a"
2889
-
top: "conv_stage3_block0_branch2a"
2890
-
param {
2891
-
lr_mult: 0
2892
-
decay_mult: 0
2893
-
}
2894
-
param {
2895
-
lr_mult: 0
2896
-
decay_mult: 0
2897
-
}
2898
-
param {
2899
-
lr_mult: 0
2900
-
decay_mult: 0
2901
-
}
2902
-
batch_norm_param {
2903
-
use_global_stats: true
2904
-
}
2905
-
}
2906
-
layer {
2907
-
name: "scale_stage3_block0_branch2a"
2908
-
type: "Scale"
2909
-
bottom: "conv_stage3_block0_branch2a"
2910
-
top: "conv_stage3_block0_branch2a"
2911
-
scale_param {
2912
-
bias_term: true
2913
-
}
2914
-
}
2915
-
layer {
2916
-
name: "relu_stage3_block0_branch2a"
2917
-
type: "ReLU"
2918
-
bottom: "conv_stage3_block0_branch2a"
2919
-
top: "conv_stage3_block0_branch2a"
2920
-
}
2921
-
layer {
2922
-
name: "conv_stage3_block0_branch2b"
2923
-
type: "Convolution"
2924
-
bottom: "conv_stage3_block0_branch2a"
2925
-
top: "conv_stage3_block0_branch2b"
2926
-
param {
2927
-
lr_mult: 1
2928
-
decay_mult: 1
2929
-
}
2930
-
param {
2931
-
lr_mult: 2
2932
-
decay_mult: 0
2933
-
}
2934
-
convolution_param {
2935
-
num_output: 256
2936
-
pad: 1
2937
-
kernel_size: 3
2938
-
stride: 1
2939
-
weight_filler {
2940
-
type: "xavier"
2941
-
}
2942
-
bias_filler {
2943
-
type: "constant"
2944
-
value: 0
2945
-
}
2946
-
}
2947
-
}
2948
-
layer {
2949
-
name: "bn_stage3_block0_branch2b"
2950
-
type: "BatchNorm"
2951
-
bottom: "conv_stage3_block0_branch2b"
2952
-
top: "conv_stage3_block0_branch2b"
2953
-
param {
2954
-
lr_mult: 0
2955
-
decay_mult: 0
2956
-
}
2957
-
param {
2958
-
lr_mult: 0
2959
-
decay_mult: 0
2960
-
}
2961
-
param {
2962
-
lr_mult: 0
2963
-
decay_mult: 0
2964
-
}
2965
-
batch_norm_param {
2966
-
use_global_stats: true
2967
-
}
2968
-
}
2969
-
layer {
2970
-
name: "scale_stage3_block0_branch2b"
2971
-
type: "Scale"
2972
-
bottom: "conv_stage3_block0_branch2b"
2973
-
top: "conv_stage3_block0_branch2b"
2974
-
scale_param {
2975
-
bias_term: true
2976
-
}
2977
-
}
2978
-
layer {
2979
-
name: "relu_stage3_block0_branch2b"
2980
-
type: "ReLU"
2981
-
bottom: "conv_stage3_block0_branch2b"
2982
-
top: "conv_stage3_block0_branch2b"
2983
-
}
2984
-
layer {
2985
-
name: "conv_stage3_block0_branch2c"
2986
-
type: "Convolution"
2987
-
bottom: "conv_stage3_block0_branch2b"
2988
-
top: "conv_stage3_block0_branch2c"
2989
-
param {
2990
-
lr_mult: 1
2991
-
decay_mult: 1
2992
-
}
2993
-
param {
2994
-
lr_mult: 2
2995
-
decay_mult: 0
2996
-
}
2997
-
convolution_param {
2998
-
num_output: 1024
2999
-
pad: 0
3000
-
kernel_size: 1
3001
-
stride: 1
3002
-
weight_filler {
3003
-
type: "xavier"
3004
-
}
3005
-
bias_filler {
3006
-
type: "constant"
3007
-
value: 0
3008
-
}
3009
-
}
3010
-
}
3011
-
layer {
3012
-
name: "bn_stage3_block0_branch2c"
3013
-
type: "BatchNorm"
3014
-
bottom: "conv_stage3_block0_branch2c"
3015
-
top: "conv_stage3_block0_branch2c"
3016
-
param {
3017
-
lr_mult: 0
3018
-
decay_mult: 0
3019
-
}
3020
-
param {
3021
-
lr_mult: 0
3022
-
decay_mult: 0
3023
-
}
3024
-
param {
3025
-
lr_mult: 0
3026
-
decay_mult: 0
3027
-
}
3028
-
batch_norm_param {
3029
-
use_global_stats: true
3030
-
}
3031
-
}
3032
-
layer {
3033
-
name: "scale_stage3_block0_branch2c"
3034
-
type: "Scale"
3035
-
bottom: "conv_stage3_block0_branch2c"
3036
-
top: "conv_stage3_block0_branch2c"
3037
-
scale_param {
3038
-
bias_term: true
3039
-
}
3040
-
}
3041
-
layer {
3042
-
name: "eltwise_stage3_block0"
3043
-
type: "Eltwise"
3044
-
bottom: "conv_stage3_block0_proj_shortcut"
3045
-
bottom: "conv_stage3_block0_branch2c"
3046
-
top: "eltwise_stage3_block0"
3047
-
}
3048
-
layer {
3049
-
name: "relu_stage3_block0"
3050
-
type: "ReLU"
3051
-
bottom: "eltwise_stage3_block0"
3052
-
top: "eltwise_stage3_block0"
3053
-
}
3054
-
layer {
3055
-
name: "conv_stage3_block1_branch2a"
3056
-
type: "Convolution"
3057
-
bottom: "eltwise_stage3_block0"
3058
-
top: "conv_stage3_block1_branch2a"
3059
-
param {
3060
-
lr_mult: 1
3061
-
decay_mult: 1
3062
-
}
3063
-
param {
3064
-
lr_mult: 2
3065
-
decay_mult: 0
3066
-
}
3067
-
convolution_param {
3068
-
num_output: 256
3069
-
pad: 0
3070
-
kernel_size: 1
3071
-
stride: 1
3072
-
weight_filler {
3073
-
type: "xavier"
3074
-
}
3075
-
bias_filler {
3076
-
type: "constant"
3077
-
value: 0
3078
-
}
3079
-
}
3080
-
}
3081
-
layer {
3082
-
name: "bn_stage3_block1_branch2a"
3083
-
type: "BatchNorm"
3084
-
bottom: "conv_stage3_block1_branch2a"
3085
-
top: "conv_stage3_block1_branch2a"
3086
-
param {
3087
-
lr_mult: 0
3088
-
decay_mult: 0
3089
-
}
3090
-
param {
3091
-
lr_mult: 0
3092
-
decay_mult: 0
3093
-
}
3094
-
param {
3095
-
lr_mult: 0
3096
-
decay_mult: 0
3097
-
}
3098
-
batch_norm_param {
3099
-
use_global_stats: true
3100
-
}
3101
-
}
3102
-
layer {
3103
-
name: "scale_stage3_block1_branch2a"
3104
-
type: "Scale"
3105
-
bottom: "conv_stage3_block1_branch2a"
3106
-
top: "conv_stage3_block1_branch2a"
3107
-
scale_param {
3108
-
bias_term: true
3109
-
}
3110
-
}
3111
-
layer {
3112
-
name: "relu_stage3_block1_branch2a"
3113
-
type: "ReLU"
3114
-
bottom: "conv_stage3_block1_branch2a"
3115
-
top: "conv_stage3_block1_branch2a"
3116
-
}
3117
-
layer {
3118
-
name: "conv_stage3_block1_branch2b"
3119
-
type: "Convolution"
3120
-
bottom: "conv_stage3_block1_branch2a"
3121
-
top: "conv_stage3_block1_branch2b"
3122
-
param {
3123
-
lr_mult: 1
3124
-
decay_mult: 1
3125
-
}
3126
-
param {
3127
-
lr_mult: 2
3128
-
decay_mult: 0
3129
-
}
3130
-
convolution_param {
3131
-
num_output: 256
3132
-
pad: 1
3133
-
kernel_size: 3
3134
-
stride: 1
3135
-
weight_filler {
3136
-
type: "xavier"
3137
-
}
3138
-
bias_filler {
3139
-
type: "constant"
3140
-
value: 0
3141
-
}
3142
-
}
3143
-
}
3144
-
layer {
3145
-
name: "bn_stage3_block1_branch2b"
3146
-
type: "BatchNorm"
3147
-
bottom: "conv_stage3_block1_branch2b"
3148
-
top: "conv_stage3_block1_branch2b"
3149
-
param {
3150
-
lr_mult: 0
3151
-
decay_mult: 0
3152
-
}
3153
-
param {
3154
-
lr_mult: 0
3155
-
decay_mult: 0
3156
-
}
3157
-
param {
3158
-
lr_mult: 0
3159
-
decay_mult: 0
3160
-
}
3161
-
batch_norm_param {
3162
-
use_global_stats: true
3163
-
}
3164
-
}
3165
-
layer {
3166
-
name: "scale_stage3_block1_branch2b"
3167
-
type: "Scale"
3168
-
bottom: "conv_stage3_block1_branch2b"
3169
-
top: "conv_stage3_block1_branch2b"
3170
-
scale_param {
3171
-
bias_term: true
3172
-
}
3173
-
}
3174
-
layer {
3175
-
name: "relu_stage3_block1_branch2b"
3176
-
type: "ReLU"
3177
-
bottom: "conv_stage3_block1_branch2b"
3178
-
top: "conv_stage3_block1_branch2b"
3179
-
}
3180
-
layer {
3181
-
name: "conv_stage3_block1_branch2c"
3182
-
type: "Convolution"
3183
-
bottom: "conv_stage3_block1_branch2b"
3184
-
top: "conv_stage3_block1_branch2c"
3185
-
param {
3186
-
lr_mult: 1
3187
-
decay_mult: 1
3188
-
}
3189
-
param {
3190
-
lr_mult: 2
3191
-
decay_mult: 0
3192
-
}
3193
-
convolution_param {
3194
-
num_output: 1024
3195
-
pad: 0
3196
-
kernel_size: 1
3197
-
stride: 1
3198
-
weight_filler {
3199
-
type: "xavier"
3200
-
}
3201
-
bias_filler {
3202
-
type: "constant"
3203
-
value: 0
3204
-
}
3205
-
}
3206
-
}
3207
-
layer {
3208
-
name: "bn_stage3_block1_branch2c"
3209
-
type: "BatchNorm"
3210
-
bottom: "conv_stage3_block1_branch2c"
3211
-
top: "conv_stage3_block1_branch2c"
3212
-
param {
3213
-
lr_mult: 0
3214
-
decay_mult: 0
3215
-
}
3216
-
param {
3217
-
lr_mult: 0
3218
-
decay_mult: 0
3219
-
}
3220
-
param {
3221
-
lr_mult: 0
3222
-
decay_mult: 0
3223
-
}
3224
-
batch_norm_param {
3225
-
use_global_stats: true
3226
-
}
3227
-
}
3228
-
layer {
3229
-
name: "scale_stage3_block1_branch2c"
3230
-
type: "Scale"
3231
-
bottom: "conv_stage3_block1_branch2c"
3232
-
top: "conv_stage3_block1_branch2c"
3233
-
scale_param {
3234
-
bias_term: true
3235
-
}
3236
-
}
3237
-
layer {
3238
-
name: "eltwise_stage3_block1"
3239
-
type: "Eltwise"
3240
-
bottom: "eltwise_stage3_block0"
3241
-
bottom: "conv_stage3_block1_branch2c"
3242
-
top: "eltwise_stage3_block1"
3243
-
}
3244
-
layer {
3245
-
name: "relu_stage3_block1"
3246
-
type: "ReLU"
3247
-
bottom: "eltwise_stage3_block1"
3248
-
top: "eltwise_stage3_block1"
3249
-
}
3250
-
layer {
3251
-
name: "conv_stage3_block2_branch2a"
3252
-
type: "Convolution"
3253
-
bottom: "eltwise_stage3_block1"
3254
-
top: "conv_stage3_block2_branch2a"
3255
-
param {
3256
-
lr_mult: 1
3257
-
decay_mult: 1
3258
-
}
3259
-
param {
3260
-
lr_mult: 2
3261
-
decay_mult: 0
3262
-
}
3263
-
convolution_param {
3264
-
num_output: 256
3265
-
pad: 0
3266
-
kernel_size: 1
3267
-
stride: 1
3268
-
weight_filler {
3269
-
type: "xavier"
3270
-
}
3271
-
bias_filler {
3272
-
type: "constant"
3273
-
value: 0
3274
-
}
3275
-
}
3276
-
}
3277
-
layer {
3278
-
name: "bn_stage3_block2_branch2a"
3279
-
type: "BatchNorm"
3280
-
bottom: "conv_stage3_block2_branch2a"
3281
-
top: "conv_stage3_block2_branch2a"
3282
-
param {
3283
-
lr_mult: 0
3284
-
decay_mult: 0
3285
-
}
3286
-
param {
3287
-
lr_mult: 0
3288
-
decay_mult: 0
3289
-
}
3290
-
param {
3291
-
lr_mult: 0
3292
-
decay_mult: 0
3293
-
}
3294
-
batch_norm_param {
3295
-
use_global_stats: true
3296
-
}
3297
-
}
3298
-
layer {
3299
-
name: "scale_stage3_block2_branch2a"
3300
-
type: "Scale"
3301
-
bottom: "conv_stage3_block2_branch2a"
3302
-
top: "conv_stage3_block2_branch2a"
3303
-
scale_param {
3304
-
bias_term: true
3305
-
}
3306
-
}
3307
-
layer {
3308
-
name: "relu_stage3_block2_branch2a"
3309
-
type: "ReLU"
3310
-
bottom: "conv_stage3_block2_branch2a"
3311
-
top: "conv_stage3_block2_branch2a"
3312
-
}
3313
-
layer {
3314
-
name: "conv_stage3_block2_branch2b"
3315
-
type: "Convolution"
3316
-
bottom: "conv_stage3_block2_branch2a"
3317
-
top: "conv_stage3_block2_branch2b"
3318
-
param {
3319
-
lr_mult: 1
3320
-
decay_mult: 1
3321
-
}
3322
-
param {
3323
-
lr_mult: 2
3324
-
decay_mult: 0
3325
-
}
3326
-
convolution_param {
3327
-
num_output: 256
3328
-
pad: 1
3329
-
kernel_size: 3
3330
-
stride: 1
3331
-
weight_filler {
3332
-
type: "xavier"
3333
-
}
3334
-
bias_filler {
3335
-
type: "constant"
3336
-
value: 0
3337
-
}
3338
-
}
3339
-
}
3340
-
layer {
3341
-
name: "bn_stage3_block2_branch2b"
3342
-
type: "BatchNorm"
3343
-
bottom: "conv_stage3_block2_branch2b"
3344
-
top: "conv_stage3_block2_branch2b"
3345
-
param {
3346
-
lr_mult: 0
3347
-
decay_mult: 0
3348
-
}
3349
-
param {
3350
-
lr_mult: 0
3351
-
decay_mult: 0
3352
-
}
3353
-
param {
3354
-
lr_mult: 0
3355
-
decay_mult: 0
3356
-
}
3357
-
batch_norm_param {
3358
-
use_global_stats: true
3359
-
}
3360
-
}
3361
-
layer {
3362
-
name: "scale_stage3_block2_branch2b"
3363
-
type: "Scale"
3364
-
bottom: "conv_stage3_block2_branch2b"
3365
-
top: "conv_stage3_block2_branch2b"
3366
-
scale_param {
3367
-
bias_term: true
3368
-
}
3369
-
}
3370
-
layer {
3371
-
name: "relu_stage3_block2_branch2b"
3372
-
type: "ReLU"
3373
-
bottom: "conv_stage3_block2_branch2b"
3374
-
top: "conv_stage3_block2_branch2b"
3375
-
}
3376
-
layer {
3377
-
name: "conv_stage3_block2_branch2c"
3378
-
type: "Convolution"
3379
-
bottom: "conv_stage3_block2_branch2b"
3380
-
top: "conv_stage3_block2_branch2c"
3381
-
param {
3382
-
lr_mult: 1
3383
-
decay_mult: 1
3384
-
}
3385
-
param {
3386
-
lr_mult: 2
3387
-
decay_mult: 0
3388
-
}
3389
-
convolution_param {
3390
-
num_output: 1024
3391
-
pad: 0
3392
-
kernel_size: 1
3393
-
stride: 1
3394
-
weight_filler {
3395
-
type: "xavier"
3396
-
}
3397
-
bias_filler {
3398
-
type: "constant"
3399
-
value: 0
3400
-
}
3401
-
}
3402
-
}
3403
-
layer {
3404
-
name: "bn_stage3_block2_branch2c"
3405
-
type: "BatchNorm"
3406
-
bottom: "conv_stage3_block2_branch2c"
3407
-
top: "conv_stage3_block2_branch2c"
3408
-
param {
3409
-
lr_mult: 0
3410
-
decay_mult: 0
3411
-
}
3412
-
param {
3413
-
lr_mult: 0
3414
-
decay_mult: 0
3415
-
}
3416
-
param {
3417
-
lr_mult: 0
3418
-
decay_mult: 0
3419
-
}
3420
-
batch_norm_param {
3421
-
use_global_stats: true
3422
-
}
3423
-
}
3424
-
layer {
3425
-
name: "scale_stage3_block2_branch2c"
3426
-
type: "Scale"
3427
-
bottom: "conv_stage3_block2_branch2c"
3428
-
top: "conv_stage3_block2_branch2c"
3429
-
scale_param {
3430
-
bias_term: true
3431
-
}
3432
-
}
3433
-
layer {
3434
-
name: "eltwise_stage3_block2"
3435
-
type: "Eltwise"
3436
-
bottom: "eltwise_stage3_block1"
3437
-
bottom: "conv_stage3_block2_branch2c"
3438
-
top: "eltwise_stage3_block2"
3439
-
}
3440
-
layer {
3441
-
name: "relu_stage3_block2"
3442
-
type: "ReLU"
3443
-
bottom: "eltwise_stage3_block2"
3444
-
top: "eltwise_stage3_block2"
3445
-
}
3446
-
layer {
3447
-
name: "pool"
3448
-
type: "Pooling"
3449
-
bottom: "eltwise_stage3_block2"
3450
-
top: "pool"
3451
-
pooling_param {
3452
-
pool: AVE
3453
-
kernel_size: 7
3454
-
stride: 1
3455
-
}
3456
-
}
3457
-
layer {
3458
-
name: "fc_nsfw"
3459
-
type: "InnerProduct"
3460
-
bottom: "pool"
3461
-
top: "fc_nsfw"
3462
-
param {
3463
-
lr_mult: 5
3464
-
decay_mult: 1
3465
-
}
3466
-
param {
3467
-
lr_mult: 10
3468
-
decay_mult: 0
3469
-
}
3470
-
inner_product_param{
3471
-
num_output: 2
3472
-
weight_filler {
3473
-
type: "xavier"
3474
-
std: 0.01
3475
-
}
3476
-
bias_filler {
3477
-
type: "xavier"
3478
-
value: 0
3479
-
}
3480
-
}
3481
-
}
3482
-
layer {
3483
-
name: "prob"
3484
-
type: "Softmax"
3485
-
bottom: "fc_nsfw"
3486
-
top: "prob"
3487
-
}
3488
-
nsfw_model/resnet_50_1by2_nsfw.caffemodel
nsfw_model/resnet_50_1by2_nsfw.caffemodel
This is a binary file and will not be displayed.