YOLO Vision 2026:

Rust için Ultralytics Inference#

Ultralytics Inference GitHub Ultralytics Inference Crates.io Ultralytics Inference docs.rs Ultralytics Inference Downloads Ultralytics Inference MSRV

Ultralytics Inference, Rust ile yazılmış yüksek performanslı bir YOLO çıkarım kütüphanesi ve komut satırı aracıdır. Çıkarım anında Python çalışma zamanına ihtiyaç duymadan; görüntüler, videolar, web kameraları ve akışlar üzerinde hızlı, bellek açısından güvenli tahminler sunmak için dışarı aktarılmış ONNX modellerini ONNX Runtime üzerinden çalıştırır.

Bu proje, iki şekilde kullanabileceğiniz tek bir ultralytics-inference kasası (crate) olarak gelir: hızlı tahminler ve toplu işler için bir CLI veya doğrudan Rust uygulamanıza gömülmüş bir kütüphane olarak. Tek tip bir cihaz arayüzü aracılığıyla her Ultralytics görevini ve geniş bir donanım arka plan programı setini destekler.

Neden Rust ile çıkarım?#

  • Yerel hız ve küçük ayak izi. Sunucular, konteynerler ve uç cihazlar için ideal olan, yorumlayıcı olmadan yerel bir ikili dosyaya derlenir.
  • 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 nesne tespiti, segmentasyon, anlamsal segmentasyon, derinlik tahmini, sınıflandırma, poz tahmini ve OBB.
  • 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.
Python paketini mi arıyorsun?

Bu sayfa, bağımsız Rust kasasını kapsar. Python iş akışı (eğitim, doğrulama, dışarı aktarma ve tahmin) için ana Hızlı Başlangıç ve Tahmin modu belgelerine bakın. Herhangi bir Ultralytics modelini ONNX entegrasyonu ile ONNX'e aktarın, ardından burada çalıştırın.

Kurulum#

Rust 1.89 veya üstü 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 ~/.cargo/bin/ultralytics-inference (Linux ve macOS) veya Windows üzerinde %USERPROFILE%\.cargo\bin\ konumuna yerleştirilir.

CLI hızlı başlangıç#

CLI, bir predict alt komutu sunar. Argümansız olduğunda nano nesne tespiti modeli ile örnek görseller indirir, çıkarım çalıştırır ve açıklama eklenmiş sonuçları runs/detect/predict konumuna 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

# Depth estimation (auto-downloads yolo26n-depth.onnx)
ultralytics-inference predict --task depth --source image.jpg

# 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 --half

Yaygın bayraklar:

BayrakVarsayılanAçıklama
--model, -myolo26n.onnxBir ONNX modelinin yolu; bilinen bir YOLO adı otomatik olarak indirilir.
--taskdetectdetect, segment, pose, obb, classify, semantic, depth öğelerinden biri.
--source, -sörnekGörüntü, dizin, glob, video, web kamerası dizini veya URL.
--conf0.25Güven eşiği.
--iou0.7Maksimum olmayan bastırma (NMS) için IoU eşiği.
--imgszmodel meta verileriÇıkarım görüntü boyutu.
--devicecpuÇalıştırma cihazı, örneğin cuda:0, coreml, tensorrt:0.
--halffalseFP16 yarı hassasiyetli çıkarım.
--savetrueAçıklama eklenmiş sonuçları runs/<task>/predict konumuna kaydet.
--showfalseSonuçları bir pencerede göster.
--classestümüAlgılamaları sınıf kimliklerine göre filtrele, örneğin "0,1,2".

Kü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şik değerlerini, görsel boyutunu, hassasiyeti ve cihazı bir oluşturucu (builder) API ile kontrol etmek için InferenceConfig kullanın:

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, çalıştırılabilir bir programdır; model ve örnek girdiler ilk çalıştırıldığında otomatik olarak indirilir. Kendi dosyalarınızda çalıştırmak için predict_default() değerini predict("image.jpg") ile değiştirin.

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(())
}

Desteklenen görevler#

Tüm Ultralytics görevleri desteklenir. --model atlandığında, seçilen görev için eşleşen nano modeli otomatik olarak indirilir.

Görev--taskÇıktıVarsayılan model
TespitdetectSınırlayıcı kutular ve sınıflaryolo26n.onnx
Örnek segmentasyonusegmentKutular artı örnek başına maskeleryolo26n-seg.onnx
Anlamsal segmentasyonsemanticPiksel başına sınıf haritasıyolo26n-sem.onnx
Derinlik tahminidepthMetre cinsinden piksel başına derinlik haritasıyolo26n-depth.onnx
SınıflandırmaclassifySınıf olasılıklarıyolo26n-cls.onnx
PoseposeKutular artı anahtar noktalaryolo26n-pose.onnx
Yönlendirilmiş kutularobbDöndürülmüş sınırlayıcı kutularyolo26n-obb.onnx

Model uyumluluğu#

ONNX'e aktarılan herhangi bir Ultralytics modeli yerel bir dosyadan yüklenebilir. n, s, m, l ve x boyutlarındaki standart YOLO26, YOLO11 ve YOLOv8 model adları için otomatik indirme kullanılabilir:

Model ailesiOtomatik indirilebilir varyantlar
YOLO26yolo26{n,s,m,l,x}.onnx, -seg, -pose, -obb, -cls, -sem ve -depth
YOLO11yolo11{n,s,m,l,x}.onnx, -seg, -pose, -obb ve -cls
YOLOv8yolov8{n,s,m,l,x}.onnx, -seg, -pose, -obb ve -cls

Anlamsal segmentasyon (-sem) ve derinlik tahmini (-depth) yalnızca YOLO26'ya özeldir.

Giriş kaynakları#

--source argümanı (ve kütüphanedeki Source türü), dizeden otomatik olarak algılanan birçok girdi türünü kabul eder:

KaynakÖrnekNotlar
Görselimage.jpgTek dosya.
Dizinimages/Klasördeki tüm görüntüler.
Globimages/*.jpgKabuk stili desen.
Videovideo.mp4video özelliğini gerektirir.
Web kamerası0video özelliğini gerektirir.
Streamrtsp://...video özelliğini gerektirir.
URLhttps://example.com/image.jpgUzak görüntü indirme.

Cihazlar ve yürütme sağlayıcıları#

Çıkarım varsayılan olarak CPU üzerinde çalışır. GPU ve hızlandırıcı arka plan programları Cargo özellikleri olarak derlenir ve çalışma zamanında --device (CLI) veya Device (kütüphane) ile seçilir.

Cihaz dizesiDevice varyantıDerleme özelliğiDonanım
cpuDevice::CpudahiliHerhangi bir CPU
cuda:0Device::Cuda(0)cudaNVIDIA GPU
tensorrt:0Device::TensorRt(0)tensorrtNVIDIA GPU, optimize edilmiş
coremlDevice::CoreMlcoremlApple Silicon / macOS
intel:cpuDevice::IntelCpuopenvinoIntel CPU
intel:gpuDevice::IntelGpuopenvinoIntel GPU
intel:npuDevice::IntelNpuopenvinoIntel NPU
directml:0Device::DirectMl(0)directmlWindows GPU
rocm:0Device::Rocm(0)rocmAMD GPU
xnnpackDevice::XnnpackxnnpackOptimize edilmiş CPU
# Build the CLI with the providers you need
cargo install ultralytics-inference --features cuda,tensorrt

GPU 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 için cuda-preprocess özelliği ön işlemeyi GPU'ya taşır.

cuda-preprocess, letterbox yeniden boyutlandırma, normalleştirme ve HWC'den CHW'ye düzen dönüştürmesini tek bir birleştirilmiş CUDA çekirdeği olarak çalıştırır, ardından sonucu modele sıfır kopyalı bir cihaz tensörü olarak besler. Bu, özellikle yüksek verimli toplu işler (batch) ve gerçek zamanlı akışlar için en önemli husus olan görsel başına CPU ön işleme maliyetini ve ana bilgisayardan cihaza kopyalama maliyetini ortadan kaldırır.

# Build with fused GPU preprocessing (implies cuda + tensorrt)
cargo build --release --features cuda-preprocess

Hızlı yol, aşağıdakilerin tümü geçerli olduğunda API değişikliği olmadan otomatik olarak kullanılır: özellik derlenmişse, cihaz CUDA veya TensorRT ise, görev tespit, segmentasyon, poz tahmini, OBB, anlamsal segmentasyon veya derinlik tahmini ise ve model FP32 girdi 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 preprocessing
CUDA araç setinle eşleştir

cuda-preprocess, derleme zamanında eşleşen bir CUDA araç takımı gerektirir ve birleştirilmiş ö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ın.

Cargo özellikleri#

Özellikler derleme zamanında etkinleştirilir. Varsayılanlar açıklama ekleme ve canlı görüntülemeyi kapsar.

ÖzellikVarsayılanAmaç
annotateevetKutuları, maskeleri, anahtar noktaları ve etiketleri çizer; --save için gereklidir.
visualizeevet--show için gerçek zamanlı pencere ekranı.
videohayırVideo dosyalarını okuma ve yazma (FFmpeg 7+ gerektirir).
cudahayırNVIDIA CUDA yürütme sağlayıcısı.
tensorrthayırNVIDIA TensorRT yürütme sağlayıcısı.
cuda-preprocesshayırSıfır kopyalı giriş ile birleşik GPU ön işleme (cuda, tensorrt içerir).
coremlhayırApple CoreML yürütme sağlayıcısı.
openvinohayırIntel OpenVINO yürütme sağlayıcısı.
rocmhayırAMD ROCm yürütme sağlayıcısı.
directmlhayırWindows DirectML yürütme sağlayıcısı.

Kolaylık sağlayan 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.33", features = ["video"] }

Çı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 result

Alt klasör göreve karşılık gelir (runs/segment/, runs/pose/ vb.). Video kaynakları için açıklama eklenmiş çıktı bir video dosyası olarak yazılır; bunun yerine ayrı kareler yazmak için --save-frames aktarın. semantic görevi için --save-json, bir results/ alt klasörü altında piksel başına sınıf haritası PNG'leri yazar. depth görevi için renkli derinlik haritası, Ultralytics Python plot() çıktısıyla eşleşecek şekilde kaynak görsel üzerine harmanlanır. Açıklama eklenmiş görsel 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.

SSS#

  • Hayır. Kasa, dışarı aktarılan ONNX modellerini doğrudan ONNX Runtime aracılığıyla çalıştırır. Python yalnızca önceden Ultralytics paketi ile modelleri eğitirseniz veya dışarı aktarırsanız gereklidir.

  • YOLO26, YOLO11 ve YOLOv8 dahil olmak üzere ONNX'e aktarılan herhangi bir Ultralytics YOLO modeli. Bilinen model adları otomatik olarak indirilir; ayrıca --model değerini herhangi bir yerel .onnx dosyasına yönlendirebilirsiniz.

  • Örneğin ONNX entegrasyonu ile Python paketinden dışarı aktarın veya CLI'nin ilk çalıştırmada seçilen görev için standart bir nano model indirmesine izin verin.

  • video özelliği etkinleştirilmiş ve sistemde FFmpeg 7+ kuruluysa evet. Bu, video dosyalarını, web kamalarını ve RTSP/RTMP/HTTP akışlarını kapsar.

  • İkisi de varsayılan olarak etkindir. annotate görsel üzerine kutular, maskeler, anahtar noktalar ve sınıf etiketleri çizer; --save öğesinin açıklama eklenmiş sonuçları yazabilmesi için gereklidir. visualize, --show için canlı bir pencere açar. Yalnızca programatik olarak sonuçlar döndüren daha küçük, başlıksız (headless) bir derleme için bunları cargo build --no-default-features ile devre dışı bırakın (gerektikçe bireysel özellikleri tekrar ekleyin).

  • Bu sayfa üst düzey bir genel bakıştır. Her genel yapı, metot ve yapılandırma seçeneği için eksiksiz, tür bazlı API referansı, doğrudan kaynaktan oluşturularak docs.rs üzerinde yayınlanmaktadır.

Yorumlar