AIワンダーランド

AIエンジニアの個人開発ブログ

【YOLOv8】をWindowsで動かす手順

更新日: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環境によるので別途調べて設定してね。

その辺りの環境構築は下記サイトがわかりやすいです。

happy-shibusawake.com

 

概要

 

【プロジェクトにゃーん2】

家の近くを散歩するネコちゃんをリアルタイムで検出して

アラートを飛ばしたい!!

 

さて、前回は【YOLOv5】でネコちゃん検出を行いました。

ai-wonderland.com

 

今回は、その後継版で最新の物体検出モデル【YOLOv8】を使ってみたいと思います!

YOLOv5と比べてもだいぶ精度が上がっていますね~

github.com

 

 

手順

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) 

youtu.be

 

かなり精度高くセグメンテーションもできてますね!

 

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カメラからリアルタイム検出してみました。

ai-wonderland.com

================================