😽
YOLO-Worldを使って物体検知をする
やること
YOLO-Worldを使って物体検知をする。
YoLo-Worldとは?
2024年1月に発表されたOpen Vocabulary Object Detection技術です。
YOLO-Worldは、YOLO(You Only Look Once)シリーズを基にした高度な物体検出モデルです。このモデルは、テキスト入力に基づいて幅広いオブジェクトを識別・検出するオープンボキャブラリー物体検出の機能を備えており、追加のトレーニングを必要としません。
検知したい物体を自然言語で入力するだけで、その物体を検知することができます。(精度は不明)
参考記事
前提
- Python 3.9.6
準備
- 以下のコマンドを実行し、必要なライブラリーをinstallする
pip install ultralytics
画像を用いて物体検知する
- 以下の画像を使う。
※バナナ,キウイフルーツ
- 以下のコードを実行
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()
- 以下の結果が表示された
バナナの精度は出たが、キウイフルーツは検出されず
- キウイフルーツの別の写真を使い、検証する
奥は検出された!
まとめ
YoLo-Worldを試してみた。
自然言語でアノテーション/Fine-tuningなしで物体検知できるのはすごい!と思いました。
簡単なPoCを作る上では使えそうかなーと。
Discussion