Skip to content

YOLO+Colab環境で独自データの学習

YOLOで独自データを学習する際はCPUだけでは非常に時間がかかるため、GPUが必要です。 Google Colabはクラウド上でのPython等の実行環境ですが、GPUも含めて無料で使えます。 Colab上でYOLOの学習を動作させ、学習データはJetson nanoに配置してYOLOの推論を動作させました。

学習用画像+ラベルデータ

Darknetフォルダにデータ一式を集約

YOLOを次のようにダウンロードし、darknetフォルダに移動します。

git clone https://github.com/pjreddie/darknet
cd darknet

darknet以下のファイル構造が以下のようになるようにデータを配置・編集していきます。

  • data
    • process.py
    • images
      • obj.names
      • img000.jpg
      • img001.jpg
      • ・・・
      • test.txt
      • train.txt
    • labels
      • names.list
      • img000.txt
      • img001.txt
      • ・・・
  • cfg
    • obj.data
    • yolov3-tiny.cfg

グレーでマークされているファイルに関して作成していきます。 obj.namesnames.listは学習するクラス名を記載したファイルを作ります。 例えば以下のような記述になります。

book
people
chair

test.txttrain.txtprocess.pyを使わせて頂いて作成します。 percentage_test = 1;と書き換え、python process.pyと実行します。

obj.dataには以下のテキストを記載します。

classes=5 #クラスの数
train = data/images/train.txt 
valid = data/images/test.txt 
labels = data/images/obj.names 
backup = backup/

yolov3-tiny.cfgが軽量のモデルなのですが、元から入っているファイルを編集します。

3行目 batch=64
4行目 subdivision=8
複数個所  classes=5(クラスの数)
複数個所    filters=35(yolov2の場合(classes + coords + 1) * 5)
                (yolov3の場合(classes + +5) * 3)

また、Makefileは以下の部分を書き換えます。

GPU=1
CUDNN=1

作成したdarknetフォルダをGoogle Driveにアップロードします。

ColabでYOLOの学習の実行

Colabを開き、ファイル>ノートブックを開く 料理最終.ipynbを開きます。 ランタイム>ランタイムのタイプを変更からGPUを選択します。 あとはipynbファイルを上から実行していくだけです。 途中でGoogle Driveにアップロードしておいたdarknetフォルダを開きます。

Jetson nanoでの推論の実行

Jetson nanoにdarknetフォルダを配置し、例えば以下コマンドを実行します。

./darknet detector demo cfg/obj.data cfg/yolov3-voc.cfg backup/yolov3-voc_100.weights -thresh 0.7

参考にさせて頂いたサイト

アクセスカウンター