コンテンツぞスキップ

によるモデル予枬Ultralytics YOLO

Ultralytics YOLO ゚コシステムず統合

はじめに

機械孊習ずコンピュヌタビゞョンの䞖界では、芖芚デヌタから意味を芋出すプロセスを「掚論」たたは「予枬」ず呌びたす。Ultralytics YOLOv8 は、幅広いデヌタ゜ヌスに察する高性胜でリアルタむムの掚論甚に調敎された、predict モヌドずしお知られる匷力な機胜を提䟛したす。



芋るんだ Ultralytics YOLOv8 モデルからカスタムプロゞェクトのアりトプットを抜出する方法。

実䞖界での応甚

補造業 スポヌツ 安党性
車䞡予備品怜出 サッカヌ遞手怜出 萜䞋怜知
車䞡予備品怜出 サッカヌ遞手怜出 萜䞋怜知

なぜ掚論にUltralytics YOLO を䜿うのか

ここでは、様々な掚論ニヌズに察しおYOLOv8 の predict モヌドを怜蚎すべき理由を説明する

  • 汎甚性画像、ビデオ、ラむブストリヌムでさえも掚論が可胜。
  • パフォヌマンス粟床を犠牲にするこずなく、リアルタむムの高速凊理を実珟。
  • 䜿いやすさ盎感的なPython およびCLI むンタヌフェヌスにより、迅速な展開ずテストが可胜。
  • 高いカスタマむズ性様々な蚭定やパラメヌタにより、特定の芁件に応じおモデルの掚論動䜜を調敎するこずができたす。

予枬モヌドの䞻な特城

YOLOv8の予枬モヌドは、堅牢で倚甚途に䜿えるように蚭蚈されおいる

  • 耇数のデヌタ゜ヌスの互換性デヌタが個々の画像、画像集、ビデオファむル、たたはリアルタむムのビデオストリヌムのいずれであっおも、予枬モヌドでカバヌできたす。
  • ストリヌミング・モヌド のメモリ効率に優れたゞェネレヌタヌを生成するには、ストリヌミング機胜を䜿う。 Results オブゞェクトを䜿甚したす。これを有効にするには stream=True をプレディクタヌの呌び出しメ゜ッドに远加する。
  • バッチ凊理耇数の画像やビデオフレヌムを䞀括しお凊理できるため、掚論時間がさらに短瞮される。
  • 統合が容易柔軟なAPIにより、既存のデヌタパむプラむンや他の゜フトりェアコンポヌネントず簡単に統合できたす。

Ultralytics YOLO のPython リストを返す。 Results Python オブゞェクトを生成する。 Results オブゞェクトが stream=True は掚論䞭にモデルに枡される

予枬する

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(['im1.jpg', 'im2.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('yolov8n.pt')  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(['im1.jpg', 'im2.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

掚論゜ヌス

YOLOv8 は、䞋衚に瀺すように、掚論のためにさたざたなタむプの入力゜ヌスを凊理するこずができる。゜ヌスには、静止画像、ビデオ・ストリヌム、さたざたなデヌタ圢匏が含たれる。この衚は、各゜ヌスが匕数 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('im.jpg') PIL.Image RGBチャンネルのHWCフォヌマット。
オヌプンCV cv2.imread('im.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぀のストリヌムが実行される。

以䞋に、各゜ヌス・タむプを䜿甚するためのコヌド䟋を瀺したす

予枬゜ヌス

画像ファむルに察しお掚論を実行する。

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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、ビデオ、ディレクトリのコレクションに察しお掚論を実行したす。

import torch
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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を䜿えば、結果オブゞェクトのゞェネレヌタヌを䜜成しおメモリ䜿甚量を枛らすこずができる。

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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

ディレクトリ内のすべおの画像ず動画に察しお掚論を実行する。サブディレクトリ内の画像や動画もキャプチャするには、グロブパタヌンを䜿う。 path/to/dir/**/*.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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

ずいうグロブ衚珟にマッチするすべおの画像ず動画に察しお掚論を実行する。 * の文字がある。

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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 YOLOv8n model
model = YOLO('yolov8n.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アドレスプロトコルを䜿甚しお、リモヌトストリヌミング゜ヌス䞊で掚論を実行したす。耇数のストリヌムが *.streams ぀たり、バッチ・サむズ8で8぀のストリヌムが実行され、そうでない堎合はバッチ・サむズ1で1぀のストリヌムが実行される。

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Single stream with batch-size 1 inference
source = 'rtsp://example.com/media.mp4'  # RTSP, RTMP, TCP or IP streaming address

# Multiple streams with batched inference (i.e. batch-size 8 for 8 streams)
source = 'path/to/list.streams'  # *.streams text file with one streaming address per row

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

掚論

model.predict() は、掚論時にデフォルトを䞊曞きするために枡すこずができる耇数の匕数を受け付ける

䟋

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Run inference on 'bus.jpg' with arguments
model.predict('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 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 ビデオストリヌムを凊理する際に、すべおのフレヌムをバッファリングするかどうかを決定する (True)、あるいはモデルが最新のフレヌム(False).リアルタむムアプリケヌションに䟿利。
visualize bool False 掚論䞭にモデルの特城を可芖化し、モデルが䜕を「芋お」いるのかを知るこずができたす。デバッグやモデルの解釈に圹立ちたす。
augment bool False 予枬に察するテスト時間拡匵TTAを可胜にし、掚論速床を犠牲にするこずで怜出のロバスト性を向䞊させる可胜性がある。
agnostic_nms bool False 異なるクラスのオヌバヌラップしたボックスをマヌゞする、クラスにずらわれない非最倧抑制NMSを有効にしたす。クラスの重耇が䞀般的なマルチクラス怜出シナリオで有甚。
classes list[int] None クラス ID のセットに予枬をフィルタリングしたす。指定されたクラスに属する怜出のみが返されたす。耇数クラスの怜出タスクで、関連するオブゞェクトに焊点を圓おるのに䟿利です。
retina_masks bool False モデルに高解像床のセグメンテヌションマスクがあれば、それを䜿甚する。これにより、セグメンテヌションタスクのマスク品質が向䞊し、より现かいディテヌルが埗られたす。
embed list[int] None 特城ベクトルたたは埋め蟌みを抜出するレむダを指定したす。クラスタリングや類䌌怜玢のような䞋流のタスクに䟿利です。

可芖化の匕数

議論 タむプ デフォルト 説明
show bool False もし True泚釈付きの画像やビデオをりィンドりに衚瀺したす。開発䞭やテスト䞭の即時の芖芚的フィヌドバックに䟿利です。
save bool 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画像サむズに応じお、線幅が自動的に調敎されたす。芖芚的にわかりやすくカスタマむズできたす。

画像ずビデオのフォヌマット

YOLOv8 ultralytics/data/utils.py で指定されおいるように、様々な画像やビデオフォヌマットをサポヌトしおいたす。有効な接尟蟞ず予枬コマンド䟋に぀いおは以䞋の衚を参照しおください。

画像

以䞋の衚は、有効なUltralytics 画像フォヌマットを瀺しおいたす。

画像の接尟蟞 予枬コマンドの䟋 参考
.bmp yolo predict source=image.bmp マむクロ゜フト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 ポヌタブル・フロヌトマップ

ビデオ

以䞋の衚には、有効な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 オブゞェクトがある

結果

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Run inference on an image
results = model('bus.jpg')  # list of 1 Results object
results = model(['bus.jpg', 'zidane.jpg'])  # list of 2 Results objects

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 オブゞェクトは、バりンディング・ボックスのむンデックス付け、操䜜、異なるフォヌマットぞの倉換に䜿甚できる。

ボックス

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

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

以䞋はその衚である。 Boxes クラスのメ゜ッドずプロパティの名前、型、説明

名称 タむプ 説明
cpu() 方法 オブゞェクトをCPUメモリに移動する。
numpy() 方法 オブゞェクトをnumpy配列に倉換したす。
cuda() 方法 オブゞェクトをCUDAメモリに移動する。
to() 方法 オブゞェクトを指定されたデバむスに移動する。
xyxy プロパティtorch.Tensor) xyxy フォヌマットでボックスを返す。
conf プロパティtorch.Tensor) ボックスの信頌倀を返す。
cls プロパティtorch.Tensor) ボックスのクラス倀を返す。
id プロパティtorch.Tensor) ボックスのトラックIDを返す利甚可胜な堎合。
xywh プロパティtorch.Tensor) xywh フォヌマットでボックスを返す。
xyxyn プロパティtorch.Tensor) 元の画像サむズで正芏化した xyxy 圢匏のボックスを返す。
xywhn プロパティtorch.Tensor) 元の画像サむズで正芏化した xywh 圢匏のボックスを返す。

詳现は Boxes クラス文曞.

マスク

Masks オブゞェクトを䜿甚しお、マスクのむンデックス付け、操䜜、セグメントぞの倉換を行うこずができたす。

マスク

from ultralytics import YOLO

# Load a pretrained YOLOv8n-seg Segment model
model = YOLO('yolov8n-seg.pt')

# Run inference on an image
results = model('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 メモリ䞊のマスクtensor を返す。
numpy() 方法 マスクtensor を numpy の配列ずしお返したす。
cuda() 方法 GPU メモリ䞊のマスクtensor を返したす。
to() 方法 指定されたデバむスず dtype を持぀マスクtensor を返す。
xyn プロパティtorch.Tensor) 正芏化されたセグメントのリスト。
xy プロパティtorch.Tensor) テン゜ルずしお衚珟されたピクセル座暙のセグメントのリスト。

詳现は Masks クラス文曞.

キヌポむント

Keypoints オブゞェクトは、座暙のむンデックス付け、操䜜、正芏化に䜿甚できる。

キヌポむント

from ultralytics import YOLO

# Load a pretrained YOLOv8n-pose Pose model
model = YOLO('yolov8n-pose.pt')

# Run inference on an image
results = model('bus.jpg')  # results list

# View results
for r in results:
    print(r.keypoints)  # print the Keypoints object containing the detected 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 分類の指暙ず埗点。

問題

from ultralytics import YOLO

# Load a pretrained YOLOv8n-cls Classify model
model = YOLO('yolov8n-cls.pt')

# Run inference on an image
results = model('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メモリ䞊の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

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n-obb.pt')

# Run inference on an image
results = model('bus.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) 回転したボックスをxyxyxy圢匏で返す。
xyxyxyxyn プロパティtorch.Tensor) 画像サむズで正芏化した xyxyxy 圢匏の回転ボックスを返す。

詳现は OBB クラス文曞.

結果のプロット

に぀いお plot() メ゜ッド Results オブゞェクトは、怜出されたオブゞェクトバりンディングボックス、マスク、キヌポむント、確率などを元の画像に重ねるこずで、予枬の芖芚化を容易にしたす。このメ゜ッドは、泚釈付き画像をNumPyの配列ずしお返すので、衚瀺や保存が簡単にできたす。

プロット

from PIL import Image
from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO('yolov8n.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

スレッドセヌフ掚論

掚論䞭にスレッドセヌフを確保するこずは、耇数のYOLO モデルを異なるスレッドで䞊行しお実行する堎合に非垞に重芁です。スレッドセヌフ掚論は、各スレッドの予枬が分離され、互いに干枉しないこずを保蚌し、競合状態を回避し、䞀貫性のある信頌性の高い出力を保蚌したす。

マルチスレッドのアプリケヌションでYOLO モデルを䜿甚する堎合、競合を防ぐために、スレッドごずに別々のモデルオブゞェクトをむンスタンス化するか、スレッドロヌカルストレヌゞを採甚するこずが重芁です

スレッドセヌフ掚論

スレッドセヌフな掚論のために、各スレッド内で単䞀のモデルをむンスタンス化する

from ultralytics import YOLO
from threading import Thread

def thread_safe_predict(image_path):
    """Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
    local_model = YOLO("yolov8n.pt")
    results = local_model.predict(image_path)
    # Process results


# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("image1.jpg",)).start()
Thread(target=thread_safe_predict, args=("image2.jpg",)).start()

YOLO モデルによるスレッドセヌフ掚論の詳现ずステップバむステップの手順に぀いおは、YOLO スレッドセヌフ掚論ガむドを参照しおください。このガむドでは、よくある萜ずし穎を避け、マルチスレッド掚論をスムヌズに実行するために必芁な情報を提䟛したす。

ストリヌミング・゜ヌス for-ルヌプ

以䞋はOpenCVを䜿ったPython スクリプトである。cv2)ずYOLOv8 、ビデオフレヌムに察しお掚論を実行する。このスクリプトは、必芁なパッケヌゞ (opencv-python そしお ultralytics).

ストリヌミング・フォヌ・ルヌプ

import cv2
from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO('yolov8n.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 YOLOv8 inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLOv8 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'を抌すこずで終了できる。



䜜成日2023-11-12 曎新日2024-05-03
著者glenn-jocher(18),UltralyticsAssistant(1),Burhan-Q(1),plashchynski(1),tensorturtle(1),AyushExel(1),Laughing-q(1)

コメント