YOLOv8による物体検出
ultralytics YOLO、model.predict()、バウンディングボックス、信頼度によるフィルタリング、カスタム学習について学習します。
「YOLOv8による物体検出」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
分類と検出
画像分類は、画像に何が写っているかを判定します。物体検出はさらに、各物体がどこにあるかを特定し、バウンディングボックスとラベルを描画します。YOLOは最も広く使われているリアルタイム検出器です。
YOLOとは
YOLO(You Only Look Once)は、単一の順方向パスですべての物体を検出するため、動画を処理できるほど高速です。UltralyticsのYOLOv8は、推論とトレーニングのための使いやすいPython APIを提供します。
pip install ultralytics学習済みモデルの読み込み
YOLOをインポートしてチェックポイントを読み込みます。yolov8n.ptはナノモデルで、小型かつ高速です。より大きいバリエーション(s、m、l、x)は、速度と精度のトレードオフになります。重みは初回使用時に自動的にダウンロードされます。
from ultralytics import YOLO
model = YOLO("yolov8n.pt")推論の実行
画像のパス、URL、または配列に対してmodel.predict(または単にmodel(image))を呼び出します。入力画像ごとに1つのResultsを含むリストが返されます。
results = model.predict("street.jpg", conf=0.5)confしきい値
confパラメーターは、検出結果として保持する最低信頼度を設定します。値を上げると確信度の低いボックスを除外できます(偽陽性が減ります)。値を下げると、ノイズが増えるリスクはありますが、より多くの物体を検出できます。
results = model.predict("street.jpg", conf=0.25) # more detections
results = model.predict("street.jpg", conf=0.7) # only confident onesボックスの読み取り
各結果にはboxesオブジェクトがあります。boxes.xyxyはバウンディングボックスの角を[x1, y1, x2, y2]として返します(左上と右下の画素座標です)。
r = results[0]
print(r.boxes.xyxy) # tensor of [x1, y1, x2, y2] rowsクラスと信頼度
ボックスとともに、boxes.cls(クラスインデックス)とboxes.conf(信頼度スコア)も取得できます。model.namesを使ってインデックスを名前に対応付けます。
for box in r.boxes:
cls_id = int(box.cls)
conf = float(box.conf)
name = model.names[cls_id]
print(name, round(conf, 2))結果の可視化
results[0].plot()は、ボックスとラベルが描画された注釈付き画像配列を返します。そのまま表示または保存でき、検出結果をすばやく確認するのに便利です。
annotated = results[0].plot()
import cv2
cv2.imwrite("output.jpg", annotated)動画での検出
動画ファイルまたはウェブカメラのインデックスを渡すと、YOLOはすべてのフレームを処理します。stream=Trueを指定するとフレームごとに結果を生成するため、長い動画でもメモリ使用量を低く抑えられます。
for result in model.predict("clip.mp4", stream=True):
boxes = result.boxes
# process each frameカスタムトレーニング
独自の物体クラスを検出するには、YAMLファイルで定義したラベル付きデータセットを使ってトレーニングします。データ設定、エポック数、画像サイズを指定してmodel.trainを呼び出します。YOLOは学習済みの重みをファインチューニングします。
model = YOLO("yolov8n.pt")
model.train(
data="my_dataset.yaml",
epochs=50,
imgsz=640
)data YAML
データセットのYAMLには、train/val画像フォルダーとクラス名を記述します。YOLOでは、各画像に対応するラベルファイルがあり、物体ごとの正規化されたボックス座標が記載されている必要があります。
# my_dataset.yaml
# train: images/train
# val: images/val
# names:
# 0: helmet
# 1: vest理解度チェック
YOLOv8の理解度を確認しましょう。
復習:YOLOv8による物体検出
YOLO("yolov8n.pt")で学習済み検出器を読み込み、model.predict(img, conf=0.5)を実行し、results[0].boxes.xyxy、.cls、.confから検出結果を読み取りました。results[0].plot()で結果を可視化し、データYAMLを使ったmodel.trainでカスタムクラスに対してファインチューニングしました。
よくある質問
「YOLOv8による物体検出」レッスンは無料ですか?
はい。「YOLOv8による物体検出」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「YOLOv8による物体検出」で何を学びますか?
ultralytics YOLO、model.predict()、バウンディングボックス、信頼度によるフィルタリング、カスタム学習について学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「YOLOv8による物体検出」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。