YOLO+Colab環境で独自データの学習
YOLOで独自データを学習する際はCPUだけでは非常に時間がかかるため、GPUが必要です。 Google Colabはクラウド上でのPython等の実行環境ですが、GPUも含めて無料で使えます。 Colab上でYOLOの学習を動作させ、学習データはJetson nanoに配置してYOLOの推論を動作させました。
学習用画像+ラベルデータ
- 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.names
とnames.list
は学習するクラス名を記載したファイルを作ります。
例えば以下のような記述になります。
book
people
chair
test.txt
とtrain.txt
はprocess.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
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