Edited at

麻雀の点数判定アプリを作る#5


YOLOの環境構築

YOLOにはv2とv3のバージョンが存在します.今回はv2を使うことにします.

まずはgitからローカルにクローン.

git clone https://github.com/pjreddie/darknet.git

DarknetはC言語で書かれた機械学習フレームワークで,YOLOはこのフレームワークで実装されています.

cd darknet

gedit Makefile

darknetディレクトリに移動し,Makefileを編集.

1行目と3行目のGPU=0 OPENCV=0GPU=1 OPENCV=1に変更します.

これは学習を行う際にGPUを使い,また検出した物体に対してバウンディングボックスを描画する際に OPENCVを使うことを表しています.

変更が完了したら保存してコンパイル.

make

あらかじめ用意されたサンプルでYOLOを使ってみます.

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg

detectはモードをしており,学習の場合はtrainとします.

cfg/yolo.cfgはコンフィグファイルで,ハイパーパラメータを記述します.

yolo.weightsは学習済みモデルで,既に20個のクラスが学習済みとなっています.

data/dog.jpgは検出に用いる画像ファイル.



出ました.犬と自転車と車.バチッと検出されています.


カスタムデータで学習するには

任意の物体を検出するには,新たに学習を行う必要があり,特にその下準備が肝となるようです.



  • データベース


    • 各データには物体のクラスと位置を与えるアノテーション(ラベル)が必要.手作業で行わなければなりません.




  • コンフィグファイル


    • 前述の通り,クラスの数やハイパーパラメータを記述します.




  • クラスファイル


    • クラスを記述します.




  • パス指定ファイル


    • 教師データ,学習データ,クラスファイル,バックアップのパスを指定します.




  • 重みの初期値データ


    • 初期値に適当な重みを与えると学習が収束しやすくなるそうです.



参考:

YOLOv2を使って自前のデータを学習させて認識させるまで。

http://shibafu3.hatenablog.com/entry/2017/08/24/124826

YOLOオリジナルデータの学習

http://takesan.hatenablog.com/entry/2018/08/16/013452

YOLO V3:オリジナルデータの学習

http://demura.net/misc/14458.html


【次回】方針が立ったので,作業あるのみ

次回より,麻雀牌の画像を使ってデータベースを作成します.

準備ができてしまえば,あとはマシンに任せるだけです.