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.
├── 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
git clone https://github.com/<your-username>/cv-toolkit.git
cd cv-toolkit
pip install -r requirements.txtEvery 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.yamlBatch 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-imagesCompute 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.csvSplit COCO annotations:
python -m dataset.coco_utils split \
--annotations instances.json \
--train train.json --test test.json \
--ratio 0.85 --multi-classCreate 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| 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 |
- Detection: YOLO-NAS via SuperGradients
- Annotations: Supervision for detection data handling
- Visualization: Matplotlib, Pillow, OpenCV
- Data: Pandas, NumPy, scikit-learn
MIT
