Neural Network Consoleで画像を判別させる(5)おまけ:学習結果はどう使う?

2018.02.26

おまけの記事ですが、今までの記事とは違って、少しややこしい内容のため、Neural Network Consoleで機械学習が試せればいい人は読み飛ばしてください。

学習結果はどう使う?

さて、これで学習モデルが作成できましたので、最後はこれを使って実際の画像を判定してみましょう。

…と言いたいところなのですが、ここは2018年1月現時点(執筆当時)では画面やコマンド一発で簡単に、とはいかないようで、nnablaというNeural Network Console内のライブラリのCのソースをビルドして、実行環境を作り、そこから動かす必要があるようです。
(現時点ではドキュメントもTODO状態で未整備。)

 

今回は最終的に動かすところまで辿り着けなかったのですが、Linux上でのビルドまでは試せたため、参考までにそのコマンドを書いておきます。

sudo apt update
sudo apt-get install -y --no-install-recommends ccache cmake curl g++ make unzip git
sudo apt install python-dev python-pip python-setuptools python-virtualenv
sudo pip install --upgrade pip
curl -L https://github.com/google/protobuf/releases/download/v3.1.0/protoc-3.1.0-linux-x86_64.zip -o /tmp/protoc-3.1.0-linux-x86_64.zip
sudo unzip -d /usr/local /tmp/protoc-3.1.0-linux-x86_64.zip && sudo chmod 755 /usr/local/bin/protoc

sudo apt-get install libhdf5-dev libarchive-dev

curl -L https://github.com/google/protobuf/archive/v3.1.0.tar.gz -o protobuf-v3.1.0.tar.gz
tar xvf protobuf-v3.1.0.tar.gz
cd protobuf-3.1.0
mkdir build && cd build
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -Dprotobuf_BUILD_TESTS=OFF ../cmake
make
sudo make install
cd

sudo apt-get install libprotobuf-dev protobuf-compiler
sudo pip install six

git clone https://github.com/sony/nnabla
mkdir -p nnabla/build && cd nnabla/build
cmake .. -DBUILD_CPP_UTILS=ON -DBUILD_PYTHON_PACKAGE=OFF -DNNABLA_UTILS_WITH_HDF5=ON
sudo make
sudo make install

sudo ldconfig -v

実行した環境は、Vagrant(開発環境を作成するツール)のubuntu/xenial64 (v20180112.0.0) のボックスです。

…って、コマンドだけ書かれても分けが分からない感じですよね。。。

結論としては、nnablaのマニュアルのBuild on Linuxの環境構築手順と、Build C++ librariesの手順を行うことでビルドが可能でした。

 

さて、ビルドしたnlabコマンドの実行方法ですが、肝心のドキュメントがなく、残念ながら今回は確認できませんでした。ただ、以下のようにNeural Network Consoleで作成した学習モデルを指定して実行するようです。

nbla infer --executor=Executor --batch_size=1
CatCategory/CatCategory.files/20170824_163030/net.nntxt
CatCategory/CatCategory.files/20170824_163030/parameters.h5 image.png

しかし、私の環境では入力データのファイルサイズがおかしい(Data size mismatch on data 0. expected size is 196608 but data file [image.png] size is 117030.)と言われてしまいました…何か違うのでしょうか?

残念ながら、今回はここで断念です。今後のドキュメント整備を期待します!

※または、上記以外にもNeural Network Consoleからnnabla用のpythonのネットワークコードをエクスポートすることができるので、それを活用する想定のようです。

以上、画面操作だけで機械学習を体験できるということで、私のような機械学習初心者には大変ありがたいツールでした。こうした技術も何かゲームに生かしていきたいですね。