Skip to content

Commit c755cdf

Browse files
yghstillqingqing01
authored andcommitted
Fix mobilenet scale in ssd (#2935)
1 parent ebee656 commit c755cdf

File tree

3 files changed

+20
-25
lines changed

3 files changed

+20
-25
lines changed

PaddleCV/PaddleDetection/configs/ssd_mobilenet_v1_voc.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
architecture: SSD
2-
max_iters: 28000
32
train_feed: SSDTrainFeed
43
eval_feed: SSDEvalFeed
54
test_feed: SSDTestFeed
65
pretrain_weights: https://paddlemodels.bj.bcebos.com/object_detection/ssd_mobilenet_v1_coco_pretrained.tar
7-
86
use_gpu: true
7+
max_iters: 28000
98
snapshot_iter: 2000
109
log_smooth_window: 1
1110
metric: VOC

PaddleCV/PaddleDetection/ppdet/modeling/backbones/mobilenet.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ def _conv_norm(self,
5757
num_filters,
5858
stride,
5959
padding,
60-
channels=None,
6160
num_groups=1,
6261
act='relu',
6362
use_cudnn=True,
@@ -125,22 +124,21 @@ def _extra_block(self,
125124
num_filters2,
126125
num_groups,
127126
stride,
128-
scale,
129127
name=None):
130128
pointwise_conv = self._conv_norm(
131129
input=input,
132130
filter_size=1,
133-
num_filters=int(num_filters1 * scale),
131+
num_filters=int(num_filters1),
134132
stride=1,
135-
num_groups=int(num_groups * scale),
133+
num_groups=int(num_groups),
136134
padding=0,
137135
name=name + "_extra1")
138136
normal_conv = self._conv_norm(
139137
input=pointwise_conv,
140138
filter_size=3,
141-
num_filters=int(num_filters2 * scale),
139+
num_filters=int(num_filters2),
142140
stride=2,
143-
num_groups=int(num_groups * scale),
141+
num_groups=int(num_groups),
144142
padding=1,
145143
name=name + "_extra2")
146144
return normal_conv
@@ -150,7 +148,7 @@ def __call__(self, input):
150148

151149
blocks = []
152150
# input 1/1
153-
out = self._conv_norm(input, 3, int(32 * scale), 2, 1, 3, name="conv1")
151+
out = self._conv_norm(input, 3, int(32 * scale), 2, 1, name="conv1")
154152
# 1/2
155153
out = self.depthwise_separable(
156154
out, 32, 64, 32, 1, scale, name="conv2_1")
@@ -186,11 +184,11 @@ def __call__(self, input):
186184

187185
num_filters = self.extra_block_filters
188186
module14 = self._extra_block(module13, num_filters[0][0],
189-
num_filters[0][1], 1, 2, scale, "conv7_1")
187+
num_filters[0][1], 1, 2, "conv7_1")
190188
module15 = self._extra_block(module14, num_filters[1][0],
191-
num_filters[1][1], 1, 2, scale, "conv7_2")
189+
num_filters[1][1], 1, 2, "conv7_2")
192190
module16 = self._extra_block(module15, num_filters[2][0],
193-
num_filters[2][1], 1, 2, scale, "conv7_3")
191+
num_filters[2][1], 1, 2, "conv7_3")
194192
module17 = self._extra_block(module16, num_filters[3][0],
195-
num_filters[3][1], 1, 2, scale, "conv7_4")
193+
num_filters[3][1], 1, 2, "conv7_4")
196194
return module11, module13, module14, module15, module16, module17

PaddleCV/ssd/mobilenet_ssd.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def __init__(self, img, num_classes, img_shape):
1111

1212
def ssd_net(self, scale=1.0):
1313
# 300x300
14-
tmp = self.conv_bn(self.img, 3, int(32 * scale), 2, 1, 3)
14+
tmp = self.conv_bn(self.img, 3, int(32 * scale), 2, 1)
1515
# 150x150
1616
tmp = self.depthwise_separable(tmp, 32, 64, 32, 1, scale)
1717
tmp = self.depthwise_separable(tmp, 64, 128, 64, 2, scale)
@@ -30,13 +30,13 @@ def ssd_net(self, scale=1.0):
3030

3131
# 10x10
3232
module13 = self.depthwise_separable(tmp, 1024, 1024, 1024, 1, scale)
33-
module14 = self.extra_block(module13, 256, 512, 1, 2, scale)
33+
module14 = self.extra_block(module13, 256, 512, 1, 2)
3434
# 5x5
35-
module15 = self.extra_block(module14, 128, 256, 1, 2, scale)
35+
module15 = self.extra_block(module14, 128, 256, 1, 2)
3636
# 3x3
37-
module16 = self.extra_block(module15, 128, 256, 1, 2, scale)
37+
module16 = self.extra_block(module15, 128, 256, 1, 2)
3838
# 2x2
39-
module17 = self.extra_block(module16, 64, 128, 1, 2, scale)
39+
module17 = self.extra_block(module16, 64, 128, 1, 2)
4040

4141
mbox_locs, mbox_confs, box, box_var = fluid.layers.multi_box_head(
4242
inputs=[
@@ -62,7 +62,6 @@ def conv_bn(self,
6262
num_filters,
6363
stride,
6464
padding,
65-
channels=None,
6665
num_groups=1,
6766
act='relu',
6867
use_cudnn=True):
@@ -99,24 +98,23 @@ def depthwise_separable(self, input, num_filters1, num_filters2, num_groups,
9998
padding=0)
10099
return pointwise_conv
101100

102-
def extra_block(self, input, num_filters1, num_filters2, num_groups, stride,
103-
scale):
101+
def extra_block(self, input, num_filters1, num_filters2, num_groups, stride):
104102
# 1x1 conv
105103
pointwise_conv = self.conv_bn(
106104
input=input,
107105
filter_size=1,
108-
num_filters=int(num_filters1 * scale),
106+
num_filters=int(num_filters1),
109107
stride=1,
110-
num_groups=int(num_groups * scale),
108+
num_groups=int(num_groups),
111109
padding=0)
112110

113111
# 3x3 conv
114112
normal_conv = self.conv_bn(
115113
input=pointwise_conv,
116114
filter_size=3,
117-
num_filters=int(num_filters2 * scale),
115+
num_filters=int(num_filters2),
118116
stride=2,
119-
num_groups=int(num_groups * scale),
117+
num_groups=int(num_groups),
120118
padding=1)
121119
return normal_conv
122120

0 commit comments

Comments
 (0)