yolov5s-compressed / README.md
jorismollinga's picture
Update README.md
7757e9e verified
|
raw
history blame contribute delete
3.34 kB
---
license: gpl-3.0
datasets:
- detection-datasets/coco
language:
- en
pipeline_tag: object-detection
tags:
- object-detection
- yolo
- compressed
- aiminify
- pruning
- coco
---
# YOLOv5s Compressed with AIminify
## Overview
This repository provides a **compressed version of YOLOv5s** using [AIminify](https://www.aiminify.com). The original YOLOv5s model was pretrained on the [COCO dataset](https://cocodataset.org/) by Ultralytics. Leveraging AIminify’s pruning and fine-tuning strategies, we reduced the model size and FLOPS while maintaining strong performance on COCO benchmarks.
### Key features
- **Pruned** to remove unneeded parameters and reduce computational overhead.
- **Fine-tuned** on the COCO dataset post-compression to restore or retain high accuracy.
- **Minimal performance Loss** across various compression strengths, preserving mAP in most scenarios.
## Model architecture
The base architecture is **YOLOv5s** from Ultralytics. Modifications include:
- **Pruning** certain channels/kernels based on AIminify’s pruning algorithm.
- **Automatic Fine-Tuning** post-pruning to recover performance.
Despite its reduced size, this model maintains similar detection capabilities for common objects as the original YOLOv5s.
## Intended use
- **Primary use case**: General object detection (people, vehicles, animals, etc.) in images and videos.
- **Industries**: Could be applied in retail (store analytics), security, robotics, autonomous vehicles, or any scenario where a fast, lightweight detector is beneficial.
- **Resource-constrained environments**: Ideal for devices or deployments where GPU/CPU resources are limited or when high throughput is required.
### Limitations
- **Dataset bias**: Trained on COCO, which may not generalize to highly domain-specific use cases (e.g., medical imaging, satellite imagery). Additional domain-specific fine-tuning might be necessary.
- **Performance variations**: Depending on the chosen compression strength, there might be a slight reduction in accuracy relative to the uncompressed YOLOv5s model.
## Metrics and Performance
Below is a summary of performance across different compression strengths on COCO’s mAP50-95 metric, FLOPS, number of parameters, and model size:
| Compression Strength | GFLOPS | Parameters | Model Size (MB) | mAP50-95 |
|----------------------|--------|-------------|-----------------|----------|
| 0 (baseline) | 24.0 | ~9.1M | 36.8 | 0.412 |
| 1 | 22.3 | ~8.6M | 34.8 | 0.406 |
| 2 | 21.1 | ~8.3M | 33.3 | 0.400 |
| 3 | 19.9 | ~7.9M | 31.7 | 0.394 |
| 4 | 18.6 | ~7.5M | 30.1 | 0.377 |
| 5 | 17.3 | ~7.0M | 28.4 | 0.365 |
Even at the highest compression strength (`5`), the model **significantly outperforms** a smaller YOLOv5n baseline while being more resource-efficient than the original YOLOv5s.
## How to use
```python
import torch
if __name__ == '__main__':
model_file = 'YOLOv5_compression_strength_5_unquantized.pt'
model = torch.load(model_file, map_location='cpu')
model.eval()
inputs = torch.randn(1, 3, 640, 640)
results = model(inputs)
```