Ultralytics YOLO27:
Get Started

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. Dışa aktarılmış ONNX modellerini ONNX Runtime üzerinden çalıştırarak görüntüler, videolar, web kameraları ve akışlarda hızlı ve bellek güvenli tahminler sunar; çıkarım sırasında Python çalışma zamanı gerekmez.

Proje, iki şekilde kullanabileceğin tek bir crate olan ultralytics-inference olarak sunulur: hızlı tahminler ve toplu işler için CLI olarak ya da Rust uygulamana doğrudan gömülü bir kitaplık olarak. Tüm Ultralytics görevlerini ve tek tip bir aygıt arayüzü üzerinden çok çeşitli donanım arka uçlarını destekler. Tarayıcıda çıkarım için aynı depo @ultralytics/yolo npm paketini yayımlar; kurulum kılavuzuna göz at.

Neden Rust ile çıkarım?#

  • Yerel hız ve küçük ayak izi. Yorumlayıcı gerektirmeyen yerel bir ikili dosyaya derlenir; sunucular, kapsayıcılar ve uç aygıtlar için idealdir.
  • Bellek güvenliği. Rust'ın sahiplik modeli, çöp toplayıcı olmadan çalışma zamanı hatalarının pek çok türünü ortadan kaldırır.
  • Tüm YOLO görevleri. Tek bir API ile algılama, segmentasyon, anlamsal segmentasyon, derinlik tahmini, sınıflandırma, poz ve OBB.
  • Geniş donanım desteği. Derleme zamanında seçilen CPU ve 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ı birleştirilmiş CUDA çekirdeği, letterbox, normalleştirme ve düzen dönüştürme işlemlerini GPU'da çalıştırır ve aygıttan ayrılmadan sonucu modele iletir.
  • Otomatik indirme. Bilinen YOLO model adları ve örnek varlıklar ilk kullanımda otomatik olarak indirilir.
Python paketini mi arıyorsun?

Bu sayfada bağımsız Rust crate'i anlatılır. Python iş akışı (eğitim, doğrulama, dışa aktarma ve tahmin) için ana Hızlı Başlangıç ve Tahmin modu sayfalarına göz at. Herhangi bir Ultralytics modelini ONNX entegrasyonuyla ONNX'e aktar, ardından burada çalıştır.

Kurulum#

Rust 1.89 veya üzeri gereklidir. video özelliği için ayrıca sistemde FFmpeg 6 ile 9 arasında bir sürümün yüklü olması gerekir.

# 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'ta %USERPROFILE%\.cargo\bin\ konumuna yerleştirilir.

CLI hızlı başlangıç#

CLI, predict alt komutunu sunar. Argüman verilmediğinde nano boyutlu bir algılama modelini ve örnek görüntüleri 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 --quantize 16

Yaygın seçenekler:

SeçenekVarsayılanAçıklama
--model, -myolo26n.onnxONNX modelinin yolu; bilinen bir YOLO adı otomatik olarak indirilir.
--taskdetectdetect, segment, semantic, depth, classify, pose veya obb değerlerinden biri.
--source, -sörnekGörüntü, dizin, glob, video, web kamerası indeksi veya URL.
--conf0.25Güven eşiği.
--iou0.7Maksimum olmayan bastırma için IoU eşiği.
--imgszmodel meta verileriÇıkarım görüntüsü boyutu.
--deviceotomatikYürütme aygıtı; örneğin cuda:0, coreml, tensorrt:0.
--max-det300Görüntü başına en fazla tespit sayısı.
--recttrueEn az dolguyla dikdörtgen çıkarımı.
--batch1Çıkarım için toplu iş boyutu.
--quantizemodelin varsayılanıÇıkarım hassasiyeti: 8/int8, 16/fp16, 32/fp32, w8a16 veya w8a32.
--savetrueAçıklama eklenmiş sonuçları runs/<task>/predict konumuna kaydet.
--save-framesfalseVideo dosyası yerine video girdisi için ayrı kareleri kaydet.
--save-jsonfalseAnlamsal segmentasyon sınıf haritası PNG dosyalarını kaydet.
--showfalseSonuçları bir pencerede göster.
--verbosetrueGörüntü başına sonuçları ve zamanlamayı yazdır.
--classestümüTespitleri sınıf kimliklerine göre filtrele; örneğin "0,1,2".

Kütüphaneye hızlı başlangıç#

Bir model yükleyip 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örüntü boyutunu, hassasiyeti ve aygıtı builder API ile denetlemek için InferenceConfig kullan:

use ultralytics_inference::{Device, InferenceConfig, Quantization, YOLOModel};

let config = InferenceConfig::new()
    .with_confidence(0.5)
    .with_iou(0.45)
    .with_imgsz(640, 640)
    .with_device(Device::Cuda(0))
    .with_quantize(Quantization::Fp16);

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, çalıştırılmaya hazır eksiksiz bir programdır; model ve örnek girdiler ilk çalıştırmada otomatik olarak indirilir. Kendi dosyalarında ç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(())
}

Desteklenen görevler#

Tüm Ultralytics görevleri desteklenir. --model belirtilmezse seçilen görev için uygun nano model otomatik olarak indirilir.

Görev--taskÇıktıVarsayılan model
AlgılamadetectSınırlayıcı kutular ve sınıflaryolo26n.onnx
Örnek segmentasyonusegmentKutular ve ö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
PozposeKutular ve anahtar noktalaryolo26n-pose.onnx
Yönlendirilmiş kutularobbDöndürülmüş sınırlayıcı kutularyolo26n-obb.onnx

Model uyumluluğu#

ONNX'e aktarılmış tüm Ultralytics modelleri yerel bir dosyadan yüklenebilir. n, s, m, l ve x boyutlarındaki standart YOLO26, YOLO11 ve YOLOv8 model adları otomatik olarak indirilebilir:

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'da desteklenir. RT-DETR tespit modelleri de çalıştırılabilir ancak otomatik olarak indirilmez: önce bir modeli ONNX'e aktar.

Girdi kaynakları#

--source bağımsız değişkeni (ve kütüphanedeki Source türü), dizgeden otomatik algılanan birçok girdi türünü kabul eder:

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

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

GPU ve hızlandırıcı arka uçları, Cargo özellikleri olarak derlemeye eklenir ve çalışma zamanında --device (CLI) veya Device (kütüphane) ile seçilir. Bir aygıt belirtilmezse derlemeye eklenen sağlayıcılar sabit bir tercih sırasıyla kaydedilir (önce TensorRT, sonra CUDA vb.); bu nedenle yalnızca varsayılan özellikleri içeren bir derleme CPU'da çalışır.

Aygıt dizgesiDevice varyantıDerleme özelliğiDonanım
cpuDevice::CpuyerleşikHerhangi bir CPU
cuda:0Device::Cuda(0)cudaNVIDIA GPU
tensorrt:0Device::TensorRt(0)tensorrtOptimize edilmiş NVIDIA GPU
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ırması ve CUDA ön işleme#

NVIDIA donanımında cuda özelliği CUDA yürütme sağlayıcısını etkinleştirir; tensorrt ise 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, harf kutusu boyutlandırmasını, normalleştirmeyi ve HWC'den CHW'ye düzen dönüşümünü tek bir birleştirilmiş CUDA çekirdeği olarak çalıştırır, ardından sonucu sıfır kopyalı bir aygıt tensörü olarak modele iletir. Ham 8 bitlik kare, ayrı GPU'larda sabitlenmiş bir hazırlama arabelleği üzerinden GPU'ya yüklenmeye devam eder. Çekirdeğin ortadan kaldırdığı işlemler CPU'daki boyutlandırma, normalleştirme ve düzen dönüşümü ile ön işlenmiş tensörün ayrıca yüklenmesidir; bunlar özellikle yüksek verimli toplu işlemlerde ve gerçek zamanlı akışlarda önem taşır.

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

Aşağıdakilerin tümü geçerliyse hızlı yol, API değişikliği gerektirmeden otomatik olarak kullanılır: özellik derlemeye eklenmiştir, aygıt CUDA veya TensorRT'dir, görev detect, segment, pose, OBB, anlamsal segmentasyon (yalnızca tek görüntüler) ya da derinlik tahminidir ve model FP32 girdi kullanır. Bu özellik varsayılan olarak etkindir ve model başına devre dışı bırakılabilir:

use ultralytics_inference::{Device, InferenceConfig};

let config = InferenceConfig::new()
    .with_device(Device::TensorRt(0))
    .with_cuda_preprocess(false); // force CPU preprocessing
CUDA araç takımını eşleştir

cuda-preprocess, derleme sırasında uyumlu 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 bilgileri için CUDA ve TensorRT hızlandırma kılavuzuna bak.

Cargo özellikleri#

Özellikler derleme sırasında etkinleştirilir. Varsayılanlar açıklama ekleme ve canlı görüntüleme özelliklerini kapsar.

ÖzellikVarsayılanAmaç
annotateevetKutuları, maskeleri, anahtar noktaları ve etiketleri çiz; --save için gereklidir.
visualizeevet--show için gerçek zamanlı pencere görüntüleme.
videohayırVideo dosyalarını oku ve yaz (FFmpeg 6–9 gerektirir).
cudahayırNVIDIA CUDA yürütme sağlayıcısı.
tensorrthayırNVIDIA TensorRT yürütme sağlayıcısı.
cuda-preprocesshayırBirleştirilmiş GPU ön işleme (cuda, tensorrt özelliklerini de etkinleştirir).
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, birbiriyle ilişkili 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 kullanılabilir.

CLI'yi yüklerken 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.50", features = ["video"] }

Çıktı ve kaydetme#

Varsayılan olarak tahminlere açıklama eklenir ve sonuçlar numarası otomatik artan bir çalıştırma dizinine kaydedilir:

runs/
└── detect/
    └── predict/          # then predict2, predict3, ...
        └── image.jpg     # annotated result

Alt klasör görevle eşleşir (runs/segment/, runs/pose/ vb.). Video kaynakları için açıklama eklenmiş çıktı video dosyası olarak yazılır; bunun yerine ayrı kareler yazmak için --save-frames değerini ilet. semantic görevi için --save-json, piksel başına sınıf haritası PNG dosyalarını results/ alt klasörüne yazar. depth görevi için renklendirilmiş derinlik haritası kaynak görüntünün üzerine bindirilir ve Ultralytics Python plot() çıktısıyla eşleşir. Açıklama eklenmiş görüntü ve video kaydı için annotate özelliği gerekir; anlamsal sınıf haritası PNG dışa aktarımı için gerekmez. Video girdisi ve çıktısı için video özelliği gerekir.

Sık Sorulan Sorular#

  • Hayır. Bu crate, dışa aktarılmış ONNX modellerini doğrudan ONNX Runtime üzerinden çalıştırır. Python yalnızca modelleri önceden Ultralytics paketiyle eğitmek veya dışa aktarmak için gerekir.

  • ONNX'e aktarılmış tüm Ultralytics YOLO modelleri; YOLO26, YOLO11 ve YOLOv8 dâhil. Bilinen model adları otomatik olarak indirilir; ayrıca --model değerini herhangi bir yerel .onnx dosyasına yönlendirebilirsin.

  • Örneğin ONNX entegrasyonunu kullanarak Python paketinden dışa aktarabilir veya CLI'nin seçilen görev için standart bir nano modeli ilk çalıştırmada indirmesini sağlayabilirsin.

  • Sistemde video özelliği etkin ve FFmpeg 6 ile 9 arasında bir sürüm yüklüyse evet. Bu, video dosyalarını, web kameralarını ve RTSP/RTMP/HTTP akışlarını kapsar.

  • Her ikisi de varsayılan olarak etkindir. annotate, görüntüye kutular, maskeler, kilit noktaları ve sınıf etiketleri çizer ve açıklama eklenmiş sonuçları yazmak için --save özelliği gereklidir. visualize, --show için canlı bir pencere açar. Yalnızca sonuçları programatik olarak döndüren daha küçük, başsız bir derleme için bu özellikleri cargo build --no-default-features ile devre dışı bırak (gerektikçe özellikleri tek tek yeniden etkinleştir).

  • Bu sayfa üst düzey bir genel bakış sunar. Herkese açık tüm struct'ların, metotların ve yapılandırma seçeneklerinin tür bazında eksiksiz API başvuru belgesi, doğrudan kaynak kodundan oluşturularak docs.rs üzerinde yayımlanır.

Yorumlar