Ultralytics YOLO を使用したモデルの予測
はじめに
機械学習とコンピュータービジョンの世界では、視覚データから意味を理解するプロセスは「推論」または「予測」と呼ばれます。Ultralytics YOLO11は、広範なデータソースでの高性能なリアルタイム推論に特化したpredictモードと呼ばれる強力な機能を提供します。
見る: カスタムプロジェクトのためにUltralytics YOLOモデルから出力を抽出する方法
実世界のアプリケーション
製造業 | スポーツ | 安全性 |
---|---|---|
自動車のスペアパーツ検出 | サッカー選手の検出 | 人物転倒検出 |
推論にUltralytics YOLOを使用する理由
さまざまな推論ニーズにYOLO11のpredictモードを検討すべき理由は以下のとおりです。
- 多様性: 画像、ビデオ、さらにはライブストリームでも推論を実行できます。
- パフォーマンス: 精度を犠牲にすることなく、リアルタイムの高速処理のために設計されています。
- 使いやすさ: 迅速なデプロイメントとテストのための直感的なpythonおよびCLIインターフェース。
- 高度なカスタマイズ性: 特定の要件に応じてモデルの推論動作を調整するためのさまざまな設定とパラメータ。
Predictモードの主な特徴
YOLO11のpredictモードは、堅牢かつ汎用性の高い設計で、以下の機能を備えています。
- 複数のデータソースとの互換性: データが個々の画像、画像のコレクション、ビデオファイル、またはリアルタイムのビデオストリームの形式であっても、predictモードは対応できます。
- ストリーミングモード: ストリーミング機能を使用して、メモリ効率の高いジェネレーターを生成します
Results
オブジェクトを有効にします。これを行うには、以下を設定します。stream=True
predictorのcallメソッド内にあります。 - バッチ処理: 複数の画像またはビデオフレームを1つのバッチで処理する機能により、推論時間をさらに短縮します。
- 統合が容易: 柔軟な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 |
スクリーンショットをキャプチャします。 |
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などのストリーミングプロトコル、またはIPアドレスのURL。 |
マルチストリーム ✅ | 'list.streams' |
str または Path |
*.streams 行ごとに1つのストリームURLを含むテキストファイル。たとえば、8つのストリームはバッチサイズ8で実行されます。 |
ウェブカメラ ✅ | 0 |
int |
推論を実行する接続されたカメラデバイスのインデックス。 |
以下は、各ソースタイプを使用するためのコード例です。
予測ソース
画像ファイルで推論を実行します。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objects
現在の画面の内容をスクリーンショットとして推論を実行します。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define current screenshot as source
source = "screen"
# Run inference on the source
results = model(source) # list of Results objects
URL経由でリモートでホストされている画像または動画で推論を実行します。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define remote image or video URL
source = "https://ultralytics.com/images/bus.jpg"
# Run inference on the source
results = model(source) # list of Results objects
Python Imaging Library (PIL) で開いた画像で推論を実行します。
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Open an image using PIL
source = Image.open("path/to/image.jpg")
# Run inference on the source
results = model(source) # list of Results objects
OpenCVで読み込んだ画像で推論を実行します。
import cv2
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Read an image using OpenCV
source = cv2.imread("path/to/image.jpg")
# Run inference on the source
results = model(source) # list of Results objects
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
PyTorch tensorとして表現される画像で推論を実行します。
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、ビデオ、およびディレクトリのコレクションに対して推論を実行します。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define a path to a CSV file with images, URLs, videos and directories
source = "path/to/file.csv"
# Run inference on the source
results = model(source) # list of Results objects
ビデオファイルに対して推論を実行します。使用することにより stream=True
を使用すると、Resultsオブジェクトのジェネレーターを作成して、メモリ使用量を削減できます。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to video file
source = "path/to/video.mp4"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
ディレクトリ内のすべての画像と動画に対して推論を実行します。サブディレクトリ内の画像と動画もキャプチャするには、globパターン(例: path/to/dir/**/*
.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to directory containing images and videos for inference
source = "path/to/dir"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
glob式に一致するすべての画像と動画に対して推論を実行します。 *
文字。
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オブジェクトのジェネレーターを作成して、長いビデオのメモリ使用量を削減できます。
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
ストリームモードを使用して、RTSP、RTMP、TCP、またはIPアドレスプロトコルを使用してライブビデオストリームで推論を実行します。単一のストリームが提供されている場合、モデルは次の条件で推論を実行します。 バッチサイズ の1です。複数のストリームの場合は、 .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
...
ファイルの各行はストリーミングソースを表しており、複数のビデオストリームを一度に監視し、推論を実行できます。
接続されたカメラデバイスで推論を実行するには、そのカメラのインデックスを渡します。 source
.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on the source
results = model(source=0, stream=True) # generator of Results objects
推論の引数
model.predict()
推論時に渡すことができる複数の引数を受け入れ、デフォルトをオーバーライドします。
例
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.5)
推論の引数:
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
source |
str |
'ultralytics/assets' |
推論用のデータソースを指定します。画像パス、ビデオファイル、ディレクトリ、URL、またはライブフィード用のデバイスIDを指定できます。さまざまな形式とソースをサポートしており、さまざまな種類の入力に柔軟に対応できます。 |
conf |
float |
0.25 |
検出の最小信頼度閾値を設定します。この閾値未満の信頼度で検出されたオブジェクトは無視されます。この値を調整すると、誤検出を減らすことができます。 |
iou |
float |
0.7 |
Non-Maximum Suppression (NMS) のためのIntersection Over Union (IoU) 閾値。値が低いほど、重複するボックスが排除され、検出数が減ります。これは、重複を減らすのに役立ちます。 |
imgsz |
int または tuple |
640 |
推論時の画像サイズを定義します。単一の整数を指定できます。 640 正方形へのリサイズ、または(高さ、幅)のタプルの場合。適切なサイズ調整は検出を改善できます 精度 と処理速度。 |
rect |
bool |
True |
有効にすると、推論速度を向上させるために、画像の短い辺がストライドで割り切れるまで最小限のパディングを行います。無効にすると、推論中に画像を正方形にパディングします。 |
half |
bool |
False |
半精度(FP16)推論を有効にします。これにより、サポートされているGPUでのモデル推論を高速化し、精度への影響を最小限に抑えることができます。 |
device |
str |
None |
推論に使用するデバイスを指定します(例: cpu , cuda:0 または 0 )。モデル実行のために、CPU、特定のGPU、またはその他の計算デバイスを選択できます。 |
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 |
推論中にモデルの特徴の可視化を有効にし、モデルが「見ているもの」に関する洞察を提供します。デバッグとモデルの解釈に役立ちます。 |
augment |
bool |
False |
予測のテスト時拡張(TTA)を有効にします。これにより、推論速度を犠牲にして検出の堅牢性が向上する可能性があります。 |
agnostic_nms |
bool |
False |
クラス非依存Non-Maximum Suppression(NMS)を有効にします。これにより、異なるクラスの重複するボックスがマージされます。クラスの重複が一般的なマルチクラス検出シナリオで役立ちます。 |
classes |
list[int] |
None |
予測をクラスIDのセットにフィルタリングします。指定されたクラスに属する検出のみが返されます。マルチクラス検出タスクで関連オブジェクトに焦点を当てる場合に役立ちます。 |
retina_masks |
bool |
False |
高解像度のセグメンテーションマスクを返します。返されるマスク(masks.data ) は、有効になっている場合、元の画像サイズと一致します。無効になっている場合、推論中に使用される画像サイズになります。 |
embed |
list[int] |
None |
特徴ベクトルまたは埋め込みを抽出するレイヤーを指定します。クラスタリングや類似性検索などのダウンストリームタスクに役立ちます。 |
project |
str |
None |
予測出力が保存されるプロジェクトディレクトリの名前(保存する場合)。 save が有効になっています。 |
name |
str |
None |
予測実行の名前。予測出力が保存されるプロジェクトフォルダー内にサブディレクトリを作成するために使用されます。 save が有効になっています。 |
stream |
bool |
False |
すべてのフレームを一度にメモリにロードする代わりに、Resultsオブジェクトのジェネレーターを返すことにより、長いビデオまたは多数の画像に対してメモリ効率の高い処理を有効にします。 |
verbose |
bool |
True |
ターミナルに詳細な推論ログを表示するかどうかを制御し、予測プロセスに関するリアルタイムフィードバックを提供します。 |
可視化の引数:
引数 | 種類 | デフォルト | 説明 |
---|---|---|---|
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 |
None or int |
None |
バウンディングボックスの線の太さを指定します。もし None 場合、線の太さは画像サイズに基づいて自動的に調整されます。明確にするための視覚的なカスタマイズを提供します。 |
画像およびビデオの形式
YOLO11は、ultralytics/data/utils.pyで指定されているように、さまざまな画像およびビデオ形式をサポートしています。有効なサフィックスと予測コマンドの例については、以下の表を参照してください。
画像
以下の表に、有効なUltralytics画像形式を示します。
注
HEIC画像は推論でのみサポートされており、トレーニングではサポートされていません。
画像の拡張子 | 予測コマンドの例 | リファレンス |
---|---|---|
.bmp |
yolo predict source=image.bmp |
Microsoft BMPファイル形式 |
.dng |
yolo predict source=image.dng |
Adobe DNG |
.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 |
ポータブルネットワークグラフィックス |
.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 |
.pfm |
yolo predict source=image.pfm |
ポータブルFloatMap |
.HEIC |
yolo predict source=image.HEIC |
高効率画像フォーマット |
動画
以下の表に、有効な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ファイルフォーマット |
.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 プロジェクト |
結果の操作
すべてのUltralytics predict()
コールは、のリストを返します Results
オブジェクト:
結果
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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 inference
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オブジェクト。 |
speed |
dict |
画像あたりのミリ秒単位での、プリプロセス、推論、およびポストプロセスの速度の辞書。 |
names |
dict |
クラスインデックスをクラス名にマッピングする辞書。 |
path |
str |
画像ファイルへのパス。 |
save_dir |
str, optional |
結果を保存するディレクトリ。 |
Results
オブジェクトには次のメソッドがあります:
メソッド | 戻り値の型 | 説明 |
---|---|---|
update() |
None |
新しい検出データ(ボックス、マスク、確率、obb、キーポイント)でResultsオブジェクトを更新します。 |
cpu() |
Results |
すべてのtensorがCPUメモリに移動されたResultsオブジェクトのコピーを返します。 |
numpy() |
Results |
すべてのtensorがnumpy配列に変換されたResultsオブジェクトのコピーを返します。 |
cuda() |
Results |
すべてのtensorがGPUメモリに移動されたResultsオブジェクトのコピーを返します。 |
to() |
Results |
tensorが指定されたデバイスとdtypeに移動されたResultsオブジェクトのコピーを返します。 |
new() |
Results |
同じ画像、パス、名前、および速度属性を持つ新しいResultsオブジェクトを作成します。 |
plot() |
np.ndarray |
入力RGB画像上に検出結果をプロットし、注釈付きの画像を返します。 |
show() |
None |
アノテーションされた推論結果とともに画像を表示します。 |
save() |
str |
注釈が付けられた推論結果画像をファイルに保存し、ファイル名を返します。 |
verbose() |
str |
検出と分類の結果を詳述する、タスクごとのログ文字列を返します。 |
save_txt() |
str |
検出結果をテキストファイルに保存し、保存されたファイルへのパスを返します。 |
save_crop() |
None |
切り抜かれた検出画像を、指定されたディレクトリに保存します。 |
summary() |
List[Dict[str, Any]] |
推論結果を、オプションの正規化を使用して、要約された辞書に変換します。 |
to_df() |
DataFrame |
検出結果をPolar DataFrameに変換します。 |
to_csv() |
str |
検出結果をCSV形式に変換します。 |
to_json() |
str |
検出結果をJSON形式に変換します。 |
詳細については、 Results
classドキュメント.
ボックス
Boxes
オブジェクトは、インデックス、操作、およびバウンディングボックスを異なる形式に変換するために使用できます。
ボックス
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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
名前、型、説明など、classのメソッドとプロパティ:
名前 | 種類 | 説明 |
---|---|---|
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
classドキュメント.
マスク
Masks
オブジェクトは、インデックス、操作、およびマスクをセグメントに変換するために使用できます。
マスク
from ultralytics import YOLO
# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-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
名前、型、説明など、classのメソッドとプロパティ:
名前 | 種類 | 説明 |
---|---|---|
cpu() |
メソッド | CPUメモリ上のマスクtensorを返します。 |
numpy() |
メソッド | マスクtensorをnumpy配列として返します。 |
cuda() |
メソッド | GPUメモリ上のマスクtensorを返します。 |
to() |
メソッド | 指定されたdeviceとdtypeを持つマスクtensorを返します。 |
xyn |
プロパティ(torch.Tensor ) |
tensorとして表される正規化されたセグメントのリスト。 |
xy |
プロパティ(torch.Tensor ) |
tensorとして表されるピクセル座標のセグメントのリスト。 |
詳細については、 Masks
classドキュメント.
キーポイント
Keypoints
オブジェクトは、インデックス、操作、および座標の正規化に使用できます。
キーポイント
from ultralytics import YOLO
# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-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
名前、型、説明など、classのメソッドとプロパティ:
名前 | 種類 | 説明 |
---|---|---|
cpu() |
メソッド | CPUメモリ上のキーポイントtensorを返します。 |
numpy() |
メソッド | キーポイントtensorをnumpy配列として返します。 |
cuda() |
メソッド | GPUメモリ上のキーポイントtensorを返します。 |
to() |
メソッド | 指定されたdeviceとdtypeを持つキーポイントtensorを返します。 |
xyn |
プロパティ(torch.Tensor ) |
tensorとして表される正規化されたキーポイントのリスト。 |
xy |
プロパティ(torch.Tensor ) |
tensorとして表されるピクセル座標のキーポイントのリスト。 |
conf |
プロパティ(torch.Tensor ) |
キーポイントの信頼値を返します(利用可能な場合)。利用できない場合はNoneを返します。 |
詳細については、 Keypoints
classドキュメント.
確率
Probs
オブジェクトは、インデックス、getに使用できます top1
および top5
分類のインデックスとスコア。
確率
from ultralytics import YOLO
# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-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 tensorのコピーを返します。 |
numpy() |
メソッド | probs tensorのコピーをnumpy配列として返します。 |
cuda() |
メソッド | GPUメモリ上のprobs tensorのコピーを返します。 |
to() |
メソッド | 指定されたdeviceとdtypeを持つprobs tensorのコピーを返します。 |
top1 |
プロパティ(int ) |
上位1クラスのインデックス。 |
top5 |
プロパティ(list[int] ) |
上位5クラスのインデックス。 |
top1conf |
プロパティ(torch.Tensor ) |
上位1クラスの信頼度。 |
top5conf |
プロパティ(torch.Tensor ) |
上位5クラスの信頼度。 |
詳細については、 Probs
classドキュメント.
OBB
OBB
オブジェクトは、インデックス、操作、および向きのあるバウンディングボックスを異なる形式に変換するために使用できます。
OBB
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n-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
名前、型、説明など、classのメソッドとプロパティ:
名前 | 種類 | 説明 |
---|---|---|
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
classドキュメント.
プロット結果
The 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(["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()
メソッドのパラメータ
The plot()
メソッドは、出力をカスタマイズするためのさまざまな引数をサポートしています。
引数 | 種類 | 説明 | デフォルト |
---|---|---|---|
conf |
bool |
検出信頼性スコアを含めます。 | True |
line_width |
float |
バウンディングボックスの線の幅。scale=True の場合、画像サイズに合わせて調整されます。 None . |
None |
font_size |
float |
テキストフォントサイズ。if の場合、画像サイズに合わせて拡大縮小します。 None . |
None |
font |
str |
テキスト注釈に使用するフォント名。 | 'Arial.ttf' |
pil |
bool |
画像を PIL Image オブジェクトとして返します。 | False |
img |
np.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 |
カラーモードを 'instance' や 'class' のように指定します。 | 'class' |
txt_color |
tuple[int, int, int] |
バウンディングボックスと画像分類ラベルのRGBテキストカラー。 | (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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()
YOLOモデルを使用したスレッドセーフな推論の詳細と、ステップごとの手順については、YOLO Thread-Safe Inference Guideを参照してください。このガイドでは、一般的な落とし穴を回避し、マルチスレッド推論がスムーズに実行されるようにするために必要なすべての情報を提供します。
ストリーミングソース for
-loop
OpenCVを使用したpythonスクリプトを以下に示します(cv2
)と、ビデオフレーム上で推論を実行するYOLOです。このスクリプトは、必要なパッケージ(opencv-python
および ultralytics
)。
ストリーミングforループ
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とは何ですか?また、リアルタイム推論のためのpredictモードとは何ですか?
Ultralytics YOLOは、リアルタイム物体検出、セグメンテーション、および分類のための最先端モデルです。そのpredictモードにより、画像、ビデオ、ライブストリームなど、さまざまなデータソースで高速推論を実行できます。パフォーマンスと汎用性を考慮して設計されており、バッチ処理およびストリーミングモードも提供します。機能の詳細については、Ultralytics YOLO predict modeをご覧ください。
さまざまなデータソースでUltralytics YOLOを使用して推論を実行するにはどうすればよいですか?
Ultralytics YOLOは、個々の画像、ビデオ、ディレクトリ、URL、ストリームなど、幅広いデータソースを処理できます。データソースは、以下のように指定できます。 model.predict()
コール。たとえば、以下を使用します。 'image.jpg'
ローカルイメージまたは 'https://ultralytics.com/images/bus.jpg'
URLの場合。様々な詳細な例をご確認ください。 推論ソース ドキュメントに記載されています。
YOLO推論の速度とメモリ使用量を最適化するにはどうすればよいですか?
推論速度を最適化し、メモリを効率的に管理するには、以下を設定してストリーミングモードを使用できます stream=True
predictorのcallメソッド内にあります。ストリーミングモードは、メモリ効率の高いジェネレーターを生成します。 Results
すべてのフレームをメモリにロードする代わりに、オブジェクトを使用します。長いビデオや大規模なデータセットを処理する場合、ストリーミングモードは特に役立ちます。詳細については、こちらをご覧ください。 ストリーミングモード.
Ultralytics YOLO はどのような推論引数をサポートしていますか?
The model.predict()
YOLOのメソッドは、次のようなさまざまな引数をサポートしています。 conf
, iou
, imgsz
, device
などがあります。これらの引数を使用すると、信頼度閾値、画像サイズ、計算に使用するデバイスなどのパラメータを設定して、推論プロセスをカスタマイズできます。これらの引数の詳細な説明は、 推論の引数 セクションをご参照ください。
YOLO予測の結果を可視化して保存するにはどうすればよいですか?
YOLOで推論を実行した後、 Results
オブジェクトには、注釈付き画像を表示および保存するためのメソッドが含まれています。次のようなメソッドを使用できます。 result.show()
および result.save(filename="result.jpg")
結果を視覚化して保存するには。これらのメソッドの包括的なリストについては、以下を参照してください。 結果の操作 セクションをご参照ください。