Darknet
YOLO
YOLOv2

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