tiny_cnn

http://d.hatena.ne.jp/shi3z/20160603
で紹介されているライブラリをビルドして動かしてみた。

OpenCVに依存しているのでそこで躓く。。OpenCVWindows用のインストーラーを落としたら以前入れていたのがあって、cmakeも済んでいた。少し古いのだったけど問題はなかった。3系でなくても問題無かった。

そして、tiny-cnn自体のビルドでさらに躓く…。cmakeでVisualStudio用のプロジェクトファイルを生成させてるけど、OpenCVの場所が分からないというので、


set CMAKE_PREFIX_PATH=D:\libs\opencv\build\x86\vc12\staticlib
で指定(静的Linkにしているのは、OpenCVのDLLのPathを環境変数に指定する必要が省けるので)

その後に


cmake .
(間違った場合は CMakeCache.txt を消してから実行したほうが良いかな。。)

ビルドすると opencvのincludeファイルが見つからないとのエラー。


D:\libs\opencv\build\include
VC++ DirectoriesのInclude Directoriesに入れる。プロパティファイルとか自動指定してくれたら楽なのに。。

その後ビルドのエラーを解消するために、C/C++ => Code Generation => Runtime Library を Multi-threaded Debug に変更。

そして example_mnist_train を動かそうとするとデータフォルダを指定する必要があるとの事なので相対パスで指定して起動したら例外が発生(間違って ../data と指定していた。正しくは ./)。しかもデバッグビルドなのにコードデバッグが出来ない。
原因は、プロジェクトのプロパティの C/C++ General の Debug Information Format が空指定になっていたから。ララ…cmakeよ…。

とりあえずデータフォルダ(D:\projects\tiny-cnn\data)を絶対パス指定して起動したらうまくいった。多分相対パス指定が間違えていただけかな。。main関数で try catchしてエラー内容をcoutしてくれたら良いな。。

tiny-cnn/examples/mnist/train.cpp の train_lenet 関数内のラムダ式 on_enumerate_epoch が呼ばれる周期が、Debugビルドだと約257秒程度、Releaseでも約49秒の時間が掛かる。

tinyなライブラリだけど依存しているライブラリがあったりcmake使ってたりすると色々と躓くな。。まぁ便利なものはbeneficialでもあるので時には我慢して受け入れたほうが良いな。。