This repo is the official implementation of Learning Heavily-Degraded Prior for Underwater Object Detection. It is based on mmdetection.
We propose a residual feature transference module (RFTM) to learn a mapping between deep representations of the heavily degraded patches of DFUI and underwater images, and make the mapping as a heavily degraded prior (HDP) for underwater detection. Since the statistical properties are independent to image content, HDP can be learned without the supervision of semantic labels and plugged into popular CNN-based feature extraction networks to improve their performance on underwater object detection. Without bells and whistles, evaluations on URPC2020 and UODD show that our methods outperform CNN-based detectors by a large margin. Our method with higher speeds and less parameters still performs better than transformer-based detectors.
For the training set of URPC2020 and URPC2021, we use Cascade RCNN to pick up images with
Notes:
The patches with the transmission value
We only use
For efficiently plugging RFTM into a detector, we propose a two-stage learning scheme from the perspective of the unsupervised and finetune learning strategy. The first stage is training RFTM in an unsupervised manner on
Please refer to our paper for more details.
Methods | Backbone | Pretrain | #params | config | model | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
RFTM-50 | ResNet50 | cascade_rcnn_r50_dfui | 48.2 | 80.7 | 50.0 | 19.5 | 41.6 | 53.1 | 75.5M | config | rftm_50_urpc |
RFTM-x101 | ResNetXT101 | cascade_rcnn_x101_dfui | 50.9 | 84.7 | 55.2 | 25.5 | 45.1 | 56.9 | 133.4M | config | rftm_x101_urpc |
Methods | Backbone | Pretrain | #parames | config | model | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
RFTM-50 | ResNet50 | cascade_rcnn_r50_dfui | 50.8 | 89.0 | 53.6 | 33.6 | 50.9 | 62.8 | 75.5M | config | rftm_50_uodd |
RFTM-x101 | ResNetXT101 | cascade_rcnn_x101_dfui | 52.7 | 90.8 | 50.0 | 47.7 | 52.4 | 63.5 | 133.4M | config | rftm_x101_uodd |
To install pytorch, run:
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch
To install mmdetection, run:
# install mmcv-full
pip install mmcv-full==1.4.8 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.11/index.html
# install mmdet
pip install -r requirements/build.txt
python setup.py develop
To install guided-filter-pytorch, run:
pip install guided-filter-pytorch
python tools/test.py <config_file> <checkpoint_file> --eval bbox
To train RFTM-50, run:
python tools/train.py configs/rftm/rftm_50.py --work-dir <work_dir>
To train RFTM-X101, run:
python tools/train.py configs/rftm/rftm_x101.py --work-dir <work_dir>
Notes:
- Please refer to MMDetection's documentation for more information.
@article{Fu2022,
title = {{Learning Heavily-Degraded Prior for Underwater Object Detection}},
author = {{Fu, Chenping and Fan, Xin and Xiao, Jiewen and Yuan, Wanqi and Liu, Risheng and Luo, Zhongxuan}},
journal = {{IEEE TCSVT}}
}