はじめに
いつの間にやらYolo v8まで出てしまっているので、
Yolo v5で使ったすみっコぐらし学習データを使ってYolo v8のオリジナルデータ検出に挑戦したいと思います。
v5のときと基本やることは変わらないですね。むしろインストールがさらに楽になってます。
開発環境
windows 10 ノートPC(GPUなし): 画像整理編集、物体検知実施
Google Colabo : モデル学習
学習データ
前回作成したyolo v5の学習に用いたすみっコぐらし学習データを利用します。
幸いにもデータ形式は依然と変わっていないようです。
今は学習データ作成にはRoboflowを使うのがよい?
GoogleColabでの学習実施
学習前準備
以前同様GoogleのMyドライブ直下に「sumikko」フォルダを作成して学習データを丸ごと転送しておきます。
この時点ではこんなフォルダ構成
sumikko
| - dataset.yaml
| - train 学習用画像(100枚ほど)
| | - classes.txt クラスラベルの一覧
| | - IMG_・・・.jpg 画像ファイル
| | - IMG_・・・.txt ラベリング情報
| | - IMG_・・・.jpg
| | - IMG_・・・.txt
| ・・・
| - val 検証用画像(10枚ほど)
| - classes.txt クラスラベルの一覧
| - IMG_・・・.jpg
| - IMG_・・・.txt
・・・
GoogleColabに接続して新規でNotebookを作成する。
学習するのでGPUをONにしておく。
MyDriveのマウント
データセットを読み込むためにMydriveをマウントします。
from google.colab import drive
drive.mount('/content/drive')
GoogleColabでYOLOインストール
#pipからyolo v8をインストール
!pip install ultralytics
wandbのインストール
学習結果をリアルタイムで確認するためのツールとなります。
yolo v8でも現在対応しているようです。
使用するには以下のサイトへの登録が必要です。
https://wandb.ai/site
個人で使う分には無料のようです。
!pip install wandb
Yoloモデルのトレーニング時に、登録したアカウントに学習データをリアルタイムで連携しているようです。
上記サイトにログインすることで学習状況が見られます。
学習の実施
※wandbを利用する場合は実行時にアカウント情報を入力する必要があります。
すべてのセル実行等では途中で止まりますのでご注意ください。
!yolo detect train data='/content/drive/MyDrive/sumikko/dataset.yaml' model=yolov8s.pt epochs=300 imgsz=640
wandbによる学習推移確認
以下は最終結果ですが、このようなグラフがwandbのダッシュボードでリアルタイムに更新されていきます。
結果をドライブに移動
結果をドライブに移動しておく。
!cp -rf /content/runs/detect/train /content/drive/MyDrive/sumikko/result/
ローカルPC側の準備
前回同様にpipで環境構築していく。
Python環境の準備
64bit版のPythonをインストール
https://www.python.org/
# 先に仮想環境を作成(任意のフォルダに移動しておく)
PS C:\yolo_pj> python -m venv yolo_v8
PS C:\yolo_pj> .\yolo_v8\Scripts\activate
yolov8のインストール
Pytorch等必要資材もまとめてインストールされるみたいでs。
(yolo_v8) PS C:\yolo_pj> pip install ultralytics
モデルの移植
学習時に以下のパスに学習結果を保存していたので
/content/drive/MyDrive/sumikko/results
モデルの場所は以下となります。{name}は学習時に指定したnameとなります。
/content/drive/MyDrive/sumikko/results/{name}/weight/best.pt
モデルをダウンロードしてyolov5フォルダの直下に配置します。
今回は以下の場所
C:\yolo_pj\yolo_v8
すみっコ検出確認
物体検出実行
source=0でカメラ番号を指定、show=Trueにすると画像も併せて表示されます
(show=TrueにしないとDetect結果だけプロンプトに流れます)
confで表示の閾値を指定できます
(yolo_v8) PS C:\yolo_pj> cd yolo_v8
(yolo_v8) PS C:\yolo_pj\yolo_v8> yolo detect predict model=best.pt source=0 show=True conf=0.25
検出結果
yolo v5と同様にv8でも作成したデータで検知できました。
以上です。お疲れさまでした。