This is the solution ranked top 10 in the IJCAI 2023 Workshop Challenge "Generalizing from Limited Resources in the Open World" with Track II of Rotated Detection competition.
This codebase is implemented based on "Large Selective Kernel Network for Remote Sensing Object Detection" at: https://arxiv.org/pdf/2303.09030.pdf. The original repo is here: Large-Selective-Kernel-Network.
Base on existing amazing work, some new features and toolkits used for oriented obeject detection task are implemented. Most of them are borrowed from horizontal object detection task but originally they are not supportive for rotated object detection task. I believe these newly introduced toolkits and features could be helpful and easily used in other rotated object detection tasks executed based on MMRotate codebase of version 2.xx. All the configuration files used in the competition are placed at ./configs/IJCAI/
-
Convert the competition official annotation format to DOAT format:
./tools/convert_ijcai2dota.py
-
Convert the required submit format to official annotation format:
./tools/convert_submit2ijcai.py
-
Split data into k folds:
./tools/kfold_split.py
-
Visulisation DOTA style annotated data:
./tools/dota_vis.py
-
Rotate objects offline for data augmentation:
./tools/data_aug_offline.py
-
Rescale rotated objects offline for data augmentation:
./tools/im_rescale.py
-
Inspect the checkpoint shape and size:
./tools/inspect_checkpoint.py
-
Substitute original detector weight with a new backbone ckpt weight:
./tools/merge_ckpt.py
-
Merge and average several checkpoints:
./tools/model_ensamble.py
-
Crop rotated objects for classification model training:
./tools/obj_crop.py
-
Visulize the predicted false positive, false negative and true positive objects:
./tools/results_analysis.py
. An example is shown below (partially cropped from original dataset to avoid copyright issue. If there are any problem of using this image, please contact me to delete it), where green boxes are tp, red boxes are fp, blue boxes are fn, yellow boxes are wrong classified objects:
- Crop the false positive and false negative objects:
./tools/get_fp_fn.py
- Copy-paste augmentation skill with rotated objects:
./tools/copy_paste.py
. A comparison is shown as following(left is a crop patch from training data, right is the augmented version with several random rotated knifes pasted on it):
- SWA: reference config
- Rotated Mosaic: reference config
- CARAFE FPN: reference config
- Rotated GenericRoIExtractor: reference config
- TTA: reference config
- K folds training: reference config
Imagenet 300-epoch pre-trained LSKNet-T backbone: Download
Imagenet 300-epoch pre-trained LSKNet-S backbone: Download
Imagenet 300-epoch pre-trained LSKNet-M backbone: Download 提取码: iq3s
Finetuned 100ep on target 9 competition classes LSKNet-M backbone: Download 提取码: roov
Finetuned 100ep on target 9 competition classes LSKNet-S backbone: Download 提取码: 0aa9
TODO
MMRotate depends on PyTorch, MMCV and MMDetection. Below are quick steps for installation. Please refer to Install Guide for more detailed instruction.
conda create --name openmmlab python=3.8 -y
conda activate openmmlab
git clone https://github.com/TUDelftHao/IJCAI2023-workshop-GLOW-top10.git
git checkout -b IJCAI2023-workshop origin/IJCAI2023-workshop
cd IJCAI2023-workshop-GLOW-top10
pip install -r custom_requirements.txt
pip install -v -e .
Please see get_started.md for the basic usage of MMRotate. We provide colab tutorial, and other tutorials for:
MMRotate is an open source project that is contributed by researchers and engineers from various colleges and companies. We appreciate all the contributors who implement their methods or add new features, as well as users who give valuable feedbacks. We wish that the toolbox and benchmark could serve the growing research community by providing a flexible toolkit to reimplement existing methods and develop their own new methods.
This project is released under the Apache 2.0 license.