【Deep Learning】Keras-yolo3で学習

とりあえず画像認識してみるのは前回の記事参照

buffalokusojima.hatenablog.com

今回はkeras-yolo3を使った自前データの学習を説明します。

1. 必要なもの

  • 学習データ ・・・ 学習リスト
  • クラスファイル ・・・ 学習する物体のリスト
  • 初期モデル等のyolo独自のデータファイル

2. 学習リストを作成する

keras-yolo3では学習リストといった画像パス等が記載されたtxtファイルを元に画像の情報を取得して学習していきます。
例としては以下のようです。

画像パス/test.jpg 50 100 100 200 0

座標はそれぞれ左から

xmin ymin xmax ymax class_id
です。
class_idは後で紹介するクラスファイルの中身を上から0から始まる連番をしたものです。


3. クラスファイルを作成

学習させたい物体の名前を記載したファイルを作成します。
例として、「リンゴ、梨、ミカン」を学習させたい場合、以下のように改行して書きます。

(例)
リンゴ

ミカン

4. 初期weightsファイルを取得する

学習を始める際に初期の重みファイルを必要とします。以下wgetで取得します。

オリジナルのyoloの形式になっているのでkeras-yolo3用のフォーマットに変換します。

python convert.py -w darknet53.cfg darknet53.weights model_data/darknet53_weights.h5/span>

5. 学習の設定をする

train.pyを開き、以下デフォルト値を設定します。

def _main():
    annotation_path = 'train.txt' #学習リストのパス
    log_dir = 'logs/000/' #作成されるモデルのパス
    classes_path = 'model_data/voc_classes.txt' #クラスファイルのパス

上記で作成したそれぞれのパスに変更してください。

6. 学習を開始する

python train.pyで、学習が開始されます。


7. おわりに
今回は簡単な自前データでの学習の仕方を説明しました。次回あたりに考察とう含めた学習、認識系の内容を書こうかと思います。