スポンサーリンク

Google Colabを使ってYOLOv5が動く環境を作る【環境構築】

AI

はじめに

今回は、Google ColabでYOLOv5の開発環境を構築していきたいと思います。

なぜGoogle Colabか

基本的にYOLOv5の学習には高い演算能力が必要とされるので、GPUを無料で扱えるGogle Colabで開発環境を作っていきます。

なぜGPUがディープラーニングなどに使われているかについては、下記の記事が参考になると思います。

【図解】なぜGPUはディープラーニング・AI開発に向いている...
AIの需要が劇的に増えている昨今、ディープラーニングで膨大な量の計算処...

Google ColabにYOLOv5をコピー

GitHub - ultralytics/yolov5: Y...
YOLOv5 🚀 in PyTorch > ONNX > ...

YOLOv5のソースコードが公開されているGitHubに行き、「open colab」を押します。

するとこのような画面になると思うので、アカウントを変更したい方、まだログインしていない方は右上から変更してください。

左上にある「ドライブにコピー」を押します。

コピーが作成されるので、これからはこちらで作業をしていきます。

Google Colabの実行環境をGPUに変更しておく

GoogleColaboratoryのGPU変更法!注意点は...
皆さん、こんにちは! GoogleColaboratoryはGPUを...

こちらを参考にし、ランタイム(実行環境)をGPUに変更しておきます。

Google DriveにYOLOv5用のフォルダを作成

Google DriveにYOLOv5用のフォルダを新規作成します。今回は「YOLOv5用フォルダ」と名付けました。

「YOLOv5用フォルダ」の中にもフォルダを追加しておきます。

YOLOv5用フォルダ
├── custom_yml //学習の設定
├── zip_data   //zip化されたデータセットが入る
└── 学習結果出力 //学習結果が入る

全体の構造はこんな感じです。

YOLOv5のclone

上にセルがあるので、これを実行しましょう。

Google Driveのマウント

先ほどCloneしたコードの下にGoogle Driveをマウントするコードを追加しておきます。

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

一応下の方にコードはあるのですが、そこまで移動するのがめんどくさいので、Setupのところに処理をまとめておきます。

実行してみましょう。

このような表示が出てきたら接続を押しましょう。

アカウントを選択。

許可します。

これでOKです。

Wandbの設定

また下にコードを追加します。

# Weights & Biases  (optional)
%pip install -q wandb
import wandb
wandb.login()

アカウントを作っていなかったりするとこうなります。

Weights & Biases – Developer t...
WandB is a central dashboard to kee...

にアクセスして、アカウントを登録し、

Weights & Biases
Weights & Biases, developer too...

にアクセスすると、そこに認証コードがあるのでコピーします。

Google Colabの赤枠の部分に貼り付けてEnterします。

Trueと表示されればOKです。

Google Driveにデータセット(Zip)を入れる

zip_dataフォルダにYOLOv5用のZip形式のファイルを入れておきます。

Zipデータセットを解凍する

先ほどのGoogle Colabのwandbのセルの下に追加します。

!unzip -q /content/drive/MyDrive/YOLOv5用フォルダ/zip_data/new_c_dataset.zip -d  /content/drive/MyDrive/YOLOv5用フォルダ/

Google Driveの「zip_data」フォルダに入っているファイルをコマンドで解凍します。

実行しておきます。

Driveを確認してみると、新しくフォルダが追加され、Zipファイルが解凍されているのが確認できると思います。

YOLOv5用フォルダ
├── custom_yml 
├── zip_data   
├── dataset    //zip解凍されたフォルダが追加される
└── 学習結果出力 

カスタムymlの追加

train: /content/drive/MyDrive/YOLOv5用フォルダ/dataset/images/train
val: /content/drive/MyDrive/YOLOv5用フォルダ/dataset/images/val


# Classes
nc: 2  # number of classes
names: ['creeper','creeper_head']  # class names

custom_model.ymlという名前の学習設定ファイルを作ります。

今回は2つのクラス、trainとvalのパスはこのようになっています。データセットによって変わると思うので、そこは独自でカスタマイズしてください。

Google Drive内のフォルダを指定する時は「/content/drive/MyDrive/プロジェクトフォルダ/その他指定したいパス」というように記述します

作成したら、そのファイルをGoogle Driveの「custom_yml」に追加します。

学習させるコマンドの追加

Google Colabの、Zip解凍するコマンドの下に、YOLOv5を学習させるコードを追加しておきます。

# Train YOLOv5s
!python train.py --img 640 --batch 64 --epochs 300 --data /content/drive/MyDrive/YOLOv5用フォルダ/custom_yml/custom_model.yml --weights yolov5s.pt --cache --project /content/drive/MyDrive/YOLOv5用フォルダ/学習結果出力

今回はこのようなコマンドにしました。

下のコマンドは解説用です。

# Train YOLOv5s
!python train.py --img (画像サイズ) --batch (batchサイズ) --epochs (epochs数) --data (自分が作成したymlファイルがある場所) --weights yolov5s.pt --cache --project (学習した結果が出力される場所)
  • --img お好みで
  • --batch お好みで
  • --cpochs お好みで
  • --data 自分が作成したymlファイルがあるパス
  • --project 学習結果を出力したいパス

実際に学習させてみる

学習状況をリアルタイムで確認

下記のリンクからwandbにアクセスします。

Weights & Biases
Weights & Biases, developer too...

Runsの部分に新しくプロジェクトが作成されているはずなので、クリックします。

緑色のベルマークがついているものをクリックします。

ベルマークがついているものがリアルタイムで稼働しているプロジェクトだと思います(多分)

少し時間が経つとMediaが表示され始めます。リアルタイムでグラフも描画されるので、眺めているだけでも面白いです。

Google Colabの方では今何回目の学習かなどのログが出力されています。wandbに何も反映されていない時はGoogle Colabのログを見てみましょう。

正常にログが出力されていれば、wandbの接続設定、みているプロジェクトに問題があるとわかります。

学習結果の確認

このようなログが出力されたら学習が終了した合図です。wandbで見てみます。

学習結果の比較

step29回目の結果です。明らかに物体検出の精度が低いです。

step269回目の結果です。step29回に比べるとだいぶ精度が上がっていますね。

学習結果の出力

Results saved to /content/drive/MyDrive/YOLOv5用フォルダ/学習結果出力/exp5

学習結果のファイルは自分が指定したパスに保存されます。保存された場所は学習が終わった直後にログとして記録されます。

今回の場合だと、自分が指定した「/content/drive/MyDrive/YOLOv5用フォルダ/学習結果出力/」の下の「exp5」というフォルダにあるようです。

exp5となっていますが、実行回数によってフォルダの番号は変わります。初めて学習させた方は「exp」になっていると思います。自分は5回目の学習だったので「exp5」になっていました。

学習結果のファイル・重みデータの取得

実際に学習結果のファイルを取得しましょう。先ほど出力先に指定していたGoogle Driveのパスに行きます。先ほどログに出力されていた保存ディレクトリを開きます。

今回はログに「exp5」と出力されていたので、それを開きます。

exp5にはこのように、学習結果のファイル・重みデータが入っています。プログラムで実際に使う重みデータは「weights」の中です。

weightsの中には二つのファイルがありました。それぞれ、

  • best.pt
    • 一番精度が高いもの
  • last.pt
    • 一番最後のもの

このようになっています。私は一番成績が良かった重みを使っています。

場合によって変わると思いますが、基本的にbest.ptを使えば良いと思います。

うまく行かなかった時(コメント欄の対処法もこちらに追記していきます)

学習開始時のエラー

train.py: error: unrecognized arguments: .yml

custom_model.ymlをcustom_model .ymlにしていた。

ファイル名・パスなどをしっかり確認しておきましょう

まとめ

  • Google Colabを使ってYOLOv5を動かす環境を作れた
  • その環境で学習させることができた
  • 学習結果を出力し、リアルタイムで学習状況を閲覧できるようになった

今回でYOLOv5を学習&動かす環境を作れました。とても面白く、手軽にできるので今後もどんどんやっていきたいと思います。

今度はOpenCV、Pythonなどを使ってローカルPC上でリアルタイム検出をする方法についての記事も書こうかなと思っています。

最後に

ここまで読んでいただきありがとうございます。

何か分からないこと、エラーなどが出ましたらコメントしてもらえると対処できます。ぜひコメントしてください。

記事のSNSシェア、拡散ぜひよろしくお願いします。

【M1/Mac】DockerでLaravelの環境構築【超簡...
DockerでLaravelの環境構築したいけどやり方がわからない…な...
ロボットをゲーム感覚で作れて動かせる!?Virtual Ro...
初めに今回は、2021年に開催されたVirtual Robotの体験会...
Java版と統合版が一緒に遊べるマイクラサーバーの立て方【G...
初めに今回は、Java版マインクラフトと、統合版マインクラフトの両方の...
【凄すぎる】Scratchで作られた2D版マイクラの再現度が...
Scratchで作られた2D版のマインクラフトをご紹介します。Scra...

一言コメント

YOLOv5、M1MacでPython+OpenCVで動かしてみましたが、fpsが平均10ぐらい。

M1MacはPytorchがまだGPUに対応してないらしいので、それが原因なのかも。

TensorFlowは対応してる?っぽいですが、TensorFlowはまだ一回も触ったことないので試してないです汗

480fpsぐらい出ると嬉しいんだけどなぁ(◞‸◟)

コメント

タイトルとURLをコピーしました