#darknetを使って学習を行う
ビルド編ではdarknetのビルドについて書いたので
ここではデータ作成について書くよ!
##学習データの作成
データ作成が一番面倒。頑張ろう。
VoTTってツールを使う方法を説明するよ。
###STEP1 学習用の動画像収集
学習用に沢山のデータを集めないといけない。
個人的には動画を使うのがおすすめだったりする。画像よりも量を集めやすい。
学習させるモノにもよるけど、個人で撮影したものとか動画サイトから拾ってきたものとかを使うといいんじゃないでしょうか。
・画像を使う場合
集め方については割愛。スクレイピングとかは個人で調べてください。
画像を集めたら全ての画像をひっくるめて同じフォルダにぶち込む。クラスごとにフォルダ作ったりとかは必要ない。
「Learning」的なフォルダを作ってその中に画像をおく。ファイル名は連番にしておくと後で便利かも。
一応参考用画像も貼っとく。
・動画を使う場合
動画を全て連結させて一つの動画にしておく。動画結合はブラウザサービス使ったりフリーソフト使ったりプログラム書いたりいろいろな方法があるけど
windows10標準搭載のフォトを使うのが早い。まじで。
詳しくはこのサイトが書いてくれてる。
https://jp.videoproc.com/edit-convert/video-merge-by-win10-photos-app.htm
###STEP2 アノテーションツール「VoTT」ダウンロード
アノテーション(≒タグ付け、ラベル付け)のためのツールはいくつかあるけども、YOLOを扱う際はVoTTがおすすめ。
YOLOの学習に合わせたファイルを自動で作成してくれる。
提供元はMicrosoft。ここからどうぞ
https://github.com/microsoft/VoTT/releases/tag/v1.7.2
因みにVoTTはバージョン1と2がありまして、僕はバージョン1を使ってます。
理由はバージョン1がシンプルで使いやすいってのとバージョン2はちょっと初期設定が面倒だから。
でもバージョン1の開発はもう止まってるという、、
###STEP3 レッツ アノテーション
いよいよ地味な作業に入ります。お気に入りのミュージックプレイリスト必須。
まずはVoTTを起動します。
画像を使う人は左のアイコンを、動画を使う人は右のアイコンを選ぶ。
詳しい使い方はここに
https://www.softbanktech.co.jp/special/blog/cloud_blog/2018/0043/
・画像の場合
[Region Type]
領域を囲む図形の種類を選択。基本はRectangle。
[Labels]
学習させるクラス。カンマ区切りで入力。
・動画の場合
使用する動画はmp4推奨。
[Frame Extraction Rate]
ビデオ1秒あたりのフレーム数。(入力値)フレーム/秒。
入力値が大きいと同じようなシーンが多くなって過学習気味になる。
[Suggested Region Method]
この機能を使ってないので僕はデフォルトにしてる。
記入が終わったらいざContinueボタンクリック。
レッツアノテーション!
マウスで囲う作業をひたすら続ける。
因みに学習対象が映ってない画像はノータッチのままで良い。
ラベルの無い画像は最後にExportするとき無視してくれる。
あとラベルをロックする機能は絶対使った方が楽。
アノテーションでラベルを選択した後、右下のピンアイコンをクリックするとラベルを固定できる。
全部終わったらメニューバーの
[Object Detection] → [Exports Tags]を選択。
[Export Format]をYOLOに変更。
保存先を確認したらExport!
保存先にLearning_output
的なフォルダが出来る。data/obj
に画像ファイルとテキストファイルがあればOK。
##学習を行うにあたって
YOLOv3の学習に使うのはさっきできたdataフォルダ内の
・objフォルダ
・obj.data
・obj.names
・test.txt
・train.txt
つまりcfgファイル以外全部です。
VoTTで出力されるcfgファイルはYOLOに合わせてあるのでYOLOv3にはマッチしない。
なので学習時にはdarknet-master
の×64
フォルダ内にあるyolov3.cfgファイルをコピペしてこれから行う学習用に中身を変えたものを用意する必要がある。
どこをどうするかはここに書いてある。英語きつい人は翻訳で頑張る。
https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects
とりえずここまででデータ作成は終わり。
張り切って学習させましょー!
##おわりに
データ作成の参考になったでしょーか。
darknetでの学習コマンドについてはこっちの記事に書いてるのでよかったら見てね。
リンク:Windows環境でdarknet使ってYOLOv3の学習、kerasでの実行。