物体検出でお馴染みのYOLOシリーズの最新版「YOLOv8」について、動かしながら試していきます。

YOLOv8は2023年1月に公開された最新バージョンであり、速度と精度の面で限界を押し広げています。

Google colabを使用して簡単に最新の物体検出モデルを実装することができますので、ぜひ最後までご覧ください。

これまでの投稿はこちら
第1回:YOLOv8を試してみる 〜導入からデモまで〜
第2回:推論の引数と座標とスコアの出力
第3回:YOLOv8でセグメンテーションを試してみる
第4回:YOLOv8における推論結果と座標について
第5回:マスク着用をリアルタイムに判定 〜オープンソースデータセットの学習と評価〜
第6回:物体検出のためのデータ収集
第7回:物体検出のためのアノテーション

今回の内容

・「Mask Wearing Dataset」データセット

・学習の準備

・学習

・推論

YOLOv8とは

YOLOv8は2023年1月に公開された最新バージョンであり、既存のオブジェクト検出器を上回り、速度と精度の面で限界を押し広げています。

物体検出だけでなく、セグメンテーションタスクや画像分類タスクでも利用することができます。

引用:https://github.com/ultralytics/ultralytics

YOLOv8のベンチマーク結果は以下となっています。

物体検出モデル

引用:https://github.com/ultralytics/ultralytics

セグメンテーションモデル

引用:https://github.com/ultralytics/ultralytics

なお、YOLOv8のライセンスは「GNU General Public License v3.0」となっています。

YOLOv8の導入

早速YOLOv8を使って動かしていきましょう。

ここからはGoogle colabを使用して実装していきます。

まずはGPUを使用できるように設定をします。

「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更

GPUの設定が終わったら、Googleドライブをマウントします。

from google.colab import drive
drive.mount('/content/drive')
%cd ./drive/MyDrive

公式よりcloneしてきます。

!git clone https://github.com/ultralytics/ultralytics
%cd ultralytics

次に必要なライブラリをインポートします。

ここではpipでインストールすることにします。

!pip install -r requirements.txt

以上で準備完了です。

YOLOv8を使えるようになりました。

「Mask Wearing Dataset」データセット

ダウンロード

今回はオープンデータセットを提供しているMask Wearing Datasetからデータを使用します。

登録は必要ですが、料金はかかりませんのでご安心ください。

以下の手順に従ってダウンロードしてください。

「416×416-black-padding」を選択

STEP
1

「YOLOv8」を選択

STEP
2

「download zip to computer」を選択して「continue」を実行

STEP
3

ダウンロードしたフォルダの構成は以下のようになっています。

 
  ┠ data.yaml
  ┠ train
  ┠ valid
  ┠ test

格納

上のデータをGoogleドライブ上に以下のように格納します。

 ultralytics
    ┗ ultralytics
       ┗ yolo
          ┗ data
             ┗ datasets
                 ┠  data.yaml ←ここに格納
                 ┗  mask ←フォルダ作成
                     ┠ train ←ここに格納
                     ┠ valid ←ここに格納
                     ┠ test  ←ここに格納

学習の準備

学習するにあたり必要な情報を記述したyamlファイルを作成します。

上で配置した「data.yaml」を以下のように書き換えます。

train: ./ultralytics/yolo/data/datasets/mask/train/images
val: ./ultralytics/yolo/data/datasets/mask/valid/images
test: ./ultralytics/yolo/data/datasets/mask/test/images

nc: 2
names: ['mask', 'no-mask']
train,val,testデータのディレクトリを記述
ncラベルの数を記述
namesラベルをリスト形式で記述

学習

早速、学習を実行しましょう。

Google colabで学習する場合には「yolov8m.pt」とすれば問題なく学習ができます。

(これより大きいモデルを使用する場合、メモリが足りない場合があります。)

先ほど配置した「data.yaml」のパスと学習回数を指定します。

from ultralytics import YOLO
model = YOLO("yolov8m.pt")  
results = model.train(data="./ultralytics/yolo/data/datasets/data.yaml", epochs=300) 

学習が終わると「run/detect/train」に結果が保存されます。

推論

学習した結果を用いて推論を行ってみます。

こちらの画像を使用します。

from ultralytics import YOLO
model = YOLO('runs/detect/train/weights/best.pt')  
results = model.predict(source="test.jpg", save=True)

正しく判定できていることがわかりました。

まとめ

最後までご覧いただきありがとうございました。

2023年1月に公開された物体検出でお馴染みのYOLOシリーズの最新バージョンである「YOLOv8」について、動かしながら試してみました。

精度・推論速度ともに向上しており、非常に使いやすいものになっています。

物体検出の活用の幅がさらに広がりそうですね。

コメントを残す