darknetによるyolov3の学習 - takgto/utokyo-chipathon2023 GitHub Wiki

授業では学習済みのモデルを使います。自分でyolov3の学習を行う場合は以下の手順を参考にしてください。 この手順を行うにはdarknetフォルダが必要です。配布のPCには含まれていないためTAに問い合わせて受け取ってください。

1. darknetフォルダを自分のgoogle driveへアップロード

受け取ったdarknetフォルダをマイドライブへアップしましょう。 ※ 40分ほど時間が掛かります。

2. Google Colaboratoryに接続

Googleアカウントにログインした状態で以下のサイトにアクセスします。
https://colab.research.google.com/notebooks/intro.ipynb (別タブで開きたい場合はCtrlを押しながらクリックしてください)

『ファイル』から『ノートブックを新規作成』をクリックします。

image

以下のような画面が開きます。

image

コードセルはPythonでソースコードを記述して実行する場所です。テキストセルはメモ等を記入する場所です。 コードセルにソースコードのコメントを記入することもできます。 326708796-1668af34-683b-4aa1-9ce9-14a54acda6c2をクリックすると該当セルのコードを実行します。

作成したノートブックは「My Drive」の「Colab Notebooks」から確認できます。 image

※ 今回のNotebookは以下のgithubを参考にしました。
  Yolo v4, v3 and v2 for Windows and Linux
  https://github.com/AlexeyAB/darknet

Google Colaboratoryのセルでは右クリックができません。コピー&ペーストを実行する時、貼り付けをするには右クリックメニューではなくショートカットキーのペースト(ctrlとVを同時押し)で貼り付けてください。

3. ランタイプを変更する

image

4. マイドライブをマウントする

ノートブックのコードセルに以下のコードを記載し実行します。

import os
from google.colab import drive

drive.mount('/content/drive')
%cd '/content/drive/MyDrive/darknet'
os.getcwd()

5. コンパイルする

ノートブックのコードセルに以下のコードを記載し実行します。

!make
!chmod +x ./darknet

6. 学習の実行

!./darknet detector train work/obj.data work/yolov3-608.cfg darknet53.conv.74 -dont_show

全ての学習を行うためには3時間ほどかかる。

7. 学習結果の確認

/darknet/cahrt.png に学習結果がグラフ化されているので確認すること。

image

入力が416×416より大きいサイズ(32の倍数)の場合、colabではmAPの計算は別途行う必要があります。

8. 学習結果の計算(入力が416×416より大きい時)

!./darknet detector map work/obj.data work/yolov3-608.cfg work/backup/yolov3-608_1000.weights -dont_show -ext_output < work/val.txt

出力の最後の方にmAPが表示されます。 calculation mAP (mean average precision)...
detections_count = 107068, unique_truth_count = 8698
class_id = 0, name = person, ap = 10.20% (TP = 151, FP = 199)
class_id = 1, name = bicycle, ap = 2.85% (TP = 0, FP = 0)
class_id = 2, name = car, ap = 16.41% (TP = 246, FP = 179)

for conf_thresh = 0.25, precision = 0.51, recall = 0.05, F1-score = 0.08
for conf_thresh = 0.25, TP = 397, FP = 378, FN = 8301, average IoU = 32.82 %

IoU threshold = 50 %, used Area-Under-Curve for each unique Recall
mean average precision ([email protected]) = 0.098192, or 9.82 %
Total Detection Time: 266 Seconds

darknetのdockerを使う場合

  1. serverに繋ぐため専用のUSBを挿す。
  2. PCのネットワーク設定でWifi → Wifi2 → 利用できるネットワークからeng.utを選んで接続。パスワードを聞かれるのでTAを呼ぶ。
  3. 自分のPCでwork/XXX.cfgを用意しておく。
  4. ssh [email protected] でserverに入る。ログインパスワードはTAに聞く。
  5. cd darknetでt_gotoのファルダを自分の名前でコピーして自分用のフォルダを作る。例えば、
cp -r t_goto <自分の名前>
  1. <自分の名前>/workに自分のXXX.cfgファイルをコピーする。
  2. docker psを実行して次の状態だったら、
    image
docker attach <ID, この場合a9602fa5cb02>  

そうでなれけば

docker run -v $PWD:/workspace/ -v /data2:/data2 -w /workspace -it compose-ubuntu /bin/bash  

を実行してDockerを立ち上げる。

  1. <自分の名前>のディレクトリで以下の学習のコマンドを実行する。学習結果(*.weightsファイル)は<自分の名前>/work/backupにできる
### 学習(yolov3 tinyの場合)
/workspace/darknet/darknet detector train work/obj.data work/yolov3-tiny.cfg yolov3-tiny.conv.15 -dont_show -gpus 0,1,2,3 -clear 
-clear: 最初から学習し直す時  
-gpus <空いているGPUボードの番号、nvidia-smi コマンドで調べられる>  

mAPの計算

/workspace/darknet/darknet detector map work/obj.data work/yolov3-tiny.cfg work/backup/yolov3-tiny_last.weights -dont_show -ext_output -gpus 0,1,2,3 < work/val.txt > results.txt 
  1. 結果のlocal(自分の) PCへの転送

weights file

scp -r [email protected]:/home/studnet/darknet/<自分の名前>/work/backup/XXXX_final (もしくは_last).weights <local directory>

グラフ類

scp -r [email protected]:/home/studnet/darknet/<自分の名前>/*.png <local directory>

mAPの結果

scp -r [email protected]:/home/studnet/darknet/<自分の名前>/results.txt <local directory>

次はモデル変換に進みます。次のページへはここをクリック。

⚠️ **GitHub.com Fallback** ⚠️