LoginSignup
8
15

More than 5 years have passed since last update.

YOLO v3による顔検出:02.Darknetで学習

Last updated at Posted at 2018-11-28

概要

Darknet YOLO v3をWIDER FACEデータセットで学習させてweightを作成
weightとYOLO v3ネットワークを使って、KerasにコンバートしたYOLO v3モデルを構築
Keras YOLO v3モデルで顔検出
過去に構築したモデルを使って、検出した顔画像から性別・人種・年齢を予測

これらのタスクを分割して掲載
- YOLO v3による顔検出:01.データセット準備
- YOLO v3による顔検出:02.Darknetで学習
- YOLO v3による顔検出:03.Kerasで予測

Darknet

インストール

AWS EC2で実行

# Darknetをclone
$ git clone https://github.com/AlexeyAB/darknet.git
$ cd darknet

# Makefile編集(GPU=1、CUDNN=1に変更)
$ vi Makefile

# コンパイル
$ make

# 実行
$ ./darknet

# 下記が出力されればOK
usage: ./darknet <function>

weightをダウンロード

Imagenetでの学習済みのweightをダウンロード

$ wget https://pjreddie.com/media/files/darknet53.conv.74

設定ファイル作成

obj.data

cfg/obj.data
classes = 1
train  = face/train.txt
valid  = face/test.txt
names = cfg/obj.names
backup = backup/

classes:クラス数
train:trainデータ画像のパス一覧ファイル
valid:testデータ画像のパス一覧ファイル
names:クラス名一覧ファイル
backup:学習後のweightファイル保存先

obj.name

cfg/obj.name
face

yolov3.cfg編集

Line 3:コメントアウト
Line 4:コメントアウト
Line 6:batch=24に設定
Line 7:subdivisions=8に設定

cfg/yolov3.cfg
[net]
# Testing
# batch=1
# subdivisions=1
# Training
batch=24
subdivisions=8
...

filters=(classes+5)*3
Line 603:filters=18に設定
Line 610:classes=1に設定
Line 689:filters=18に設定
Line 696:classes=1に設定
Line 776:filters=18に設定
Line 783:classes=1に設定

cfg/yolov3.cfg
...
[convolutional]
size=1
stride=1
pad=1
filters=18
activation=linear


[yolo]
mask = 0,1,2
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=1
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1

ディレクトリ構成

前回作成したデータセット(face)をdarknet直下に格納

darknet/
  ┣ backup/
  ┣ cfg/
  ┃  ┣ yolov3.cfg
  ┃  ┣ obj.data
  ┃  ┣ obj.name
  ┃  ...
  ┣ face/
  ...
  ┣ darknet
  ┣ Makefile
  ┣ darknet53.conv.74
  ...

モデル学習

$./darknet detector train cfg/obj.data cfg/yolov3.cfg darknet53.conv.74

100iterationsごとにweight保存

backup/
yolov3_100.weights
yolov3_200.weights
...
yolov3_1100.weights
yolov3_1200.weights

avg lossに変化が見られなくなったので強制終了

...
1224: 8.434164, 7.634709 avg loss, 0.001000 rate, 6.211914 seconds, 78336 images
Loaded: 0.000082 seconds
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000022, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.830334, Class: 0.998110, Obj: 0.722482, No Obj: 0.001276, .5R: 1.000000, .75R: 1.000000,  count: 3
Region 106 Avg IOU: 0.351877, Class: 0.997746, Obj: 0.343769, No Obj: 0.007085, .5R: 0.271186, .75R: 0.000000,  count: 59
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000028, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.673452, Class: 0.981980, Obj: 0.384832, No Obj: 0.001454, .5R: 1.000000, .75R: 0.400000,  count: 5
Region 106 Avg IOU: 0.457167, Class: 0.973023, Obj: 0.306883, No Obj: 0.004004, .5R: 0.431034, .75R: 0.120690,  count: 58
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000028, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.694572, Class: 0.989655, Obj: 0.299587, No Obj: 0.001351, .5R: 1.000000, .75R: 0.333333,  count: 6
Region 106 Avg IOU: 0.572213, Class: 0.993285, Obj: 0.408671, No Obj: 0.001393, .5R: 0.714286, .75R: 0.285714,  count: 14
Region 82 Avg IOU: 0.677525, Class: 0.994951, Obj: 0.047155, No Obj: 0.001469, .5R: 1.000000, .75R: 0.500000,  count: 2
Region 94 Avg IOU: 0.736714, Class: 0.972360, Obj: 0.352567, No Obj: 0.000589, .5R: 1.000000, .75R: 0.000000,  count: 1
Region 106 Avg IOU: 0.558755, Class: 0.990499, Obj: 0.605316, No Obj: 0.002516, .5R: 0.615385, .75R: 0.076923,  count: 13
Region 82 Avg IOU: 0.769287, Class: 0.998308, Obj: 0.925071, No Obj: 0.001063, .5R: 1.000000, .75R: 1.000000,  count: 1
Region 94 Avg IOU: 0.804348, Class: 0.989604, Obj: 0.487220, No Obj: 0.000655, .5R: 1.000000, .75R: 1.000000,  count: 2
Region 106 Avg IOU: 0.407566, Class: 0.990047, Obj: 0.292463, No Obj: 0.001540, .5R: 0.571429, .75R: 0.142857,  count: 7
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000577, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.768268, Class: 0.997666, Obj: 0.782844, No Obj: 0.000980, .5R: 1.000000, .75R: 0.500000,  count: 2
Region 106 Avg IOU: 0.289653, Class: 0.995889, Obj: 0.679247, No Obj: 0.002009, .5R: 0.090909, .75R: 0.000000,  count: 11
Region 82 Avg IOU: 0.674502, Class: 0.999339, Obj: 0.973705, No Obj: 0.001093, .5R: 1.000000, .75R: 0.000000,  count: 1
Region 94 Avg IOU: 0.780698, Class: 0.998117, Obj: 0.617814, No Obj: 0.000402, .5R: 1.000000, .75R: 1.000000,  count: 1
Region 106 Avg IOU: 0.427390, Class: 0.997754, Obj: 0.424934, No Obj: 0.005473, .5R: 0.433333, .75R: 0.000000,  count: 90
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000295, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.651136, Class: 0.995051, Obj: 0.272277, No Obj: 0.000337, .5R: 1.000000, .75R: 0.000000,  count: 2
Region 106 Avg IOU: 0.363869, Class: 0.997585, Obj: 0.295904, No Obj: 0.005900, .5R: 0.303030, .75R: 0.015152,  count: 66
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000098, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.681434, Class: 0.998474, Obj: 0.503257, No Obj: 0.000774, .5R: 1.000000, .75R: 0.333333,  count: 3
Region 106 Avg IOU: 0.327224, Class: 0.994823, Obj: 0.376327, No Obj: 0.005351, .5R: 0.285714, .75R: 0.017857,  count: 56
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000022, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.660394, Class: 0.996295, Obj: 0.817968, No Obj: 0.000580, .5R: 1.000000, .75R: 0.000000,  count: 2
Region 106 Avg IOU: 0.311842, Class: 0.996340, Obj: 0.242430, No Obj: 0.002912, .5R: 0.325000, .75R: 0.025000,  count: 40
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000030, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.664672, Class: 0.994279, Obj: 0.249362, No Obj: 0.000237, .5R: 1.000000, .75R: 0.000000,  count: 1
Region 106 Avg IOU: 0.406206, Class: 0.988949, Obj: 0.262028, No Obj: 0.003189, .5R: 0.416667, .75R: 0.125000,  count: 24
Region 82 Avg IOU: 0.652377, Class: 0.988994, Obj: 0.037485, No Obj: 0.000304, .5R: 1.000000, .75R: 0.500000,  count: 2
Region 94 Avg IOU: 0.797908, Class: 0.985404, Obj: 0.156164, No Obj: 0.001240, .5R: 1.000000, .75R: 1.000000,  count: 2
Region 106 Avg IOU: 0.235209, Class: 0.997958, Obj: 0.445427, No Obj: 0.003285, .5R: 0.181818, .75R: 0.000000,  count: 55
Region 82 Avg IOU: 0.481452, Class: 0.951541, Obj: 0.001648, No Obj: 0.000034, .5R: 0.500000, .75R: 0.000000,  count: 2
Region 94 Avg IOU: 0.810755, Class: 0.987223, Obj: 0.831186, No Obj: 0.001385, .5R: 1.000000, .75R: 1.000000,  count: 2
Region 106 Avg IOU: 0.390754, Class: 0.997696, Obj: 0.284987, No Obj: 0.007060, .5R: 0.333333, .75R: 0.043011,  count: 93
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000029, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.722319, Class: 0.998787, Obj: 0.840885, No Obj: 0.000482, .5R: 1.000000, .75R: 0.000000,  count: 1
Region 106 Avg IOU: 0.371164, Class: 0.994526, Obj: 0.339715, No Obj: 0.003740, .5R: 0.285714, .75R: 0.085714,  count: 35
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000032, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.593241, Class: 0.994242, Obj: 0.096606, No Obj: 0.000800, .5R: 0.750000, .75R: 0.250000,  count: 4
Region 106 Avg IOU: 0.549288, Class: 0.996601, Obj: 0.382373, No Obj: 0.001924, .5R: 0.500000, .75R: 0.312500,  count: 16
Region 82 Avg IOU: 0.618548, Class: 0.974710, Obj: 0.048116, No Obj: 0.000174, .5R: 1.000000, .75R: 0.000000,  count: 2
Region 94 Avg IOU: 0.734757, Class: 0.999906, Obj: 0.973093, No Obj: 0.000690, .5R: 1.000000, .75R: 0.000000,  count: 1
Region 106 Avg IOU: 0.717950, Class: 0.995706, Obj: 0.715195, No Obj: 0.002873, .5R: 0.916667, .75R: 0.583333,  count: 12

まだまだYOLOを把握しきれていない
今後、論文などを参考に深掘りしていきたい

今回の学習で生成されたweightを使って、Keras YOLO v3モデルを作成し、モデル予測する

8
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
15