22
22
import paddle .nn .functional as F
23
23
from paddle .nn .initializer import Normal , Constant
24
24
25
- from ppdet .modeling .layers import ConvNormLayer , MaskMatrixNMS
25
+ from ppdet .modeling .layers import ConvNormLayer , MaskMatrixNMS , DropBlock
26
26
from ppdet .core .workspace import register
27
27
28
28
from six .moves import zip
@@ -182,7 +182,8 @@ def __init__(self,
182
182
score_threshold = 0.1 ,
183
183
mask_threshold = 0.5 ,
184
184
mask_nms = None ,
185
- norm_type = 'gn' ):
185
+ norm_type = 'gn' ,
186
+ drop_block = False ):
186
187
super (SOLOv2Head , self ).__init__ ()
187
188
self .num_classes = num_classes
188
189
self .in_channels = in_channels
@@ -198,6 +199,7 @@ def __init__(self,
198
199
self .score_threshold = score_threshold
199
200
self .mask_threshold = mask_threshold
200
201
self .norm_type = norm_type
202
+ self .drop_block = drop_block
201
203
202
204
self .kernel_pred_convs = []
203
205
self .cate_pred_convs = []
@@ -250,6 +252,10 @@ def __init__(self,
250
252
bias_attr = ParamAttr (initializer = Constant (
251
253
value = float (- np .log ((1 - 0.01 ) / 0.01 ))))))
252
254
255
+ if self .drop_block :
256
+ self .drop_block_fun = DropBlock (
257
+ block_size = 3 , keep_prob = 0.9 , name = 'solo_cate.dropblock' )
258
+
253
259
def _points_nms (self , heat , kernel_size = 2 ):
254
260
hmax = F .max_pool2d (heat , kernel_size = kernel_size , stride = 1 , padding = 1 )
255
261
keep = paddle .cast ((hmax [:, :, :- 1 , :- 1 ] == heat ), 'float32' )
@@ -318,10 +324,14 @@ def _get_output_single(self, input, idx):
318
324
319
325
for kernel_layer in self .kernel_pred_convs :
320
326
kernel_feat = F .relu (kernel_layer (kernel_feat ))
327
+ if self .drop_block :
328
+ kernel_feat = self .drop_block_fun (kernel_feat )
321
329
kernel_pred = self .solo_kernel (kernel_feat )
322
330
# cate branch
323
331
for cate_layer in self .cate_pred_convs :
324
332
cate_feat = F .relu (cate_layer (cate_feat ))
333
+ if self .drop_block :
334
+ cate_feat = self .drop_block_fun (cate_feat )
325
335
cate_pred = self .solo_cate (cate_feat )
326
336
327
337
if not self .training :
0 commit comments