😽

YOLO-Worldを使って物体検知をする

2024/06/21に公開

やること

YOLO-Worldを使って物体検知をする。

YoLo-Worldとは?

2024年1月に発表されたOpen Vocabulary Object Detection技術です。
YOLO-Worldは、YOLO(You Only Look Once)シリーズを基にした高度な物体検出モデルです。このモデルは、テキスト入力に基づいて幅広いオブジェクトを識別・検出するオープンボキャブラリー物体検出の機能を備えており、追加のトレーニングを必要としません。
検知したい物体を自然言語で入力するだけで、その物体を検知することができます。(精度は不明)

参考記事

https://arxiv.org/abs/2401.17270v1
https://docs.ultralytics.com/ja/models/yolo-world/

前提

  • Python 3.9.6

準備

  1. 以下のコマンドを実行し、必要なライブラリーをinstallする
pip install ultralytics

画像を用いて物体検知する

  1. 以下の画像を使う。
    ※バナナ,キウイフルーツ
  2. 以下のコードを実行
import cv2
from ultralytics import YOLOWorld

# 画像ファイルのパス
image_path = '<画像のパス>'
# Initialize a YOLO-World model
model = YOLOWorld('yolov8l-world.pt')

# Define custom classes with more descriptive prompts
model.set_classes(["banana","kiwifruit"])
# 物体検知の実行
results = model.predict(
    source=image_path,
    conf=0.03,
    iou=0.5,
    imgsz=(384, 640),
    max_det=1
)

# 検知結果の描画と保存
annotated_image = results[0].plot()
output_image_path = './result.jpg'
cv2.imwrite(output_image_path, annotated_image)

# 検知結果の表示
cv2.imshow('Detected Image', annotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
  1. 以下の結果が表示された
    バナナの精度は出たが、キウイフルーツは検出されず
  2. キウイフルーツの別の写真を使い、検証する
    奥は検出された!

まとめ

YoLo-Worldを試してみた。
自然言語でアノテーション/Fine-tuningなしで物体検知できるのはすごい!と思いました。
簡単なPoCを作る上では使えそうかなーと。

ヘッドウォータース

Discussion