Skip to content

A unified tool for processing various Optical ship detection datasets into a standardized format. This tool supports multiple popular datasets including DOTA, xView, FAIR1M, ShipRSImageNet, and kari-ship-det-beta, airbus-ship-detection challenge dataset

Notifications You must be signed in to change notification settings

egshkim/Optical-ShipDet-Dataset-Processor

Repository files navigation

Optical-ShipDet-Dataset-Processor

A unified tool for processing various optical satellite imagery ship detection datasets into a standardized format. This tool supports processing of multiple satellite imagery datasets, with robust error handling and comprehensive logging, focusing specifically on ship detection tasks.

Features

  • Process multiple satellite imagery ship detection datasets into standardized format
  • Support for DOTA, xView, FAIR1M, ShipRSImageNet_V1, KARI-Ship-Det-Beta, and Airbus Ship Detection Challenge datasets
  • Convert various annotation formats to DOTA format with relative coordinates
  • Automatic image resizing and tiling with configurable settings
  • Optional visualization of processed results
  • Extensible architecture for adding new datasets

Supported Datasets

1. DOTA (Dataset for Object deTection in Aerial images)

config = ProcessingConfig(
    input_dir="/path/to/DOTA",
    output_dir="/path/to/output",
    target_size=(1024, 1024),
    coord_format=CoordinateFormat.RELATIVE,
    visualize=True
)

processor = ProcessorFactory.create_processor("dotav15", config)
processor.process()

2. xView

config = ProcessingConfig(
    input_dir="/path/to/xView",
    output_dir="/path/to/output",
    target_size=(1024, 1024),
    coord_format=CoordinateFormat.RELATIVE,
    visualize=True
)

processor = ProcessorFactory.create_processor("xview", config)
processor.process()

3. FAIR1M

config = ProcessingConfig(
    input_dir="/path/to/FAIR1M",
    output_dir="/path/to/output",
    target_size=(1024, 1024),
    coord_format=CoordinateFormat.RELATIVE,
    visualize=True
)

processor = ProcessorFactory.create_processor("fair1m", config)
processor.process()

4. ShipRSImageNet_V1

config = ProcessingConfig(
    input_dir="/path/to/ShipRSImageNet_V1",
    output_dir="/path/to/output",
    target_size=(1024, 1024),
    coord_format=CoordinateFormat.RELATIVE,
    visualize=True
)

processor = ProcessorFactory.create_processor("shiprsimagenet", config)
processor.process()

5. KARI Ship Detection Beta

config = ProcessingConfig(
    input_dir="/path/to/kari-ship-det-beta",
    output_dir="/path/to/output",
    target_size=(1024, 1024),
    coord_format=CoordinateFormat.RELATIVE,
    visualize=True
)

processor = ProcessorFactory.create_processor("kari", config)
processor.process()

6. Airbus Ship Detection Challenge

config = ProcessingConfig(
    input_dir="/path/to/airbus-ship-detection",
    output_dir="/path/to/output",
    target_size=(1024, 1024),
    coord_format=CoordinateFormat.RELATIVE,
    visualize=True
)

processor = ProcessorFactory.create_processor("airbus", config)
processor.process()

Installation

Requirements

pip install -r requirements.txt

Project Structure

├── utils.py                    # Core utility functions
├── UnifiedDatasetProcessor.py  # Main processor implementation
├── requirements.txt
└── outputs/
    ├── train/ 
    │   ├── images/            # Processed images
    │   ├── labels/            # Processed labels
    │   └── visualizations/    # Optional visualization outputs
    └── val/                   # Same structure as train/

Output Format

Processed dataset follows a standardized format:

output_dir/
├── train/
│   ├── images/
│   │   └── {dataset}_{original_filename}.png
│   ├── labels/
│   │   └── {dataset}_{original_filename}.txt
│   └── visualizations/
│       └── {dataset}_{original_filename}_vis.png
└── val/
    └── ... (same structure as train/)

Label Format

The processed labels are stored in DOTA format with relative coordinates:

class_name x1 y1 x2 y2 x3 y3 x4 y4

where:

  • class_name: String identifier for the ship class
  • x1,y1,x2,y2,x3,y3,x4,y4: Normalized coordinates (0-1) of the bounding box corners in clockwise order

Citation

If you use this processor in your research, please cite:

@software{Optical-ShipDet-Dataset-Processor,
  title={Optical-ShipDet-Dataset-Processor},
  author={SeonHoon Kim},
  year={2024},
  description={A unified tool for processing optical satellite imagery ship detection datasets}
}

Future Work

  • Add support for additional optical satellite imagery datasets
  • Add support for instance segmentation annotations

About

A unified tool for processing various Optical ship detection datasets into a standardized format. This tool supports multiple popular datasets including DOTA, xView, FAIR1M, ShipRSImageNet, and kari-ship-det-beta, airbus-ship-detection challenge dataset

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages