Ultralytics YOLOによるモデル推論#
はじめに#
機械学習やコンピュータービジョンの世界では、ビジュアルデータを解釈するプロセスは、一般に推論または予測と呼ばれます。Ultralytics YOLO26は、幅広いデータソースに対して高性能なリアルタイム推論を実行できる、predictモードという強力な機能を提供します。
予定されている推論の例については、未リリースの YOLO27 プレビューをご覧ください。
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
実世界でのアプリケーション#
| 製造 | スポーツ | 安全 |
|---|---|---|
| 車両スペアパーツ検出 | サッカー選手検出 | 人物の転倒検出 |
推論にUltralytics YOLOを使用する理由#
さまざまな推論ニーズにYOLO26のpredictモードを検討すべき理由は次のとおりです。
- 汎用性: 画像、動画、さらにはライブストリームに対して推論を実行できます。
- パフォーマンス: 精度を犠牲にすることなく、リアルタイムの高速処理を実現するよう設計されています。
- 使いやすさ: 直感的なPythonおよびCLIインターフェースにより、迅速なデプロイとテストが可能です。
- 高いカスタマイズ性: 特定の要件に応じて、モデルの推論動作を調整するためのさまざまな設定とパラメーターを利用できます。
- 本番環境対応: 自動スケーリングとモニタリングに対応したUltralytics Platformの推論エンドポイントとしてモデルをデプロイするか、ローカルで推論を実行できます。
Predictモードの主な機能#
YOLO26のpredictモードは、次の機能を備えた堅牢で汎用性の高い設計です。
- 複数データソースへの対応: 個々の画像、画像のコレクション、動画ファイル、リアルタイム動画ストリームなど、データ形式を問わずpredictモードで処理できます。
- ストリーミングモード: ストリーミング機能を使用すると、メモリ効率に優れた
Resultsオブジェクトのジェネレーターを生成できます。predictorのcallメソッドでstream=Trueを設定すると有効になります。すべての結果を含むリストを返すデフォルトの動作(stream=False)とは異なり、stream=Trueは結果を1件ずつ返すため、長時間の動画やライブストリームに特に役立ちます。 - バッチ処理: 複数の画像や動画フレームを1つのバッチで処理し、推論全体の時間をさらに短縮できます。
- 統合の容易さ: 柔軟なAPIにより、既存のデータパイプラインや他のソフトウェアコンポーネントと簡単に統合できます。
Ultralytics YOLOモデルは、推論時にモデルへstream=Trueを渡すと、Pythonリスト形式のResultsオブジェクト、またはメモリ効率に優れた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の場合、すべてのフレームまたはデータポイントの結果がメモリに保存されるため、大規模な入力ではすぐにメモリ使用量が増加し、メモリ不足エラーが発生する可能性があります。一方、stream=Trueはジェネレーターを使用し、現在のフレームまたはデータポイントの結果だけをメモリに保持するため、メモリ消費量を大幅に削減し、メモリ不足の問題を防止します。
| ソース | 例 | 型 | 注記 |
|---|---|---|---|
| image | 'image.jpg' | strまたはPath | 単一の画像ファイルです。 |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | 画像へのURLです。 |
| screenshot | '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 ✅ | 'video.mp4' | strまたはPath | MP4、AVIなどの形式の動画ファイルです。 |
| directory ✅ | 'path/' | strまたはPath | 画像または動画を含むディレクトリへのパスです。 |
| glob ✅ | 'path/*.jpg' | str | 複数のファイルに一致するGlobパターンです。ワイルドカードとして*文字を使用します。 |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | YouTube動画へのURLです。 |
| stream ✅ | 'rtsp://example.com/media.mp4' | str | RTSP、RTMP、TCPなどのストリーミングプロトコル、またはIPアドレスのURLです。 |
| multi-stream ✅ | 'list.streams' | strまたはPath | 1行につき1つのストリームURLを含む*.streamsテキストファイルです。つまり、8つのストリームはバッチサイズ8で実行されます。 |
| webcam ✅ | 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を使用します。これにより、可能な場合は最小矩形のパディングが有効になります。画像はimgsz内に収まるようにスケーリングされ、最も近いストライドの倍数までのみパディングされるため、最終的なテンソルはimgszより小さくなる場合があります。最小矩形のパディングは、バッチ内のすべての画像が同じ形状であり、バックエンドが対応している場合(PyTorchの.pt、または動的ONNX / Triton)のみ使用されます。それ以外の場合、画像は完全な**imgszターゲットまでパディングされます。
常に完全なimgszターゲットまでパディングするには、**rect=False**を使用します。エクスポートしたモデル(ONNX、TensorRTなど)に合わせて固定入力サイズが必要な場合に推奨されます。
整数とタプルのimgsz
- 整数の
imgsz=640は、ストライドの丸め処理後に正方形のターゲット(640, 640)になります。 - タプルの
imgsz=(384, 672)は、長方形のターゲットを設定します。rect=Trueとauto=Trueを使用すると、実際のテンソルはこのターゲットより小さくなる場合があります。
トレーニングとpredict/export
トレーニングで受け付けられるimgszは単一の整数のみです([h, w]のリストは最大値に変換されます)。predictとexportでは、整数または(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 | Intersection Over Union (IoU)の、Non-Maximum Suppression (NMS)に対するしきい値です。値を小さくすると、重複するボックスが除去されるため検出数が減り、重複の削減に役立ちます。 |
imgsz | intまたはtuple | 640 | Letterboxのターゲットです。整数を指定すると正方形のN×Nになり、タプルを指定すると(height, width)になります。rect=Trueでは、最小矩形パディングにより実際のテンソルがこのターゲットより小さくなる場合があります。固定サイズにはrect=Falseを使用してください。固定形状と最小矩形を参照してください。 |
rect | bool | True | Trueの場合、可能であれば最小矩形パディングを使用します(同一形状のバッチかつ対応バックエンドの場合)。Falseの場合は、常に完全なimgszまでパディングします。固定形状と最小矩形を参照してください。 |
quantize | intまたはstr | None | 推論精度: 16/"fp16" および 32/"fp32"/unset は、PyTorch および TorchScript モデルの FP16 または FP32 計算を選択します。その他のフォーマットは、アーティファクトとランタイムが選択する精度で計算を行います。16 では、OpenVINO は依然としてクライアント側で入力を FP16 に丸めてから FP32 に戻しますが、ランタイムが計算を行う精度自体を変更するわけではありません。INT8/PTQ 量子化はエクスポート時に設定され、その後エクスポートされたモデルを読み込んで使用されます。非推奨となった half フラグを置き換えます。 |
device | str | None | 推論に使用するデバイスを指定します(例: cpu、cuda:0、0、npu、npu:0)。CPU、特定のGPU、Huawei Ascend NPU、その他の計算デバイスから、モデルの実行先を選択できます。 |
dnn | bool | False | Trueの場合、ONNXモデルの推論にONNX RuntimeではなくOpenCV DNNモジュールを使用します。 |
data | str | None | データセットYAMLへのパスです(例: coco8.yaml)。読み込まれたモデル自体にクラス名がない場合に限り、そのnamesのみを読み取ります。これは、サードパーティ製エクスポート、または付属するメタデータから分離されたUltralyticsエクスポートが該当します。このようなモデルは、それ以外の場合、class0、class1などを報告します。 |
batch | int | 1 | 推論のバッチサイズを指定します(ソースがディレクトリ、動画ファイル、または.txtファイルの場合のみ機能します)。バッチサイズを大きくするとスループットが向上し、推論に必要な合計時間を短縮できる場合があります。 |
max_det | int | 300 | 画像1枚あたりに許可される検出数の最大値です。1回の推論でモデルが検出できるオブジェクトの総数を制限し、密集したシーンでの過剰な出力を防ぎます。 |
vid_stride | int | 1 | 動画入力のフレームストライドです。動画のフレームをスキップして処理を高速化できますが、時間解像度は低下します。値が1の場合はすべてのフレームを処理し、値が大きい場合はフレームをスキップします。 |
stream_buffer | bool | False | 動画ストリームの受信フレームをキューに入れるかどうかを決定します。Falseの場合、新しいフレームを受け入れるために古いフレームを破棄します(リアルタイムアプリケーション向けに最適化されています)。Trueの場合、新しいフレームをバッファにキューイングしてフレームのスキップを防ぎますが、推論FPSがストリームFPSを下回るとレイテンシが発生します。 |
visualize | bool | False | 各予測の横にクラスアクティベーションヒートマップを保存し、予測クラスのスコアを高めたピクセルを示します。confとclassesを尊重するため、classes=[0]ではそのクラスのみをマッピングします。Ultralytics PyTorchモデルでのみ使用できます。 |
augment | bool | False | 予測時のテストタイムオーグメンテーション(TTA)を有効にします。推論速度を犠牲にして、検出の堅牢性を向上できる場合があります。Ultralytics PyTorchモデルでのみ使用できます。 |
agnostic_nms | bool | False | クラス非依存の Non-Maximum Suppression (NMS) を有効にし、同じクラス内だけでなく、異なるクラス間でもスコアの低い重複バウンディングボックスを抑制します。クラスの重複が一般的なマルチクラス検出シナリオで役立ちます。NMS フリー推論(YOLO26 または YOLOv10 の nms=False)の場合、これは同じ検出結果が複数のクラスラベル付きで表示されるのを防ぐ(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])を使用します。クラスタリングや類似検索などの下流タスクに役立ちます。Ultralytics PyTorchモデルでのみ使用できます。 |
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 | None | ネイティブPyTorch推論にchannels_last (NHWC)メモリ形式を使用します。Noneは、PyTorch 1.13以降を使用するoneDNN対応のLinuxおよびWindows x86 CPUで自動的に有効にし、Falseは無効にし、Trueは対応するx86 CPUまたはCUDAデバイスでの使用を要求します。ARM64、MPS、古いPyTorchバージョン、oneDNN非対応CPU、TensorRTやONNXなどのエクスポート形式には変更を加えません。 |
nms | bool、オプション | None | デフォルトでは NMS 付きの多対1推論を実行します(None または True)。利用可能な場合に NMS フリーの1対1ヘッドを使用するには False を設定します。詳細は End-to-End Detection guide を参照してください。 |
可視化引数:
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
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で指定されているさまざまな画像および動画形式に対応しています。有効なサフィックスとpredictコマンドの例については、以下の表を参照してください。
画像#
以下の表には、有効なUltralytics画像形式が記載されています。
HEIC/HEIF形式にはpi-heifが必要です。これは初回使用時に自動的にインストールされます。AVIFはPillowでネイティブにサポートされています。
| 画像サフィックス | Predictコマンドの例 | 参照 |
|---|---|---|
.avif | yolo predict source=image.avif | AV1画像ファイル形式 |
.bmp | yolo predict source=image.bmp | Microsoft BMPファイル形式 |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | 高効率画像形式 |
.heif | yolo predict source=image.heif | 高効率画像形式 |
.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 | マルチピクチャーオブジェクト |
.png | yolo predict source=image.png | Portable Network Graphics |
.tif | yolo predict source=image.tif | タグ付き画像ファイル形式 |
.tiff | yolo predict source=image.tiff | タグ付き画像ファイル形式 |
.webp | yolo predict source=image.webp | WebP |
動画#
以下の表には、Ultralyticsで使用できる動画形式が記載されています。
| 動画の拡張子 | Predictコマンドの例 | 参照 |
|---|---|---|
.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ファイル形式 |
.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トランスポートストリーム |
.wmv | yolo predict source=video.wmv | Windows Media Video |
.webm | yolo predict source=video.webm | WebMプロジェクト |
結果の操作#
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 | (height, width)形式で表した元の画像の形状です。 |
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 | クラスインデックスをクラス名に対応付ける辞書です。 |
path | str | 画像ファイルへのパスです。 |
save_dir | str, optional | 結果を保存するディレクトリです。 |
タスク別の結果#
以下に入るフィールドはモデルのタスクによって異なります。まだタスクを選んでいない場合は、検出、セグメンテーション、セマンティックセグメンテーション、深度推定、分類、姿勢推定、OBBを比較してください。各予測は、画像またはフレームごとに1つの Results オブジェクトを返します。上記の共通フィールドは常に利用可能ですが、タスク固有の予測データは以下のフィールドに格納されます。YOLOの座標および信頼度テンソルは torch.float32 であり、確率テンソルは、半精度が使用されていない限り torch.float32 となり、使用されている場合は torch.float16 となります。result.numpy() の後、テンソルは対応するNumPyのデータ型を持つNumPy配列になります。インスタンスマスクは torch.uint8 バイナリテンソルであり、セマンティックマスクはクラス数に応じて、クラスIDに最小限の実用的な整数データ型(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 | テンソルを指定したデバイスとデータ型に移動した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オブジェクトを使用して、マスクのインデックス付け、操作、セグメントへの変換を行えます。
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) | 形状が(N,H,W)で、値が0または1のtorch.uint8バイナリマスクテンソルです。 |
cpu() | メソッド | CPUメモリ上のマスクテンソルを返します。 |
numpy() | メソッド | マスクテンソルをNumPy配列として返します。 |
cuda() | メソッド | GPUメモリ上のマスクテンソルを返します。 |
to() | メソッド | 指定したデバイスとデータ型のマスクテンソルを返します。 |
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マップです。データ型は、クラス数に応じて選択されるtorch.uint8、torch.int16、またはtorch.int32です。 |
shape | プロパティ(tuple) | クラスマップの形状で、通常はresult.orig_shapeと一致します。 |
cpu() | メソッド | CPUメモリ上のセマンティックマスクテンソルを返します。 |
numpy() | メソッド | セマンティックマスクテンソルをNumPy配列として返します。 |
cuda() | メソッド | GPUメモリ上のセマンティックマスクテンソルを返します。 |
to() | メソッド | 指定したデバイスとdtypeでセマンティックマスクテンソルを返します。 |
キーポイント#
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() | メソッド | probsテンソルのコピーをNumPy配列として返します。 |
cuda() | メソッド | GPUメモリ上のprobsテンソルのコピーを返します。 |
to() | メソッド | 指定したデバイスとdtypeのprobsテンソルのコピーを返します。 |
top1 | プロパティ(int) | 上位1クラスのインデックスです。 |
top5 | プロパティ(list[int]) | 上位5クラスのインデックスです。 |
top1conf | プロパティ(torch.Tensor) | 上位1クラスの信頼度です。 |
top5conf | プロパティ(torch.Tensor) | 上位5クラスの信頼度です。 |
詳細については、Probsクラスのドキュメントを参照してください。
OBB#
OBB オブジェクトを使用して、方向付きバウンディングボックスのインデックス指定、操作、および異なる形式への変換を行えます。
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 | バウンディングボックスの線幅です。None の場合は、画像サイズに応じて拡大縮小されます。 | None |
font_size | float | テキストのフォントサイズです。None の場合は、画像サイズに応じて拡大縮小されます。 | None |
font | str | テキスト注釈に使用するフォント名です。 | 'Arial.ttf' |
pil | bool | 画像をPIL Imageオブジェクトとして返します。 | False |
img | np.ndarray | torch.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スレッドセーフ推論ガイドを参照してください。このガイドでは、一般的な問題を回避し、マルチスレッド推論をスムーズに実行するために必要な情報をすべて説明します。
ストリーミングソース 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ガイドで独自のデータをフォーマットしてから、それを学習してください。
FAQ#
Ultralytics YOLOは、リアルタイムの物体検出、インスタンスセグメンテーション、セマンティックセグメンテーション、深度推定、分類に対応する最先端のモデルです。その predict mode により、画像、ビデオ、ライブストリームなど、さまざまなデータソースで高速な推論を実行できます。パフォーマンスと柔軟性を重視して設計されており、バッチ処理モードとストリーミングモードにも対応しています。機能の詳細については、Ultralytics YOLO predict modeを参照してください。
Ultralytics YOLOは、個別の画像、ビデオ、ディレクトリ、URL、ストリームなど、幅広いデータソースを処理できます。
model.predict()の呼び出しでデータソースを指定できます。たとえば、ローカル画像には'image.jpg'を、URLには'https://ultralytics.com/images/bus.jpg'を使用します。ドキュメントの推論ソースで、さまざまな例を確認してください。推論速度を最適化し、メモリを効率的に管理するには、predictorのcallメソッドで
stream=Trueを設定してストリーミングモードを使用します。ストリーミングモードでは、すべてのフレームをメモリに読み込む代わりに、メモリ効率に優れたResultsオブジェクトのジェネレーターが生成されます。長時間のビデオや大規模なデータセットの処理に、ストリーミングモードは特に有用です。ストリーミングモードの詳細をご覧ください。YOLOの
model.predict()メソッドは、conf、iou、imgsz、deviceなど、さまざまな引数に対応しています。これらの引数を使用して、信頼度しきい値、画像サイズ、計算に使用するデバイスなどのパラメーターを設定し、推論プロセスをカスタマイズできます。これらの引数の詳細な説明は、推論引数セクションにあります。model.embed(source)を使用して最後から2番目のレイヤーから特徴埋め込みを抽出するか、embed=[layer_index]をmodel.predict()に渡して特定のレイヤーを選択します。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で推論を実行した後、
Resultsオブジェクトには注釈付き画像を表示および保存するためのメソッドが含まれています。result.show()やresult.save(filename="result.jpg")などのメソッドを使用して、結果を可視化および保存できます。ファイル名のパスに不足している親ディレクトリは自動的に作成されます(例:result.save("path/to/result.jpg"))。これらのメソッドの完全な一覧については、結果の操作セクションを参照してください。