Skip to content

Ali-Awad/Image-Utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CV Toolkit Banner

CV Toolkit

A collection of modular Python utilities for computer vision research, covering the full pipeline from dataset preparation and model inference to evaluation and publication-quality visualization.

Built during my PhD research on underwater image enhancement and its impact on object detection performance, these tools are designed to be reusable across any YOLO-based detection workflow.

Repository Structure

├── inference/                  # Model inference pipelines
│   ├── single_image.py         # Single-image inference with GT overlay
│   ├── batch_inference.py      # Multi-model batch inference with metrics
│   └── save_predictions.py     # Serialize predictions/GT to pickle
│
├── evaluation/                 # Metrics and analysis
│   ├── compute_metrics.py      # mAP, Precision, Recall from pickled predictions
│   └── bbox_statistics.py      # Bounding box distribution analysis
│
├── dataset/                    # Dataset preparation
│   ├── coco_utils.py           # COCO annotation splitting & image extraction
│   ├── yolo_mapping.py         # Reorganize datasets into YOLO structure
│   ├── label_processing.py     # Remap class IDs & normalize YOLO labels
│   └── rename_images.py        # Batch rename with suffix removal
│
├── visualization/              # Publication-quality figures
│   ├── detection_grid.py       # Side-by-side model comparison grids
│   ├── enhancement_grid.py     # Quality-grouped enhancement comparison
│   └── generate_labels.py      # Text-label image generation for grids
│
├── tiling/                     # Image patching
│   └── patchify.py             # Sliding-window patch extraction & merging
│
├── utils/                      # General-purpose helpers
│   ├── file_operations.py      # Find, copy, move, sample files
│   ├── csv_search.py           # Cross-reference filenames across CSVs
│   ├── video_creator.py        # Assemble images into MP4 video
│   └── image_stats.py          # Image resolution statistics
│
├── requirements.txt
└── README.md

Quick Start

Installation

git clone https://github.com/<your-username>/cv-toolkit.git
cd cv-toolkit
pip install -r requirements.txt

Usage Examples

Every script is a standalone CLI tool with --help documentation:

Run inference on a single image:

python -m inference.single_image \
    --image data/test/000001.jpg \
    --checkpoint checkpoints/best.pth \
    --classes holothurian echinus scallop starfish fish \
    --show-gt --data-yaml data/data.yaml

Batch inference across multiple models:

python -m inference.batch_inference \
    --data-dir data/RUOD_Files \
    --checkpoint-dir checkpoints \
    --dataset RUOD \
    --models Original ACDC TEBCF \
    --classes holothurian echinus scallop starfish fish \
    --save-dir results/ --save-metrics --save-images

Compute mAP and confusion metrics:

python -m evaluation.compute_metrics \
    --predictions-pkl pickles/predictions.pickle \
    --gt-pkl pickles/gt.pickle \
    --models Original ACDC TEBCF \
    --classes holothurian echinus scallop starfish fish \
    --output results/metrics.csv

Split COCO annotations:

python -m dataset.coco_utils split \
    --annotations instances.json \
    --train train.json --test test.json \
    --ratio 0.85 --multi-class

Create comparison grid for a paper figure:

python -m visualization.detection_grid \
    --root-dir data/Enhanced_RUOD \
    --models Original ACDC TEBCF \
    --images 000106.jpg 003145.jpg \
    --output figure_comparison.png

Key Features

Category Capability
Inference Single-image and batch YOLO-NAS inference with GT visualization
Evaluation mAP@50, confusion matrix metrics, bbox density analysis
Dataset Prep COCO splitting, YOLO restructuring, class remapping, batch renaming
Visualization Publication-ready comparison grids with quality grouping
Tiling Sliding-window patch extraction and seamless merging
Utilities File operations, CSV cross-referencing, video creation, resolution stats

Tech Stack

  • Detection: YOLO-NAS via SuperGradients
  • Annotations: Supervision for detection data handling
  • Visualization: Matplotlib, Pillow, OpenCV
  • Data: Pandas, NumPy, scikit-learn

License

MIT

About

Modular CV utilities: detection inference, evaluation, dataset prep, visualization, and tiling

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages