Link to this sectionRust için Ultralytics Inference#
Ultralytics Inference is a high-performance YOLO inference library and command-line tool written in Rust. It runs exported ONNX models through ONNX Runtime to deliver fast, memory-safe predictions on images, videos, webcams, and streams, with no Python runtime required at inference time.
Proje, iki şekilde kullanabileceğin ultralytics-inference adında tek bir crate olarak gelir: hızlı tahminler ve toplu işler için bir CLI veya doğrudan Rust uygulamana gömülü bir kütüphane olarak. Tüm Ultralytics görevlerini ve birleşik bir cihaz arayüzü aracılığıyla geniş bir donanım arka ucu setini destekler.
Link to this sectionNeden Rust ile çıkarım?#
- Yerel hız ve küçük ayak izi. Yorumlayıcı olmadan yerel bir ikili dosyaya derlenir; sunucular, konteynerler ve uç cihazlar için idealdir.
- Bellek güvenliği. Rust'ın sahiplik modeli, çöp toplayıcı olmadan çalışma zamanı hatalarının tüm sınıflarını ortadan kaldırır.
- Tüm YOLO görevleri. Tek bir API'den tespit, segmentasyon, poz, OBB, sınıflandırma ve anlamsal segmentasyon.
- Geniş donanım desteği. CPU'nun yanı sıra derleme zamanında seçilen CUDA, TensorRT, CoreML, OpenVINO, DirectML, ROCm ve XNNPACK yürütme sağlayıcıları.
- GPU tarafında ön işleme. İsteğe bağlı bir birleşik CUDA çekirdeği; sıfır kopyalı bir giriş yolu için letterbox, normalleştirme ve düzen dönüştürmeyi cihaz üzerinde tutar.
- Otomatik indirme. Bilinen YOLO model adları ve örnek varlıklar ilk kullanımda otomatik olarak indirilir.
Bu sayfa bağımsız Rust crate'ini kapsar. Python iş akışı (eğitim, doğrulama, dışa aktarma ve tahmin) için ana Hızlı Başlangıç kılavuzuna ve Tahmin modu sayfasına bak. Herhangi bir Ultralytics modelini ONNX entegrasyonu ile ONNX'e dışa aktar ve ardından burada çalıştır.
Link to this sectionKurulum#
Rust 1.89 veya daha yenisi gereklidir. video özelliği ayrıca sistemde FFmpeg 7+ kurulu olmasını gerektirir.
# Install the command-line tool from crates.io
cargo install ultralytics-inference
# Or with GPU support compiled in
cargo install ultralytics-inference --features cuda,tensorrtİkili dosya, Linux ve macOS'te ~/.cargo/bin/ultralytics-inference konumuna veya Windows'ta %USERPROFILE%\.cargo\bin\ dizinine yerleştirilir.
Link to this sectionCLI hızlı başlangıç#
CLI, bir predict alt komutu sunar. Hiçbir bağımsız değişken olmadan çalıştırıldığında bir nano tespit modeli ve örnek görüntüler indirir, çıkarımı çalıştırır ve açıklamalı sonuçları runs/detect/predict dizinine kaydeder.
# Detect on the built-in samples (downloads model and images)
ultralytics-inference predict
# Detect on your own image
ultralytics-inference predict --model yolo26n.onnx --source image.jpg
# Segmentation (auto-downloads yolo26n-seg.onnx)
ultralytics-inference predict --task segment --source image.jpg
# Pose on a video, shown live in a window
ultralytics-inference predict --task pose --source video.mp4 --show
# Tune thresholds and filter to specific classes
ultralytics-inference predict --source image.jpg --conf 0.5 --iou 0.45 --classes "0,1,2"
# Run a whole folder on the GPU in half precision
ultralytics-inference predict --source images/ --device cuda:0 --halfYaygın bayraklar:
| Bayrak | Varsayılan | Açıklama |
|---|---|---|
--model, -m | yolo26n.onnx | Bir ONNX modelinin yolu; bilinen bir YOLO adı otomatik olarak indirilir. |
--task | detect | detect, segment, pose, obb, classify, semantic seçeneklerinden biri. |
--source, -s | örnek | Görüntü, dizin, glob, video, web kamerası dizini veya URL. |
--conf | 0.25 | Güven eşiği. |
--iou | 0.7 | Maksimum olmayan bastırma (NMS) için IoU eşiği. |
--imgsz | model meta verileri | Çıkarım görüntü boyutu. |
--device | cpu | Yürütme cihazı, örneğin cuda:0, coreml, tensorrt:0. |
--half | false | FP16 yarı hassasiyetli çıkarım. |
--save | true | Açıklamalı sonuçları runs/<task>/predict dizinine kaydet. |
--show | false | Sonuçları bir pencerede göster. |
--classes | tümü | Tespitleri sınıf kimliklerine göre filtrele, örneğin "0,1,2". |
Link to this sectionKütüphane hızlı başlangıç#
Bir model yükle ve tahmin çalıştır. Sınıf adları, görev türü ve görüntü boyutu gibi model meta verileri ONNX dosyasından otomatik olarak okunur.
use ultralytics_inference::YOLOModel;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Metadata (classes, task, imgsz) is parsed from the model.
let mut model = YOLOModel::load("yolo26n.onnx")?;
let results = model.predict("image.jpg")?;
for result in &results {
if let Some(boxes) = &result.boxes {
for i in 0..boxes.len() {
let class_id = boxes.cls()[i] as usize;
let conf = boxes.conf()[i];
let name = result.names.get(&class_id).map_or("unknown", |s| s.as_str());
println!("{name} {conf:.2}");
}
}
}
Ok(())
}Eşikleri, görüntü boyutunu, hassasiyeti ve cihazı bir oluşturucu API ile kontrol etmek için InferenceConfig kullan:
use ultralytics_inference::{Device, InferenceConfig, YOLOModel};
let config = InferenceConfig::new()
.with_confidence(0.5)
.with_iou(0.45)
.with_imgsz(640, 640)
.with_device(Device::Cuda(0))
.with_half(true);
let mut model = YOLOModel::load_with_config("yolo26n.onnx", config)?;
let results = model.predict("image.jpg")?;Her görev Results üzerinde farklı bir alanı doldurur. Aşağıdaki her sekme eksiksiz ve çalıştırılabilir bir programdır; model ve örnek girdiler ilk çalıştırmada otomatik olarak indirilir. Kendi dosyaların üzerinde çalıştırmak için predict_default() yerine predict("image.jpg") kullan.
use ultralytics_inference::YOLOModel;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut model = YOLOModel::load("yolo26n.onnx")?;
let results = model.predict_default()?;
for result in &results {
if let Some(boxes) = &result.boxes {
println!("{} detections", boxes.len());
let xyxy = boxes.xyxy(); // rows of [x1, y1, x2, y2]
for i in 0..boxes.len() {
let class_id = boxes.cls()[i] as usize;
let name = result.names.get(&class_id).map_or("unknown", |s| s.as_str());
println!(" {name} {:.2} {:?}", boxes.conf()[i], xyxy.row(i).to_vec());
}
}
}
Ok(())
}Link to this sectionDesteklenen görevler#
Tüm Ultralytics görevleri desteklenir. --model atlandığında, seçilen görev için eşleşen nano model otomatik olarak indirilir.
| Görev | --task | Çıktı | Varsayılan model |
|---|---|---|---|
| Tespit | detect | Sınırlayıcı kutular ve sınıflar | yolo26n.onnx |
| Örnek segmentasyonu | segment | Kutular artı örnek başına maskeler | yolo26n-seg.onnx |
| Pose | pose | Kutular artı anahtar noktalar | yolo26n-pose.onnx |
| Yönlendirilmiş kutular | obb | Döndürülmüş sınırlayıcı kutular | yolo26n-obb.onnx |
| Sınıflandırma | classify | Sınıf olasılıkları | yolo26n-cls.onnx |
| Anlamsal segmentasyon | semantic | Piksel başına sınıf haritası | yolo26n-sem.onnx |
Link to this sectionModel uyumluluğu#
ONNX'e aktarılan herhangi bir Ultralytics modeli yerel dosyadan yüklenebilir. Standart YOLO26, YOLO11 ve YOLOv8 model adları için n, s, m, l ve x boyutlarında otomatik indirme mevcuttur:
| Model ailesi | Otomatik indirilebilir varyantlar |
|---|---|
| YOLO26 | yolo26{n,s,m,l,x}.onnx, -seg, -pose, -obb, -cls ve -sem |
| YOLO11 | yolo11{n,s,m,l,x}.onnx, -seg, -pose, -obb ve -cls |
| YOLOv8 | yolov8{n,s,m,l,x}.onnx, -seg, -pose, -obb ve -cls |
Anlamsal segmentasyon (-sem) sadece YOLO26'ya özeldir.
Link to this sectionGiriş kaynakları#
--source bağımsız değişkeni (ve kütüphanedeki Source türü), dizeden otomatik olarak algılanan birçok giriş türünü kabul eder:
| Kaynak | Örnek | Notlar |
|---|---|---|
| Görsel | image.jpg | Tek dosya. |
| Dizin | images/ | Klasördeki tüm görüntüler. |
| Glob | images/*.jpg | Kabuk stili desen. |
| Video | video.mp4 | video özelliğini gerektirir. |
| Web kamerası | 0 | video özelliğini gerektirir. |
| Stream | rtsp://... | video özelliğini gerektirir. |
| URL | https://example.com/image.jpg | Uzak görüntü indirme. |
Link to this sectionCihazlar ve yürütme sağlayıcıları#
Çıkarım varsayılan olarak CPU üzerinde çalışır. GPU ve hızlandırıcı arka uçları, Cargo özellikleri olarak derlenir ve çalışma zamanında --device (CLI) veya Device (kütüphane) ile seçilir.
| Cihaz dizesi | Device varyantı | Derleme özelliği | Donanım |
|---|---|---|---|
cpu | Device::Cpu | dahili | Herhangi bir CPU |
cuda:0 | Device::Cuda(0) | cuda | NVIDIA GPU |
tensorrt:0 | Device::TensorRt(0) | tensorrt | NVIDIA GPU, optimize edilmiş |
coreml | Device::CoreMl | coreml | Apple Silicon / macOS |
openvino | Device::OpenVino | openvino | Intel CPU / iGPU |
directml:0 | Device::DirectMl(0) | directml | Windows GPU |
rocm:0 | Device::Rocm(0) | rocm | AMD GPU |
xnnpack | Device::Xnnpack | xnnpack | Optimize edilmiş CPU |
# Build the CLI with the providers you need
cargo install ultralytics-inference --features cuda,tensorrtLink to this sectionGPU hızlandırma ve CUDA ön işleme#
NVIDIA donanımında, cuda özelliği CUDA yürütme sağlayıcısını etkinleştirir ve tensorrt daha fazla optimizasyon için TensorRT sağlayıcısını ekler. Mümkün olan en düşük gecikme süresi için, cuda-preprocess özelliği ön işlemeyi GPU üzerine taşır.
cuda-preprocess letterbox yeniden boyutlandırmayı, normalleştirmeyi ve HWC-to-CHW düzeni dönüşümünü tek bir birleşik CUDA çekirdeği olarak çalıştırır, ardından sonucu modele sıfır kopyalı cihaz tensörü olarak aktarır. Bu, görüntü başına CPU ön işleme maliyetini ve ana bilgisayardan cihaza kopyalama işlemini ortadan kaldırır; bu da yüksek verimli yığınlar ve gerçek zamanlı akışlar için en önemli noktadır.
# Build with fused GPU preprocessing (implies cuda + tensorrt)
cargo build --release --features cuda-preprocessHızlı yol, aşağıdaki koşulların tümü sağlandığında herhangi bir API değişikliği olmadan otomatik olarak kullanılır: özellik derlemeye dahil edilmişse, cihaz CUDA veya TensorRT ise, görev detect, segment, pose, OBB veya anlamsal segmentasyon ise ve model FP32 giriş kullanıyorsa. Varsayılan olarak etkindir ve model bazında kapatılabilir:
use ultralytics_inference::{Device, InferenceConfig};
let config = InferenceConfig::new()
.with_device(Device::TensorRt(0))
.with_cuda_preprocess(false); // force CPU preprocessingcuda-preprocess, derleme zamanında eşleşen bir CUDA araç seti gerektirir ve birleşik ön işleme çekirdeği için çalışma zamanında NVRTC kullanır. Sürüm gereksinimleri ve sorun giderme için CUDA ve TensorRT hızlandırma kılavuzuna bak.
Link to this sectionCargo özellikleri#
Özellikler derleme zamanında etkinleştirilir. Varsayılanlar açıklama ekleme ve canlı görüntülemeyi kapsar.
| Özellik | Varsayılan | Amaç |
|---|---|---|
annotate | evet | Kutuları, maskeleri, anahtar noktaları ve etiketleri çizer; --save için gereklidir. |
visualize | evet | Real-time window display for --show. |
video | hayır | Video dosyalarını okuma ve yazma (FFmpeg 7+ gerektirir). |
cuda | hayır | NVIDIA CUDA yürütme sağlayıcısı. |
tensorrt | hayır | NVIDIA TensorRT yürütme sağlayıcısı. |
cuda-preprocess | hayır | Sıfır kopyalı giriş ile birleşik GPU ön işleme (cuda, tensorrt içerir). |
coreml | hayır | Apple CoreML yürütme sağlayıcısı. |
openvino | hayır | Intel OpenVINO yürütme sağlayıcısı. |
rocm | hayır | AMD ROCm yürütme sağlayıcısı. |
directml | hayır | Windows DirectML yürütme sağlayıcısı. |
Kolaylık grupları ilgili sağlayıcıları bir araya getirir: nvidia (cuda, tensorrt), amd (rocm, migraphx), intel (openvino, onednn), mobile (nnapi, coreml, qnn) ve all (annotate, visualize, video). nnapi, qnn, xnnpack, webgpu ve diğerleri gibi ek sağlayıcılar da mevcuttur.
CLI'yı kurarken veya kütüphaneyi eklerken özellikleri etkinleştir:
cargo install ultralytics-inference --features video
cargo install ultralytics-inference --features cuda,tensorrt[dependencies]
ultralytics-inference = { version = "0.0.18", features = ["video"] }Link to this sectionÇıktı ve kaydetme#
Varsayılan olarak, tahminler açıklama eklenmiş halde otomatik artan bir çalışma dizinine kaydedilir:
runs/
└── detect/
└── predict/ # then predict2, predict3, ...
└── image.jpg # annotated resultAlt klasör görevle eşleşir (runs/segment/, runs/pose/ vb.). Video kaynakları için açıklama eklenmiş çıktı bir video dosyası olarak yazılır; bunun yerine ayrı kareleri yazmak için --save-frames kullan. semantic görevi için, --save-json pikseller arası sınıf haritası PNG'lerini bir results/ alt klasörü altında yazar. Açıklama eklenmiş görüntü ve video kaydetme annotate özelliğini gerektirir; anlamsal sınıf haritası PNG dışa aktarımı gerektirmez. Video girişi ve çıkışı video özelliğini gerektirir.
Link to this sectionSSS#
Link to this sectionPython yüklü olması gerekiyor mu?#
Hayır. Crate, dışa aktarılmış ONNX modellerini doğrudan ONNX Runtime aracılığıyla çalıştırır. Python yalnızca modelleri önceden Ultralytics paketi ile eğitirsen veya dışa aktarırsan gerekir.
Link to this sectionHangi modelleri çalıştırabilirim?#
ONNX'e dışa aktarılmış herhangi bir Ultralytics YOLO modeli; buna YOLO26, YOLO11 ve YOLOv8 dahildir. Bilinen model isimleri otomatik olarak indirilir; ayrıca --model komutunu herhangi bir yerel .onnx dosyasına yönlendirebilirsin.
Link to this sectionModel dosyasını nasıl alırım?#
Python paketinden dışa aktar, örneğin ONNX entegrasyonu ile veya ilk çalıştırmada CLI'nın seçilen görev için standart bir nano model indirmesine izin ver.
Link to this sectionVideo destekleniyor mu?#
Evet, video özelliği etkinleştirilmişse ve sistemde FFmpeg 7+ yüklüyse. Bu, video dosyalarını, web kameralarını ve RTSP/RTMP/HTTP akışlarını kapsar.
Link to this sectionannotate ve visualize özellikleri ne işe yarar?#
Her ikisi de varsayılan olarak etkindir. annotate, görüntü üzerine kutular, maskeler, anahtar noktalar ve sınıf etiketleri çizer ve açıklama eklenmiş sonuçları yazmak için --save tarafından gereklidir. visualize ise --show için canlı bir pencere açar. Yalnızca programlı olarak sonuç döndüren daha küçük, başlıksız bir derleme için bunları cargo build --no-default-features ile devre dışı bırak (gerektiğinde bireysel özellikleri tekrar ekle).
Link to this sectionTam API referansı nerede?#
Bu sayfa üst düzey bir genel bakıştır. Her genel yapı, yöntem ve yapılandırma seçeneği için tam, tip bazlı API referansı, doğrudan kaynaktan oluşturulan docs.rs üzerinde yayınlanmaktadır.