過去8回でパソコンを自作した後に、Ubuntu14.04、CUDA、cuDNN、chainer、dqn、LIS、Tensorflow、OpenAIGymを順次インストールし、最後にOpenAIGym上でA3Cのコードを走らせた。
http://qiita.com/masataka46/items/1a63b8747e83012a1ff4
A3Cを走らせる際にTheanoとKerasをインストールしたので、それを使ってW.Lotter氏らのPredNetを走らせてみる。Literatureはこちら。
https://arxiv.org/abs/1605.08104
HPはこちら
https://coxlab.github.io/prednet/
日本語の解説としてはochiai氏がまとめてくれている。
http://karasunoblog.blog20.fc2.com/blog-entry-46.html
GitHub上のコードはこちら。
https://github.com/coxlab/prednet
ざっくり言うと、「CNNやLSTMなどを階層構造にまとめて一瞬先の未来を予測しましょう」というモデル。
##PredNetを入れる
適当なディレクトリを作ってgit cloneする。
git clone https://github.com/coxlab/prednet.git
##訓練データをゲットする
READMEの指示に従って訓練データ(評価データも含む?)を引っ張ってくる。
cd prednet
python process_kitti.py
Traceback (most recent call last):
File "process_kitti.py", line 7, in <module>
from bs4 import BeautifulSoup
ImportError: No module named bs4
上記のようなエラーが表示された。BeautifulSoupという得体の知れないものが必要らしい。とりあえずそれを再度実行。
sudo pip install BeautifulSoup4
・・・
python process_kitti.py
Traceback (most recent call last):
File "process_kitti.py", line 11, in <module>
import hickle as hkl
ImportError: No module named hickle
今度はhickleというものが足りないらしい。pipで入れて、再度実行。
sudo pip install hickle
・・・
Successfully installed h5py-2.6.0 hickle-2.1.0
python process_kitti.py
途中、BeautifulSoup4関係でWarningが出てたが、ダウンロードは問題ないみたい。ただし、160GBすべてダウンロードするのに42時間かかった。
##評価用のモデルやデータも入手する
同様に評価用のモデルやデータも入手する。
./download_models.sh
./download_data.sh
##学習済み評価モデルを走らせる
何も考えずに
python kitti_evaluate.py
としたところ、以下のようなエラーが出た。
AssertionError: ('The following error happened while compiling the node'
・・・
'AbstractConv2d Theano optimization failed: there is no implementation available supporting the requested options. Did you exclude both "conv_dnn" and "conv_gemm" from the optimizer? If on GPU, is cuDNN available and does the GPU support it? If on CPU, do you have a BLAS library installed Theano can link against?'
なんだかいろいろ書いている。optimizationがうまくいかなかったらしい。optionで何かを指定したが、利用可能なものがなかったとも書いている。
「GPUやcuDNN使うなら互換性がなく、CPU使うならBLASがない」などと言っている。cuDNNもCUDAもちゃんとインストール出来てるが、CUDA8.0とかcuDNN5.0にtheanoが対応してないのか不明。
そもそも引数でGPUとか指定していないが、どっちを使おうとしているのかもわからない。kitti_evaluate.pyにはCPUやGPUに関して書かれていない。設定ファイルで指定しているのだろうか?
そこで調べたところ、このサイト
http://takatakamanbou.hatenablog.com/entry/2014/08/26/150629
には「THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python ・・」のような書き方をしているので真似してみる。
THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32 python kitti_evaluate.py
するとうまくいった。この画像は出力の1つ。
上側実際の画像と下側予測画像を比べると、結構合っているようだ。速く動くものは速い速度で、ゆっくり動くものは遅い速度で移動させている。