Skip to content

YOLO-NAS - Object Detection

YOLO-NAS is an object detection model developed by Deci AI using Neural Architecture Search (NAS), optimized for high accuracy and efficient inference on edge devices.

Overview

YOLO-NAS for object detection features:

  • Neural Architecture Search - Automatically optimized architecture
  • Quantization-aware training - Optimized for INT8 deployment
  • Edge-optimized - Designed for efficient edge device deployment
  • Multiple model sizes - Small, medium, and large variants

License

Apache 2.0

Important Licensing Information

The YOLO-NAS code is released under the Apache 2.0 license, but the Deci-provided pre-trained weights are under a special license.

  • Training with Roboflow Train: Commercial usage is allowed because Roboflow does not use the Deci weights.
  • Self-training outside Roboflow: If you train your own YOLO-NAS model outside the Roboflow platform, ensuring adherence to the Deci YOLO-NAS license is your responsibility.

Learn more: Roboflow Licensing

Pre-trained Model IDs

All pre-trained YOLO-NAS object detection models are trained on the COCO dataset (80 classes) and are open access (no API key required).

Model Size 640×640
Small yolo-nas-s-640
Medium yolo-nas-m-640
Large yolo-nas-l-640

Supported Backends

Backend Extras Required
onnx onnx-cpu, onnx-cu12, onnx-cu118, onnx-jp6-cu126
trt trt10

Roboflow Platform Compatibility

Feature Supported
Training ✅ Train custom models on Roboflow
Upload Weights ✅ Upload pre-trained weights
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:

  • ONNX: onnx-cpu, onnx-cu12

Usage Example

import cv2
import supervision as sv
from inference_models import AutoModel

# Load model and image
model = AutoModel.from_pretrained("yolo-nas-s-640")
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)