55from mmdet .core .bbox .transforms import distance2bbox
66
77from mmdeploy .codebase .mmdet import (get_post_processing_params ,
8- multiclass_nms , pad_with_value )
8+ multiclass_nms ,
9+ pad_with_value_if_necessary )
910from mmdeploy .codebase .mmdet .core .ops import ncnn_detection_output_forward
1011from mmdeploy .core import FUNCTION_REWRITER
11- from mmdeploy .utils import Backend , get_backend , is_dynamic_shape
12+ from mmdeploy .utils import Backend , is_dynamic_shape
1213
1314
1415@FUNCTION_REWRITER .register_rewriter (
@@ -60,7 +61,6 @@ def base_dense_head__get_bbox(ctx,
6061 """
6162 deploy_cfg = ctx .cfg
6263 is_dynamic_flag = is_dynamic_shape (deploy_cfg )
63- backend = get_backend (deploy_cfg )
6464 num_levels = len (cls_scores )
6565
6666 featmap_sizes = [featmap .size ()[- 2 :] for featmap in cls_scores ]
@@ -98,10 +98,8 @@ def base_dense_head__get_bbox(ctx,
9898 self .cls_out_channels )
9999 if self .use_sigmoid_cls :
100100 scores = scores .sigmoid ()
101- nms_pre_score = scores
102101 else :
103102 scores = scores .softmax (- 1 )
104- nms_pre_score = scores
105103 if with_score_factors :
106104 score_factors = score_factors .permute (0 , 2 , 3 ,
107105 1 ).reshape (batch_size ,
@@ -112,16 +110,16 @@ def base_dense_head__get_bbox(ctx,
112110 priors = priors .data
113111 priors = priors .expand (batch_size , - 1 , priors .size (- 1 ))
114112 if pre_topk > 0 :
113+ priors = pad_with_value_if_necessary (priors , 1 , pre_topk )
114+ bbox_pred = pad_with_value_if_necessary (bbox_pred , 1 , pre_topk )
115+ scores = pad_with_value_if_necessary (scores , 1 , pre_topk , 0. )
116+ if with_score_factors :
117+ score_factors = pad_with_value_if_necessary (
118+ score_factors , 1 , pre_topk , 0. )
119+
120+ nms_pre_score = scores
115121 if with_score_factors :
116122 nms_pre_score = nms_pre_score * score_factors
117- if backend == Backend .TENSORRT :
118- priors = pad_with_value (priors , 1 , pre_topk )
119- bbox_pred = pad_with_value (bbox_pred , 1 , pre_topk )
120- scores = pad_with_value (scores , 1 , pre_topk , 0. )
121- nms_pre_score = pad_with_value (nms_pre_score , 1 , pre_topk , 0. )
122- if with_score_factors :
123- score_factors = pad_with_value (score_factors , 1 , pre_topk ,
124- 0. )
125123
126124 # Get maximum scores for foreground classes.
127125 if self .use_sigmoid_cls :
@@ -180,7 +178,7 @@ def base_dense_head__get_bbox(ctx,
180178@FUNCTION_REWRITER .register_rewriter (
181179 func_name = 'mmdet.models.dense_heads.base_dense_head.BaseDenseHead'
182180 '.get_bboxes' ,
183- backend = 'ncnn' )
181+ backend = Backend . NCNN . value )
184182def base_dense_head__get_bboxes__ncnn (ctx ,
185183 self ,
186184 cls_scores ,
0 commit comments