Ultralytics YOLOによるモデル推論#
はじめに#
機械学習とコンピュータビジョンの世界において、視覚データを理解するプロセスは、多くの場合、推論(インフェレンス)や予測と呼ばれます。Ultralytics YOLO26は、幅広いデータソースに対して高性能でリアルタイムな推論を行うために最適化された、**予測モード(predict mode)**という強力な機能を提供します。
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
実世界での応用#
| 製造 | スポーツ | 安全性 |
|---|---|---|
![]() | ![]() | ![]() |
| 車両スペアパーツ検出 | サッカー選手検出 | 人転倒検出 |
推論にUltralytics YOLOを使用する理由#
YOLO26の予測モードを多様な推論ニーズに活用すべき理由は以下の通りです。
- 汎用性: 画像、動画、さらにはライブストリームに対しても推論を実行可能です。
- パフォーマンス: 精度を犠牲にすることなく、リアルタイムかつ高速な処理を実現するように設計されています。
- 使いやすさ: 迅速なデプロイとテストのための直感的なPythonおよびCLIインターフェースを提供します。
- 高度なカスタマイズ性: 特定の要件に合わせてモデルの推論動作を調整するための多様な設定やパラメータを用意しています。
- 本番環境対応: 自動スケーリングとモニタリングを備えたUltralytics Platform inference endpointsとしてモデルをデプロイするか、ローカルで推論を実行します。
予測モードの主な機能#
YOLO26の予測モードは堅牢かつ多用途になるよう設計されており、以下の機能を備えています。
- 複数のデータソースへの互換性: データが個別の画像、画像の集合、動画ファイル、リアルタイムビデオストリームのいずれであっても、予測モードが対応します。
- ストリーミングモード: ストリーミング機能を使用して、メモリ効率の高い
Resultsオブジェクトのジェネレータを生成します。これは、予測子のコールメソッドでstream=Trueを設定することで有効になります。すべての結果を含むリストを返すデフォルトの動作(stream=False)とは異なり、stream=Trueは結果を1つずつ生成(yield)するため、長時間の動画やライブストリームにおいて特に便利です。 - バッチ処理: 複数の画像や動画フレームを単一のバッチで処理し、全体の推論時間をさらに削減します。
- 統合の容易さ: 柔軟なAPIにより、既存のデータパイプラインや他のソフトウェアコンポーネントと容易に統合可能です。
Ultralytics YOLO モデルは、推論時に stream=True がモデルに渡された場合、Results オブジェクトの Python リスト、またはメモリ効率の良い Results オブジェクトのジェネレーターのいずれかを返します:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # pretrained YOLO26n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"]) # return a list of Results objects
# Process results list
for result in results:
boxes = result.boxes # Boxes object for bounding box outputs
masks = result.masks # Masks object for segmentation masks outputs
keypoints = result.keypoints # Keypoints object for pose outputs
probs = result.probs # Probs object for classification outputs
obb = result.obb # Oriented boxes object for OBB outputs
result.show() # display to screen
result.save(filename="result.jpg") # save to disk推論ソース#
YOLO26は、以下の表に示すように、推論のためのさまざまなタイプの入力ソースを処理できます。ソースには、静止画、ビデオストリーム、およびさまざまなデータ形式が含まれます。また、各ソースが引数 stream=True ✅ を指定してストリーミングモードで使用できるかどうかも示しています。ストリーミングモードは、すべてのフレームをメモリに読み込む代わりに結果のジェネレータを作成するため、動画やライブストリームの処理に有益です。
メモリを効率的に管理するため、長時間の動画や大規模なデータセットを処理する場合は stream=True を使用してください。stream=False の場合、すべてのフレームまたはデータポイントの結果がメモリに保存されるため、容量がすぐに増加し、大規模な入力でメモリ不足(OOM)エラーを引き起こす可能性があります。対照的に、stream=True はジェネレータを利用するため、現在のフレームまたはデータポイントの結果のみをメモリに保持し、メモリ消費量を大幅に削減してメモリ不足の問題を防ぎます。
| ソース | 例 | タイプ | 注意点 |
|---|---|---|---|
| 画像 | 'image.jpg' | str または Path | 単一の画像ファイル。 |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | 画像へのURL。 |
| スクリーンショット | 'screen' | str | スクリーンショットをキャプチャ。 |
| PIL | Image.open('image.jpg') | PIL.Image | RGBチャンネルを持つHWC形式。 |
| OpenCV | cv2.imread('image.jpg') | np.ndarray | BGRチャンネルを持つHWC形式 uint8 (0-255)。 |
| NumPy | np.zeros((640,1280,3)) | np.ndarray | BGRチャンネルを持つHWC形式 uint8 (0-255)。 |
| torch | torch.zeros(16,3,320,640) | torch.Tensor | RGBチャンネルを持つBCHW形式 float32 (0.0-1.0)。 |
| CSV | 'sources.csv' | str または Path | 画像、動画、またはディレクトリへのパスを含むCSVファイル。 |
| 動画 ✅ | 'video.mp4' | str または Path | MP4、AVIなどの形式のビデオファイル。 |
| ディレクトリ ✅ | 'path/' | str または Path | 画像または動画を含むディレクトリへのパス。 |
| glob ✅ | 'path/*.jpg' | str | 複数のファイルに一致させるためのグロブ(glob)パターン。ワイルドカードとして * 文字を使用します。 |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | YouTube動画へのURL。 |
| ストリーム ✅ | 'rtsp://example.com/media.mp4' | str | RTSP、RTMP、TCPなどのストリーミングプロトコル用のURL、またはIPアドレス。 |
| マルチストリーム ✅ | 'list.streams' | str または Path | 1行につき1つのストリームURLを持つ *.streams テキストファイル(例:8つのストリームがバッチサイズ8で実行されます)。 |
| ウェブカメラ ✅ | 0 | int | 推論を実行するために接続されたカメラデバイスのインデックス。 |
各ソースタイプを使用するためのコード例を以下に示します。
画像ファイルに対して推論を実行。
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objects推論の引数#
model.predict() は、デフォルトを上書きするために推論時に渡すことができる複数の引数を受け入れます:
固定形状対最小矩形(rect)#
デフォルトでは、predictは rect=True を使用し、可能な場合に最小矩形(minimum-rectangle)パディングを有効にします。画像は imgsz に収まるようにスケーリングされ、ストライドの倍数に最も近いようにのみパディングされるため、最終的なテンソルは imgsz よりも小さくなる可能性があります。最小矩形パディングは、バッチ内のすべての画像が同じ形状を持ち、バックエンドがそれをサポートしている場合(PyTorch .pt、または動的ONNX / Triton)にのみ使用されます。それ以外の場合、画像は完全な imgsz ターゲットにパディングされます。
常に完全な imgsz ターゲットにパディングするには、rect=False を使用します。これは、エクスポートされたモデル(ONNX、TensorRT など)に一致する固定の入力サイズが必要な場合に推奨されます。
整数とタプルの imgsz
- 整数の
imgsz=640は、ストライド丸め処理の後に正方形のターゲット(640, 640)になります。 - タプルの
imgsz=(384, 672)は、長方形のターゲットを設定します。rect=Trueおよびauto=Trueを使用する場合、実際のテンソルはこのターゲットよりも小さくなる可能性があります。
トレーニング対予測/エクスポート
トレーニングでは単一の整数 imgsz のみが受け入れられます([h, w] リストは最大値に強制されます)。予測(Predict)およびエクスポートでは、整数または (height, width) タプルのいずれかが受け入れられます。
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)推論の引数:
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
source | str、int、または None | None | 推論用のデータソースを指定します。画像パス、動画ファイル、ディレクトリ、URL、またはライブフィードのデバイスIDを指定できます。省略した場合、警告がログに記録され、モデルは内蔵のデモアセット(ultralytics/assets、またはOBB用のデモURL)にフォールバックします。幅広い形式とソースをサポートし、さまざまなタイプの入力にわたる柔軟なアプリケーションを可能にします。 |
conf | float | 0.25 | 検出の最小信頼度しきい値を設定します。このしきい値未満の信頼度で検出されたオブジェクトは無視されます。この値を調整することで、誤検出を減らすことができます。 |
iou | float | 0.7 | 非最大値抑制(NMS)のためのIoU(Intersection Over Union)閾値。値が低いほど、重なり合うボックスが排除されて検出数が減り、重複を減らすのに役立ちます。 |
imgsz | int または tuple | 640 | レターボックスのターゲット。整数を指定すると正方形の N×N になり、タプルを指定すると (height, width) になります。rect=True を使用すると、最小矩形パディングにより、実際のテンソルがこのターゲットよりも小さくなる場合があります。固定サイズにするには rect=False を使用してください。固定形状と最小矩形を参照してください。 |
rect | bool | True | True の場合、可能な限り最小矩形パディングを使用します(同じ形状のバッチとサポートされているバックエンド)。False の場合、常に完全な imgsz にパディングします。固定形状と最小矩形を参照してください。 |
quantize | int または str | None | 推論の精度:16/"fp16" はサポートされているGPUでのFP16推論を有効にし、32/"fp32"/未設定はFP32です。INT8/PTQ量子化はエクスポート時に設定され、エクスポートされたモデルをロードして使用されます。非推奨となった half フラグを置き換えます。 |
device | str | None | 推論用のデバイスを指定します(例:cpu、cuda:0、0、npu、または npu:0)。ユーザーは、CPU、特定のGPU、Huawei Ascend NPU、またはその他の計算デバイスからモデルの実行用に選択できます。 |
batch | int | 1 | 推論用のバッチサイズを指定します(ソースがディレクトリ、動画ファイル、または .txt ファイルの場合のみ機能します)。バッチサイズを大きくすると、スループットが向上し、推論に必要な総時間を短縮できます。 |
max_det | int | 300 | 画像ごとに許可される最大検出数。モデルが単一の推論で検出できるオブジェクトの総数を制限し、密集したシーンで過剰な出力が発生するのを防ぎます。 |
vid_stride | int | 1 | ビデオ入力のフレームストライド。ビデオ内のフレームをスキップして、時間分解能を犠牲にして処理を高速化できます。値が 1 の場合はすべてのフレームを処理し、値が大きいほどフレームをスキップします。 |
stream_buffer | bool | False | 動画ストリームの受信フレームをキューに入れるかどうかを決定します。False の場合、新しいフレームに対応するために古いフレームがドロップされます(リアルタイムアプリケーション向けに最適化)。True の場合、新しいフレームをバッファにキューに入れ、フレームがスキップされないようにしますが、推論FPSがストリームFPSよりも低い場合にレイテンシを引き起こします。 |
visualize | bool | False | 予測されたクラススコアを上昇させたピクセルを示すクラスアクティベーションヒートマップを各予測の横に保存します。conf と classes を尊重するため、classes=[0] はそのクラスのみをマッピングします。PyTorchモデルでのみ利用可能です。 |
augment | bool | False | 予測のためのテスト時オーグメンテーション (TTA) を有効にします。推論速度を犠牲にして、検出の堅牢性が向上する可能性があります。 |
agnostic_nms | bool | False | クラスにとらわれない非最大値抑制 (NMS) を有効にし、異なるクラスの重なり合うボックスをマージします。クラスの重なりが一般的なマルチクラス検出シナリオで役立ちます。エンドツーエンドモデル (YOLO26, YOLOv10) の場合、これは同じ検出が複数のクラスラベル(IoU=1.0 の重複)で表示されるのを防ぐのみであり、異なるボックス間での IoU しきい値ベースの抑制は実行しません。 |
classes | list[int] | None | 予測をクラス ID のセットにフィルタリングします。指定されたクラスに属する検出のみが返されます。マルチクラス検出タスクで関連するオブジェクトに焦点を当てるのに役立ちます。 |
retina_masks | bool | False | 高解像度のセグメンテーションマスクを返します。有効にした場合、返されるマスク(masks.data)は元の画像サイズと一致します。無効にした場合、推論時に使用された画像サイズになります。 |
embed | list[int] | None | 特徴ベクトルまたは埋め込みを抽出する層を指定します。最後から2番目の層の埋め込みには model.embed(source) を使用し、特定の層を選択するには model.predict(source, embed=[layer]) を使用します。クラスタリングや類似度検索などのダウンストリームタスクに役立ちます。 |
project | str | None | save が有効な場合に予測出力が保存されるプロジェクトディレクトリの名前。 |
name | str | None | 予測実行の名前。save が有効な場合に予測出力が保存される、プロジェクトフォルダ内のサブディレクトリを作成するために使用されます。 |
stream | bool | False | すべてのフレームを一度にメモリに読み込むのではなく、Results オブジェクトのジェネレーターを返すことで、長いビデオや多数の画像に対してメモリ効率の良い処理を有効にします。 |
verbose | bool | True | 端末に詳細な推論ログを表示するかどうかを制御し、予測プロセスに関するリアルタイムのフィードバックを提供します。 |
compile | bool または str | False | PyTorch 2.x torch.compile グラフコンパイルを backend='inductor' で有効にします。 True → "default" 、 False →無効、または "default" 、 "reduce-overhead" 、 "max-autotune-no-cudagraphs" などの文字列モードを受け入れます。サポートされていない場合は、警告を出してeagerにフォールバックします。 |
channels_last | bool | False | 推論中の畳み込みに channels_last (NHWC) メモリフォーマットを使用し、結果を変えずに CUDA Tensor Core GPU を高速化します。ネイティブの PyTorch モデルのみに適用され、CPU、MPS、および TensorRT や ONNX などのエクスポート形式では無視されます。 |
end2end | bool | None | NMSフリー推論をサポートするYOLOモデル(YOLO26、YOLOv10)のエンドツーエンドモードをオーバーライドします。これを False に設定すると、従来のNMSパイプラインを使用して予測を実行でき、さらに iou 引数を利用できるようになります。詳細については、エンドツーエンド検出ガイドを参照してください。 |
視覚化の引数:
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
show | bool | False | True の場合、注釈付きの画像または動画をウィンドウに表示します。開発やテスト中の即座な視覚的フィードバックに役立ちます。 |
save | bool | False or True | 注釈付き画像またはビデオのファイルへの保存を有効にします。ドキュメント、詳細な分析、または結果の共有に役立ちます。CLI 使用時はデフォルトで True、Python 使用時は False になります。 |
save_frames | bool | False | ビデオ処理時に、個々のフレームを画像として保存します。特定のフレームの抽出や、フレームごとの詳細な分析に役立ちます。 |
save_txt | bool | False | [class] [x_center] [y_center] [width] [height] [confidence] の形式に従って、検出結果をテキストファイルに保存します。他の分析ツールとの統合に役立ちます。 |
save_conf | bool | False | 保存されたテキストファイルに信頼度スコアを含めます。後処理や分析のために利用可能な詳細情報が強化されます。 |
save_crop | bool | False | 検出されたオブジェクトの切り抜き画像を保存します。データセットの拡張、分析、または特定のオブジェクトのための集中的なデータセット作成に役立ちます。 |
show_labels | bool | True | 視覚的出力において各検出のラベルを表示します。検出されたオブジェクトを即座に理解するのに役立ちます。 |
show_conf | bool | True | 各検出の信頼度スコアをラベルと一緒に表示します。各検出に対するモデルの確信度を把握できます。 |
show_boxes | bool | True | 検出されたオブジェクトの周囲にバウンディングボックスを描画します。画像やビデオフレーム内のオブジェクトを視覚的に識別し特定するために不可欠です。 |
line_width | int or None | None | バウンディングボックスの線の太さを指定します。None の場合、画像のサイズに基づいて線の太さが自動的に調整されます。明瞭さのための視覚的なカスタマイズを提供します。 |
画像およびビデオ形式#
YOLO26は、ultralytics/data/utils.pyで指定されているように、さまざまな画像および動画形式をサポートしています。有効な拡張子と予測コマンドの例については、以下の表を参照してください。
画像#
下の表には、有効な Ultralytics 画像形式が含まれています。
HEIC/HEIF形式には pi-heif が必要であり、これは初回の使用時に自動的にインストールされます。AVIFはPillowによってネイティブにサポートされています。
| 画像サフィックス | 予測コマンドの例 | 参照 |
|---|---|---|
.avif | yolo predict source=image.avif | AV1 Image File Format |
.bmp | yolo predict source=image.bmp | Microsoft BMP File Format |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | High Efficiency Image Format |
.heif | yolo predict source=image.heif | High Efficiency Image Format |
.jp2 | yolo predict source=image.jp2 | JPEG 2000 |
.jpeg | yolo predict source=image.jpeg | JPEG |
.jpg | yolo predict source=image.jpg | JPEG |
.mpo | yolo predict source=image.mpo | Multi Picture Object |
.png | yolo predict source=image.png | Portable Network Graphics |
.tif | yolo predict source=image.tif | Tag Image File Format |
.tiff | yolo predict source=image.tiff | Tag Image File Format |
.webp | yolo predict source=image.webp | WebP |
動画#
以下の表は、サポートされているUltralyticsの動画フォーマットを示しています。
| 動画拡張子 | 予測コマンドの例 | 参照 |
|---|---|---|
.asf | yolo predict source=video.asf | Advanced Systems Format |
.avi | yolo predict source=video.avi | Audio Video Interleave |
.gif | yolo predict source=video.gif | Graphics Interchange Format |
.m4v | yolo predict source=video.m4v | MPEG-4 Part 14 |
.mkv | yolo predict source=video.mkv | Matroska |
.mov | yolo predict source=video.mov | QuickTime File Format |
.mp4 | yolo predict source=video.mp4 | MPEG-4 Part 14 - Wikipedia |
.mpeg | yolo predict source=video.mpeg | MPEG-1 Part 2 |
.mpg | yolo predict source=video.mpg | MPEG-1 Part 2 |
.ts | yolo predict source=video.ts | MPEG Transport Stream |
.wmv | yolo predict source=video.wmv | Windows Media Video |
.webm | yolo predict source=video.webm | WebM Project |
結果の処理#
すべての Ultralytics predict() 呼び出しは、Results オブジェクトのリストを返します:
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
[
"https://ultralytics.com/images/bus.jpg",
"https://ultralytics.com/images/zidane.jpg",
]
) # batch inferenceResults オブジェクトには、次の属性があります:
| 属性 | タイプ | 説明 |
|---|---|---|
orig_img | np.ndarray | NumPy配列としてのオリジナル画像。 |
orig_shape | tuple | (高さ, 幅) 形式のオリジナル画像の形状。 |
boxes | Boxes, optional | 検出されたバウンディングボックスを含むBoxesオブジェクト。 |
masks | Masks, optional | 検出されたマスクを含むMasksオブジェクト。 |
probs | Probs, optional | 分類タスクの各クラスの確率を含むProbsオブジェクト。 |
keypoints | Keypoints, optional | 各オブジェクトの検出されたキーポイントを含むKeypointsオブジェクト。 |
obb | OBB, optional | 指向性バウンディングボックスを含むOBBオブジェクト。 |
semantic_mask | SemanticMask, optional | 画素単位のクラスマップを含むSemanticMaskオブジェクト。 |
speed | dict | 1画像あたりの前処理、推論、後処理の速度(ミリ秒)を含む辞書。 |
names | dict | クラスIDとクラス名をマッピングする辞書。 |
path | str | 画像ファイルへのパス。 |
save_dir | str, optional | 結果を保存するディレクトリ。 |
タスク別の結果#
以下のどのフィールドにデータが設定されるかは、モデルのタスクによって異なります。まだ選択していない場合は、検出、セグメンテーション、セマンティックセグメンテーション、深度推定、分類、ポーズ、およびOBBを比較してください。各予測は、画像またはフレームごとに1つの Results オブジェクトを返します。上記の共通フィールドは常に利用可能ですが、タスク固有の予測データは以下のフィールドに格納されます。座標、信頼度、および確率テンソルは、半精度(half precision)が使用されていない限り torch.float32 であり、使用されている場合は torch.float16 です。result.numpy() の後、テンソルは一致するNumPy dtypeを持つNumPy配列になります。インスタンスマスクは torch.uint8 バイナリテンソルであり、セマンティックマスクはクラス数に応じて、クラスIDに最小限の現実的な整数dtype(torch.uint8、torch.int16、または torch.int32)を使用します。
| 属性 | タイプ | 形状 | 説明 |
|---|---|---|---|
result.boxes | Boxes | (N) | 検出ボックス。 |
result.boxes.data | torch.float32 | (N,6/7) | 生データの [x1,y1,x2,y2,conf,cls] と、オプションのトラックID。 |
result.boxes.xyxy | torch.float32 | (N,4) | xyxy ピクセルボックス。 |
result.boxes.conf | torch.float32 | (N,) | 確信度スコア。 |
result.boxes.cls | torch.float32 | (N,) | クラスID。名前を取得するには int にキャストします。 |
Results オブジェクトには、次のメソッドがあります:
| メソッド | 戻り値の型 | 説明 |
|---|---|---|
update() | None | ボックス、マスク、確率、OBB、キーポイント、セマンティックマスクなどの新しいデータでResultsオブジェクトを更新します。 |
cpu() | Results | すべてのテンソルをCPUメモリに移動したResultsオブジェクトのコピーを返します。 |
numpy() | Results | すべてのテンソルをNumPy配列に変換したResultsオブジェクトのコピーを返します。 |
cuda() | Results | すべてのテンソルをGPUメモリに移動したResultsオブジェクトのコピーを返します。 |
to() | Results | 指定されたデバイスとdtypeにテンソルを移動したResultsオブジェクトのコピーを返します。 |
new() | Results | 同じ画像、パス、名前、速度属性を持つ新しいResultsオブジェクトを作成します。 |
plot() | np.ndarray | 入力BGR画像に検出結果を描画し、注釈付き画像を返します。 |
show() | None | 注釈付きの推論結果を表示します。 |
save() | str | 注釈付きの推論結果画像をファイルに保存し、ファイル名を返します。 |
verbose() | str | 各タスクのログ文字列を返し、検出および分類の結果を詳細に伝えます。 |
save_txt() | str | 検出結果をテキストファイルに保存し、保存されたファイルへのパスを返します。 |
save_crop() | None | 切り抜かれた検出画像を特定のディレクトリに保存します。 |
summary() | List[Dict[str, Any]] | 推論結果を要約された辞書に変換します(オプションで正規化が可能)。 |
to_df() | DataFrame | 検出結果をPolars DataFrameに変換します。 |
to_csv() | str | 検出結果をCSV形式に変換します。 |
to_json() | str | 検出結果をJSON形式に変換します。 |
詳細については、Results クラスドキュメントを参照してください。
ボックス#
Boxes オブジェクトを使用して、バウンディングボックスのインデックス作成、操作、および異なる形式への変換を行うことができます。
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.boxes) # print the Boxes object containing the detection bounding boxes以下は、名前、型、説明を含む Boxes クラスのメソッドとプロパティの表です:
| 名前 | タイプ | 説明 |
|---|---|---|
cpu() | メソッド | オブジェクトをCPUメモリに移動します。 |
numpy() | メソッド | オブジェクトをNumPy配列に変換します。 |
cuda() | メソッド | オブジェクトをCUDAメモリへ移動します。 |
to() | メソッド | オブジェクトを指定したデバイスへ移動します。 |
xyxy | プロパティ(torch.Tensor) | ボックスをxyxy形式で返します。 |
conf | プロパティ(torch.Tensor) | ボックスの信頼度値を返します。 |
cls | プロパティ(torch.Tensor) | ボックスのクラス値を返します。 |
id | プロパティ(torch.Tensor) | ボックスの追跡ID(利用可能な場合)を返します。 |
xywh | プロパティ(torch.Tensor) | ボックスをxywh形式で返します。 |
xyxyn | プロパティ(torch.Tensor) | 元の画像サイズで正規化されたxyxy形式のボックスを返します。 |
xywhn | プロパティ(torch.Tensor) | 元の画像サイズで正規化されたxywh形式のボックスを返します。 |
詳細については、Boxes クラスドキュメントを参照してください。
Masks#
Masks オブジェクトを使用して、マスクのインデックス作成、操作、およびセグメントへの変換を行うことができます。
from ultralytics import YOLO
# Load a pretrained YOLO26n-seg Segment model
model = YOLO("yolo26n-seg.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.masks) # print the Masks object containing the detected instance masks以下は、名前、型、説明を含む Masks クラスのメソッドとプロパティの表です:
| 名前 | タイプ | 説明 |
|---|---|---|
data | プロパティ(torch.Tensor) | torch.uint8 のバイナリマスクテンソル(形状は (N,H,W)、値は 0 または 1)。 |
cpu() | メソッド | マスクテンソルをCPUメモリ上で返します。 |
numpy() | メソッド | マスクテンソルをNumPy配列として返します。 |
cuda() | メソッド | マスクテンソルをGPUメモリ上で返します。 |
to() | メソッド | 指定されたデバイスとdtypeでマスクテンソルを返します。 |
xyn | プロパティ(list[np.ndarray]) | 正規化されたマスクポリゴンのリストです。 |
xy | プロパティ(list[np.ndarray]) | ピクセル座標におけるマスクポリゴンのリストです。 |
詳細については、Masks クラスドキュメントを参照してください。
SemanticMask#
SemanticMask は、セマンティックセグメンテーション結果の1つの高密度クラスマップを格納します。Masks とは異なり、オブジェクトごとに1つのバイナリマスクを含まず、ポリゴンヘルパーを提供しません。
from ultralytics import YOLO
# Load a pretrained YOLO26n-sem Semantic model
model = YOLO("yolo26n-sem.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.semantic_mask.data) # print the H x W class-ID map| 名前 | タイプ | 説明 |
|---|---|---|
data | プロパティ(torch.Tensor) | 形状が (H,W) のクラスIDマップ。Dtypeは、クラス数によって選択される torch.uint8、torch.int16、または torch.int32 です。 |
shape | プロパティ(tuple) | クラスマップの形状。通常は result.orig_shape に一致します。 |
cpu() | メソッド | セマンティックマスクテンソルをCPUメモリ上で返します。 |
numpy() | メソッド | セマンティックマスクテンソルをNumPy配列として返します。 |
cuda() | メソッド | セマンティックマスクテンソルをGPUメモリ上で返します。 |
to() | メソッド | 指定されたデバイスとdtypeでセマンティックマスクテンソルを返します。 |
Keypoints#
Keypoints オブジェクトを使用して、座標のインデックス作成、操作、および正規化を行うことができます。
from ultralytics import YOLO
# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-pose.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.keypoints) # print the Keypoints object containing the detected keypoints以下は、名前、型、説明を含む Keypoints クラスのメソッドとプロパティの表です:
| 名前 | タイプ | 説明 |
|---|---|---|
cpu() | メソッド | キーポイントテンソルをCPUメモリ上で返します。 |
numpy() | メソッド | キーポイントテンソルをNumPy配列として返します。 |
cuda() | メソッド | キーポイントテンソルをGPUメモリ上で返します。 |
to() | メソッド | 指定されたデバイスとdtypeでキーポイントテンソルを返します。 |
xyn | プロパティ(torch.Tensor) | テンソルとして表される正規化されたキーポイントのリストです。 |
xy | プロパティ(torch.Tensor) | テンソルとして表されるピクセル座標のキーポイントのリストです。 |
conf | プロパティ(torch.Tensor) | 利用可能な場合はキーポイントの信頼度値を返し、それ以外の場合はNoneを返します。 |
詳細については、Keypoints クラスドキュメントを参照してください。
Probs#
Probs オブジェクトを使用して、top1 および top5 の分類インデックスとスコアを取得できます。
from ultralytics import YOLO
# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-cls.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.probs) # print the Probs object containing the detected class probabilities以下は、Probs クラスのメソッドとプロパティをまとめた表です:
| 名前 | タイプ | 説明 |
|---|---|---|
cpu() | メソッド | CPUメモリ上のprobsテンソルのコピーを返します。 |
numpy() | メソッド | NumPy配列としてのprobsテンソルのコピーを返します。 |
cuda() | メソッド | GPUメモリ上のprobsテンソルのコピーを返します。 |
to() | メソッド | 指定されたデバイスとdtypeでprobsテンソルのコピーを返します。 |
top1 | プロパティ(int) | トップ1クラスのインデックスです。 |
top5 | プロパティ(list[int]) | トップ5クラスのインデックスです。 |
top1conf | プロパティ(torch.Tensor) | トップ1クラスの信頼度です。 |
top5conf | プロパティ(torch.Tensor) | トップ5クラスの信頼度です。 |
詳細については、Probs クラスドキュメントを参照してください。
OBB(指向性バウンディングボックス)#
OBB オブジェクトを使用して、指向性バウンディングボックス(oriented bounding boxes)のインデックス作成、操作、および異なる形式への変換を行うことができます。
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n-obb.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/boats.jpg") # results list
# View results
for r in results:
print(r.obb) # print the OBB object containing the oriented detection bounding boxes以下は、名前、型、説明を含む OBB クラスのメソッドとプロパティの表です:
| 名前 | タイプ | 説明 |
|---|---|---|
cpu() | メソッド | オブジェクトをCPUメモリに移動します。 |
numpy() | メソッド | オブジェクトをNumPy配列に変換します。 |
cuda() | メソッド | オブジェクトをCUDAメモリへ移動します。 |
to() | メソッド | オブジェクトを指定したデバイスへ移動します。 |
conf | プロパティ(torch.Tensor) | ボックスの信頼度値を返します。 |
cls | プロパティ(torch.Tensor) | ボックスのクラス値を返します。 |
id | プロパティ(torch.Tensor) | ボックスの追跡ID(利用可能な場合)を返します。 |
xyxy | プロパティ(torch.Tensor) | 水平バウンディングボックスをxyxy形式で返します。 |
xywhr | プロパティ(torch.Tensor) | 回転バウンディングボックスをxywhr形式で返します。 |
xyxyxyxy | プロパティ(torch.Tensor) | 回転バウンディングボックスをxyxyxyxy形式で返します。 |
xyxyxyxyn | プロパティ(torch.Tensor) | 画像サイズで正規化されたxyxyxyxy形式の回転バウンディングボックスを返します。 |
詳細については、OBB クラスドキュメントを参照してください。
結果のプロット#
Results オブジェクトの plot() メソッドは、検出されたオブジェクト(バウンディングボックス、マスク、キーポイント、確率など)を元の画像に重ね合わせて予測の可視化を容易にします。このメソッドはアノテーション付き画像を NumPy 配列として返すため、簡単に表示や保存を行うことができます。
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]) # results list
# Visualize the results
for i, r in enumerate(results):
# Plot results image
im_bgr = r.plot() # BGR-order numpy array
im_rgb = Image.fromarray(im_bgr[..., ::-1]) # RGB-order PIL image
# Show results to screen (in supported environments)
r.show()
# Save results to disk
r.save(filename=f"results{i}.jpg")plot() メソッドのパラメータ#
plot() メソッドは、出力をカスタマイズするためのさまざまな引数をサポートしています。
| 引数 | タイプ | 説明 | デフォルト |
|---|---|---|---|
conf | bool | 検出の信頼度スコアを含めます。 | True |
line_width | float | BBoxの線の太さ。None の場合、画像サイズに応じてスケーリングされます。 | None |
font_size | float | テキストのフォントサイズ。None の場合、画像サイズに応じてスケーリングされます。 | None |
font | str | テキスト注釈用のフォント名です。 | 'Arial.ttf' |
pil | bool | 画像をPILイメージオブジェクトとして返します。 | False |
img | np.ndarray | torch.Tensor | 代替画像。Tensor は連続した HWC BGR uint8 である必要があります。 | None |
kpt_radius | int | 描画されるキーポイントの半径です。 | 5 |
kpt_line | bool | キーポイント同士を線で結びます。 | True |
labels | bool | アノテーションにクラスラベルを含めます。 | True |
boxes | bool | 画像上にバウンディングボックスをオーバーレイ表示します。 | True |
masks | bool | 画像上にマスクをオーバーレイ表示します。 | True |
probs | bool | 分類確率を含めます。 | True |
show | bool | デフォルトの画像ビューアを使用して、アノテーション付き画像を直接表示します。 | False |
save | bool | filename で指定されたファイルに、アノテーション済み画像を保存します。 | False |
filename | str | save が True である場合に、アノテーション済み画像を保存するファイルのパスと名前。 | None |
color_mode | str | カラーモード(例: 'instance' または 'class')を指定します。 | 'class' |
txt_color | tuple[int, int, int] | バウンディングボックスおよび画像分類ラベルのBGRテキストカラーです。 | (255, 255, 255) |
スレッドセーフな推論#
異なるスレッドで複数のYOLOモデルを並列実行する場合、推論中のスレッドセーフを確保することが重要です。スレッドセーフな推論により、各スレッドの予測が分離され、互いに干渉することなく、競合状態を回避し、一貫性のある信頼性の高い出力を保証します。
マルチスレッドアプリケーションでYOLOモデルを使用する場合、競合を防ぐためにスレッドごとに個別のモデルオブジェクトをインスタンス化するか、スレッドローカルストレージを使用することが重要です。
スレッドセーフな推論のために、各スレッド内で単一のモデルをインスタンス化します。
from threading import Thread
from ultralytics import YOLO
def thread_safe_predict(model, image_path):
"""Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
model = YOLO(model)
results = model.predict(image_path)
# Process results
# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()YOLOモデルを使用したスレッドセーフな推論の詳細な解説と手順については、YOLO Thread-Safe Inference Guide をご覧ください。このガイドでは、一般的な落とし穴を回避し、マルチスレッド推論を円滑に実行するために必要なすべての情報を提供します。
ストリーミングソース for ループ#
以下は、OpenCV (cv2) と YOLO を使用してビデオフレーム上で推論を実行する Python スクリプトです。このスクリプトは、必要なパッケージ (opencv-python および ultralytics) がすでにインストールされていることを前提としています。
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo26n.pt")
# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)
# Loop through the video frames
while cap.isOpened():
# Read a frame from the video
success, frame = cap.read()
if success:
# Run YOLO inference on the frame
results = model(frame)
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Display the annotated frame
cv2.imshow("YOLO Inference", annotated_frame)
# Break the loop if 'q' is pressed
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# Break the loop if the end of the video is reached
break
# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()このスクリプトは、ビデオの各フレームに対して予測を実行し、結果を視覚化してウィンドウに表示します。ループは 'q' を押すと終了できます。
次のステップ#
事前学習済みモデルの段階から先に進む準備はできましたか?自分のタスクが問題に適しているか確認し、Datasets guide で独自のデータをフォーマットしてから、そのデータでトレーニングします。
よくある質問 (FAQ)#
Ultralytics YOLOとは何ですか。また、リアルタイム推論のためのpredictモードとはどのようなものですか?#
Ultralytics YOLO は、リアルタイムのobject detection、instance segmentation、semantic segmentation、depth estimation、およびclassificationのための最先端モデルです。そのpredict modeを使用すると、画像、動画、ライブストリームなどのさまざまなデータソースに対して高速な推論を実行できます。パフォーマンスと汎用性を重視して設計されており、バッチ処理やストリーミングモードも提供しています。機能の詳細については、Ultralytics YOLO predict mode を確認してください。
Ultralytics YOLOを使用してさまざまなデータソースで推論を実行するにはどうすればよいですか?#
Ultralytics YOLO は、個別の画像、動画、ディレクトリ、URL、ストリームなど、幅広いデータソースを処理できます。データソースは model.predict() 呼び出しで指定します。たとえば、ローカル画像の場合は 'image.jpg' を使用し、URL の場合は 'https://ultralytics.com/images/bus.jpg' を使用します。さまざまなinference sources の詳細な例については、ドキュメントをご確認ください。
YOLOの推論速度とメモリ使用量を最適化するにはどうすればよいですか?#
推論速度を最適化し、メモリを効率的に管理するには、予測子の呼び出しメソッドで stream=True を設定してストリーミングモードを使用できます。ストリーミングモードでは、すべてのフレームをメモリに読み込むのではなく、メモリ効率の高い Results オブジェクトのジェネレータが生成されます。長時間の動画や大規模なデータセットを処理する場合、ストリーミングモードは特に便利です。streaming mode の詳細については、こちらをご覧ください。
Ultralytics YOLOはどのような推論引数をサポートしていますか?#
YOLO の model.predict() メソッドは、conf、iou、imgsz、device などのさまざまな引数をサポートしています。これらの引数を使用すると、信頼度の閾値、画像サイズ、計算に使用するデバイスなどのパラメータを設定して、推論プロセスをカスタマイズできます。これらの引数の詳細な説明については、inference arguments セクションをご覧ください。
YOLOモデルから埋め込み(embeddings)を抽出するにはどうすればよいですか?#
最後から2番目のレイヤーから特徴量埋め込みを抽出するには model.embed(source) を使用するか、model.predict() に embed=[layer_index] を渡して特定のレイヤーを選択します。
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
source = "https://ultralytics.com/images/bus.jpg"
results = model.predict(source) # Results objects
embeddings = model.embed(source) # list of torch.Tensor embeddingsYOLO予測の結果を視覚化して保存するにはどうすればよいですか?#
YOLOで推論を実行した後、Results オブジェクトには、アノテーション付き画像の表示および保存用のメソッドが含まれます。result.show() や result.save(filename="result.jpg") などのメソッドを使用して、結果を視覚化および保存できます。ファイル名パス内の欠落している親ディレクトリは自動的に作成されます(例:result.save("path/to/result.jpg"))。これらのメソッドの包括的なリストについては、working with results セクションをご参照ください。


