使用RegNet替换YOLOX中原始的Backbone

使用mmdetection 中的RegNet bcakbones替换YOLOX中原始的Backbone

将mmdet/models/backbones/regnet.py中相关的代码复制到YOLOX中,并进行适配

注意通道数要适配

in_channels = [64, 160, 384]

,可以通过调试后,先运行到后后端输出结果出,打印出通道数,得到通道后,在写到这个地方。

 

(yolox) xuefei@f123:/mnt/d/work/study/detect/8$ python -m yolox.tools.train  -f exps/kitti_car_detection/yolox_regnet.py        -d 0 -b 16 --fp16
2024-02-18 22:17:51 | INFO     | yolox.core.trainer:126 - args: Namespace(batch_size=16, cache=False, ckpt=None, devices=0, dist_backend='nccl', dist_url=None, exp_file='exps/kitti_car_detection/yolox_regnet.py', experiment_name='yolox_regnet', fp16=True, logger='tensorboard', machine_rank=0, name=None, num_machines=1, occupy=False, opts=[], resume=False, start_epoch=None)
2024-02-18 22:17:51 | INFO     | yolox.core.trainer:127 - exp value:
╒═══════════════════╤═══════════════════════════════════════════════════════════════╕
│ keys              │ values                                                        │
╞═══════════════════╪═══════════════════════════════════════════════════════════════╡
│ seed              │ None                                                          │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ output_dir        │ './YOLOX_outputs'                                             │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ print_interval    │ 10                                                            │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ eval_interval     │ 10                                                            │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ num_classes       │ 7                                                             │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ depth             │ 1.0                                                           │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ width             │ 0.5                                                           │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ act               │ 'silu'                                                        │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ data_num_workers  │ 16                                                            │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ input_size        │ (256, 832)                                                    │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ multiscale_range  │ 5                                                             │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ data_dir          │ '/mnt/d/BaiduNetdiskDownload/CV/KITTI/KITTI_YOLOX/img/'       │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ train_ann         │ '/mnt/d/BaiduNetdiskDownload/CV/KITTI/KITTI_YOLOX/train.json' │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ val_ann           │ '/mnt/d/BaiduNetdiskDownload/CV/KITTI/KITTI_YOLOX/val.json'   │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ test_ann          │ '/mnt/d/BaiduNetdiskDownload/CV/KITTI/KITTI_YOLOX/test.json'  │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ mosaic_prob       │ 1.0                                                           │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ mixup_prob        │ 1.0                                                           │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ hsv_prob          │ 1.0                                                           │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ flip_prob         │ 0.5                                                           │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ degrees           │ 10.0                                                          │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ translate         │ 0.1                                                           │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ mosaic_scale      │ (0.1, 2)                                                      │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ enable_mixup      │ True                                                          │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ mixup_scale       │ (0.5, 1.5)                                                    │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ shear             │ 2.0                                                           │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ warmup_epochs     │ 5                                                             │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ max_epoch         │ 300                                                           │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ warmup_lr         │ 0                                                             │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ min_lr_ratio      │ 0.05                                                          │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ basic_lr_per_img  │ 0.00015625                                                    │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ scheduler         │ 'yoloxwarmcos'                                                │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ no_aug_epochs     │ 80                                                            │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ ema               │ True                                                          │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ weight_decay      │ 0.0005                                                        │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ momentum          │ 0.9                                                           │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ save_history_ckpt │ True                                                          │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ exp_name          │ 'yolox_regnet'                                                │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ test_size         │ (256, 832)                                                    │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ test_conf         │ 0.01                                                          │
├───────────────────┼───────────────────────────────────────────────────────────────┤
│ nmsthre           │ 0.65                                                          │
╘═══════════════════╧═══════════════════════════════════════════════════════════════╛
2024-02-18 22:17:52 | INFO     | yolox.core.trainer:133 - Model Summary: Params: 8.90M, Gflops: 10.70
2024-02-18 22:17:54 | INFO     | yolox.data.datasets.kitti:64 - loading annotations into memory...
2024-02-18 22:17:55 | INFO     | yolox.data.datasets.kitti:64 - Done (t=0.08s)
2024-02-18 22:17:55 | INFO     | pycocotools.coco:86 - creating index...
2024-02-18 22:17:55 | INFO     | pycocotools.coco:86 - index created!
2024-02-18 22:17:55 | INFO     | yolox.core.trainer:151 - init prefetcher, this might take one minute or less...
2024-02-18 22:18:07 | INFO     | yolox.data.datasets.kitti:64 - loading annotations into memory...
2024-02-18 22:18:08 | INFO     | yolox.data.datasets.kitti:64 - Done (t=0.11s)
2024-02-18 22:18:08 | INFO     | pycocotools.coco:86 - creating index...
2024-02-18 22:18:08 | INFO     | pycocotools.coco:86 - index created!
2024-02-18 22:18:08 | INFO     | yolox.core.trainer:187 - Training start...
2024-02-18 22:18:08 | INFO     | yolox.core.trainer:188 -
YOLOX(
  (backbone): YOLOPAFPNRegNet(
    (backbone): RegNet(
      (conv1): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
      (bn1): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
      (relu): ReLU(inplace=True)
      (layer1): ResLayer(
        (0): Bottleneck(
          (conv1): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(32, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=2, bias=False)
          (bn2): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
          (downsample): Sequential(
            (0): Conv2d(32, 32, kernel_size=(1, 1), stride=(2, 2), bias=False)
            (1): BatchNorm2d(32, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          )
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
      )
      (layer2): ResLayer(
        (0): Bottleneck(
          (conv1): Conv2d(32, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=4, bias=False)
          (bn2): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
          (downsample): Sequential(
            (0): Conv2d(32, 64, kernel_size=(1, 1), stride=(2, 2), bias=False)
            (1): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          )
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (1): Bottleneck(
          (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=4, bias=False)
          (bn2): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(64, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
      )
      (layer3): ResLayer(
        (0): Bottleneck(
          (conv1): Conv2d(64, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(160, 160, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=10, bias=False)
          (bn2): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
          (downsample): Sequential(
            (0): Conv2d(64, 160, kernel_size=(1, 1), stride=(2, 2), bias=False)
            (1): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          )
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (1): Bottleneck(
          (conv1): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(160, 160, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=10, bias=False)
          (bn2): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (2): Bottleneck(
          (conv1): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(160, 160, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=10, bias=False)
          (bn2): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (3): Bottleneck(
          (conv1): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(160, 160, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=10, bias=False)
          (bn2): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (4): Bottleneck(
          (conv1): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(160, 160, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=10, bias=False)
          (bn2): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (5): Bottleneck(
          (conv1): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(160, 160, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=10, bias=False)
          (bn2): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (6): Bottleneck(
          (conv1): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(160, 160, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=10, bias=False)
          (bn2): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(160, 160, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(160, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
      )
      (layer4): ResLayer(
        (0): Bottleneck(
          (conv1): Conv2d(160, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(384, 384, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=24, bias=False)
          (bn2): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
          (downsample): Sequential(
            (0): Conv2d(160, 384, kernel_size=(1, 1), stride=(2, 2), bias=False)
            (1): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          )
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (1): Bottleneck(
          (conv1): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24, bias=False)
          (bn2): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (2): Bottleneck(
          (conv1): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24, bias=False)
          (bn2): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (3): Bottleneck(
          (conv1): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24, bias=False)
          (bn2): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (4): Bottleneck(
          (conv1): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24, bias=False)
          (bn2): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn3): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (relu): ReLU(inplace=True)
        )
        init_cfg={'type': 'Constant', 'val': 0, 'override': {'name': 'norm3'}}
        (5): Bottleneck(
          (conv1): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (bn1): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv2): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24, bias=False)
          (bn2): BatchNorm2d(384, eps=0.001, momentum=0.03, affine=True, track_running_stats=True)
          (conv3): Conv2d(384, 384, kern
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值