yolov2で学習させるための自分用メモ


とりあえず自分がわかればokなので本当にメモ

cfg/~.dataファイルにトレーニングファイルの場所とか記載
~.namesファイルにクラス名を記載(置く場所は↑で記載)
学習用画像をtrain_imagesディレクトリ(名前、場所は↑で記載)に入れる
アノテーション情報が記載されたtxtファイルはtrain_labelsに入れる(train_imagesディレクトリのimages部分をlabelsに変更したディレクトリ)

train.txttest.txtには学習用画像の相対pathを記載する↓
(darknetから見た相対パス data/~/train_images/~.jpg)

↓これとかでtrain.txttest.txtは画像から簡単に作れる(参考)

import glob
import os

image_dir = './images/'
path_data = 'data/train_images/'

# testに使う割合
percentage_test = 2

file_train = open('train.txt', 'w')
file_test = open('test.txt', 'w')

counter = 1
index_test = round(100 / percentage_test)
for pathAndFilename in glob.iglob(os.path.join(image_dir, "*.jpg")):
    title, ext = os.path.splitext(os.path.basename(pathAndFilename))

    if counter == index_test:
        counter = 1
        file_test.write(path_data + title + '.jpg' + "\n")
    else:
        file_train.write(path_data + title + '.jpg' + "\n")
        counter = counter + 1

cfgファイルのclassesの数を変更
filtersも↓の式で変更
filters = num * (classes + coords + 1)

学習(-i 0 は使うGPUを指定するやつ)
./darknet -i 0 detector train cfg/~.data cfg/~.cfg darknet19_448.conv.23

途中から学習し直し
./darknet -i 0 detector train cfg/~.data cfg/~.cfg backup/~.weights