私的AI研究会 > Colab

Google Colaboratory で機械学習

colab_s.jpg

 機械学習や Deep Learning の実行環境に「Google Colaboratory」を使ってみる
 YOLO V7 を使ってカスタムデータによる学習を実行する
 環境設定/カスタムデータによる追加学習/ローカルマシンでの推論実行まで、1時間以内に終了する作業を目標とする

※ 最終更新:2023/09/21 

Google Colaboratory 動作確認

 無償で手軽に利用可能な クラウド上の Python 環境「Google Colaboratory」を確認する

Google Drive に作業領域を確保する

  1. Googleドライブを起動する
    Googleアカウントにログインしていなければログインする

  2. マイドライブ直下に新しく「try」フォルダを作成する
    マイドライブ表示エリアでマウス右クリック、「新しいフォルダ」を選択する

Google Colaboratory を使ってみる

  1. Google の「Colaboratory へようこそ」 ページを開く

  2. Googleアカウントにログインしていなければログインする

  3. 「ファイル」メニューまたはダイアログのボタンから「ノートブックを新規作成」を選択

  4. 左上のタイトル(Untitled*)を「yolov7_custom」に変更する

  5. セルにコードを入力し、左側の三角ボタンをクリックするか「Ctrl」+「Enter」を押して実行する
    print("hello colaboratory!")
    入力欄(セル)の下に結果が表示され簡単に Python の実行環境が手に入る

    ※「ノートブック」でのコマンド実行手順
    1. セルが表示されていない場合は「+コード」メニューを押しセルを表示する
    2. セルにコマンドを入力し、三角ボタンをクリックするか「Ctrl」+「Enter」を押す
    3. 先頭に「!」をつけることで、PythonではなくOSのコマンドラインに命令を送ることができる

Google Colaboratory の実行環境を設定(確認)する

20230910_000012_001m.jpg
  1. メニューから「ランタイム」→「ランタイムのタイプを変更」を選ぶ

  2. 表示されたダイアログから「GPU」を選ぶ
    GPU を設定する

  3. スペックを確認する

    1. 「lshw」をインストールする
      !apt install lshw
    2. ハードウェア情報を収集するために「lshw」を実行する
      !lshw
      ・結果表示
         :
          *-memory
               description: System memory
               physical id: 0
               size: 12GiB
          *-cpu
               product: Intel(R) Xeon(R) CPU @ 2.20GHz
               vendor: Intel Corp.
               physical id: 1
               bus info: cpu@0
               width: 64 bits
         :
             *-display
                  description: 3D controller
                  product: TU104GL [Tesla T4]
                  vendor: NVIDIA Corporation
                  physical id: 4
                  bus info: pci@0000:00:04.0
                  version: a1
                  width: 64 bits
                  clock: 33MHz
         :
      ※「CPU Intel(R) Xeon(R) 2.20GHz」「メモリ 12GB」「GPU Tesla T4」の実行環境が確認できる

Google Colaboratory に Googleドライブをマウントする

20230910_000020_001m.jpg
  1. Colaboratory ページの右「ファイル」①を押す

  2. 左上の「ドライブをマウント」②を押す

  3. ダイアログが表示された場合「Googleドライブに接続」を押す

  4. マウントが完了すると「drive」フォルダ③が表示される
    前項で作成した「try」フォルダが表示されることを確認する

    参考 → GoogleColabでGoogleドライブをマウント

Google Colaboratory に「YOLO V7」を実装

 クラウド上の Python 仮想環境「Google Colaboratory」に「YOLO V7」を実行できる環境を構築する

物体検出 AI「YOLO V7」をインストール

  1. カレントディレクトリを「MyDrive/try7」へ移動する
    cd /content/drive/MyDrive/try
    ・結果表示
    /content/drive/MyDrive/try
    ※ カレントディレクトリを確認するコマンド
    !pwd

  2. YOLO v7 オフィシャルサイト から下記コマンドでプロジェクトをクローン
    !git clone https://github.com/WongKinYiu/yolov7
    ▼ - log - GoogleColab Tesla T4

    ・成功するとGoogleドライブ「/MyDrive/try」に「yolov7」というディレクトリが作成される

  3. カレントディレクトリを「yolov7」へ移動する
    cd yolov7

  4. 学習済みモデルをダウンロード
    ・YOLOv7 には学習済みモデルがいくつも用意されているが今回は「yolov7-tiny.pt」を使用する
    !wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-tiny.pt
    ▼ - log - GoogleColab Tesla T4

サンプル画像の物体検出

  1. サンプル画像の物体検出を実行する
    !python detect.py --source inference/images/ --weights yolov7-tiny.pt --conf 0.25 --img-size 1280 --device 0
    ▼ - log - GoogleColab Tesla T4


    ・サンプル画像は「yolov7/inference/images」を「–source」オプションで指定
    ・推論結果の保存先は「yolov7/runs/detect/exp*」( * は自動的に振られる番号)
    ・結果の画像は「Google Colab」のファイル、または「Google Drive」で参照(ダウンロード)できる
    ・出力画像(6枚)
20230911_000004_001m.jpg
20230911_000003_001m.jpg

ランタイム接続を切断する

  1. メニューバー「ランタイム」→「ランタイムを接続解除して削除」を選択する

  2. ダイアログ選択で「はい」を押す

    GPUを選択している場合、実行しない場合は接続解除するほうが望ましい(時間制限がかかるので)

カスタムデータで学習する

 カスタムデータによる学習4「じゃんけんの判定(その3)」 で作成したデータセット「janken4_dataset」を使用して追加学習をする
 元になる学習モデルは「yolov7-tiny.pt」

事前準備(データセットのアップロード)

  1. Googleドライブを起動する

  2. データ・セット「yolov7-main/data/janken4_dataset」をフォルダごとGoogleドライブの「MyDrive/try/yolov7/data」にアップする
    yolov7 
      ┗ data
         ┗ janken4_dataset

  3. 学習するのに必要な情報を記述したyamlファイル「yolov7-main/janken4_dataset.yaml」を「MyDrive/try/yolov7」の直下にアップする
    yolov7 
      ┠ data
      ┃  ┗ janken4_dataset
      ┗ janken4_dataset.yaml

  4. アップロードには数分かかるので、右下の「アップロード完了」の表示を確認してから次に進む

Google Colaboratory で学習を実行する

20230910_000020_001m.jpg
  1. Colaboratory を起動し、ノートブック「yolov7_custom.ipynb」を選択する

  2. 左サイドバーの「ファイル」→「ドライブをマウント」を選択することで Googleドライブをマウントする

  3. カレントディレクトリを「MyDrive/try/yolov7」へ移動する
    cd /content/drive/MyDrive/try/yolov7
    /content/drive/MyDrive/try/yolov7
  4. 下記のコマンドで「janken4_dataset」を学習する (yolov7-tiny)
    学習時間を少なくして効果を上げるため、学習モデル = yolov7-tiny・バッチサイズ = 16・エポック数 = 50 で学習する
    !python train.py --workers 8 --batch-size 16 --data janken4_dataset.yaml --cfg cfg/training/yolov7-tiny.yaml --weights 'yolov7-tiny.pt' --name yolov7-tiny_jk4 --hyp data/hyp.scratch.tiny.yaml --epochs 50 --device 0
    ▼ - log - GoogleColab Tesla T4

  5. およそ30分で正常に終了すると、学習結果は「yolov7/runs/train/yolov7-tiny_jk4/」に保存される

  6. onnx パッケージをインストールする
    !pip install onnx
    ▼ - log - GoogleColab Tesla T4

  7. 学習結果モデル「runs/train/yolov7-tiny_jk4/weights/best.pt」を onnx 形式に変換する
    !python export.py --weights runs/train/yolov7-tiny_jk4/weights/best.pt
    ▼ - log - GoogleColab Tesla T4

  8. メニューバー「ランタイム」→「ランタイムを接続解除して削除」を選択し、ランタイム接続を切断する

  9. 学習結果 モデルは「yolov7-tiny_jk4/weights」評価指標は「yolov7-tiny_jk4」フォルダ に保存される
    F1 curveP curvePR curveR curve

  10. GoogleColab を終了し、Googleドライブから学習結果をローカル・マシンにダウンロードする
    Google Drive 上の「yolov7-tiny_jk4」フォルダをダウンロード(圧縮ファイルを展開)
    「MyDrive/try/yolov7/runs/train/yolov7-tiny_jk4」→「yolov7-main/runs/train/yolov7-tiny_jk4」

学習済みモデルで推論を実行する

 物体認識の深層学習タスク:YOLO V7 で作成・使用した「anaconda」上の仮想環境(py38a)を利用する
 プロジェクト・フォルダは「/anacondawin/work/yolov7」
 使用するカスタムデータによる学習済みモデルは「/anacondawin/work/yolov7-main/runs/train/yolov7-tiny_jk4/weights/best.onnx」

ローカルマシンで推論実行

更新履歴

参考資料