Jetson TX1でneural talk2を動かす

  • 4
    いいね
  • 0
    コメント

はじめに

Interface7月号「人工知能コンピュータ」の号、「携帯型GPUスパコン フル回転! AIツアーガイドを動かす」という特集でJetson TX1上でneural talk2を動作させ、待ち歩きをするという記事があるのだが、インストール出来ないという風の噂があったので、インストール手順をまとめる

インストールした環境

  • Jetpackのバージョン
    • Jetpack L4T 2.1 (32bit)
    • 1バージョン古い。今は最新は2.2で32bitも64bitもある! こちらに関しては、また後日

基本環境構築

以下のコマンドを実行して基本環境をインストール

#基本環境のインストール
sudo apt-get -y install aptitude screen g++ cmake libboost-all-dev
sudo apt-get -y install libgflags-dev libgoogle-glog-dev protobuf-compiler libprotobuf-dev bc libblas-dev libatlas-dev libhdf5-dev libleveldb-dev liblmdb-dev libsnappy-dev libatlas-base-dev python-numpy libgflags-dev libgoogle-glog-dev git cmake libreadline-dev uuid uuid-dev libssl-dev ipython qt4-qmake libqt4-dev qt4-dev-tools libgnutls-dev libzmq3-dev libfftw3-3 fftw3 libsox-dev libfftw3-dev python-pip

pip install --user --upgrade ipython
pip install --user --upgrade jupyter

Torch7の環境構築

Torch7の環境構築を行う。Torch7依存環境をインストール+Torch7のインストール

cd ~/
#Torch7依存関係チェックスクリプト
curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
#torchインストール
git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch
./install.sh -b

上記のインストールスクリプトは、Torch7で利用する基本的なLuaモジュールもインストールされる。
環境変数にtorchを追加

export PATH=$HOME/torch/install/bin:$PATH
export LD_LIBRARY_PATH=$HOME/torch/install/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH
source ~/.bashrc

thコマンドを実行してTorch7がインストールされた事を確認する

image

neural talk2で使用しているモジュールを追加

Torch7にLuaモジュールを追加

以下のコマンドを実行してLuaモジュールをインストール

#cutorch,cunn,cudnn,ccn2,nn,nngraph,imageのインストール
sudo ~/torch/install/bin/luarocks install cutorch
sudo ~/torch/install/bin/luarocks install cunn
sudo ~/torch/install/bin/luarocks install ccn2
sudo ~/torch/install/bin/luarocks install nn
sudo ~/torch/install/bin/luarocks install nngraph
sudo ~/torch/install/bin/luarocks install image

cudnnモジュール

cudnnモジュールに使用するcuDNNライブラリのバージョン指定
cuDNNv4を使う場合は-b R4、cuDNNv5を使う場合は-b R5を指定。今回は、R5を使用する。

cd ~/
git clone https://github.com/soumith/cudnn.torch -b R5
cd cudnn.torch
sudo ~/torch/install/bin/luarocks make

cjsonモジュール

git clone https://github.com/mpx/lua-cjson.git
cd lua-json
sudo ~/torch/install/bin/luarocks make
cd ..

loadcaffeモジュール

sudo apt-get -y install libprotobuf-dev protobuf-compiler
sudo ~/torch/install/bin/luarocks install loadcaffe

torch-hdf5モジュール

git clone https://github.com/deepmind/torch-hdf5.git
sudo apt-get install libhdf5-serial-dev hdf5-tools
cd torch-hdf5
sudo ~/torch/install/bin/luarocks make hdf5-0-0.rockspec LIBHDF5_LIBDIR="/usr/lib/arm-linux-gnueabihf/"

Torch7インストール確認

ここまでで、Torch7でneural talk2を動かすのに必要なLuaモジュールのインストールが完了。
インストール済みLuaモジュール一覧はluarocks listで確認する事が可能。

Torch7を起動し、各モジュールをロードしてエラーが出ないか確認。
例えば、import "cudnn"と実行すればcudnnモジュールのロードを行う事が出来る。
image
エラーが出たら、luarocksでinstallしなおす。

PythonおよびPythonライブラリのインストール

次にPythonの開発環境と必要なライブラリをインストールする。以下のコマンドを実行。

# Pythonのインストール
sudo apt-get -y install python-dev libboost-python-dev python-pip python-protobuf
#Pythonライブラリのインストール
sudo pip install Cython
sudo pip install numpy
sudo pip install h5py

neural talk2のインストール

ここまでで、neural talk2を動かす為に必要な環境(python,Torchなど依存ライブラリ)の構築が終わったので、neural talk2のソースコードをcloneする。

#ホームディレクトリに移動
cd ~
# Neural Talk2のインストール
git clone https://github.com/karpathy/neuraltalk2.git
cd neuraltalk2
wget http://cs.stanford.edu/people/karpathy/neuraltalk2/checkpoint_v1.zip
unzip checkpoint_v1.zip
rm checkpoint_v1.zip

# Torchにパッチを当てる
cd ~
git clone https://github.com/mvitez/torch7.git mvittorch7
cd mvittorch7
sudo ~/torch/install/bin/luarocks make rocks/torch-scm-1.rockspec

neural talk2の修正

Luaスクリプトの修正を行う。~/neural talk2/eval.luaを編集

#eval.luaが元々のスクリプト、eval2.luaが修正後のスクリプト
diff ./neuraltalk2/eval.lua ./neuraltalk2/eval2.lua

67a68,80
> local function load(filename)
>    local mode = 'binary'
>    local referenced = true
>    local file = torch.DiskFile(filename, 'r')
>    file[mode](file)
>    file:referenced(referenced)
>    file:longSize(8)
>    file:littleEndianEncoding()
>    local object = file:readObject()
>    file:close()
>    return object
> end
>
69c82
< local checkpoint = torch.load(opt.model)
---
> local checkpoint = load(opt.model)

eval.lua内のcheckpointファイルをロードする部分を置き換えて、eval2.luaという名前で保存

neural talk2の実行

neuralk talk2のインストールが終わったら、動作確認を行う

cd ~/
cd neuraltalk2
th eval2.lua -model ./model_id1-501-1448236541.t7 -image_folder ./vis/imgs/ -num_images -1

インストールが成功していれば、エラーなく、説明文が生成されます。
image

webserverを立ち上げれば、以下のようにneural talk2で生成した画像と説明文をセットで見る事が可能です。
image

JetsonでWebカムを使う設定

記事で扱ったように、neural talk2+Webカメラで認識を行いたい場合、更に環境構築をする必要があります。

OpenCV3.1.0のインストール

Luaのcvモジュールを使い、Webカメラにアクセスしたい為、依存ライブラリであるopencv3.1.0をインストールする

sudo apt-get -y install libgtk2.0-dev
sudo apt-get -y libglew-dev libglewmx-dev
sudo apt-get -y install libv4l-dev
sudo apt-get -y install libeigen3-dev
cd ~/
wget https://github.com/opencv/opencv/archive/3.1.0.tar.gz
tar xvzf 3.1.0.tar.gz
cd opencv-3.1.0
mkdir build
cd build
cmake -DWITH_CUDA=ON -DCUDA_ARCH_BIN="5.3" -DCUDA_ARCH_PTX="" -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DENABLE_NEON:BOOL=ON -DWITH_FFMPEG=OFF ..
make -j 4
sudo make install

cvモジュールのインストール

Luaのcvモジュールをインストールする

sudo ~/torch/install/bin/luarocks install cv

neuraltalk2+WebCam

neural talk2にはvideocaptioning.luaというwebカメラと連携させて動かせるLuaスクリプトがあるので、それを起動する。

cd ~/
cd neuraltalk2
th videocaptioning.lua -model ./model_id1-501-1448236541.t7 

起動して、ひよこちゃんを認識してみると、”yellow and yellow bird sitting on a branch”(黄色い黄色い鳥は枝に座っている)と表示されました。
image

やはり、ひよこちゃんは鳥だったのです!
image

おわり