3
2

YOLOv9を使って3分でやる物体検出

Posted at

はじめに

今回はYOLOv9を用いた物体検出をやっていきます. YOLOは手軽に使えるとても強力なモデルです. 複雑な環境構築なしですぐに物体検出を行えるので,ぜひ試してみてください!

実行環境

OS:macOS Sonoma
Python:3.12.3

YOLOv9とは

YOLOは「You Only Look Once」の略で,その名の通り画像を一度だけ見て処理を行う機械学習ベースのアルゴリズムです.YOLOの特徴は,一定水準の精度を保ちながら高速かつ軽量に動作することです.
YOLOv9は2024年2月に公開されたモデルで,効率性,精度,適応性でこれまでのモデルよりも高い水準を誇っています.

深層学習の「深い層に行くほど元の情報が失われる」といった課題に対処するため,Programmable Gradient Information(PGI) というコンセプトと,Generalized ELAN(GELAN) というアーキテクチャを提案しました.これによって,モデルの性能を向上させると同時に,計算コストを削減し,リソースが限られている環境でも高い性能を発揮することが可能となりました.
詳しい内容は元の論文を参照ください.

環境構築

それでは,早速YOLOv9を試していきたいと思います.まずは簡単な環境の構築からです.

仮想環境を作成

python3 -m venv yolovenv
cd yolov9env
source bin/activate

YOLOv9を用意する

git clone https://github.com/WongKinYiu/yolov9.git
cd yolov9
pip3 install -r requirements.txt
wget -P weights -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-c.pt

これだけでObject Detectionができるのは嬉しいですね!

実行してみる

それでは,YOLOv9を用いてObject Detectionをやってみましょう!
yolov9フォルダの中で以下のコマンドをたたきます.

python detect.py --weights weights/yolov9-c.pt --conf 0.1 --source data/images/horses.jpg --device cpu --exist-ok

cudaの環境がないので,--device cpuとします.すると,以下のようなエラーができてきました.

AttributeError: 'list' object has no attribute 'device'

このエラーについてはこちらのissueで解決されており,utils/general.py903行目を以下のように修正します.

general.py
prediction = prediction[0][0]  # select only inference output

再度実行してみると,runs/detect/expフォルダが生成され,その中に結果画像が出力されます.

物体検出ができましたね!学習やパラメータ調整も容易にできるので試してみてください!

まとめ

今回はYOLOv9を用いて簡単な物体検出を行いました.前バージョンのv8よりも格段に性能が上がっており,リアルタイムな検出やトラッキングにも活用できると思います.
環境構築で詰まらずに実践できる機械学習はとても魅力的ですね✨

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2