Ultralytics YOLOによるモデル予測

Ultralytics YOLO ecosystem and integrations

はじめに

機械学習およびコンピュータビジョンの世界では、視覚データを解釈するプロセスを一般的に推論または予測と呼びます。Ultralytics YOLO26は、幅広いデータソースに対して高性能でリアルタイムな推論を行うために設計された、予測モードという強力な機能を提供します。



Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀

実世界のアプリケーション

製造業スポーツ安全管理
車両スペアパーツ検出サッカー選手検出転倒検出
車両スペアパーツ検出サッカー選手検出転倒検出

なぜ推論にUltralytics YOLOを使用するのか?

YOLO26の予測モードを多様な推論ニーズに検討すべき理由は以下の通りです。

  • 汎用性: 画像、動画、さらにはライブストリームに対しても推論を実行可能です。
  • パフォーマンス: 精度を犠牲にすることなく、リアルタイムの高速処理を実現するように設計されています。
  • 使いやすさ: 迅速なデプロイとテストを可能にする、直感的なPythonおよびCLIインターフェースを備えています。
  • 高度なカスタマイズ性: 特定の要件に合わせてモデルの推論動作を調整するための多様な設定とパラメータが用意されています。
  • 本番環境対応: Ultralytics Platform上でオートスケーリングとモニタリングを備えたAPIエンドポイントとしてモデルをデプロイするか、ローカルで推論を実行可能です。

予測モードの主な機能

YOLO26の予測モードは、堅牢で多用途になるよう設計されており、以下の機能を備えています。

  • 多様なデータソース互換性: データが個別の画像、画像のコレクション、動画ファイル、リアルタイムビデオストリームのいずれであっても、予測モードが対応します。
  • ストリーミングモード: ストリーミング機能を使用して、メモリ効率の良いResultsオブジェクトのジェネレータを生成します。これを有効にするには、予測メソッドの呼び出しでstream=Trueを設定します。
  • バッチ処理: 複数の画像や動画フレームを1つのバッチで処理し、推論時間をさらに短縮します。
  • 統合の容易さ: 柔軟なAPIにより、既存のデータパイプラインや他のソフトウェアコンポーネントと簡単に統合できます。

Ultralytics YOLO models return either a Python list of Results objects or a memory-efficient generator of Results objects when stream=True is passed to the model during inference:

推論 (Predict)
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スクリーンショットをキャプチャする。
PILImage.open('image.jpg')PIL.ImageRGBチャンネルを持つHWC形式。
OpenCVcv2.imread('image.jpg')np.ndarrayBGRチャンネルを持つHWC形式 uint8 (0-255)
NumPynp.zeros((640,1280,3))np.ndarrayBGRチャンネルを持つHWC形式 uint8 (0-255)
torchtorch.zeros(16,3,320,640)torch.TensorRGBチャンネルを持つBCHW形式 float32 (0.0-1.0)
CSV'sources.csv'str または Path画像、動画、またはディレクトリへのパスを含むCSVファイル。
video ✅'video.mp4'str または PathMP4、AVIなどの形式の動画ファイル。
directory ✅'path/'str または Path画像または動画を含むディレクトリへのパス。
glob ✅'path/*.jpg'str複数のファイルに一致させるためのglobパターン。ワイルドカードとして*文字を使用してください。
YouTube ✅'https://youtu.be/LNwODJXcvt4'strYouTube動画へのURL。
stream ✅'rtsp://example.com/media.mp4'strRTSP、RTMP、TCPなどのストリーミングプロトコルのURL、またはIPアドレス。
multi-stream ✅'list.streams'str または Path1行につき1つのストリームURLが記載された*.streamsテキストファイル(例:8つのストリームはバッチサイズ8で実行されます)。
webcam ✅0int推論を実行するための接続済みカメラデバイスのインデックス。

以下に、各ソースタイプを使用するためのコード例を示します。

予測ソース

画像ファイルに対して推論を実行します。

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ターゲットにパディングされます。

**rect=False**を使用すると、常にフルサイズのimgszターゲットにパディングされます。これは、エクスポートされたモデル(ONNX、TensorRTなど)と一致させるために固定の入力サイズが必要な場合に推奨されます。

整数 vs タプル imgsz

  • 整数imgsz=640は、ストライドによる丸め込みの後、正方形のターゲット(640, 640)になります。
  • タプルimgsz=(384, 672)は、長方形のターゲットを設定します。rect=Trueおよびauto=Trueの場合、実際のテンソルはこのターゲットよりも小さくなる可能性があります。

トレーニング vs 推論/エクスポート

トレーニングでは単一の整数imgszのみが受け入れられます([h, w]リストは最大の値に強制されます)。推論とエクスポートでは、整数または(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)

推論の引数:

引数タイプデフォルト説明
sourcestr または int または NoneNone推論のデータソースを指定します。画像パス、動画ファイル、ディレクトリ、URL、またはライブフィードのデバイスIDを指定できます。省略した場合、警告がログに記録され、モデルは組み込みのデモ用アセット(ultralytics/assets、またはOBB用のデモURL)を使用します。幅広い形式とソースをサポートしており、さまざまな入力タイプ全体で柔軟なアプリケーションを実現します。
conffloat0.25検出の最小信頼度しきい値を設定します。このしきい値より低い信頼度で検出されたオブジェクトは無視されます。この値を調整することで、誤検出を減らすことができます。
ioufloat0.7非最大値抑制(NMS)のためのIntersection Over Union(IoU)しきい値です。値を下げると重複するボックスが排除され、検出数が減るため、重複の削減に役立ちます。
imgszint または tuple640レターボックスのターゲット。整数は正方形の N×N を与え、タプルは (height, width) を与えます。rect=True の場合、最小矩形のパディングにより実際のテンソルがこのターゲットよりも小さくなる可能性があります。固定サイズにするには rect=False を使用してください。固定形状 vs 最小矩形を参照してください。
rectboolTrueTrue の場合、可能な限り最小矩形パディングを使用します(同じ形状のバッチおよびサポートされているバックエンドの場合)。False の場合は常に完全な imgsz にパディングします。固定形状 vs 最小矩形を参照してください。
halfboolFalse精度(FP16)推論を有効にします。サポートされているGPU上で、精度への影響を最小限に抑えつつモデル推論を高速化できます。
devicestrNone推論に使用するデバイスを指定します(例: cpu, cuda:0, 0, npu または npu:0)。CPU、特定のGPU、Huawei Ascend NPU、またはその他のコンピューティングデバイスから選択してモデルを実行できます。
batchint1推論のバッチサイズを指定します(ソースがディレクトリ、動画ファイル、または .txt ファイルの場合にのみ機能します)。バッチサイズを大きくするとスループットが向上し、推論に必要な合計時間を短縮できます。
max_detint3001画像あたりの最大検出数です。単一の推論でモデルが検出できるオブジェクトの総数を制限し、密集したシーンでの過剰な出力を防ぎます。
vid_strideint1動画入力のフレームストライドです。動画内のフレームをスキップすることで、時間分解能と引き換えに処理を高速化できます。値が1の場合は全フレームを処理し、値が大きいほどフレームをスキップします。
stream_bufferboolFalseビデオストリームの着信フレームをキューに入れるかどうかを決定します。Falseの場合、古いフレームは破棄され、新しいフレームが優先されます(リアルタイムアプリケーション向けに最適化)。Trueの場合、新しいフレームをバッファにキューイングするため、フレームのスキップは発生しませんが、推論FPSがストリームFPSより低い場合はレイテンシが生じます。
visualizeboolFalse推論中のモデル特徴量の可視化を有効にし、モデルが何を「見ているか」についての洞察を提供します。デバッグやモデルの解釈に役立ちます。
augmentboolFalse予測のためのテスト時オーグメンテーション(TTA)を有効にします。推論速度と引き換えに、検出の堅牢性が向上する可能性があります。
agnostic_nmsboolFalseクラス非依存のNon-Maximum Suppression (NMS)を有効にし、異なるクラスの重複するボックスをマージします。クラスの重複が一般的であるマルチクラス検出シナリオで役立ちます。エンドツーエンドモデル(YOLO26, YOLOv10)の場合、これは同じ検出結果が複数のクラスラベルで出現するのを防ぐ(IoU=1.0の重複)のみであり、個別のボックス間でのIoUしきい値に基づいた抑制は実行しません。
classeslist[int]None予測を特定のクラスIDセットにフィルタリングします。指定されたクラスに属する検出結果のみが返されます。マルチクラス検出タスクにおいて、関連するオブジェクトに焦点を当てるのに役立ちます。
retina_masksboolFalse高解像度のセグメンテーションマスクを返します。有効にすると、返されるマスク(masks.data)は元の画像サイズと一致します。無効にすると、推論中に使用された画像サイズになります。
embedlist[int]None特徴ベクトルやembeddingsを抽出するレイヤーを指定します。クラスタリングや類似性検索などの後続タスクに役立ちます。
projectstrNonesaveが有効な場合に予測出力が保存されるプロジェクトディレクトリの名前です。
namestrNone予測実行の名前です。saveが有効な場合に予測出力が保存される、プロジェクトフォルダ内のサブディレクトリを作成するために使用されます。
streamboolFalseすべてのフレームを一度にメモリに読み込むのではなく、Resultsオブジェクトのジェネレータを返すことで、長時間動画や多数の画像に対してメモリ効率の良い処理を有効にします。
verboseboolTrue予測プロセスのリアルタイムフィードバックを提供する、詳細な推論ログを端末に表示するかどうかを制御します。
compilebool または strFalseEnables PyTorch 2.x torch.compile graph compilation with backend='inductor'. Accepts True"default", False → disables, or a string mode such as "default", "reduce-overhead", "max-autotune-no-cudagraphs". Falls back to eager with a warning if unsupported.
end2endboolNoneNMS不要の推論をサポートするYOLOモデル(YOLO26, YOLOv10)において、エンドツーエンドモードを上書きします。Falseに設定すると、従来のNMSパイプラインを使用して予測を実行でき、さらにiou引数を利用できるようになります。詳細はEnd-to-End Detection guideを参照してください。

可視化の引数:

引数タイプデフォルト説明
showboolFalseTrueの場合、注釈付き画像または動画をウィンドウに表示します。開発やテスト中に即座に視覚的フィードバックを得るのに役立ちます。
saveboolFalse or True注釈付き画像または動画のファイル保存を有効にします。ドキュメント化、詳細な分析、または結果の共有に役立ちます。CLI使用時はデフォルトでTrue、Python使用時はFalseになります。
save_framesboolFalse動画処理時、個々のフレームを画像として保存します。特定のフレームの抽出や、詳細なフレームごとの分析に役立ちます。
save_txtboolFalse検出結果を[class] [x_center] [y_center] [width] [height] [confidence]の形式でテキストファイルに保存します。他の分析ツールとの統合に役立ちます。
save_confboolFalse保存されるテキストファイルに信頼度スコアを含めます。後処理や分析で利用可能な詳細情報を向上させます。
save_cropboolFalse検出されたオブジェクトの切り抜き画像を保存します。データセットのオーグメンテーションや分析、または特定のオブジェクトに焦点を当てたデータセットの作成に役立ちます。
show_labelsboolTrue視覚的出力において、各検出結果にラベルを表示します。検出されたオブジェクトの即時理解を可能にします。
show_confboolTrueラベルとともに、各検出結果の信頼度スコアを表示します。各検出に対するモデルの確信度を把握できます。
show_boxesboolTrue検出されたオブジェクトの周囲にバウンディングボックスを描画します。画像や動画フレーム内での視覚的な特定と位置確認に不可欠です。
line_widthint or NoneNoneバウンディングボックスの線幅を指定します。Noneの場合、画像サイズに基づいて線幅が自動調整されます。明確化のための視覚的なカスタマイズが可能です。

画像およびビデオ形式

YOLO26は、ultralytics/data/utils.pyで指定されているさまざまな画像およびビデオ形式をサポートしています。有効なサフィックスと推論コマンドの例については、以下の表を参照してください。

画像

以下の表には、有効なUltralyticsの画像形式が含まれています。

注意

HEIC/HEIF形式にはpi-heifが必要であり、初回使用時に自動的にインストールされます。AVIFはPillowによってネイティブにサポートされています。

画像サフィックス推論コマンドの例リファレンス
.avifyolo predict source=image.avifAV1 Image File Format
.bmpyolo predict source=image.bmpMicrosoft BMP File Format
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicHigh Efficiency Image Format
.heifyolo predict source=image.heifHigh Efficiency Image Format
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoMulti Picture Object
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag Image File Format
.tiffyolo predict source=image.tiffTag Image File Format
.webpyolo predict source=image.webpWebP

ビデオ

以下の表には、有効なUltralyticsのビデオ形式が含まれています。

ビデオサフィックス推論コマンドの例リファレンス
.asfyolo predict source=video.asfAdvanced Systems Format
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifGraphics Interchange Format
.m4vyolo predict source=video.m4vMPEG-4 Part 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime File Format
.mp4yolo predict source=video.mp4MPEG-4 Part 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Part 2
.mpgyolo predict source=video.mpgMPEG-1 Part 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM Project

結果の処理

すべてのUltralytics predict()呼び出しは、Resultsオブジェクトのリストを返します。

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 inference

Resultsオブジェクトは以下の属性を持っています。

属性タイプ説明
orig_imgnp.ndarrayNumPy配列としての元の画像。
orig_shapetuple(高さ, 幅)形式の元の画像の形状。
boxesBoxes, optional検出されたバウンディングボックスを含むBoxesオブジェクト。
masksMasks, optional検出されたマスクを含むMasksオブジェクト。
probsProbs, optional分類タスクにおける各クラスの確率を含むProbsオブジェクト。
keypointsKeypoints, optional各オブジェクトの検出されたキーポイントを含むKeypointsオブジェクト。
obbOBB, optional回転バウンディングボックス(OBB)を含むOBBオブジェクト。
speeddict画像ごとの前処理、推論、後処理の速度(ミリ秒)を格納した辞書。
namesdictクラスインデックスとクラス名をマッピングする辞書。
pathstr画像ファイルへのパス。
save_dirstr, optional結果を保存するディレクトリ。

Resultsオブジェクトは以下のメソッドを持っています。

メソッド戻り値の型説明
update()None新しい検出データ(boxes、masks、probs、obb、keypoints)でResultsオブジェクトを更新します。
cpu()ResultsすべてのテンソルをCPUメモリに移動したResultsオブジェクトのコピーを返します。
numpy()ResultsすべてのテンソルをNumPy配列に変換したResultsオブジェクトのコピーを返します。
cuda()ResultsすべてのテンソルをGPUメモリに移動したResultsオブジェクトのコピーを返します。
to()Results指定したデバイスとデータ型にテンソルを移動した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検出結果をPolars DataFrameに変換します。
to_csv()str検出結果をCSV形式に変換します。
to_json()str検出結果をJSON形式に変換します。

詳細については、Resultsクラスのドキュメントを参照してください。

Boxes

Boxesオブジェクトを使用して、バウンディングボックスのインデックス作成、操作、および異なる形式への変換を行うことができます。

Boxes
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.boxes)  # print the Boxes object containing the detection bounding boxes

以下は、Boxesクラスのメソッドとプロパティ、その名前、型、および説明の表です。

名前タイプ説明
cpu()メソッドオブジェクトをCPUメモリに移動します。
numpy()メソッドオブジェクトをNumPy配列に変換します。
cuda()メソッドオブジェクトをCUDAメモリに移動します。
to()メソッドオブジェクトを指定したデバイスに移動します。
xyxyプロパティ (torch.Tensor)xyxy形式でボックスを返します。
confプロパティ (torch.Tensor)ボックスの信頼度値を返します。
clsプロパティ (torch.Tensor)ボックスのクラス値を返します。
idプロパティ (torch.Tensor)ボックスの追跡IDを(利用可能な場合)返します。
xywhプロパティ (torch.Tensor)xywh形式でボックスを返します。
xyxynプロパティ (torch.Tensor)元の画像のサイズで正規化されたxyxy形式でボックスを返します。
xywhnプロパティ (torch.Tensor)元の画像のサイズで正規化されたxywh形式でボックスを返します。

詳細については、Boxesクラスのドキュメントを参照してください。

Masks

Masksオブジェクトを使用して、マスクのインデックス作成、操作、およびセグメントへの変換を行うことができます。

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クラスのメソッドとプロパティ、その名前、型、および説明の表です。

名前タイプ説明
cpu()メソッドCPUメモリ上のマスクテンソルを返します。
numpy()メソッドNumPy配列としてマスクテンソルを返します。
cuda()メソッドGPUメモリ上のマスクテンソルを返します。
to()メソッド指定したデバイスとデータ型のマスクテンソルを返します。
xynプロパティ (torch.Tensor)テンソルとして表現された正規化済みセグメントのリスト。
xyプロパティ (torch.Tensor)テンソルとして表現されたピクセル座標のセグメントのリスト。

詳細については、Masksクラスのドキュメントを参照してください。

Keypoints

Keypoints オブジェクトを使用して、座標のインデックス取得、操作、正規化を行うことができます。

Keypoints
from ultralytics import YOLO

# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-pose.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.keypoints)  # print the Keypoints object containing the detected keypoints

Keypoints クラスのメソッドおよびプロパティ(名前、型、説明)をまとめた表は以下の通りです。

名前タイプ説明
cpu()メソッドCPUメモリ上のキーポイントテンソルを返します。
numpy()メソッドNumPy配列としてキーポイントテンソルを返します。
cuda()メソッドGPUメモリ上のキーポイントテンソルを返します。
to()メソッド指定されたデバイスとdtypeを持つキーポイントテンソルを返します。
xynプロパティ (torch.Tensor)テンソルとして表現された正規化済みキーポイントのリストです。
xyプロパティ (torch.Tensor)テンソルとして表現されたピクセル座標のキーポイントのリストです。
confプロパティ (torch.Tensor)キーポイントの信頼度を返します(利用可能な場合。それ以外はNone)。

詳細については、Keypoints クラスのドキュメントを参照してください。

Probs

Probs オブジェクトを使用して、分類の top1 および top5 インデックスとスコアのインデックス取得や取得が可能です。

Probs
from ultralytics import YOLO

# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-cls.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.probs)  # print the Probs object containing the detected class probabilities

Probs クラスのメソッドおよびプロパティをまとめた表は以下の通りです。

名前タイプ説明
cpu()メソッドCPUメモリ上のprobsテンソルのコピーを返します。
numpy()メソッドNumPy配列としてprobsテンソルのコピーを返します。
cuda()メソッドGPUメモリ上のprobsテンソルのコピーを返します。
to()メソッド指定されたデバイスとdtypeを持つprobsテンソルのコピーを返します。
top1プロパティ (int)トップ1クラスのインデックス。
top5プロパティ (list[int])トップ5クラスのインデックス。
top1confプロパティ (torch.Tensor)トップ1クラスの信頼度。
top5confプロパティ (torch.Tensor)トップ5クラスの信頼度。

詳細については、Probs クラスのドキュメントを参照してください。

OBB

OBB オブジェクトを使用して、回転バウンディングボックスのインデックス取得、操作、および異なるフォーマットへの変換が可能です。

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 クラスのドキュメントを参照してください。

結果のプロット

The plot() method in Results objects facilitates visualization of predictions by overlaying detected objects (such as bounding boxes, masks, keypoints, and probabilities) onto the original image. This method returns the annotated image as a NumPy array, allowing for easy display or saving.

プロッティング(描画)
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() メソッドは、出力をカスタマイズするための様々な引数をサポートしています。

引数タイプ説明デフォルト
confbool検出の信頼度スコアを含めます。True
line_widthfloatバウンディングボックスの線幅。None の場合、画像サイズに合わせて拡大縮小されます。None
font_sizefloatテキストのフォントサイズ。None の場合、画像サイズに合わせて拡大縮小されます。None
fontstrテキストアノテーションのフォント名。'Arial.ttf'
pilbool画像をPIL Imageオブジェクトとして返します。False
imgnp.ndarrayプロット用の代替画像。None の場合は元の画像を使用します。None
im_gputorch.Tensorより高速なマスクプロットのためのGPU加速画像。形状: (1, 3, 640, 640)。None
kpt_radiusint描画されるキーポイントの半径。5
kpt_lineboolキーポイントを線で結びます。True
labelsboolアノテーションにクラスラベルを含めます。True
boxesbool画像上にバウンディングボックスをオーバーレイします。True
masksbool画像上にマスクをオーバーレイします。True
probsbool分類確率を含めます。True
showboolデフォルトの画像ビューアーを使用して、アノテーション付き画像を直接表示します。False
saveboolfilename で指定されたファイルにアノテーション付き画像を保存します。False
filenamestrsaveTrue の場合にアノテーション付き画像を保存するファイルのパスと名前。None
color_modestrカラーモード(例: 'instance' または 'class')を指定します。'class'
txt_colortuple[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=("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) が既にインストールされていることを前提としています。

ストリーミングforループ
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' キーを押すとループを終了できます。

FAQ

Ultralytics YOLO とリアルタイム推論のための予測モードとは何ですか?

Ultralytics YOLO は、リアルタイムの オブジェクト検出、セグメンテーション、分類のための最先端モデルです。予測モードを使用すると、画像、ビデオ、ライブストリームなどの様々なデータソースに対して高速な推論を実行できます。パフォーマンスと汎用性を重視して設計されており、バッチ処理やストリーミングモードも備えています。機能の詳細については、Ultralytics YOLO 予測モードを確認してください。

Ultralytics YOLO を使用して様々なデータソースで推論を実行するにはどうすればよいですか?

Ultralytics YOLO は、単一の画像、ビデオ、ディレクトリ、URL、ストリームなど、幅広いデータソースを処理できます。データソースは model.predict() 呼び出しで指定します。例えば、ローカル画像には 'image.jpg' を、URLには 'https://ultralytics.com/images/bus.jpg' を使用します。ドキュメント内の 推論ソース に関する詳細な例を確認してください。

YOLOの推論速度とメモリ使用量を最適化するにはどうすればよいですか?

推論速度を最適化し、メモリを効率的に管理するには、予測子の呼び出しメソッドで stream=True に設定してストリーミングモードを使用します。ストリーミングモードは、すべてのフレームをメモリに読み込むのではなく、メモリ効率の良い Results オブジェクトのジェネレーターを生成します。長時間のビデオや大規模なデータセットを処理する場合、ストリーミングモードは特に有効です。ストリーミングモード について詳細を学びましょう。

Ultralytics YOLO はどのような推論引数をサポートしていますか?

YOLO の model.predict() メソッドは、confiouimgszdevice などの様々な引数をサポートしています。これらの引数を使用することで、信頼度のしきい値、画像サイズ、計算に使用するデバイスなどのパラメータを設定し、推論プロセスをカスタマイズできます。これらの引数の詳細な説明は、推論引数 セクションに記載されています。

YOLO 予測の結果を可視化および保存するにはどうすればよいですか?

YOLO で推論を実行した後、Results オブジェクトにはアノテーション付き画像を表示および保存するためのメソッドが含まれています。result.show()result.save(filename="result.jpg") といったメソッドを使用して、結果を可視化・保存できます。ファイル名のパスに親ディレクトリが存在しない場合、自動的に作成されます(例: result.save("path/to/result.jpg"))。これらのメソッドの一覧については、結果の操作 セクションを参照してください。

コメント