私的AI研究会 > YOLOv7_Colab4

YOLO V7 on Google Colaboratory3

 新しく別の「じゃんけん(グー・チョキ・パー)」のカスタム・データセットを作成し、Google Colaboratory 上の「YOLO V7」を使用して学習モデルを作成、じゃんけんの「グー・チョキ・パー」をリアルタイム検出する。

※ 最終更新:2023/08/13 

カスタムデータによる学習3「じゃんけんの判定(その2)」

事前準備

学習データの収集<ローカルマシン>

ラベリング<ローカルマシン>

データセットの作成<ローカルマシン>

学習 Training<クラウド・サービス>

  1. GoogleColab を起動する

  2. ノートブック「物体検出_yolov7.ipynb」を選択する

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

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

  5. 学習するのに必要な情報を記述したyamlファイル「janken2_dataset.yaml」を「yolov7」の直下にアップする
    yolov7 
      ┠ data
      ┃  ┗ janken2_dataset
      ┗ janken2_dataset.yaml

  6. カレントディレクトリを Googleドライブ「yolov7」へ移動する
    cd /content/drive/MyDrive/yolov7
    ・結果表示
    /content/drive/MyDrive/yolov7

  7. 下記のコマンドで学習を実行する
    ※ 前回の結果から学習回数(epochs)は 60 とする
    !python train.py --workers 8 --batch-size 16 --data janken2_dataset.yaml --cfg cfg/training/yolov7x.yaml --weights 'yolov7x.pt' --name yolov7x_custom2_60 --hyp data/hyp.scratch.p5.yaml --epochs 60 --device 0
    ▼ - log - GoogleColab Tesla T4

    ・評価指標の推移
    EpochPrecisionRecallmAP@.5mAP@.5:.95
    00.02170.04490.01010.00163
    10.02020.1830.01430.00231
    20.1110.1830.07770.0221
    30.2340.6730.2660.108
    40.3610.5580.3650.181
    60.3620.7480.4220.153
    70.3690.5830.3650.174
    80.4110.7150.4950.25
    90.5110.7640.5910.314
    100.4770.6420.5490.326
    110.550.670.610.373
    120.4180.7920.5640.271
    130.390.5670.430.183
    140.2480.350.1870.075
    150.540.5160.3380.212
    160.5160.7980.6080.352
    170.3770.6950.4660.266
    180.1240.2410.0740.0186
    190.6860.008330.001230.000245
    200.02890.3670.01290.0053
    210.0009680.04170.0002020.000034
    220.4210.4620.340.169
    230.5170.9120.6820.433
    240.490.5570.5160.303
    250.3340.3240.2520.109
    260.280.2830.2070.0985
    270.1740.050.02840.00969
    280.009320.008330.0005430.000167
    290.04790.0750.01120.00435
    300.09310.1220.04660.0187
    310.6390.4670.4890.312
    320.7010.8540.8250.544
    330.6040.7240.7040.458
    340.8290.840.9420.672
    350.8250.8380.9110.59
    360.8920.8910.9630.68
    370.9330.9060.9750.708
    380.8580.8330.9150.604
    390.9620.8730.9760.697
    400.8920.8890.9540.672
    410.9540.9670.9840.719
    420.8410.7410.8050.517
    430.9680.9460.9830.693
    440.940.8910.9760.688
    450.9220.9450.9730.716
    460.9430.9660.9820.739
    470.9640.9660.9890.757
    480.9110.850.9330.693
    490.9670.9580.9910.756
    500.950.9740.9860.735
    510.9860.9030.9850.723
    520.920.9650.9860.761
    530.9820.9580.9910.752
    540.9810.9820.9940.76
    550.9870.9750.9940.747
    560.9880.990.9930.76
    570.9870.980.9940.768
    580.9820.9750.9930.758
    590.9770.9830.9920.753
    ・学習結果の評価指標
    ClassPrecisionRecallmAP@.5mAP@.5:.95
    all0.9770.9830.9920.753
    goo0.9910.9750.9930.694
    choki0.95210.990.778
    par0.9880.9750.9940.785
    ※ 用語(参考)→ 詳しくは「参考資料」
    名称意味
    P適合率Precision正例と予測したもののうち、どれだけ正解だったか
    R再現率Recall正解が正例のもののうち、どれだけ正例と予測できたか
    AP平均適合率Average Precisionm個の正解ラベルのうち、どのくらいラベルを検出できているかを平均的に表したもの
    mAPmean Average Precision物体の情報が与えられた時点までの適合率(Precision)の平均であるAP(Average Precision)の平均

  8. およそ50分で正常に終了すると、学習結果は「yolov7/runs/train/yolov7x_custom2_60/」に保存される
    ・学習結果モデルは「yolov7x_custom2_60/weights」評価指標は「yolov7x_custom2_60」
    F1 curveP curvePR curveR curve

  9. 学習結果「runs/train/yolov7x_custom2_60/」をローカルマシンにダウンロードする

学習済みモデルを ONNX 形式にコンバートする<クラウド・サービス>

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

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

  3. 変換結果「runs/train/yolov7x_custom2_60/weights/best.onnx」をローカルマシンにダウンロードする

学習結果で推論を実行する 画像編<ローカルマシン>

  1. 学習結果モデル「runs/train/yolov7x_custom2_60/weights/best.pt」を使用する
    ・テスト画像は「/Images/janken2.jpg」を使用する
    ローカルマシン上の「yolov7/」フォルダの場所は「/work/yolov7-main/」
    ・推論実行コマンドは「detect.py」を修正した「detect2.py」を使用する

  2. 検出コマンドを実行する
    (py38a) PS > cd /anaconda_win/work/yolov7-main
    (py38a) PS > python detect2.py --weights runs/train/yolov7x_custom2_60/weights/best.pt --conf 0.25 --img-size 640 --source ../../Images/janken2.jpg --view-img
    ▼ - log - NVIDIA GeForce GTX 1050 Ti

    ・推論結果の保存先は「yolov7/runs/detect/exp*」( * は自動的に振られる番号)

学習結果で推論を実行する 動画編<ローカルマシン>

  1. 学習結果モデル「runs/train/yolov7x_custom2_60/weights/best.pt」を使用する
    ・テスト画像は Webカメラ を使用する
    ローカルマシン上の「yolov7/」フォルダの場所は「/work/yolov7-main/」
    ・推論実行コマンドは「detect.py」を修正した「detect2.py」を使用する

  2. 検出コマンドを実行する(終了は 'Esc'キー)
    (py38a) PS > cd /anaconda_win/work/yolov7-main
    (py38a) PS > python detect2.py --weights runs/train/yolov7x_custom2_60/weights/best.pt --conf 0.25 --img-size 640 --source 0
    ▼ - log - NVIDIA GeForce GTX 1050 Ti

    ・推論結果の保存先は「yolov7/runs/detect/exp*」( * は自動的に振られる番号)

OpenVINO™ で実行する<ローカルマシン>

 ○ Intel® 製の GPU マシンで動作させるために OpenVINO™ を利用する
 ○ 学習済みモデルは「best.pt」を onnx にコンバートした「best.onnx」を使用
 ○ 学習済みモデルのパスは「yolov7-main/runs/train/yolov7x_custom2_60/weights/」

ここまでで わかったこと

 

更新履歴

 

参考資料

 

Last-modified: 2023-08-13 (日) 07:56:48