yjh0410 před 2 roky
rodič
revize
18e3470138

+ 270 - 0
config/model_config/yolovx_config.py

@@ -2,6 +2,60 @@
 
 
 yolovx_cfg = {
+    'yolovx_p':{
+        # ---------------- Model config ----------------
+        ## Backbone
+        'backbone': 'elannet',
+        'pretrained': True,
+        'bk_act': 'silu',
+        'bk_norm': 'BN',
+        'bk_dpw': True,
+        'width': 0.25,
+        'depth': 0.34,
+        'stride': [8, 16, 32],  # P3, P4, P5
+        'max_stride': 32,
+        ## Neck: SPP
+        'neck': 'sppf',
+        'neck_expand_ratio': 0.5,
+        'pooling_size': 5,
+        'neck_act': 'silu',
+        'neck_norm': 'BN',
+        'neck_depthwise': True,
+        ## Neck: PaFPN
+        'fpn': 'yolovx_pafpn',
+        'fpn_reduce_layer': 'conv',
+        'fpn_downsample_layer': 'conv',
+        'fpn_core_block': 'elanblock',
+        'fpn_expand_ratio': 0.5,
+        'fpn_act': 'silu',
+        'fpn_norm': 'BN',
+        'fpn_depthwise': True,
+        ## Head
+        'head': 'decoupled_head',
+        'head_act': 'silu',
+        'head_norm': 'BN',
+        'num_cls_head': 2,
+        'num_reg_head': 2,
+        'head_depthwise': True,
+        'reg_max': 16,
+        # ---------------- Train config ----------------
+        ## Input
+        'multi_scale': [0.5, 1.25],   # 320 -> 960
+        'trans_type': 'yolox_nano',
+        # ---------------- Assignment config ----------------
+        ## Matcher
+        'matcher': {'center_sampling_radius': 2.5,
+                    'topk_candicate': 10},
+        # ---------------- Loss config ----------------
+        ## Loss weight
+        'loss_obj_weight': 1.0,
+        'loss_cls_weight': 1.0,
+        'loss_box_weight': 5.0,
+        'loss_dfl_weight': 1.0,
+        # ---------------- Train config ----------------
+        'trainer_type': 'rtmdet',
+    },
+
     'yolovx_n':{
         # ---------------- Model config ----------------
         ## Backbone
@@ -56,6 +110,168 @@ yolovx_cfg = {
         'trainer_type': 'rtmdet',
     },
 
+    'yolovx_t':{
+        # ---------------- Model config ----------------
+        ## Backbone
+        'backbone': 'elannet',
+        'pretrained': True,
+        'bk_act': 'silu',
+        'bk_norm': 'BN',
+        'bk_dpw': False,
+        'width': 0.375,
+        'depth': 0.34,
+        'stride': [8, 16, 32],  # P3, P4, P5
+        'max_stride': 32,
+        ## Neck: SPP
+        'neck': 'sppf',
+        'neck_expand_ratio': 0.5,
+        'pooling_size': 5,
+        'neck_act': 'silu',
+        'neck_norm': 'BN',
+        'neck_depthwise': False,
+        ## Neck: PaFPN
+        'fpn': 'yolovx_pafpn',
+        'fpn_reduce_layer': 'conv',
+        'fpn_downsample_layer': 'conv',
+        'fpn_core_block': 'elanblock',
+        'fpn_expand_ratio': 0.5,
+        'fpn_act': 'silu',
+        'fpn_norm': 'BN',
+        'fpn_depthwise': False,
+        ## Head
+        'head': 'decoupled_head',
+        'head_act': 'silu',
+        'head_norm': 'BN',
+        'num_cls_head': 2,
+        'num_reg_head': 2,
+        'head_depthwise': False,
+        'reg_max': 16,
+        # ---------------- Train config ----------------
+        ## Input
+        'multi_scale': [0.5, 1.25],   # 320 -> 960
+        'trans_type': 'yolox_nano',
+        # ---------------- Assignment config ----------------
+        ## Matcher
+        'matcher': {'center_sampling_radius': 2.5,
+                    'topk_candicate': 10},
+        # ---------------- Loss config ----------------
+        ## Loss weight
+        'loss_obj_weight': 1.0,
+        'loss_cls_weight': 1.0,
+        'loss_box_weight': 5.0,
+        'loss_dfl_weight': 1.0,
+        # ---------------- Train config ----------------
+        'trainer_type': 'rtmdet',
+    },
+
+    'yolovx_s':{
+        # ---------------- Model config ----------------
+        ## Backbone
+        'backbone': 'elannet',
+        'pretrained': True,
+        'bk_act': 'silu',
+        'bk_norm': 'BN',
+        'bk_dpw': False,
+        'width': 0.50,
+        'depth': 0.34,
+        'stride': [8, 16, 32],  # P3, P4, P5
+        'max_stride': 32,
+        ## Neck: SPP
+        'neck': 'sppf',
+        'neck_expand_ratio': 0.5,
+        'pooling_size': 5,
+        'neck_act': 'silu',
+        'neck_norm': 'BN',
+        'neck_depthwise': False,
+        ## Neck: PaFPN
+        'fpn': 'yolovx_pafpn',
+        'fpn_reduce_layer': 'conv',
+        'fpn_downsample_layer': 'conv',
+        'fpn_core_block': 'elanblock',
+        'fpn_expand_ratio': 0.5,
+        'fpn_act': 'silu',
+        'fpn_norm': 'BN',
+        'fpn_depthwise': False,
+        ## Head
+        'head': 'decoupled_head',
+        'head_act': 'silu',
+        'head_norm': 'BN',
+        'num_cls_head': 2,
+        'num_reg_head': 2,
+        'head_depthwise': False,
+        'reg_max': 16,
+        # ---------------- Train config ----------------
+        ## Input
+        'multi_scale': [0.5, 1.25],   # 320 -> 960
+        'trans_type': 'yolox_small',
+        # ---------------- Assignment config ----------------
+        ## Matcher
+        'matcher': {'center_sampling_radius': 2.5,
+                    'topk_candicate': 10},
+        # ---------------- Loss config ----------------
+        ## Loss weight
+        'loss_obj_weight': 1.0,
+        'loss_cls_weight': 1.0,
+        'loss_box_weight': 5.0,
+        'loss_dfl_weight': 1.0,
+        # ---------------- Train config ----------------
+        'trainer_type': 'rtmdet',
+    },
+
+    'yolovx_m':{
+        # ---------------- Model config ----------------
+        ## Backbone
+        'backbone': 'elannet',
+        'pretrained': False,
+        'bk_act': 'silu',
+        'bk_norm': 'BN',
+        'bk_dpw': False,
+        'width': 0.75,
+        'depth': 0.67,
+        'stride': [8, 16, 32],  # P3, P4, P5
+        'max_stride': 32,
+        ## Neck: SPP
+        'neck': 'sppf',
+        'neck_expand_ratio': 0.5,
+        'pooling_size': 5,
+        'neck_act': 'silu',
+        'neck_norm': 'BN',
+        'neck_depthwise': False,
+        ## Neck: PaFPN
+        'fpn': 'yolovx_pafpn',
+        'fpn_reduce_layer': 'conv',
+        'fpn_downsample_layer': 'conv',
+        'fpn_core_block': 'elanblock',
+        'fpn_expand_ratio': 0.5,
+        'fpn_act': 'silu',
+        'fpn_norm': 'BN',
+        'fpn_depthwise': False,
+        ## Head
+        'head': 'decoupled_head',
+        'head_act': 'silu',
+        'head_norm': 'BN',
+        'num_cls_head': 2,
+        'num_reg_head': 2,
+        'head_depthwise': False,
+        'reg_max': 16,
+        # ---------------- Train config ----------------
+        ## Input
+        'multi_scale': [0.5, 1.25],   # 320 -> 960
+        'trans_type': 'yolox_medium',
+        # ---------------- Assignment config ----------------
+        ## Matcher
+        'matcher': {'center_sampling_radius': 2.5,
+                    'topk_candicate': 10},
+        # ---------------- Loss config ----------------
+        ## Loss weight
+        'loss_obj_weight': 1.0,
+        'loss_cls_weight': 1.0,
+        'loss_box_weight': 5.0,
+        'loss_dfl_weight': 1.0,
+        # ---------------- Train config ----------------
+        'trainer_type': 'rtmdet',
+    },
+
     'yolovx_l':{
         # ---------------- Model config ----------------
         ## Backbone
@@ -110,4 +326,58 @@ yolovx_cfg = {
         'trainer_type': 'rtmdet',
     },
 
+    'yolovx_x':{
+        # ---------------- Model config ----------------
+        ## Backbone
+        'backbone': 'elannet',
+        'pretrained': False,
+        'bk_act': 'silu',
+        'bk_norm': 'BN',
+        'bk_dpw': False,
+        'width': 1.25,
+        'depth': 1.34,
+        'stride': [8, 16, 32],  # P3, P4, P5
+        'max_stride': 32,
+        ## Neck: SPP
+        'neck': 'sppf',
+        'neck_expand_ratio': 0.5,
+        'pooling_size': 5,
+        'neck_act': 'silu',
+        'neck_norm': 'BN',
+        'neck_depthwise': False,
+        ## Neck: PaFPN
+        'fpn': 'yolovx_pafpn',
+        'fpn_reduce_layer': 'conv',
+        'fpn_downsample_layer': 'conv',
+        'fpn_core_block': 'elanblock',
+        'fpn_expand_ratio': 0.5,
+        'fpn_act': 'silu',
+        'fpn_norm': 'BN',
+        'fpn_depthwise': False,
+        ## Head
+        'head': 'decoupled_head',
+        'head_act': 'silu',
+        'head_norm': 'BN',
+        'num_cls_head': 2,
+        'num_reg_head': 2,
+        'head_depthwise': False,
+        'reg_max': 16,
+        # ---------------- Train config ----------------
+        ## Input
+        'multi_scale': [0.5, 1.25],   # 320 -> 960
+        'trans_type': 'yolox_huge',
+        # ---------------- Assignment config ----------------
+        ## Matcher
+        'matcher': {'center_sampling_radius': 2.5,
+                    'topk_candicate': 10},
+        # ---------------- Loss config ----------------
+        ## Loss weight
+        'loss_obj_weight': 1.0,
+        'loss_cls_weight': 1.0,
+        'loss_box_weight': 5.0,
+        'loss_dfl_weight': 1.0,
+        # ---------------- Train config ----------------
+        'trainer_type': 'rtmdet',
+    },
+
 }

+ 3 - 0
models/detectors/yolovx/yolovx_backbone.py

@@ -10,6 +10,7 @@ except:
 model_urls = {
     'elannet_pico': "https://github.com/yjh0410/image_classification_pytorch/releases/download/weight/elannet_pico.pth",
     'elannet_nano': "https://github.com/yjh0410/image_classification_pytorch/releases/download/weight/elannet_nano.pth",
+    'elannet_tiny': "https://github.com/yjh0410/image_classification_pytorch/releases/download/weight/elannet_tiny.pth",
     'elannet_small': "https://github.com/yjh0410/image_classification_pytorch/releases/download/weight/elannet_small.pth",
     'elannet_medium': "https://github.com/yjh0410/image_classification_pytorch/releases/download/weight/elannet_medium.pth",
     'elannet_large': "https://github.com/yjh0410/image_classification_pytorch/releases/download/weight/elannet_large.pth",
@@ -114,6 +115,8 @@ def build_backbone(cfg, pretrained=False):
             backbone = load_weight(backbone, model_name='elannet_pico')
         elif cfg['width'] == 0.25 and cfg['depth'] == 0.34:
             backbone = load_weight(backbone, model_name='elannet_nano')
+        elif cfg['width'] == 0.375 and cfg['depth'] == 0.34:
+            backbone = load_weight(backbone, model_name='elannet_tiny')
         elif cfg['width'] == 0.5 and cfg['depth'] == 0.34:
             backbone = load_weight(backbone, model_name='elannet_small')
         elif cfg['width'] == 0.75 and cfg['depth'] == 0.67: