Chasel-Tsui / mmrotate-dcfl

Official implementation of the CVPR23 paper: Dynamic Coarse-to-Fine Learning for Oriented Tiny Object Detection
Apache License 2.0
103 stars 4 forks source link

Problems with the model on the HRSC dataset #8

Open bobyoung159 opened 1 year ago

bobyoung159 commented 1 year ago

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:

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]