Chasel-Tsui/mmrotate-dcfl

Problems with the model on the HRSC dataset

bobyoung159 opened this issue · 0 comments

When I replace the data set with HRSC2016 data set, the model cannot run, and the error message is as follows

sys.platform: win32
Python: 3.9.16 (main, Mar 8 2023, 10:39:24) [MSC v.1916 64 bit (AMD64)]
CUDA available: True
GPU 0: NVIDIA GeForce RTX 3090
CUDA_HOME: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5
NVCC: Cuda compilation tools, release 11.5, V11.5.119
MSVC: 用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.35.32215 版
GCC: n/a
PyTorch: 1.12.1
PyTorch compiling details: PyTorch built with:

  • C++ Version: 199711
  • MSVC 192829337
  • Intel(R) Math Kernel Library Version 2020.0.2 Product Build 20200624 for Intel(R) 64 architecture applications
  • Intel(R) MKL-DNN v2.6.0 (Git Hash 52b5f107dd9cf10910aaa19cb47f3abf9b349815)
  • OpenMP 2019
  • LAPACK is enabled (usually provided by MKL)
  • CPU capability usage: AVX2
  • CUDA Runtime 11.3
  • NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86;-gencode;arch=compute_37,code=compute_37
  • CuDNN 8.3.2 (built against CUDA 11.5)
  • Magma 2.5.4
  • Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.3, CUDNN_VERSION=8.3.2, CXX_COMPILER=C:/cb/pytorch_1000000000000/work/tmp_bin/sccache-cl.exe, CXX_FLAGS=/DWIN32 /D_WINDOWS /GR /EHsc /w /bigobj -DUSE_PTHREADPOOL -openmp:experimental -IC:/cb/pytorch_1000000000000/work/mkl/include -DNDEBUG -DUSE_KINETO -DLIBKINETO_NOCUPTI -DUSE_FBGEMM -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -DEDGE_PROFILER_USE_KINETO, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.12.1, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=OFF, USE_MPI=OFF, USE_NCCL=OFF, USE_NNPACK=OFF, USE_OPENMP=ON, USE_ROCM=OFF,

TorchVision: 0.13.1
OpenCV: 4.7.0
MMCV: 1.6.0
MMCV Compiler: MSVC 192930140
MMCV CUDA Compiler: 11.3
MMRotate: 0.3.4+


2023-07-31 19:37:30,635 - mmrotate - INFO - Distributed training: False
2023-07-31 19:37:30,712 - mmrotate - INFO - Config:
dataset_type = 'HRSCDataset'
data_root = 'D:/HRSC/HRSC2016/'
img_norm_cfg = dict(
mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
train_pipeline = [
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(type='RResize', img_scale=(1024, 1024)),
dict(
type='RRandomFlip',
flip_ratio=[0.25, 0.25, 0.25],
direction=['horizontal', 'vertical', 'diagonal'],
version='le135'),
dict(
type='Normalize',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=True),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
]
test_pipeline = [
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(800, 800),
flip=False,
transforms=[
dict(type='RResize'),
dict(
type='Normalize',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=True),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img'])
])
]
data = dict(
samples_per_gpu=2,
workers_per_gpu=2,
train=dict(
type='HRSCDataset',
classwise=False,
ann_file='D:/HRSC/HRSC2016/ImageSets/trainval.txt',
ann_subdir='D:/HRSC/HRSC2016/FullDataSet/Annotations/',
img_subdir='D:/HRSC/HRSC2016/FullDataSet/AllImages/',
img_prefix='D:/HRSC/HRSC2016/FullDataSet/AllImages/',
pipeline=[
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(type='RResize', img_scale=(1024, 1024)),
dict(
type='RRandomFlip',
flip_ratio=[0.25, 0.25, 0.25],
direction=['horizontal', 'vertical', 'diagonal'],
version='le135'),
dict(
type='Normalize',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=True),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
],
version='le135'),
val=dict(
type='HRSCDataset',
classwise=False,
ann_file='D:/HRSC/HRSC2016/ImageSets/test.txt',
ann_subdir='D:/HRSC/HRSC2016/FullDataSet/Annotations/',
img_subdir='D:/HRSC/HRSC2016/FullDataSet/AllImages/',
img_prefix='D:/HRSC/HRSC2016/FullDataSet/AllImages/',
pipeline=[
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(800, 800),
flip=False,
transforms=[
dict(type='RResize'),
dict(
type='Normalize',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=True),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img'])
])
],
version='le135'),
test=dict(
type='HRSCDataset',
classwise=False,
ann_file='D:/HRSC/HRSC2016/ImageSets/test.txt',
ann_subdir='D:/HRSC/HRSC2016/FullDataSet/Annotations/',
img_subdir='D:/HRSC/HRSC2016/FullDataSet/AllImages/',
img_prefix='D:/HRSC/HRSC2016/FullDataSet/AllImages/',
pipeline=[
dict(type='LoadImageFromFile'),
dict(
type='MultiScaleFlipAug',
img_scale=(800, 800),
flip=False,
transforms=[
dict(type='RResize'),
dict(
type='Normalize',
mean=[123.675, 116.28, 103.53],
std=[58.395, 57.12, 57.375],
to_rgb=True),
dict(type='Pad', size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect', keys=['img'])
])
],
version='le135'))
optimizer = dict(type='SGD', lr=0.0025, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
lr_config = dict(
policy='step',
warmup='linear',
warmup_iters=500,
warmup_ratio=0.3333333333333333,
step=[8, 11])
runner = dict(type='EpochBasedRunner', max_epochs=12)
evaluation = dict(interval=4, metric='mAP')
checkpoint_config = dict(interval=4)
log_config = dict(interval=50, hooks=[dict(type='TextLoggerHook')])
dist_params = dict(backend='nccl')
log_level = 'INFO'
load_from = None
resume_from = None
workflow = [('train', 1)]
opencv_num_threads = 0
mp_start_method = 'fork'
angle_version = 'le135'
model = dict(
type='RotatedRetinaNet',
backbone=dict(
type='ResNet',
depth=50,
num_stages=4,
out_indices=(0, 1, 2, 3),
frozen_stages=1,
zero_init_residual=False,
norm_cfg=dict(type='BN', requires_grad=True),
norm_eval=True,
style='pytorch',
init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')),
neck=dict(
type='FPN',
in_channels=[256, 512, 1024, 2048],
out_channels=256,
start_level=1,
add_extra_convs='on_input',
num_outs=5),
bbox_head=dict(
type='RDCFLHead',
num_classes=18,
in_channels=256,
stacked_convs=4,
feat_channels=256,
assign_by_circumhbbox=None,
dcn_assign=True,
dilation_rate=3,
anchor_generator=dict(
type='RotatedAnchorGenerator',
octave_base_scale=4,
scales_per_octave=1,
ratios=[1.0],
strides=[8, 16, 32, 64, 128]),
bbox_coder=dict(
type='DeltaXYWHAOBBoxCoder',
angle_range='le135',
norm_factor=1,
edge_swap=False,
proj_xy=True,
target_means=(0.0, 0.0, 0.0, 0.0, 0.0),
target_stds=(1.0, 1.0, 1.0, 1.0, 1.0)),
loss_cls=dict(
type='FocalLoss',
use_sigmoid=True,
gamma=2.0,
alpha=0.25,
loss_weight=1.0),
reg_decoded_bbox=True,
loss_bbox=dict(type='RotatedIoULoss', loss_weight=1.0)),
train_cfg=dict(
assigner=dict(
type='C2FAssigner',
ignore_iof_thr=-1,
gpu_assign_thr=1024,
iou_calculator=dict(type='RBboxMetrics2D'),
assign_metric='gjsd',
topk=16,
topq=12,
constraint='dgmm',
gauss_thr=0.6),
allowed_border=-1,
pos_weight=-1,
debug=False),
test_cfg=dict(
nms_pre=2000,
min_bbox_size=0,
score_thr=0.05,
nms=dict(iou_thr=0.4),
max_per_img=2000))
work_dir = 'work_dirs\dctd_hrsc'
auto_resume = False
gpu_ids = range(0, 1)

2023-07-31 19:37:30,713 - mmrotate - INFO - Set random seed to 1655979194, deterministic: False
2023-07-31 19:37:30,859 - mmrotate - INFO - initialize ResNet with init_cfg {'type': 'Pretrained', 'checkpoint': 'torchvision://resnet50'}
2023-07-31 19:37:30,859 - mmcv - INFO - load model from: torchvision://resnet50
2023-07-31 19:37:30,859 - mmcv - INFO - load checkpoint from torchvision path: torchvision://resnet50
2023-07-31 19:37:30,910 - mmcv - WARNING - The model and loaded state dict do not match exactly

unexpected key in source state_dict: fc.weight, fc.bias

2023-07-31 19:37:30,932 - mmrotate - INFO - initialize FPN with init_cfg {'type': 'Xavier', 'layer': 'Conv2d', 'distribution': 'uniform'}
2023-07-31 19:37:30,953 - mmrotate - INFO - initialize RDCFLHead with init_cfg {'type': 'Normal', 'layer': 'Conv2d', 'std': 0.01, 'override': {'type': 'Normal', 'name': 'retina_cls', 'std': 0.01, 'bias_prob': 0.01}}
fatal: not a git repository (or any of the parent directories): .git
2023-07-31 19:37:31,326 - mmrotate - INFO - Start running, host: Administrator@BF-202212091532, work_dir: C:\Users\Administrator\mmrotate-0.3.2\work_dirs\dctd_hrsc
2023-07-31 19:37:31,327 - mmrotate - INFO - Hooks will be executed in the following order:
before_run:
(VERY_HIGH ) StepLrUpdaterHook
(NORMAL ) CheckpointHook
(LOW ) EvalHook
(VERY_LOW ) TextLoggerHook

before_train_epoch:
(VERY_HIGH ) StepLrUpdaterHook
(LOW ) IterTimerHook
(LOW ) EvalHook
(VERY_LOW ) TextLoggerHook

before_train_iter:
(VERY_HIGH ) StepLrUpdaterHook
(LOW ) IterTimerHook
(LOW ) EvalHook

after_train_iter:
(ABOVE_NORMAL) OptimizerHook
(NORMAL ) CheckpointHook
(LOW ) IterTimerHook
(LOW ) EvalHook
(VERY_LOW ) TextLoggerHook

after_train_epoch:
(NORMAL ) CheckpointHook
(LOW ) EvalHook
(VERY_LOW ) TextLoggerHook

before_val_epoch:
(LOW ) IterTimerHook
(VERY_LOW ) TextLoggerHook

before_val_iter:
(LOW ) IterTimerHook

after_val_iter:
(LOW ) IterTimerHook

after_val_epoch:
(VERY_LOW ) TextLoggerHook

after_run:
(VERY_LOW ) TextLoggerHook

2023-07-31 19:37:31,327 - mmrotate - INFO - workflow: [('train', 1)], max: 12 epochs
2023-07-31 19:37:31,327 - mmrotate - INFO - Checkpoints will be saved to C:\Users\Administrator\mmrotate-0.3.2\work_dirs\dctd_hrsc by HardDiskBackend.
Traceback (most recent call last):
File "C:\Users\Administrator\mmrotate-0.3.2\tools\train.py", line 194, in
main()
File "C:\Users\Administrator\mmrotate-0.3.2\tools\train.py", line 183, in main
train_detector(
File "c:\users\administrator\mmrotate-0.3.2\mmrotate\apis\train.py", line 144, in train_detector
runner.run(data_loaders, cfg.workflow)
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\mmcv\runner\epoch_based_runner.py", line 136, in run
epoch_runner(data_loaders[i], **kwargs)
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\mmcv\runner\epoch_based_runner.py", line 53, in train
self.run_iter(data_batch, train_mode=True, **kwargs)
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\mmcv\runner\epoch_based_runner.py", line 31, in run_iter
outputs = self.model.train_step(data_batch, self.optimizer,
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\mmcv\parallel\data_parallel.py", line 77, in train_step
return self.module.train_step(*inputs[0], **kwargs[0])
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\mmdet\models\detectors\base.py", line 248, in train_step
losses = self(**data)
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\torch\nn\modules\module.py", line 1130, in _call_impl
return forward_call(*input, **kwargs)
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\mmcv\runner\fp16_utils.py", line 116, in new_func
return old_func(*args, **kwargs)
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\mmdet\models\detectors\base.py", line 172, in forward
return self.forward_train(img, img_metas, **kwargs)
File "c:\users\administrator\mmrotate-0.3.2\mmrotate\models\detectors\single_stage.py", line 81, in forward_train
losses = self.bbox_head.forward_train(x, img_metas, gt_bboxes,
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\mmdet\models\dense_heads\base_dense_head.py", line 335, in forward_train
losses = self.loss(*loss_inputs, gt_bboxes_ignore=gt_bboxes_ignore)
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\mmcv\runner\fp16_utils.py", line 205, in new_func
return old_func(*args, **kwargs)
File "c:\users\administrator\mmrotate-0.3.2\mmrotate\models\dense_heads\r_dcfl_head.py", line 308, in loss
cls_reg_targets = self.get_targets(
File "c:\users\administrator\mmrotate-0.3.2\mmrotate\models\dense_heads\r_dcfl_head.py", line 604, in get_targets
results = multi_apply(
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\mmdet\core\utils\misc.py", line 30, in multi_apply
return tuple(map(list, zip(*map_results)))
File "c:\users\administrator\mmrotate-0.3.2\mmrotate\models\dense_heads\r_dcfl_head.py", line 466, in _get_targets_single
labels = unmap(
File "C:\Users\Administrator\anaconda3\envs\mmdet\lib\site-packages\mmdet\core\utils\misc.py", line 38, in unmap
ret[inds.type(torch.bool)] = data
RuntimeError: shape mismatch: value tensor of shape [16368] cannot be broadcast to indexing result of shape [15696]