yjh0410 1 an în urmă
părinte
comite
a568421f79
2 a modificat fișierele cu 5 adăugiri și 42 ștergeri
  1. 0 32
      config/model_config/rtcdet_config.py
  2. 5 10
      models/detectors/rtcdet/loss.py

+ 0 - 32
config/model_config/rtcdet_config.py

@@ -55,10 +55,6 @@ rtcdet_cfg = {
         'loss_cls_weight': 0.5,
         'loss_box_weight': 7.5,
         'loss_dfl_weight': 1.5,
-        'use_qfl': False,
-        'loss_cls_weight_qfl': 1.0,
-        'loss_box_weight_qfl': 2.0,
-        'loss_dfl_weight_qfl': 1.0,
         # ---------------- Train config ----------------
         'trainer_type': 'rtcdet',
     },
@@ -115,10 +111,6 @@ rtcdet_cfg = {
         'loss_cls_weight': 0.5,
         'loss_box_weight': 7.5,
         'loss_dfl_weight': 1.5,
-        'use_qfl': False,
-        'loss_cls_weight_qfl': 1.0,
-        'loss_box_weight_qfl': 2.0,
-        'loss_dfl_weight_qfl': 1.0,
         # ---------------- Train config ----------------
         'trainer_type': 'rtcdet',
     },
@@ -175,10 +167,6 @@ rtcdet_cfg = {
         'loss_cls_weight': 0.5,
         'loss_box_weight': 7.5,
         'loss_dfl_weight': 1.5,
-        'use_qfl': False,
-        'loss_cls_weight_qfl': 1.0,
-        'loss_box_weight_qfl': 2.0,
-        'loss_dfl_weight_qfl': 1.0,
         # ---------------- Train config ----------------
         'trainer_type': 'rtcdet',
     },
@@ -235,10 +223,6 @@ rtcdet_cfg = {
         'loss_cls_weight': 0.5,
         'loss_box_weight': 7.5,
         'loss_dfl_weight': 1.5,
-        'use_qfl': False,
-        'loss_cls_weight_qfl': 1.0,
-        'loss_box_weight_qfl': 2.0,
-        'loss_dfl_weight_qfl': 1.0,
         # ---------------- Train config ----------------
         'trainer_type': 'rtcdet',
     },
@@ -295,10 +279,6 @@ rtcdet_cfg = {
         'loss_cls_weight': 0.5,
         'loss_box_weight': 7.5,
         'loss_dfl_weight': 1.5,
-        'use_qfl': False,
-        'loss_cls_weight_qfl': 1.0,
-        'loss_box_weight_qfl': 2.0,
-        'loss_dfl_weight_qfl': 1.0,
         # ---------------- Train config ----------------
         'trainer_type': 'rtcdet',
     },
@@ -360,10 +340,6 @@ rtcdet_seg_cfg = {
         'loss_cls_weight': 0.5,
         'loss_box_weight': 7.5,
         'loss_dfl_weight': 1.5,
-        'use_qfl': False,
-        'loss_cls_weight_qfl': 1.0,
-        'loss_box_weight_qfl': 2.0,
-        'loss_dfl_weight_qfl': 1.0,
         # ---------------- Train config ----------------
         'trainer_type': 'rtcdet',
     },
@@ -424,10 +400,6 @@ rtcdet_pos_cfg = {
         'loss_cls_weight': 0.5,
         'loss_box_weight': 7.5,
         'loss_dfl_weight': 1.5,
-        'use_qfl': False,
-        'loss_cls_weight_qfl': 1.0,
-        'loss_box_weight_qfl': 2.0,
-        'loss_dfl_weight_qfl': 1.0,
         # ---------------- Train config ----------------
         'trainer_type': 'rtcdet',
     },
@@ -488,10 +460,6 @@ rtcdet_seg_pos_cfg = {
         'loss_cls_weight': 0.5,
         'loss_box_weight': 7.5,
         'loss_dfl_weight': 1.5,
-        'use_qfl': False,
-        'loss_cls_weight_qfl': 1.0,
-        'loss_box_weight_qfl': 2.0,
-        'loss_dfl_weight_qfl': 1.0,
         # ---------------- Train config ----------------
         'trainer_type': 'rtcdet',
     },

+ 5 - 10
models/detectors/rtcdet/loss.py

@@ -14,11 +14,10 @@ class Criterion(object):
         self.device = device
         self.num_classes = num_classes
         self.reg_max = cfg['det_head']['reg_max']
-        self.use_qfl = cfg['use_qfl']
         # --------------- Loss config ---------------
-        self.loss_cls_weight = cfg['loss_cls_weight_qfl'] if self.use_qfl else cfg['loss_cls_weight']
-        self.loss_box_weight = cfg['loss_box_weight_qfl'] if self.use_qfl else cfg['loss_box_weight']
-        self.loss_dfl_weight = cfg['loss_dfl_weight_qfl'] if self.use_qfl else cfg['loss_dfl_weight']
+        self.loss_cls_weight = cfg['loss_cls_weight']
+        self.loss_box_weight = cfg['loss_box_weight']
+        self.loss_dfl_weight = cfg['loss_dfl_weight']
         # --------------- Matcher config ---------------
         self.matcher_hpy = cfg['matcher_hpy']
         self.matcher = TaskAlignedAssigner(num_classes     = num_classes,
@@ -28,14 +27,10 @@ class Criterion(object):
                                            )
 
     # -------------------- Basic loss functions --------------------
-    def loss_classes(self, pred_cls, gt_score, use_qfl=False):
+    def loss_classes(self, pred_cls, gt_score):
         # Compute BCE loss
         loss_cls = F.binary_cross_entropy_with_logits(pred_cls, gt_score, reduction='none')
 
-        if use_qfl:
-            focal_weight = (pred_cls.sigmoid() - gt_score).pow(2.0)
-            loss_cls = loss_cls * focal_weight
-
         return loss_cls
     
     def loss_bboxes(self, pred_box, gt_box, bbox_weight):
@@ -148,7 +143,7 @@ class Criterion(object):
 
         # ------------------ Classification loss ------------------
         cls_preds = cls_preds.view(-1, self.num_classes)
-        loss_cls = self.loss_classes(cls_preds, gt_score_targets, self.use_qfl)
+        loss_cls = self.loss_classes(cls_preds, gt_score_targets)
         loss_cls = loss_cls.sum() / num_fgs
 
         # ------------------ Regression loss ------------------