【YOLOv3】オリジナルの学習済みモデルを作成する
2019-02-28 2019-05-18
OverView
画像から手の位置を認識をさせたかったんじゃぁ. お.いい高速な画像認識アルゴリズムがある.つかってみるか…
Environment
macOS Mojave version.10.14.3 Python 3.7.2Method
1. darknetをmake & Install
https://github.com/pjreddie/darknet からdarknetをcloneする
1 2 3 |
git clone https://github.com/pjreddie/darknet cd darknet make |
1 2 3 4 5 |
# Compiling with CUDA GPU=1 # Compiling with OpenCV OPENCV=1 |
2. 学習用データセットを作る
この記事を執筆しているとき,自分は人の手を認識させたかったので,データセットの中の名前がhandなんとかになったりしていますが,適宜ファイル名を分かりやすいものに変えても問題はない.
backupフォルダ
学習済みモデルが完成したときに格納されるディレクトリdatasets
学習用画像と学習用画像のどこに何が写っているかを記述したtxtファイルが入っている. 画像とtxtの名前は揃っていないといけない.hand-obj.names
1 |
hand |
hand-test.txt
1 2 3 |
datasets/img_0-0.jpg datasets/img_0-1.jpg datasets/img_0-2.jpg |
hand-train.txt
1 2 3 |
datasets/img_0-0.jpg datasets/img_0-1.jpg datasets/img_0-2.jpg |
hand.data
1 2 3 4 5 |
classes= 1 train = hand-train.txt valid = hand-test.txt names = hand-obj.names backup = ~/Documents/GitHub/darknet/cfg/task/backup |
yolov3-hand.cfg
darknet/cfg/yolov3-voc.cfgをコピーして名前を変更した. このファイルには学習時のハイパーパラメータが記述されている. 細かいことをしないのであれば,とりあえず以下の行数の「filters」と「classes」の値だけ変更すればいい.
1 2 3 4 5 6 |
605: filters=18 611: classes=1 689: filters=18 695: classes=1 773: filters=18 779: classes=1 |
ex. 学習用データセットを自作するのに今回使ったツール「labelImg」
https://github.com/tzutalin/labelImg とりあえず,labelImgを使わせてもらった. Install方法は以下のReadme https://github.com/tzutalin/labelImg/blob/master/README.rst 直感的に動かすことができるが,画像の範囲を選択したあとにxmlで出力するのではなく,txtで出力するように設定を変更する.たしかYOLO用に書き出し.みたいな設定があった.3. YOLOv3用の学習モデル初期値ファイルをDL
https://pjreddie.com/media/files/darknet53.conv.74 からDLできる.適当なディレクトリに保存しておく.155MB. 今回は darknet/models/に保存した.4. 学習開始
コマンドを叩いて学習スタート.
1 |
./darknet detector train hand.data yolov3-hand.cfg models/darknet53.conv.74 |