YOLOv9 - Object Detection¶
YOLOv9 is an object detection model featuring Programmable Gradient Information (PGI) and Generalized Efficient Layer Aggregation Network (GELAN) for improved accuracy and efficiency.
Overview¶
YOLOv9 for object detection introduces novel architectural improvements:
- Programmable Gradient Information (PGI) - Better gradient flow during training
- GELAN architecture - Efficient layer aggregation
- Improved feature extraction - Better multi-scale feature fusion
- Multiple model sizes - Various model variants available
License¶
GPL-3.0
Licensing Options
- GPL-3.0: Free for open-source projects. Requires derivative works to be open-sourced.
- For commercial use, you need to follow AGPL-3.0 conditions or purchase a license for commercial use, modifications, and distribution.
See Roboflow Model Licenses - YOLOv9 for details.
Pre-trained Model IDs¶
No pre-trained model aliases are available. Train custom models on Roboflow.
Supported Backends¶
| Backend | Extras Required |
|---|---|
onnx |
onnx-cpu, onnx-cu12, onnx-cu118, onnx-jp6-cu126 |
torch-script |
torch-cpu, torch-cu118, torch-cu124, torch-cu126, torch-cu128, torch-jp6-cu126 |
trt |
trt10 |
Roboflow Platform Compatibility¶
| Feature | Supported |
|---|---|
| Training | ❌ Not available for training |
| Upload Weights | ✅ Upload pre-trained weights (guide) |
| Serverless API (v2) | ✅ Deploy via hosted API |
| Workflows | ✅ Use in Workflows via Object Detection block |
| Edge Deployment (Jetson) | ✅ Deploy on NVIDIA Jetson devices |
| Self-Hosting | ✅ Deploy with inference-models |
Custom model ID format: project-url/version (e.g., my-project-abc123/2)
Installation¶
Install with one of the following extras depending on your backend:
- ONNX:
onnx-cpu,onnx-cu12 - TensorRT:
trt10(requires CUDA 12.x) - TorchScript:
torch-cpu,torch-cu118,torch-cu124,torch-cu126,torch-cu128,torch-jp6-cu126
Usage Example¶
import cv2
import supervision as sv
from inference_models import AutoModel
# Load model and image
model = AutoModel.from_pretrained("my-project-abc123/2", api_key="your_roboflow_api_key")
image = cv2.imread("path/to/image.jpg")
# Run inference and convert to supervision Detections
predictions = model(image)
detections = predictions[0].to_supervision()
# Annotate image
bounding_box_annotator = sv.BoxAnnotator()
annotated_image = bounding_box_annotator.annotate(image, detections)
# Save or display
cv2.imwrite("annotated.jpg", annotated_image)