项目作者: 2gunsu

项目描述 :
Official pytorch implementation for FEN (Feature Enhancement Network)
高级语言: Python
项目地址: git://github.com/2gunsu/SPL2021-FEN.git
创建时间: 2021-05-23T14:21:30Z
项目社区:https://github.com/2gunsu/SPL2021-FEN

开源协议:MIT License

下载


FEN (Feature Enhancement Network)

Official implementation for our paper,
“Self-supervised Feature Enhancement Networks for Small Object Detection in Noisy Images”.
This paper has been accepted at IEEE Signal Processing Letters 2021.
Our paper can be viewed here.

Authors: Geonsoo Lee, Sungeun Hong, and Donghyeon Cho
Keywords: Small Object Detection, Self-supervised Learning, Noisy Image

Requirements

Note: This code cannot be executed in Windows or Multi-GPU environment.

Our code uses Detectron2 developed by FAIR (Facebook AI Research).
Therefore, please visit the repository and install the appropriate version that fits your environment.

We have tested our code in the following environment.

  • OS: Ubuntu 18.04.5 LTS
  • GPU: NVIDIA TITAN RTX (24 GB)
  • CUDA: 11.0
  • Python: 3.8.5
  • Pytorch: 1.7.1
  • Torchvision: 0.8.2
  • Detectron2: 0.3

Datasets and Preparation

In this paper, we have used two datasets.
One is DOTA (for train and test) and the other is ISPRS Toronto (for only test).

DOTA: A Large-scale Dataset for Object Detection in Aerial Images [Paper] [Site]

You can download pre-processed DOTA dataset for our paper in this link directly.
Please note that you can also download the raw dataset and pre-process it by yourself.
The structure of the pre-processed data is as follows.
Make sure Label.json follows the COCO data format.

  1. DOTA.zip
  2. |-- Train
  3. | |-- Label.json
  4. | `-- Image
  5. | |-- Image_00000.png
  6. | |-- Image_00001.png
  7. | |-- Image_00002.png
  8. | `-- ...
  9. |-- Test
  10. | |-- Label.json
  11. | `-- Image
  12. | |-- Image_00042.png
  13. | |-- Image_00055.png
  14. | |-- Image_00060.png
  15. | `-- ...
  16. |-- Val
  17. | |-- Label.json
  18. | `-- Image
  19. | |-- Image_00066.png
  20. | |-- Image_00125.png
  21. | |-- Image_00130.png
  22. | `-- ...
  23. `-- Mini
  24. |-- Label.json
  25. `-- Image
  26. |-- Image_00066.png
  27. |-- Image_00125.png
  28. |-- Image_00130.png
  29. `-- ...

ISPRS Toronto [Site]

Note: This data cannot be used immediately due to its large resolution,
and we will distribute the pre-processing code as soon as possible.

(1) Please complete the data request form here.
(2) Access the FTP link you received by email.
(3) Download all .tif image files in [FTP LINK]/ISPRS_BENCHMARK_DATASETS/Toronto/Images.
(4) Download the label files we made here. Like DOTA, these annotations also follow the coco data format.

Usages

Training

You can run run_train_net.py directly using IDEs like Pycharm.
In this case, you have to manually fill in the required parameters in the code.

You can also run run_train.py from the terminal with the command below.

Without FEN

  1. python run_train.py --arch [FILL] # Select one in ['R50-FPN', 'R101-FPN', 'X101-FPN'] (Default: 'X101-FPN')
  2. --data_root [FILL] # Directory which contains 'Train', 'Test', 'Val' folders
  3. --output_dir [FILL]
  4. --noise_type [FILL] # Select one in ['none', 'gaussian', 'snp'] (Default: 'none')
  5. --noise_params [FILL]
  6. --input_size [FILL] # Size of training data (Default: 800)

With FEN

  1. python run_train.py --arch [FILL] # Select one in ['R50-FPN', 'R101-FPN', 'X101-FPN'] (Default: 'X101-FPN')
  2. --use_fen
  3. --data_root [FILL] # Directory which contains 'Train', 'Test', 'Val' folders
  4. --output_dir [FILL]
  5. --noise_type [FILL] # Select one in ['none', 'gaussian', 'snp'] (Default: 'none')
  6. --noise_params [FILL]
  7. --input_size [FILL] # Size of training data (Default: 800)
  8. --fen_levels [FILL] # Make combinations using ['p2', 'p3', 'p4', 'p5', 'p6']
  9. # For example, --fen_levels p2 p4 p5

Evaluation

You can run run_test_net.py directly using the IDE, or you can run run_test.py using the terminal.
When using run_test.py, the command is as follows.

  1. python run_test.py --ckpt_root [FILL]
  2. --data_root [FILL] # Directory which contains 'Image' folder and 'Label.json'
  3. --noise_type [FILL] # Select one in ['none', 'gaussian', 'snp'] (Default: 'none')
  4. --noise_params [FILL]
  5. --input_size [FILL] # Size of inference data (Default: 800)

Qualitative Results

Column (a) is the base result when no method is applied, (b) and (c) are the results of applying Noise2Void and DnCNN at the pixel domain, respectively, and (d) is the result of applying our method at the feature domain.



Quantitative Results

We have used five out of the standard evaluation metrics of COCO.



Citation

  1. @ARTICLE{9432743,
  2. author={Lee, Geonsoo and Hong, Sungeun and Cho, Donghyeon},
  3. journal={IEEE Signal Processing Letters},
  4. title={Self-Supervised Feature Enhancement Networks for Small Object Detection in Noisy Images},
  5. year={2021},
  6. volume={28},
  7. number={},
  8. pages={1026-1030},
  9. doi={10.1109/LSP.2021.3081041}}