verilog書く人

自称ASIC設計者です。どなたかkaggle一緒に出ましょう。

ChainerWing、インストールから画像分類まで

自作したchainerGUIクライアントの日本語のマニュアルが作れてなかったので、ようやくこの記事で公開です。

サンプルプロジェクトを叩くのもいいと思います。

 

動かないとかあったら、コメントでも投げてください。

 

インストール

 

ディープラーニングによる画像分類もGUIベースでできます。

  • Python3.5のインストール

https://www.python.org/downloads/
Python3.5.xで一番新しいのをインストールすればよいです

  • Qt, PyQt5インストール

https://qiita.com/kenasman/items/55505654823e9d040e6e

  • chainerインストール

pip install chainercv

  • chainercvインストール

pip install chainercv

  • ChainerWingインストール
$ git clone https://github.com/fukatani/ChainerWing.git
$ python setup.py install


起動

binに移動してpython ./ChainerWing.pyを実行します。 

$ cd ./ChainerWing/bin
$ python ChainerWing.py

タスクの設定

このボタンをクリックするとタスクの詳細を設定できます。

f:id:segafreder:20171024224612p:plain


画像分類をやりたいときはTaskにImage Classificationを選択します。そのほかエポック数、バッチサイズ、GPU数をセットできます。CPUを使う場合は、GPUを0としてください。

f:id:segafreder:20171024224725p:plain

 

ネットの構築

f:id:segafreder:20171024225942p:plain

右上の方にあるノードリストからドラッグアンドドロップして、ノードを追加します。

f:id:segafreder:20171024230012p:plain

ノード同士をマウスでクリックして接続します。

f:id:segafreder:20171024230349p:plain

VGG16を使いたいだけなら、これだけでよいです。(VGG16にSoftmaxCrossEntropyをつなげるだけ)

f:id:segafreder:20171024230420p:plain


事前学習結果を使いたい場合、pretrainedをクリックしてautoと打ち込みます。
 

構築したネットの保存

f:id:segafreder:20171024230949p:plain

このボタンでセーブできます。


トレーニングデータの構成

こんな感じの階層でディレクトリ構造を作ります。

 all_data/

    ├ dog/

    │    ├ dog1.jpg

    │    ├ dog2.jpg

    │    └ ...

    ├ person/

    │    ├ person1.jpg

    │    └ person2.jpg

    └ cat/

            ├ cat1.jpg

            └ cat2.jpg

dogというディレクトリには犬の画像を集め、personには人、というように一つのサブディレクトリにその種類の画像を入れます。拡張子で画像か判断するので画像の名前はなんでもよい。
集めるのが大変でしたら
http://chromesoku.com/image-downloader/
などのスクレイピングソフトを使ってみてください。

このディレクトリ構成を作った後、

f:id:segafreder:20171025224100p:plain

このボタンをポチって、Set Train Dataでブラウズ、all_dataディレクトリを指定します。

 テストデータ

テストデータもトレーニングデータと同様の構成にして、Set Test DataのBrowseボタンを押し、ディレクトリを指定します。トレーニングデータの一部をテストデータとして使いたいときは、Same data with trainingにチェックを入れます。

データオーグメンテーション

データ選択画面でデータオーグメンテーションのチェックができます。

回転や反転、リサイズ、PCA白色化の設定を行えます。

Updateボタンを押すと、データオーグメンテーション後のプレビュー画像が保存されます。

f:id:segafreder:20171015212104p:plain

学習

f:id:segafreder:20171024224832p:plain


設定が終わったら再生ボタンみたいなここをポチッとします。

 

終わるとこのメッセージが出ます。このメッセージで学習済モデルの保存先が表示されます。この保存先は、学習済モデルを使って予測を行うときに使用します。

f:id:segafreder:20171024234331p:plain

 

ラーニングカーブが右下に出ます。

 

f:id:segafreder:20171024231810p:plain

 

予測

 

f:id:segafreder:20171024224425p:plain
学習したモデルを使って予測をします。このボタンを押すと予測画面が開かれます。

f:id:segafreder:20171024234255p:plain

1では学習済モデルを選択します。学習終了時にモデルの保存先がメッセージに現れるので、それを選択します。

2は予測の際に使用する入力画像を選択します。

このとき、Select Input Data by Directoryにチェックを入れておけば、ディレクトリ丸ごとを選択することができ、その中の画像全ての分類を予測します。


予測結果は、以下のように各カテゴリに何%の確率でどのクラスに所属するかがテーブルで表示されます。

f:id:segafreder:20171024232042p:plain