Ultralytics YOLOによるモデル予測#
はじめに#
機械学習とコンピュータービジョンの分野では、視覚データを解釈するプロセスは、一般に推論または予測と呼ばれます。Ultralytics YOLO26には、幅広いデータソースに対応した高性能なリアルタイム推論向けのpredictモードが用意されています。
今後の推論例については、未公開のYOLO27プレビューを参照してください。
視聴: カスタムプロジェクト向けに Ultralytics YOLO26 のタスク結果を抽出する方法 🚀
実世界での活用例#
| 製造 | スポーツ | 安全 |
|---|---|---|
| 車両用スペアパーツの検出 | サッカー選手の検出 | 人の転倒検出 |
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をモデルに渡すと、ResultsオブジェクトのPythonリスト、またはメモリ効率に優れたResultsオブジェクトのジェネレーターを返します。
from ultralytics import YOLO
# モデルを読み込む
model = YOLO("yolo26n.pt") # 事前学習済みYOLO26nモデル
# 画像のリストに対してバッチ推論を実行
results = model(["image1.jpg", "image2.jpg"]) # Resultsオブジェクトのリストを返す
# 結果のリストを処理
for result in results:
boxes = result.boxes # バウンディングボックス出力用のBoxesオブジェクト
masks = result.masks # セグメンテーションマスク出力用のMasksオブジェクト
keypoints = result.keypoints # ポーズ出力用のKeypointsオブジェクト
probs = result.probs # 分類出力用のProbsオブジェクト
obb = result.obb # OBB出力用のOriented boxesオブジェクト
result.show() # 画面に表示
result.save(filename="result.jpg") # ディスクに保存推論ソース#
YOLO26は、以下の表に示すように、さまざまな種類の入力ソースを推論に使用できます。ソースには、静止画像、動画ストリーム、さまざまなデータ形式が含まれます。また、各ソースをstream=True ✅引数を指定したストリーミングモードで使用できるかどうかも示しています。ストリーミングモードでは、すべてのフレームをメモリに読み込む代わりに結果のジェネレーターを作成するため、動画やライブストリームの処理に適しています。
長時間の動画や大規模なデータセットを処理する場合は、メモリを効率的に管理するためにstream=Trueを使用してください。stream=Falseの場合、すべてのフレームまたはデータポイントの結果がメモリに保存されるため、大きな入力ではすぐにメモリ使用量が増加し、メモリ不足エラーが発生する可能性があります。一方、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で実行します。 |
| Webカメラ ✅ | 0 | int | 推論を実行する接続済みカメラデバイスのインデックス。 |
以下は、各ソースタイプを使用するコード例です。
画像ファイルに対して推論を実行します。
from ultralytics import YOLO
# 事前学習済みYOLO26nモデルを読み込む
model = YOLO("yolo26n.pt")
# 画像ファイルへのパスを定義
source = "path/to/image.jpg"
# ソースに対して推論を実行
results = model(source) # Resultsオブジェクトのリスト推論引数#
model.predict() は、デフォルト設定を上書きするために推論時に渡せる複数の引数を受け付けます。
固定形状と最小矩形(rect)#
デフォルトでは、predictは rect=True を使用し、可能な場合は 最小矩形 のパディングを有効にします。画像は imgsz に収まるようにスケーリングされ、最も近いストライドの倍数までのみパディングされるため、最終的なテンソルは imgsz より 小さく なる場合があります。最小矩形のパディングは、バッチ内のすべての画像の形状が同じ で、バックエンドが対応している場合(PyTorch .pt、または動的ONNXなどの動的形状エクスポート)にのみ使用されます。それ以外の場合、画像は 完全な imgsz のターゲットサイズまでパディングされます。
常に完全な imgsz のターゲットサイズまでパディングするには、rect=False を使用します。エクスポート済みモデル(ONNX、TensorRTなど)に合わせて固定入力サイズが必要な場合に推奨されます。
整数とタプル imgsz
- 整数 の
imgsz=640は、ストライドに合わせて丸められた後、正方形のターゲット(640, 640)になります。 - タプル の
imgsz=(384, 672)は、長方形のターゲットを設定します。rect=Trueを使用すると、実際のテンソルはこのターゲットより小さくなる場合があります。
トレーニングとpredict/export
トレーニングで受け付けるのは単一の整数 imgsz のみです([h, w] リストは最大値に変換されます)。Predictとexportでは、整数または (height, width) タプルを使用できます。
from ultralytics import YOLO
# 事前学習済みYOLO26nモデルを読み込む
model = YOLO("yolo26n.pt")
# 'bus.jpg'で引数を指定して推論を実行します
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)のしきい値です。値を小さくすると、重なり合うボックスが除外されて検出数が減り、重複の削減に役立ちます。 |
imgsz | intまたはtuple | 640 | レターボックスの目標サイズです。整数を指定すると正方形のN×Nになり、タプルを指定すると(height, width)になります。rect=Trueの場合、最小矩形パディングにより実際のテンソルが目標サイズより小さくなることがあります。固定サイズにするにはrect=Falseを使用してください。固定形状と最小矩形をご覧ください。 |
rect | bool | True | Trueの場合、可能であれば最小矩形パディングを使用します(同じ形状のバッチで、バックエンドが対応している場合)。Falseの場合、常に完全なimgszまでパディングします。固定形状と最小矩形をご覧ください。 |
quantize | intまたはstr | None | 推論精度: 16/"fp16"および32/"fp32"/未設定では、PyTorchおよびTorchScriptモデルの演算にFP16またはFP32を選択します(CPUでは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回の推論でモデルが検出できるオブジェクトの総数を制限し、密集したシーンで過剰な出力が発生するのを防ぎます。 |
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 | 特徴ベクトルまたは埋め込みを抽出するレイヤーを指定します。model.embed(source)では最後から2番目のレイヤーの埋め込みを使用し、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では、oneDNNを有効にしたLinuxおよびWindowsのx86 CPU上でPyTorch 1.13以降を使用する場合に自動的に有効になり、Falseでは無効になり、Trueでは対応するx86 CPUまたはCUDAデバイスでの使用を指定します。ARM64、MPS、古いPyTorchバージョン、oneDNN非対応CPU、およびTensorRTやONNXなどのエクスポート形式では変更されません。 |
nms | bool、省略可 | None | デフォルトではNMSを使用したone-to-many推論(NoneまたはTrue)を実行します。利用可能な場合は、Falseを設定してNMSなしのone-to-oneヘッドを使用します。詳細はエンドツーエンド検出ガイドをご覧ください。 |
可視化の引数:
| 引数 | 種類 | デフォルト | 説明 |
|---|---|---|---|
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 | ポータブルネットワークグラフィックス |
.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 Project |
Resultsの使用#
すべてのUltralytics predict() 呼び出しは、Results オブジェクトのリストを返します。
from ultralytics import YOLO
# 事前学習済みYOLO26nモデルを読み込む
model = YOLO("yolo26n.pt")
# 画像に対して推論を実行する
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
[
"https://ultralytics.com/images/bus.jpg",
"https://ultralytics.com/images/zidane.jpg",
]
) # バッチ推論Results オブジェクトには、次の属性があります。
| 属性 | 種類 | 説明 |
|---|---|---|
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オブジェクトです。 |
depth | DepthMap, optional | ピクセルごとの密な深度マップを含むDepthMapオブジェクトです。 |
speed | dict | 画像ごとの前処理、推論、後処理の速度をミリ秒単位で示す辞書です。 |
names | dict | クラスインデックスとクラス名を対応付ける辞書です。 |
path | str | 画像ファイルへのパスです。 |
save_dir | str, optional | 結果の保存先ディレクトリです。 |
タスク別のResults#
以下のフィールドに値が設定されるかどうかは、モデルのタスクによって異なります。まだタスクを選んでいない場合は、検出、セグメンテーション、セマンティックセグメンテーション、深度推定、分類、姿勢、OBBを比較してください。各予測では、画像またはフレームごとに1つの Results オブジェクトが返されます。上記の共通フィールドは常に使用でき、タスク固有の予測データは以下のフィールドに格納されます。YOLOの座標テンソルと信頼度テンソルは torch.float32 です。確率テンソルは torch.float32 ですが、FP16推論(quantize=16)を使用すると 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 | テンソルを指定したデバイスとdtypeに移動したResultsオブジェクトのコピーを返します。 |
new() | Results | 同じ画像、パス、names、speed属性を持つ新しい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
# 事前学習済みYOLO26nモデルを読み込む
model = YOLO("yolo26n.pt")
# 画像に対して推論を実行する
results = model("https://ultralytics.com/images/bus.jpg") # 結果リスト
# 結果を表示
for r in results:
print(r.boxes) # 検出バウンディングボックスを含む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
# 事前学習済みのYOLO26n-segセグメンテーションモデルを読み込む
model = YOLO("yolo26n-seg.pt")
# 画像に対して推論を実行する
results = model("https://ultralytics.com/images/bus.jpg") # 結果リスト
# 結果を表示
for r in results:
print(r.masks) # 検出されたインスタンスマスクを含む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は、セマンティックセグメンテーションの結果を表す単一の高密度クラスマップを格納します。Masksとは異なり、オブジェクトごとのバイナリマスクは含まず、ポリゴン用のヘルパーも提供しません。
from ultralytics import YOLO
# 事前学習済みのYOLO26n-semセマンティックモデルを読み込む
model = YOLO("yolo26n-sem.pt")
# 画像に対して推論を実行する
results = model("https://ultralytics.com/images/bus.jpg") # 結果リスト
# 結果を表示
for r in results:
print(r.semantic_mask.data) # H x WのクラスIDマップを出力| 名前 | 種類 | 説明 |
|---|---|---|
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オブジェクトを使用して、座標のインデックス指定、操作、正規化を行えます。
from ultralytics import YOLO
# 事前学習済みのYOLO26n-poseポーズモデルを読み込む
model = YOLO("yolo26n-pose.pt")
# 画像に対して推論を実行する
results = model("https://ultralytics.com/images/bus.jpg") # 結果リスト
# 結果を表示
for r in results:
print(r.keypoints) # 検出されたキーポイントを含むKeypointsオブジェクトを出力Keypointsクラスのメソッドとプロパティについて、名前、型、説明を含む表を以下に示します。
| 名前 | 種類 | 説明 |
|---|---|---|
cpu() | メソッド | キーポイントテンソルをCPUメモリ上で返します。 |
numpy() | メソッド | キーポイントテンソルをNumPy配列として返します。 |
cuda() | メソッド | キーポイントテンソルをGPUメモリ上で返します。 |
to() | メソッド | 指定したデバイスとdtypeのキーポイントテンソルを返します。 |
xyn | プロパティ(torch.Tensor) | 形状が(N,K,2)の正規化されたキーポイント座標です。 |
xy | プロパティ(torch.Tensor) | 形状が(N,K,2)のピクセル単位のキーポイント座標です。 |
conf | プロパティ(torch.Tensor) | キーポイントの信頼度を返します。利用できない場合はNoneを返します。 |
詳細については、Keypointsクラスのドキュメントを参照してください。
確率#
Probsオブジェクトを使用して、top1とtop5の分類インデックスおよびスコアを取得できます。
from ultralytics import YOLO
# 事前学習済みのYOLO26n-cls分類モデルを読み込む
model = YOLO("yolo26n-cls.pt")
# 画像に対して推論を実行する
results = model("https://ultralytics.com/images/bus.jpg") # 結果リスト
# 結果を表示
for r in results:
print(r.probs) # 検出されたクラス確率を含むProbsオブジェクトを出力Probsクラスのメソッドとプロパティをまとめた表を以下に示します。
| 名前 | 種類 | 説明 |
|---|---|---|
cpu() | メソッド | probsテンソルのコピーをCPUメモリ上に返します。 |
numpy() | メソッド | probsテンソルのコピーをNumPy配列として返します。 |
cuda() | メソッド | probsテンソルのコピーをGPUメモリ上に返します。 |
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
# 事前学習済みYOLO26nモデルを読み込む
model = YOLO("yolo26n-obb.pt")
# 画像に対して推論を実行する
results = model("https://ultralytics.com/images/boats.jpg") # 結果リスト
# 結果を表示
for r in results:
print(r.obb) # 方向付き検出バウンディングボックスを含むOBBオブジェクトを出力する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モデルを使用する場合は、競合を防ぐため、スレッドごとに個別のモデルオブジェクトをインスタンス化するか、スレッドローカルストレージを使用することが重要です。
スレッドセーフな推論を行うには、各スレッド内でモデルを1つインスタンス化します。
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)
# 結果を処理する
# それぞれが独自のモデルインスタンスを持つスレッドを開始する
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
# YOLOモデルを読み込む
model = YOLO("yolo26n.pt")
# ビデオファイルを開く
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)
# ビデオフレームをループ処理する
while cap.isOpened():
# ビデオからフレームを読み込む
success, frame = cap.read()
if success:
# フレームにYOLO推論を実行する
results = model(frame)
# フレーム上に結果を可視化する
annotated_frame = results[0].plot()
# 注釈付きフレームを表示する
cv2.imshow("YOLO Inference", annotated_frame)
# 'q'が押された場合にループを終了する
if cv2.waitKey(1) & 0xFF == ord("q"):
break
else:
# ビデオの最後に到達した場合にループを終了する
break
# ビデオキャプチャオブジェクトを解放し、表示ウィンドウを閉じる
cap.release()
cv2.destroyAllWindows()このスクリプトはビデオの各フレームに予測を実行し、結果を可視化してウィンドウに表示します。「q」を押すとループを終了できます。
次のステップ#
事前学習済みモデルの次の段階に進む準備はできていますか?タスクが問題に適しているか確認し、データセットガイドを参考に独自のデータを形式化してから、そのデータで学習してください。
よくある質問#
Ultralytics YOLOは、リアルタイムの物体検出、インスタンスセグメンテーション、セマンティックセグメンテーション、深度推定、分類、姿勢推定、および方向付きバウンディングボックス(OBB)検出に対応する最先端のモデルです。predictモードを使用すると、画像、ビデオ、ライブストリームなど、さまざまなデータソースに対して高速な推論を実行できます。パフォーマンスと汎用性を重視して設計されており、バッチ処理モードとストリーミングモードも備えています。機能の詳細については、Ultralytics YOLOのpredictモードをご覧ください。
Ultralytics YOLOは、個々の画像、ビデオ、ディレクトリ、URL、ストリームなど、幅広いデータソースを処理できます。
model.predict()呼び出しでデータソースを指定できます。たとえば、ローカル画像には'image.jpg'を、URLには'https://ultralytics.com/images/bus.jpg'を使用します。ドキュメントの推論ソースでは、さまざまなソースの詳細な例をご覧いただけます。推論速度を最適化し、メモリを効率的に管理するには、予測器の呼び出しメソッドで
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) # 結果オブジェクト embeddings = model.embed(source) # torch.Tensor埋め込みのリストYOLOで推論を実行すると、
Resultsオブジェクトに注釈付き画像を表示および保存するメソッドが含まれます。result.show()やresult.save(filename="result.jpg")などのメソッドを使用して、結果を可視化して保存できます。ファイル名のパスに存在しない親ディレクトリは自動的に作成されます(例:result.save("path/to/result.jpg"))。これらのメソッドの一覧については、結果の操作のセクションをご覧ください。