によるモデル予測Ultralytics YOLO
はじめに
機械学習と コンピュータビジョンの世界では、視覚データから意味を見出すプロセスを「推論」または「予測」と呼ぶ。Ultralytics YOLO11には、様々なデータソースに対して高性能でリアルタイムな推論を行うための、predictモードと呼ばれる強力な機能があります。
見るんだ: Ultralytics YOLO モデルからカスタムプロジェクトのアウトプットを抽出する方法。
実世界での応用
製造業 | スポーツ | 安全性 |
---|---|---|
車両予備品検出 | サッカー選手検出 | 落下検知 |
なぜ推論にUltralytics YOLO を使うのか?
ここでは、YOLO11の予測モードをあなたの様々な推論ニーズに合わせて検討すべき理由を説明する:
- 汎用性:画像、ビデオ、ライブストリームでさえも推論が可能。
- パフォーマンス 精度を犠牲にすることなく、リアルタイムの高速処理を実現。
- 使いやすさ:直感的なPython およびCLI インターフェースにより、迅速な展開とテストが可能。
- 高いカスタマイズ性:様々な設定やパラメータにより、特定の要件に応じてモデルの推論動作を調整することができます。
予測モードの主な特徴
YOLO11の予測モードは、堅牢かつ多機能に設計されている:
- 複数のデータソースの互換性:データが個々の画像、画像集、ビデオファイル、またはリアルタイムのビデオストリームのいずれであっても、予測モードでカバーできます。
- ストリーミング・モード: のメモリ効率に優れたジェネレーターを生成するには、ストリーミング機能を使う。
Results
オブジェクトを使用します。これを有効にするにはstream=True
をプレディクターの呼び出しメソッドに追加する。 - バッチ処理:複数の画像やビデオフレームを一括して処理できるため、推論時間がさらに短縮される。
- 統合が容易:柔軟なAPIにより、既存のデータパイプラインや他のソフトウェアコンポーネントと簡単に統合できます。
Ultralytics YOLO のPython リストを返す。 Results
Python オブジェクトを生成する。 Results
オブジェクトが stream=True
は推論中にモデルに渡される:
予測する
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n 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
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"], stream=True) # return a generator of Results objects
# Process results generator
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
推論ソース
YOLO11は、下表に示すように、推論のためにさまざまなタイプの入力ソースを処理することができる。ソースには、静止画像、ビデオ・ストリーム、さまざまなデータ形式が含まれる。この表は、各ソースが引数 stream=True
✅.ストリーミングモードは、すべてのフレームをメモリにロードする代わりに結果のジェネレーターを作成するため、ビデオやライブストリームを処理するのに有益です。
チップ
用途 stream=True
長い動画や大きなデータセットを処理する際に、メモリを効率的に管理する。いつ stream=False
この場合、すべてのフレームまたはデータポイントの結果がメモリに保存されるため、大きな入力に対してすぐに加算され、メモリ不足エラーが発生する可能性がある。これに対して stream=True
ジェネレーターを使用し、現在のフレームまたはデータポイントの結果のみをメモリに保持することで、メモリ消費を大幅に削減し、メモリ不足の問題を防ぎます。
ソース | 例 | タイプ | 備考 |
---|---|---|---|
イメージ | 'image.jpg' | str または Path | 単一の画像ファイル。 |
URL | 'https://ultralytics.com/images/bus.jpg' | str | 画像へのURL。 |
スクリーンショット | 'screen' | str | スクリーンショットを撮る。 |
ピル | Image.open('image.jpg') | PIL.Image | RGBチャンネルのHWCフォーマット。 |
オープンCV | cv2.imread('image.jpg') | np.ndarray | BGRチャンネル付きHWCフォーマット uint8 (0-255) . |
ナンピー | 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) . |
シーエスブイ | 'sources.csv' | str または Path | 画像、ビデオ、またはディレクトリへのパスを含むCSVファイル。 |
ビデオ | 'video.mp4' | str または Path | MP4、AVIなどのビデオファイル。 |
ディレクトリ | 'path/' | str または Path | 画像または動画を含むディレクトリへのパス。 |
グロブ | 'path/*.jpg' | str | 複数のファイルにマッチするグロブ・パターン。複数のファイルにマッチさせるには * 文字をワイルドカードとして使用する。 |
ユーチューブ | 'https://youtu.be/LNwODJXcvt4' | str | YouTubeビデオのURL。 |
ストリーム | 'rtsp://example.com/media.mp4' | str | RTSP、RTMP、TCPなどのストリーミング・プロトコルのURL、またはIPアドレス。 |
マルチストリーム | 'list.streams' | str または Path | *.streams テキストファイルで、1行につき1つのストリームURL、つまりバッチサイズ8で8つのストリームが実行される。 |
ウェブカメラ | 0 | int | 推論を実行する接続されたカメラデバイスのインデックス。 |
以下に、各ソース・タイプを使用するためのコード例を示します:
予測ソース
画像ファイルに対して推論を実行する。
現在の画面の内容をスクリーンショットとして推論を実行する。
URLを介してリモートでホストされている画像やビデオで推論を実行します。
Python Imaging Library (PIL)で開いた画像に対して推論を実行する。
OpenCVで読み込んだ画像に対して推論を実行する。
numpyの配列として表現された画像に対して推論を実行する。
import numpy as np
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")
# Run inference on the source
results = model(source) # list of Results objects
として表現された画像に対して推論を実行する。 PyTorchtensor.
import torch
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)
# Run inference on the source
results = model(source) # list of Results objects
CSVファイルにリストされた画像、URL、動画、ディレクトリのコレクションに対して推論を実行します。
ビデオファイルで推論を実行する。を使用して stream=True
を使えば、結果オブジェクトのジェネレーターを作成してメモリ使用量を減らすことができる。
ディレクトリ内のすべての画像と動画に対して推論を実行する。サブディレクトリ内の画像や動画もキャプチャするには、グロブパターンを使う。 path/to/dir/**/*
.
というグロブ表現にマッチするすべての画像と動画に対して推論を実行する。 *
の文字がある。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"
# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
YouTubeの動画で推論を実行。を使うことで stream=True
また、Resultsオブジェクトのジェネレーターを作成することで、長い動画のメモリ使用量を減らすことができます。
ストリームモードを使用して、RTSP、RTMP、TCP、またはIPアドレスプロトコルを使用するライブビデオストリームで推論を実行する。単一のストリームが提供された場合、モデルは バッチサイズ 複数ストリームの場合は .streams
バッチ・サイズは、提供されたストリームの数によって決定される(たとえば、8ストリームの場合はバッチ・サイズ8)。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4" # RTSP, RTMP, TCP, or IP streaming address
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
シングルストリームを使用する場合、バッチサイズはデフォルトで1に設定され、ビデオフィードの効率的なリアルタイム処理が可能になります。
複数のビデオストリームを同時に処理するには .streams
ストリーミング・ソースを含むテキスト・ファイル。モデルはバッチ推論を実行し、バッチサイズはストリーム数に等しい。この設定により、複数のフィードを同時に効率的に処理できる。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams" # *.streams text file with one streaming address per line
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
例 .streams
テキストファイル:
rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...
ファイルの各行がストリーミング・ソースを表し、複数のビデオ・ストリームを一度にモニターし、推論を実行することができる。
推論
model.predict()
は、推論時に複数の引数を渡してデフォルトを上書きすることができる:
例
推論引数:
議論 | タイプ | デフォルト | 説明 |
---|---|---|---|
source | str | 'ultralytics/assets' | 推論のデータソースを指定します。画像パス、ビデオファイル、ディレクトリ、URL、またはライブフィードのデバイスIDを指定できます。幅広いフォーマットとソースをサポートしているため、さまざまなタイプの入力に柔軟に対応できます。 |
conf | float | 0.25 | 検出の最小信頼度しきい値を設定します。この閾値以下の信頼度で検出されたオブジェクトは無視されます。この値を調整することで、誤検出を減らすことができます。 |
iou | float | 0.7 | Non-Maximum Suppression (NMS)のIntersection Over Union(IoU)しきい値。値が低いほど、重複するボックスが排除されるため検出数が少なくなり、重複を減らすのに便利です。 |
imgsz | int or tuple | 640 | 推論のための画像サイズを定義する。単一の整数値 640 正方形にリサイズする場合、または(高さ、幅)のタプルを使用します。適切なサイジングは検出を向上させる 精度 と処理速度。 |
half | bool | False | 半精度(FP16)推論が可能になり、サポートされているGPUでのモデル推論を、精度への影響を最小限に抑えながら高速化することができます。 |
device | str | None | 推論を行うデバイスを指定する(例. cpu , cuda:0 または 0 ).CPU 、特定のGPU 、またはモデル実行のための他のコンピュート・デバイスを選択することができます。 |
max_det | int | 300 | 画像あたりの最大検出数。1回の推論でモデルが検出できるオブジェクトの総数を制限し、密集したシーンでの過剰な出力を防ぎます。 |
vid_stride | int | 1 | ビデオ入力のフレームストライド。時間的な解像度を犠牲にして処理を高速化するために、ビデオのフレームをスキップできるようにする。1の値はすべてのフレームを処理し、それ以上の値はフレームをスキップする。 |
stream_buffer | bool | False | ビデオストリームの受信フレームをキューに入れるかどうかを決定する。もし False もし`True'なら、新しいフレームに対応するために古いフレームを削除する(リアルタイムアプリケーションに最適化されている)。もし `True' なら、新しいフレームをバッファにキューイングし、フレームがスキップされないようにしますが、推論の FPS がストリームの FPS より低い場合は遅延が発生します。 |
visualize | bool | False | 推論中にモデルの特徴を可視化し、モデルが何を「見て」いるのかを知ることができます。デバッグやモデルの解釈に役立ちます。 |
augment | bool | False | 予測に対するテスト時間拡張(TTA)を可能にし、推論速度を犠牲にすることで検出のロバスト性を向上させる可能性がある。 |
agnostic_nms | bool | False | 異なるクラスのオーバーラップしたボックスをマージする、クラスにとらわれない非最大抑制(NMS)を有効にします。クラスの重複が一般的なマルチクラス検出シナリオで有用。 |
classes | list[int] | None | クラス ID のセットに予測をフィルタリングします。指定されたクラスに属する検出のみが返されます。複数クラスの検出タスクで、関連するオブジェクトに焦点を当てるのに便利です。 |
retina_masks | bool | False | 高解像度のセグメンテーションマスクを返します。返されるマスク (masks.data )が有効なら、元の画像サイズと一致する。無効にすると、推論時に使われた画像サイズになります。 |
embed | list[int] | None | 特徴ベクトルまたは埋め込みを抽出するレイヤを指定します。クラスタリングや類似検索のような下流のタスクに便利です。 |
project | str | None | 以下の場合、予測出力が保存されるプロジェクト・ディレクトリの名前。 save が有効になっている。 |
name | str | None | 予測ランの名前。プロジェクト・フォルダ内にサブ・ディレクトリを作成するために使用されます。 save が有効になっている。 |
可視化の引数:
議論 | タイプ | デフォルト | 説明 |
---|---|---|---|
show | bool | False | もし True 注釈付きの画像やビデオをウィンドウに表示します。開発中やテスト中の即時の視覚的フィードバックに便利です。 |
save | bool | False または 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 | None または int | None | バウンディングボックスの線幅を指定します。もし None 画像サイズに応じて線幅が自動的に調整されます。視覚的にわかりやすくカスタマイズできます。 |
画像とビデオのフォーマット
YOLO11は、ultralytics/data/utils.pyで指定されているように、様々な画像やビデオのフォーマットをサポートしています。有効な接尾辞と予測コマンドの例については、以下の表を参照してください。
画像
以下の表は、有効なUltralytics 画像フォーマットを示しています。
注
HEIC画像は推論のみにサポートされ、トレーニングには使用できません。
画像の接尾辞 | 予測コマンドの例 | 参考 |
---|---|---|
.bmp | yolo predict source=image.bmp | Microsoft BMPファイル形式 |
.dng | yolo predict source=image.dng | アドビDNG |
.jpeg | yolo predict source=image.jpeg | ジェイペグ |
.jpg | yolo predict source=image.jpg | ジェイペグ |
.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 | ウェブピー |
.pfm | yolo predict source=image.pfm | ポータブル・フロートマップ |
.HEIC | yolo predict source=image.HEIC | 高効率画像フォーマット |
ビデオ
以下の表には、有効なUltralytics ビデオフォーマットが記載されています。
ビデオの接尾辞 | 予測コマンドの例 | 参考 |
---|---|---|
.asf | yolo predict source=video.asf | アドバンスト・システムズ・フォーマット |
.avi | yolo predict source=video.avi | オーディオ・ビデオ・インターリーブ |
.gif | yolo predict source=video.gif | グラフィックス交換フォーマット |
.m4v | yolo predict source=video.m4v | MPEG-4パート14 |
.mkv | yolo predict source=video.mkv | マトロスカ |
.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パート2 |
.mpg | yolo predict source=video.mpg | MPEG-1パート2 |
.ts | yolo predict source=video.ts | MPEGトランスポートストリーム |
.wmv | yolo predict source=video.wmv | ウィンドウズ・メディア・ビデオ |
.webm | yolo predict source=video.webm | WebMプロジェクト |
結果を出す
すべてUltralytics predict()
のリストを返す。 Results
オブジェクトがある:
結果
Results
オブジェクトは以下の属性を持つ:
属性 | タイプ | 説明 |
---|---|---|
orig_img | numpy.ndarray | numpy 配列としての元画像。 |
orig_shape | tuple | 元画像の形状を (height, width) フォーマットで表したもの。 |
boxes | Boxes, optional | 検出バウンディングボックスを含むBoxesオブジェクト。 |
masks | Masks, optional | 検出マスクを含むMasksオブジェクト。 |
probs | Probs, optional | 分類タスクの各クラスの確率を含む Probs オブジェクト。 |
keypoints | Keypoints, optional | 各オブジェクトの検出されたキーポイントを含むキーポイントオブジェクト。 |
obb | OBB, optional | 指向バウンディングボックスを含む OBB オブジェクト。 |
speed | dict | 前処理、推論、および後処理の速度を画像ごとにミリ秒単位で表した辞書。 |
names | dict | クラス名の辞書。 |
path | str | 画像ファイルのパス。 |
Results
オブジェクトには以下のメソッドがある:
方法 | リターン・タイプ | 説明 |
---|---|---|
update() | None | 結果オブジェクトのボックス、マスク、probs属性を更新する。 |
cpu() | Results | CPU 、すべてのテンソルを含むResultsオブジェクトのコピーを返す。 |
numpy() | Results | すべてのテンソルをnumpy配列としてResultsオブジェクトのコピーを返す。 |
cuda() | Results | GPU 、すべてのテンソルを含むResultsオブジェクトのコピーを返す。 |
to() | Results | 指定されたデバイスとdtypeのテンソルを持つResultsオブジェクトのコピーを返す。 |
new() | Results | 同じ画像、パス、名前を持つ新しいResultsオブジェクトを返す。 |
plot() | numpy.ndarray | 検出結果をプロットする。注釈付き画像のnumpy配列を返します。 |
show() | None | 注釈付きの結果を画面に表示する。 |
save() | None | 注釈付き結果をファイルに保存 |
verbose() | str | 各タスクのログ文字列を返す。 |
save_txt() | None | 予測値をtxtファイルに保存する。 |
save_crop() | None | トリミングした予測値を保存する save_dir/cls/file_name.jpg . |
tojson() | str | オブジェクトをJSON形式に変換する。 |
詳細は Results
クラス文書.
ボックス
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
クラスのメソッドとプロパティの名前、型、説明:
名称 | タイプ | 説明 |
---|---|---|
cpu() | 方法 | CPU メモリ上のマスクtensor を返す。 |
numpy() | 方法 | マスクtensor を numpy の配列として返します。 |
cuda() | 方法 | GPU メモリ上のマスクtensor を返す。 |
to() | 方法 | 指定されたデバイスと dtype を持つマスクtensor を返す。 |
xyn | プロパティtorch.Tensor ) | 正規化されたセグメントのリスト。 |
xy | プロパティtorch.Tensor ) | テンソルとして表現されたピクセル座標のセグメントのリスト。 |
詳細は Masks
クラス文書.
キーポイント
Keypoints
オブジェクトは、座標のインデックス付け、操作、正規化に使用できる。
キーポイント
以下はその表である。 Keypoints
クラスのメソッドとプロパティの名前、型、説明:
名称 | タイプ | 説明 |
---|---|---|
cpu() | 方法 | CPU メモリ上のtensor キーポイントを返す。 |
numpy() | 方法 | キーポイントtensor を numpy の配列として返す。 |
cuda() | 方法 | GPU メモリ上のtensor キーポイントを返す。 |
to() | 方法 | 指定されたデバイスと dtype を持つキーポイントtensor を返す。 |
xyn | プロパティtorch.Tensor ) | テンソルとして表現された正規化キーポイントのリスト。 |
xy | プロパティtorch.Tensor ) | テンソルとして表現されたピクセル座標のキーポイントのリスト。 |
conf | プロパティtorch.Tensor ) | キーポイントの信頼値があればそれを返し、なければ None。 |
詳細は Keypoints
クラス文書.
問題
Probs
オブジェクトを使用することができます。 top1
そして top5
分類の指標と得点。
問題
のメソッドとプロパティを表にまとめた。 Probs
クラスである:
名称 | タイプ | 説明 |
---|---|---|
cpu() | 方法 | CPU メモリ上の probstensor のコピーを返す。 |
numpy() | 方法 | probstensor のコピーを numpy 配列として返す。 |
cuda() | 方法 | GPU メモリ上の probstensor のコピーを返す。 |
to() | 方法 | 指定されたデバイスと dtype を持つ probstensor のコピーを返す。 |
top1 | プロパティint ) | トップ1クラスのインデックス。 |
top5 | プロパティlist[int] ) | 上位5クラスの指標。 |
top1conf | プロパティtorch.Tensor ) | トップ1クラスの自信。 |
top5conf | プロパティtorch.Tensor ) | トップ5クラスのコンフィデンス |
詳細は Probs
クラス文書.
OBB
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 ) | 回転したボックスをxyxyxy形式で返す。 |
xyxyxyxyn | プロパティtorch.Tensor ) | 画像サイズで正規化した xyxyxy 形式の回転ボックスを返す。 |
詳細は OBB
クラス文書.
結果のプロット
について plot()
メソッド Results
オブジェクトは、検出されたオブジェクト(バウンディングボックス、マスク、キーポイント、確率など)を元の画像に重ねることで、予測の視覚化を容易にします。このメソッドは、注釈付きの画像をNumPyの配列として返すので、表示や保存が簡単にできます。
プロット
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg'
results = model(["bus.jpg", "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 | numpy.ndarray | プロット用の代替画像。もし None . | None |
im_gpu | torch.Tensor | GPU-高速マスクプロット用加速画像。形状:(1, 3, 640, 640)。 | 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 | インスタンス」や「クラス」など、カラーモードを指定する。 | 'class' |
スレッドセーフ推論
推論中にスレッドセーフを確保することは、複数の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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()
YOLO モデルによるスレッドセーフ推論の詳細とステップバイステップの手順については、YOLO スレッドセーフ推論ガイドを参照してください。このガイドでは、よくある落とし穴を避け、マルチスレッド推論をスムーズに実行するために必要な情報を提供します。
ストリーミング・ソース for
-ループ
以下はOpenCVを使ったPython スクリプトである。cv2
)とYOLO 、ビデオフレームに対して推論を実行する。このスクリプトは、必要なパッケージ (opencv-python
そして ultralytics
).
ストリーミング・フォー・ループ
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo11n.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'を押すことで終了できる。
よくあるご質問
Ultralytics YOLO 、リアルタイム推論のための予測モードとは?
Ultralytics YOLO は、リアルタイムの物体検出、セグメンテーション、分類のための最先端モデルです。予測モードでは、画像、ビデオ、ライブストリームなど様々なデータソースに対して高速な推論を行うことができます。性能と汎用性を追求した設計により、バッチ処理モードとストリーミング・モードも提供します。機能の詳細については、Ultralytics YOLO predict modeをご覧ください。
Ultralytics YOLO を使って、異なるデータソースに対して推論を実行するにはどうすればよいですか?
Ultralytics YOLO は、個々の画像、動画、ディレクトリ、URL、ストリームなど、さまざまなデータソースを処理できます。データソースは model.predict()
を呼び出す。例えば 'image.jpg'
ローカル・イメージまたは 'https://ultralytics.com/images/bus.jpg'
をURLに使用する。様々な 推論ソース を参照してください。
YOLO 推論の速度とメモリ使用量を最適化するには?
推論速度を最適化し、メモリを効率的に管理するには、ストリーミング・モードを使用することができます。 stream=True
を予測メソッドの呼び出しメソッドに追加する。ストリーミング・モードは、メモリ効率のよい Results
オブジェクトをロードする。長い動画や大きなデータセットの処理には、ストリーミングモードが特に便利です。詳細はこちら ストリーミングモード.
Ultralytics YOLO はどのような推論を支持しているのか?
について model.predict()
YOLO メソッドは、次のようなさまざまな引数をサポートしている。 conf
, iou
, imgsz
, device
などがあります。これらの引数により、信頼しきい値、画像サイズ、計算に使用するデバイスなどのパラメータを設定し、推論プロセスをカスタマイズすることができます。これらの引数の詳細な説明は 推論引数 セクションを参照されたい。
YOLO の予測結果を視覚化して保存するにはどうすればよいですか?
YOLO 、推論を実行した。 Results
オブジェクトには、注釈付き画像を表示したり保存したりするためのメソッドが含まれています。以下のようなメソッドが使えます。 result.show()
そして result.save(filename="result.jpg")
を使用して結果を視覚化し、保存する。これらのメソッドの包括的なリストについては 結果との取り組み セクションを参照されたい。