更新日:2023年5月28日
動画は下の方にあるよ
対象読者:Windows環境で【YOLOv8】を使ってみたい人
環境
環境:Winows11、メモリ32GB、GPU GeForce RTX3060 12GB
Python : 3.10.6、CUDA : 11.8、torch : 2.0.1+cu118
※CPUだけでも動きました!!
※Pytorch2系でも動きました!!
私はStable DiffusionをPytorch2系で使っているので、都度をCUDAを11.7に切り替えないといけないかもと思って焦りましたが、大丈夫でした。
(Pytorch1系がCUDA11.8に対応していないため)
CUDAやPyTorch関連はPC環境によるので別途調べて設定してね。
その辺りの環境構築は下記サイトがわかりやすいです。
概要
①【YOLOv5】で動画からネコ検出(=^・・^=)
②【YOLOv8】をWindowsで動かす手順
③【YOLOv8】WindowsでWEBカメラからリアルタイム物体検出
④【YOLOv8】WindowsでWEBカメラからリアルタイム物体検出してメッセージボックス表示
【プロジェクトにゃーん2】
家の近くを散歩するネコちゃんをリアルタイムで検出して
アラートを飛ばしたい!!
さて、前回は【YOLOv5】でネコちゃん検出を行いました。
今回は、その後継版で最新の物体検出モデル【YOLOv8】を使ってみたいと思います!
YOLOv5と比べてもだいぶ精度が上がっていますね~
手順
1.YOLOv8の使い方
gitからクローン
git clone https://github.com/ultralytics/ultralytics
フォルダ名を分かりやすくするため「utralytics」を「yolov8」に変更
コマンドラインでそのそのフォルダに移動して下記を実行していく。
Python 3.8系で仮想環境構築
py -3.10 -m venv ./venv
.\venv\Scripts\activate
ライブラリのインストール
python -m pip install --upgrade pip setuptools
pip install -r requirements.txt
Pythonテストスクリプトの作成と実行
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
results = model("https://ultralytics.com/images/bus.jpg", save=True)
上記で検出結果が「runs/detect」の中に保存されます。
これでYOLOv8が動くことが確認できました!
2.独自画像での検出
先ほどのコードの
"https://ultralytics.com/images/bus.jpg"の部分に
検出したい好きな画像を指定すれば検出可能です。
results = model("./images/test1.jpg", save=True)
え・・・馬!?
前回【YOLOv5】で牛だった子は牛のままだし笑
モデルが軽いからいけないのかな
次は一番重たいのを使ってみましょう。
モデル指定部分を書き換えるだけでダウンロードされるのでOKです。
model = YOLO("yolov8x.pt")
やりました!!
こちらのモデルならほぼネコちゃんになりましたね。
元牛ちゃんは犬になってます。。角度的に厳しいようですね。
セグメンテーションも簡単にできました。
model = YOLO("yolov8x-seg.pt")
3.独自動画での検出
さて、次は動画からの検出です。
こちらも簡単、検出対象を動画に変えてやるだけでOK
results = model("./images/test2.mp4", save=True)
かなり精度高くセグメンテーションもできてますね!
12秒の動画で物体検出、セグメンテーションともに323回検出して
CPUだけだと4分ほど
GPUだと17秒です!!
は、、はやい
GUPありの設定は下記をmodelの下に追記すればOKです。
model.to("cuda")
全体のコードはこちら
コメントアウトでモデルや、対象を変えています。
from ultralytics import YOLO
# モデルを選択
#model = YOLO("yolov8n.pt")
model = YOLO("yolov8x.pt")
#model = YOLO("yolov8x-seg.pt")
model.to("cuda")
# 検出対象ファイル指定
#results = model("https://ultralytics.com/images/bus.jpg", save=True)
#results = model("./images/test2.jpg", save=True)
results = model("./images/test2.mp4", save=True)
以上、【YOLOv8】をWIndowsで動かす手順でした。
次はWEBカメラで検出ですね~つづく
ではまた。
================================
5/28追記:さっそく【YOLOv8】でWEBカメラからリアルタイム検出してみました。
================================