#はじめに
Google Colaboratory上でYOLOv5を使用して、物体検出をしました。
#参考
参考にしたのはこちら:Google ColabでYOLOv5を使って物体検出してみた/@shoku-pan
このページに書いてあるものをそっくりそのままやれば画像の検出ができます。
YOLOv5のGithubはこちら:Github YOLOv5
#Google Colabを用意する
Google Colabを開き、「ファイル」→「ノートブックを新規作成」でワークスペースを作ることができます。
#コードを書いていく
参考にあるページのやり方をそっくりそのまま書いていきます。
こちらのページの環境もGoogle Colabのため、Google Colabで作っていく分には修正は必要ありません。
しかし、Google Colabの無料のバージョンを使っているためか、以下のコマンドを実行する場合にエラーが発生しました。(Runtime Errorと実行画面の1番下に出てきます)
!python train.py --img 640 --batch 16 --epochs 300 --data coco128.yaml --weights yolov5x.pt
このコマンドでは、YOLOv5xという最も大きなモデルで学習を行おうとしています。(その分精度は良いです)
容量が大きすぎるためか、無料の環境では学習は難しいようでした。
そのため、1番小さいモデル(5s)で学習させます。
上のコマンドの1番最後の部分「yolov5x」を「yolov5s」に変更します。変更したものが以下のコマンドです。
!python train.py --img 640 --batch 16 --epochs 300 --data coco128.yaml --weights yolov5s.pt
こうすると実行できるはずです。
それでも実行できない場合はエポック数を減らしてみます(その分精度は下がるでしょう)
エポック数を半分にしたコマンドは以下のようになります
!python train.py --img 640 --batch 16 --epochs 150 --data coco128.yaml --weights yolov5s.pt
もう一つ上のコマンドと見比べてみると「--epochs」の後の数字が半減していることがわかると思います。
#動画から物体検出をする
参考ページでは推論の際に画像を使っています。それを動画から検出できるようにしましょう。
まずは動画をアップロードすることから始めなければなりません。今回は自分のPCからmp4ファイルをアップロードします。
from google.colab import files
uploaded = files.upload()
上のコマンドを実行すると、「ファイル選択」というボタンが出てくるため、そこから物体検出をしたい動画をアップロードしましょう。
次に、物体検出をします。
!python detect.py --source data/images --weights yolov5x.pt --conf 0.50
これは参考ページの推論のコマンドです。
まず、学習を5sを用いて行いましたのでこちらも「yolov5x」から「yolov5s」に変更します。
そして、検出する対象(--source部分)を変更します。(下コマンド)
!python detect.py --source (自分がアップロードした動画ファイル名) --weights yolov5s.pt --conf 0.50
ファイル名がわからない場合、!ls -lとコマンドを打ち込み、確認してみると良いかもしれません。
さて、実行するとどんどん検出していきます。当たり前ですが、動画時間が長ければ長い程時間がかかります。
#動画を保存する
全て検出し終えたら「Results saved to (場所)」というのが出てきます。
そこにアクセスして動画ファイルをダウンロードしましょう。コマンドは以下のようになります。
rom google.colab import files
files.download('(保存場所)/(ファイル名)')
このように検出したものに対して枠で囲まれます。
1番小さいモデルでの検出ですが、手のみでも人間を検出していたり、後ろのぼやけている女性も検出していたり、想像していたよりも中々の精度で検出できました。
#さいごに
今回は1番小さいモデルでも満足のいく結果が得られましたが、どのくらいの精度が必要なのかを考えてモデルを選ぶと失敗しないでしょう。
また、今回はPCからファイルのアップロード/ダウンロードをしましたが、Google Driveからファイルのコピーを行うなどの操作もできますので、適宜置き換えて自分のやりやすい環境でやってみてください。(方法は参考文献3つ目のページに載っています)
#参考文献
Google ColabでYOLOv5を使って物体検出してみた
YOLOv5/Github
Google Colabのファイルのアップロードとダウンロード