YOLO Minimal Inference Library is a lightweight Python package designed for efficient and minimal YOLO object detection using ONNX Runtime. This library extracts the essential components for YOLO inference from the Ultralytics library, offering a streamlined alternative for those who need a simple, no-frills solution for YOLO inference.
- Lightweight: Focused on essential YOLO inference, reducing overhead.
- Free Usage: Open to the community under the MIT license.
- Fast Inference: Powered by ONNX Runtime for optimal performance.
- Flexible Execution: Supports both CPU and GPU execution providers.
- Easy Integration: Simplified API for seamless integration into projects.
Install the package via pip:
pip install yolo_minimal_inferenceDownload YOLO models in ONNX format from:
from imageio import imread
from yolo_minimal_inference import YOLO
# Path to the ONNX model
model_path = "path/to/yolov5.onnx"
# Initialize YOLO model
yolo = YOLO(model_path, conf_thres=0.5, iou_thres=0.4,is_bgr=False)
# Load an image
image = imread("path/to/image.jpg")
# Perform inference
results = yolo(image)
# Display results
for box, conf, cls in zip(results.xyxy, results.conf, results.cls):
print(f"Box: {box}, Confidence: {conf:.2f}, Class: {cls}")This package is under active development. Below is a summary of the work done and the planned next steps:
- Basic implementation of YOLO inference pipeline:
- Model initialization with ONNX Runtime.
- Preprocessing input images (resizing, normalization).
- Running inference on CPU.
- Postprocessing results (Non-Maximum Suppression, confidence filtering).
- Integration with Pytest for unit tests.
- Initial CI/CD setup with GitHub Actions.
- Documentation for installation and usage.
- Add support for batch inference.
- Implement error handling for corrupted or unsupported model files.Currently only str check.
- Add GPU support.
- Add classification and segmentation functionalities.
- Add new interpolation methods for resizing. Replicate opencv.
- Expand test coverage for edge cases:
- Corrupted images or unsupported formats.
- Invalid model paths.
- Custom confidence and IoU thresholds.
- Publish an example notebook showcasing library usage.
- Integrate into serverless platforms like AWS Lambda.
- Example pt to onnx converter.
If you have suggestions or feature requests, feel free to open an issue in the repository.
YOLO(model_path: str, conf_thres: float = 0.5, iou_thres: float = 0.4)model_path: Path to the ONNX model file.conf_thres: Confidence threshold for filtering detections.iou_thres: IoU threshold for Non-Maximum Suppression (NMS).
-
detect_objects(image: np.ndarray) -> Boxes- Takes an input image, processes it, and returns bounding boxes, confidence scores, and class IDs.
-
prepare_input(image: np.ndarray) -> np.ndarray- Prepares an input image for inference.
-
process_output(output: list) -> Boxes- Post-processes the model output into human-readable results.
- Lightweight Inference: Minimal dependencies for object detection.
- Real-Time Applications: Efficient enough for live video feeds.
- Batch Processing: Analyze multiple images at once (future implementation).
Contributions are welcome! Here's how you can get involved:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Submit a pull request with a detailed description of your changes.
To run tests, clone the repository and execute:
pytestEnsure you have the required static files (model and test images) in the tests/static/ directory.
This package uses GitHub Actions for CI/CD:
- Testing: Runs tests on every push or pull request.
- Building: Verifies that the package can be built.
- Publishing: Automatically publishes to PyPI on release.
This project is licensed under the MIT License.
For support or inquiries:
- Email: [email protected]
- GitHub: iamdgarcia
- PyPI: YOLO Minimal Inference
Special thanks to the following resources: