Meet YOLO26: next-gen vision AI.

Link to this sectionRust用 Ultralytics Inference#

GitHub Crates.io docs.rs Downloads MSRV

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.

このプロジェクトは単一のクレート ultralytics-inference として提供されており、2通りの方法で使用できます。クイックな予測やバッチ処理用の CLI として、または Rust アプリケーションに直接組み込む ライブラリ として利用可能です。あらゆる Ultralytics タスクをサポートしており、統一されたデバイスインターフェースを通じて幅広いハードウェアバックエンドに対応します。

Link to this sectionRustでの推論を選ぶ理由は?#

  • ネイティブな速度と軽量なフットプリント。 インタプリタなしでネイティブバイナリにコンパイルされるため、サーバー、コンテナ、エッジデバイス に最適です。
  • メモリ安全性。 Rust の所有権モデルにより、ガベージコレクタなしで実行時エラーの全クラスを除去します。
  • すべての YOLO タスクに対応。 検出、セグメンテーション、姿勢推定、OBB、分類、セマンティックセグメンテーションを単一の API で実現します。
  • 幅広いハードウェアサポート。 CPU に加え、ビルド時に選択可能な CUDA、TensorRT、CoreML、OpenVINO、DirectML、ROCm、XNNPACK 実行プロバイダーをサポートします。
  • GPUサイドの前処理。 オプションの融合 CUDA カーネルにより、レターボックス処理、正規化、レイアウト変換をデバイス上で保持し、ゼロコピーの入力パスを実現します。
  • 自動ダウンロード。 よく知られた YOLO モデル名とサンプルアセットは、初回使用時に自動的にダウンロードされます。
Python パッケージをお探しですか?

このページではスタンドアロンの Rust クレートについて解説しています。Python ワークフロー(トレーニング、検証、エクスポート、予測)については、メインの クイックスタート および Predict モード を参照してください。あらゆる Ultralytics モデルを ONNX 統合 を使用して ONNX にエクスポートし、ここで実行できます。

Link to this sectionインストール#

Rust 1.89 以降が必要です。video 機能を使用するには、システムに FFmpeg 7 以降がインストールされている必要があります。

# 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

バイナリは ~/.cargo/bin/ultralytics-inference (Linux および macOS) または Windows の %USERPROFILE%\.cargo\bin\ に配置されます。

Link to this sectionCLI クイックスタート#

CLI には predict サブコマンドが用意されています。引数なしで実行すると、Nano 検出モデルとサンプル画像がダウンロードされ、推論が実行され、アノテーション結果が runs/detect/predict に保存されます。

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

一般的なフラグ:

フラグデフォルト説明
--model, -myolo26n.onnxONNX モデルへのパス。既知の YOLO 名を指定すると自動的にダウンロードされます。
--taskdetectdetect, segment, pose, obb, classify, semantic のいずれか。
--source, -sサンプル画像、ディレクトリ、glob、動画、Webカメラのインデックス、または URL。
--conf0.25信頼度の閾値。
--iou0.7非最大値抑制(NMS)のための IoU 閾値。
--imgszモデルメタデータ推論画像サイズ。
--devicecpu実行デバイス。例: cuda:0, coreml, tensorrt:0
--halffalseFP16 半精度推論。
--savetrueアノテーション結果を runs/<task>/predict に保存します。
--showfalseウィンドウに結果を表示します。
--classesすべてクラス ID で検出結果をフィルタリング。例: "0,1,2"

Link to this sectionライブラリ クイックスタート#

モデルをロードして予測を実行します。クラス名、タスクタイプ、画像サイズなどのモデルメタデータは ONNX ファイルから自動的に読み込まれます。

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

InferenceConfig を使用して、ビルダー API で閾値、画像サイズ、精度、デバイスを制御できます:

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")?;

各タスクは Results の異なるフィールドに入力されます。以下の各タブは完全な実行可能プログラムです。モデルとサンプル入力は初回実行時に自動的にダウンロードされます。predict_default()predict("image.jpg") に置き換えると、独自のファイルで実行できます。

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 sectionサポートされているタスク#

すべての Ultralytics タスク がサポートされています。--model が省略された場合、選択したタスクに対応する Nano モデルが自動的にダウンロードされます。

タスク--task出力デフォルトモデル
検出detectバウンディングボックスとクラスyolo26n.onnx
インスタンスセグメンテーションsegmentボックスおよびインスタンスごとのマスクyolo26n-seg.onnx
Pose(姿勢推定)poseボックスおよびキーポイントyolo26n-pose.onnx
指向性ボックスobb回転バウンディングボックスyolo26n-obb.onnx
分類classifyクラス確率yolo26n-cls.onnx
セマンティックセグメンテーションsemanticピクセル単位のクラスマップyolo26n-sem.onnx

Link to this sectionモデル互換性#

ONNX にエクスポートされたあらゆる Ultralytics モデルをローカルファイルから読み込むことができます。標準的な YOLO26、YOLO11、および YOLOv8 モデル名(サイズ n, s, m, l, x)については自動ダウンロードが利用可能です:

モデルファミリー自動ダウンロード可能なバリアント
YOLO26yolo26{n,s,m,l,x}.onnx, -seg, -pose, -obb, -cls, -sem
YOLO11yolo11{n,s,m,l,x}.onnx, -seg, -pose, -obb, -cls
YOLOv8yolov8{n,s,m,l,x}.onnx, -seg, -pose, -obb, -cls

セマンティックセグメンテーション (-sem) は YOLO26 のみです。

Link to this section入力ソース#

--source 引数(およびライブラリ内の Source 型)は多くの入力形式を受け入れ、文字列から自動的に検出されます:

ソース注意点
画像image.jpg単一ファイル。
ディレクトリimages/フォルダ内のすべての画像。
Globimages/*.jpgシェルスタイルのパターン。
動画video.mp4video 機能が必要です。
Webcam0video 機能が必要です。
ストリームrtsp://...video 機能が必要です。
URLhttps://example.com/image.jpgリモート画像のダウンロード。

Link to this sectionデバイスと実行プロバイダー#

推論はデフォルトで CPU 上で実行されます。GPU およびアクセラレータバックエンドは Cargo features としてコンパイルされ、実行時に --device (CLI) または Device (ライブラリ) で選択されます。

デバイス文字列Device バリアントビルド機能ハードウェア
cpuDevice::Cpu組み込み任意の CPU
cuda:0Device::Cuda(0)cudaNVIDIA GPU
tensorrt:0Device::TensorRt(0)tensorrtNVIDIA GPU、最適化済み
coremlDevice::CoreMlcoremlApple Silicon / macOS
openvinoDevice::OpenVinoopenvinoIntel CPU / iGPU
directml:0Device::DirectMl(0)directmlWindows GPU
rocm:0Device::Rocm(0)rocmAMD GPU
xnnpackDevice::Xnnpackxnnpack最適化済み CPU
# Build the CLI with the providers you need
cargo install ultralytics-inference --features cuda,tensorrt

Link to this sectionGPU アクセラレーションおよび CUDA 前処理#

NVIDIA ハードウェアでは、cuda 機能により CUDA 実行プロバイダーが有効になり、tensorrt はさらなる最適化のために TensorRT プロバイダーを追加します。可能な限り低いレイテンシを実現するため、cuda-preprocess 機能は前処理を GPU 上に移行します。

cuda-preprocess は、レターボックスリサイズ、正規化、および HWC から CHW へのレイアウト変換を単一の統合 CUDA カーネルとして実行し、その結果をゼロコピーのデバイステンソルとしてモデルに提供します。これにより、画像ごとの CPU 前処理コストとホストからデバイスへのコピーが削減され、高スループットのバッチやリアルタイムストリームにおいて最大限の効果を発揮します。

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

高速パスは、以下の条件がすべて満たされている場合、API を変更することなく自動的に使用されます:機能がコンパイルされていること、デバイスが CUDA または TensorRT であること、タスクが detect、segment、pose、OBB、または semantic segmentation であること、そしてモデルが FP32 入力を使用していることです。デフォルトで有効になっており、モデルごとに無効化することも可能です:

use ultralytics_inference::{Device, InferenceConfig};

let config = InferenceConfig::new()
    .with_device(Device::TensorRt(0))
    .with_cuda_preprocess(false); // force CPU preprocessing
CUDA ツールキットを一致させる

cuda-preprocess はビルド時に一致する CUDA ツールキットを必要とし、統合前処理カーネルの実行時に NVRTC を使用します。バージョン要件およびトラブルシューティングについては、CUDA and TensorRT acceleration guide を参照してください。

Link to this sectionCargo 機能#

機能はビルド時に有効化されます。デフォルト設定にはアノテーションとライブ表示が含まれています。

機能デフォルト目的
annotateはいボックス、マスク、キーポイント、およびラベルを描画します。--save に必要です。
visualizeはい--show 用のリアルタイムウィンドウ表示。
videoいいえビデオファイルの読み込みと書き込み(FFmpeg 7+ が必要)。
cudaいいえNVIDIA CUDA 実行プロバイダー。
tensorrtいいえNVIDIA TensorRT 実行プロバイダー。
cuda-preprocessいいえゼロコピー入力を備えた統合 GPU 前処理(cuda および tensorrt を含む)。
coremlいいえApple CoreML 実行プロバイダー。
openvinoいいえIntel OpenVINO 実行プロバイダー。
rocmいいえAMD ROCm 実行プロバイダー。
directmlいいえWindows DirectML 実行プロバイダー。

便利なグループとして、関連するプロバイダーをまとめた nvidia (cuda, tensorrt)、amd (rocm, migraphx)、intel (openvino, onednn)、mobile (nnapi, coreml, qnn)、および all (annotate, visualize, video) があります。nnapiqnnxnnpackwebgpu など、その他のプロバイダーも利用可能です。

CLI をインストールする際やライブラリを追加する際に機能を有効にします:

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出力と保存#

デフォルトでは、予測結果はアノテーションが付加され、自動的にインクリメントされる実行ディレクトリに保存されます:

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

サブフォルダーはタスク名(runs/segment/runs/pose/ など)に対応します。ビデオソースの場合、アノテーション済み出力はビデオファイルとして書き込まれます。各フレームを個別に書き出すには --save-frames を指定してください。semantic タスクでは、--save-json により results/ サブフォルダー内にピクセルごとのクラスマップ PNG が書き出されます。アノテーション済み画像およびビデオの保存には annotate 機能が必要です。セマンティッククラスマップ PNG のエクスポートには不要です。ビデオ入力および出力には video 機能が必要です。

Link to this sectionよくある質問 (FAQ)#

Link to this sectionPython をインストールする必要がありますか?#

いいえ。このクレートは、エクスポートされた ONNX モデルを ONNX Runtime を通じて直接実行します。Python が必要なのは、事前に Ultralytics パッケージでモデルをトレーニングまたは エクスポート する場合のみです。

Link to this sectionどのモデルを実行できますか?#

Any Ultralytics YOLO model exported to ONNX, including YOLO26, YOLO11, and YOLOv8. Known model names download automatically; you can also point --model at any local .onnx file.

Link to this sectionモデルファイルを入手するにはどうすればよいですか?#

ONNX 統合 などを使用して Python パッケージからエクスポートするか、初回実行時に CLI で選択したタスク用の標準的な nano モデルをダウンロードさせてください。

Link to this sectionビデオはサポートされていますか?#

はい、video 機能を有効にし、システムに FFmpeg 7+ をインストールすることでサポートされます。ビデオファイル、Web カメラ、および RTSP/RTMP/HTTP ストリームに対応しています。

Link to this sectionannotate および visualize 機能は何をしますか?#

どちらもデフォルトで有効になっています。annotate は画像にボックス、マスク、キーポイント、クラスラベルを描画し、--save でアノテーション済み結果を書き出すために必要です。visualize--show のためのライブウィンドウを開きます。結果をプログラムから取得するだけの、より軽量なヘッドレスビルドにする場合は、cargo build --no-default-features を実行してこれらを無効にし、必要に応じて個別の機能を追加してください。

Link to this section完全な API リファレンスはどこにありますか?#

このページは概要です。すべてのパブリックな構造体、メソッド、設定オプションに関する完全な型別の API リファレンスは、ソースコードから直接生成され、docs.rs に公開されています。

貢献者

コメント