概要
オープンソース物体認識のデファクトスタンダート・You Only Look Once(以降,YOLO)の正規第8版.YOLACTやYOLO-Xなどの派生系もあるので正規と表記した.これまでGithubリポジトリとして提供されてきたYOLOシリーズだが,このYOLOv8はPYPIパッケージとして提供されている.物体認識から派生して領域認識や個体認識も実行できる.
公式のGithubはこちら.
Githubトップページにはコマンドによる推論とPythonの学習プログラムが記載されている.
インストール
このコマンドでインストールが可能.公式のインストールガイドはこちら.
pip install ultralytics
要件はこの通り.
- Python≥3.7
- torch>=1.7
テスト
今回はコマンドを学習,推論,検証を実行してみる.
環境はGoogle ColabでURLはこちらである.
ただし,このままではNotImplementedError: A UTF-8 locale is required. Got ANSI_X3.4-1968
というエラーが出るので,このコメントを参考にしてはじめに下記コードを打ち込む.
import locale
locale.getpreferredencoding = lambda: "UTF-8"
基本的な文法としてはこの通り
yolo TASK MODE ARGS
- yolo:コマンド名
- TASK:オブション引数でdetect,segment,classifyから選択する.与えなければモデルタイプから自動で判定してくれる
- MODE:train,val,predict,export,trackから選択する.今回はtrain,val,predictを実行する
- ARGS:その他の引数.公式DocsのConfigurationを参考にして必要なものを与える.今回は最低限の構成で実行する.
なお,実行するとコンソール出力の最後の方にResults saved to HOGE
という出力がある.HOGE
はディレクトリを指しておりHOGE
以下ににコマンドの実行結果(モデルファイルなど)が格納されている.
今回は一貫して最低限動くことを確認するところまでをみていく.
-
学習
学習コマンドはこの通り.!yolo train data=coco128.yaml model=yolov8n.pt epochs=2
- data:データファイルへのパス.ローカルになければ対応したものをダウンロードしてきてくれる.ultralytics/ultralytics/datasetsにダウンロード可能なデータファイルがある
- model:モデルファイルへのパス.pt形式の重みファイルかyaml形式のモデルファイルを与える.
- epochs:エポック数.デフォルトが100で,与えずに実行すると時間がかかるため,テスト用に2にしている
出力は
runs/detect/train/
に保存される.重みファイルや学習データの推論の様子や検証データの推論の様子といった学習結果だけでなく,混同行列やROCカーブなどの精度評価が揃っている. -
推論
推論コマンドはこの通り.!yolo predict model="./runs/detect/train/weights/best.pt" source='https://ultralytics.com/images/bus.jpg'
- model:重みファイルへのパス.ここでは上のコマンドで学習済みのモデルを与えてみた
- source:ソースディレクトリ,ソースファイルへのパス.画像と動画の両方に対応している.ここではultralyticsで用意しているバスの画像をダウンロードして使っている
出力は
runs/detect/predict/
に画像や動画にアノテーションしたものが保存される. -
検証
!yolo val model="./runs/detect/train/weights/best.pt" data=coco128.yaml
- model:重みファイルへのパス.ここでは上のコマンドで学習済みのモデルを与えてみた
- data:データファイルへのパス.ローカルになければ対応したものをダウンロードしてきてくれる.今回は学習データに合わせてcoco128にしてみた.
出力は
runs/detect/predict/
に保存される.揃っているデータは検証データの推論の様子や混同行列,ROCカーブなどで.実は学習時に検証も走っているのでオーバーラップしている.なお,学習コマンドtrain
にオプションval=False
をつけると学習時には検証されない.