アノテーションせずに物体検知してみた(YOLO-World v2モデル)
分析屋の町田です。
AIによる画像認識を行う場合、通常、膨大な数の画像をアノテーションする必要があります。しかしながら、2024年に発表されたYOLO-World v2というモデルを使用することにより、アノテーションを全く行わずに物体検知を実現することが可能となります。今回は、アノテーションレスの物体検知を実現するAIモデル「YOLO-World」の概要と実際の使い方を紹介します。
YOLO-Worldの概要
物体検知とは
物体検知とは、コンピュータを使って画像や動画に映っている物体の位置を推定する技術を指します。例えば、写真の中に人や動物がいるかどうか、あるいはどこにいるのかを自動で判断します。
物体検知の技術は様々な業界で活用されています。例えば、防犯カメラに写る不審人物を自動で検知したり、医療画像から病気の有無を診断するために利用されています。
アノテーションの必要性
物体検知の手法としてはディープラーニングが主流ですが、ディープラーニングのモデルを学習させるためには、膨大な正解データを用意する必要があります。そのため、十分なデータを用意できなかったり、アノテーションに手間がかかるなどの課題が生じます。
YOLO-Worldとは
YOLO-Worldは、2024年に発表された最新の物体検知モデルであり、ゼロショット(学習せずにあらゆる物体を検知できる)という特徴があります。YOLO-Worldは自然言語(英語)を理解する能力を持っているため、検知したい物体を英語で入力するだけで、その物体を検知することができます。そのため、学習用のデータを用意したり、モデルを学習させる手間を省くことができます。2024年2月には、次世代モデルであるYOLO-World v2が登場しており、速度と精度を同時に改善することに成功しています。
YOLO-Worldを試してみた
YOLO-Worldの威力を体感するため、Google Colab上で実際に物体検知を行ってみます。
1. 環境準備
Google ColabでGPUランタイムを起動し、必要なライブラリをインストールします。
%pip install ultralytics==8.1.44 onnx==1.16.0 onnxruntime-gpu==1.17.1
2. 画像の準備
今回は検証用の画像として、筆者が海岸清掃の際に回収したペットボトルの写真を用意しました。
3. 物体検知
モデルの学習が必要ないため、モデルをダウンロードしてそのまま物体検知を実行することが可能です。
import ultralytics
from IPython.display import Image, display
# モデルのダウンロード
# c.f. https://docs.ultralytics.com/ja/models/yolo-world/
model = ultralytics.YOLOWorld(model="yolov8s-worldv2.pt")
# 検知したい物体の一覧を英語で指定
# NOTE: 2つ以上していすると、両方の物体を同時に検知する
model.set_classes(["plastic bottle"])
# 物体検知の実行
results = model.predict(
# 入力画像のファイルパス
# NOTE: 相対パス/絶対パスどちらもOK
source="./plastic_bottle.jpg",
# 検出スコアの閾値 (0.0~1.0)
# NOTE: 値が低いほど物体を検知しやすくなる
conf=0.03,
# IoUの閾値 (0.0~1.0)
# NOTE: 値が低いほど、物体の重なりを許容しなくなる
iou=0.5,
# モデル入力時の画像サイズ
# NOTE: 画像ファイルのサイズと異なる場合は、リサイズされる
imgsz=(384, 640),
# 最大検出数
max_det=1,
)
# 物体検知結果の保存
results[0].save("./plastic_bottle_result.jpg")
# 物体検知結果の表示
display(Image("./plastic_bottle_result.jpg"))
結果、ペットボトルを正しく検知することが出来ました!
まとめ
今回は、YOLO-World v2を使ってアノテーションなしで物体検知を行いました。検知したい画像を用意し、少量のコードを書くだけで物体を正しく検知することができました。具体的な精度や実行時間については検証していませんが、簡単な物体検知タスクであれば十分活用できそうだと感じました。
当然ながら、ファインチューニングしたモデルに比べると精度が安定しないため、十分なデータが用意できる場合はファインチューニングのほうが高い精度が期待できます。機械学習全般に言えることですが、要件に合わせて適切なモデルや手法を選択することが重要だと考えられます。
ここまでお読みいただき、ありがとうございました!
この記事が少しでも参考になりましたら「スキ」を押していただけると幸いです!
株式会社分析屋について
弊社が作成を行いました分析レポートを、鎌倉市観光協会様HPに掲載いただきました。
ホームページはこちら。
noteでの会社紹介記事はこちら。
【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!
【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。
【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。
【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。
【SES】
SESサービスも行っております。