私的AI研究会 > Colab

Google Colaboratory で機械学習

colab_s.jpg

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

※ 最終更新:2023/09/12 

Google Colaboratory 動作確認

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 Drive に作業領域を確保する

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

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

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

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

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

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

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

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

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. 必要なライブラリをインストール
    !pip install -r requirements.txt
    ▼ - log - GoogleColab Tesla T4

  5. 学習済みモデルをダウンロード
    ・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を選択している場合、実行しない場合は接続解除するほうが望ましい(時間制限がかかるので)

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

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

  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. GoogleColab を起動し、ノートブック「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. 学習結果 モデルは「yolov7-tiny_jk4/weights」評価指標は「yolov7-tiny_jk4」フォルダ
    F1 curveP curvePR curveR curve

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

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

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

更新履歴

参考資料