yjh0410 2 years ago
parent
commit
ea48137ff0

+ 1 - 1
config/model_config/rtrdet_config.py

@@ -35,7 +35,7 @@ rtrdet_cfg = {
         'num_topk': 100,
         # ---------------- Train config ----------------
         ## Input
-        'multi_scale': [0.5, 1.5], # 320 -> 960
+        'multi_scale': [0.5, 1.0], # 320 -> 640
         'trans_type': 'rtrdet_large',
         # ---------------- Assignment config ----------------
         ## Matcher

+ 2 - 2
engine.py

@@ -1119,7 +1119,7 @@ class RTRTrainer(object):
         # path to save model
 
         # ---------------------------- Hyperparameters refer to RTMDet ----------------------------
-        self.optimizer_dict = {'optimizer': 'adamw', 'momentum': None, 'weight_decay': 1e-4, 'lr0': 0.001, 'backbone_lr_ratio': 0.1}
+        self.optimizer_dict = {'optimizer': 'adamw', 'momentum': None, 'weight_decay': 1e-4, 'lr0': 0.0001, 'backbone_lr_ratio': 0.1}
         self.ema_dict = {'ema_decay': 0.9998, 'ema_tau': 2000}
         self.lr_schedule_dict = {'scheduler': 'cosine', 'lrf': 0.05}
         self.warmup_dict = {'warmup_momentum': 0.8, 'warmup_bias_lr': 0.1}        
@@ -1146,7 +1146,7 @@ class RTRTrainer(object):
         self.scaler = torch.cuda.amp.GradScaler(enabled=args.fp16)
 
         # ---------------------------- Build Optimizer ----------------------------
-        self.optimizer_dict['lr0'] *= self.args.batch_size / 64.
+        self.optimizer_dict['lr0'] *= self.args.batch_size / 16.
         self.optimizer, self.start_epoch = build_detr_optimizer(self.optimizer_dict, model, self.args.resume)
 
         # ---------------------------- Build LR Scheduler ----------------------------

+ 1 - 2
models/detectors/rtrdet/rtrdet.py

@@ -1,6 +1,5 @@
 import torch
 import torch.nn as nn
-import torch.nn.functional as F
 
 from .rtrdet_backbone import build_backbone
 from .rtrdet_transformer import build_transformer
@@ -21,7 +20,7 @@ class RTRDet(nn.Module):
         self.cfg = cfg
         self.device = device
         self.max_stride = cfg['max_stride']
-        self.num_levels = 2 if self.max_stride == 16 else 1
+        self.num_levels = 2 if cfg['max_stride'] == 16 else 1
         self.num_topk = cfg['num_topk']
         self.num_classes = num_classes
         self.d_model = round(cfg['d_model'] * cfg['width'])

+ 2 - 1
models/detectors/rtrdet/rtrdet_transformer.py

@@ -63,7 +63,7 @@ class RTRDetTransformer(nn.Module):
         self.bbox_embed = nn.ModuleList([self.bbox_embed for _ in range(self.num_deocder)])
 
     def generate_posembed(self, x, temperature=10000):
-        hs, ws, num_pos_feats = x.shape[2], x.shape[3], x.shape[1]//2
+        num_pos_feats, hs, ws = x.shape[1]//2, x.shape[2], x.shape[3]
         # generate xy coord mat
         y_embed, x_embed = torch.meshgrid(
             [torch.arange(1, hs+1, dtype=torch.float32),
@@ -101,6 +101,7 @@ class RTRDetTransformer(nn.Module):
         pos_x = torch.stack((pos_x[..., 0::2].sin(), pos_x[..., 1::2].cos()), dim=-1).flatten(-2)
         pos_y = torch.stack((pos_y[..., 0::2].sin(), pos_y[..., 1::2].cos()), dim=-1).flatten(-2)
         posemb = torch.cat((pos_y, pos_x), dim=-1)
+        
         return posemb
 
     def inverse_sigmoid(self, x):