Raspberry Pi 人工知能ツールをインストール【Python3】

  • 33
    いいね
  • 3
    コメント

Raspberry Piを利用して人工知能ツール(深層学習ライブラリ・自然言語処理ライブラリなど)を利用する手順をまとめてみます。

環境

  • RASPBIAN JESSIE WITH PIXEL 4.4
  • Python 3.4.2
  • tensorflow-0.12.1
  • Keras-1.2.1
  • opencv-3.1.0
  • MeCab 0.996
  • mecab-ipadic-neologd
  • gensim-0.13.4.1
  • Open JTalk Version 1.07

RaspbianとPython3系のインストール

Raspbianの最新版を公式ページよりダウンロードしSDカードへ。Python3系は依存関係を簡単にする為apt-getを利用してインストールします。

$ sudo apt-get update
$ sudo apt-get install python3-pip python3-dev

Tensorflowのダウンロード

公式パッケージは公開されていないので、以下のレポジトリよりダウンロードします。

samjabrahams/tensorflow-on-raspberry-pi - GitHub

解説記事はこちらを参考にして下さい。

TensorFlowをRaspberryPIにインストールする手順 - Qiita

$ wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v0.12.1/tensorflow-0.12.1-cp34-cp34m-linux_armv7l.whl
$ sudo pip3 install tensorflow-0.12.1-cp34-cp34m-linux_armv7l.whl

Kerasインストール

Kerasはpipを利用してインストールします。

$ sudo pip3 install keras

Tesnorflowをバックエンドで指定するjsonファイルを用意します。

~/.keras/keras.json
{
    "image_dim_ordering": "tf", 
    "epsilon": 1e-07, 
    "floatx": "float32", 
    "backend": "tensorflow"
}

実行してみます。

$ python3
Python 3.4.2 (default, Oct 19 2014, 13:31:11) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import keras
Using TensorFlow backend.
>>> 

importしてエラーが出なければ無事インストールしています。

Pythonの依存ライブラリをインストール

深層学習で利用するライブラリはapt-getでインストールすると時間短縮になります。

Raspberry Pi 2 でDeepDreamを動かしてみた - 電脳あざらしの泳ぎ Raspberry Pi別館

$ sudo apt-get install python3-numpy
$ sudo apt-get install python3-scipy
$ sudo apt-get install python3-pandas
$ sudo apt-get install python3-h5py

特にh5pypipでインストールすると非常に時間が掛かるのでこちらの方法がオススメです。これらをインストールすることにより、Macなどで学習させたモデルのファイル

Monosnap 2017-01-29 10-44-46.png

.h5ファイルをRaspberryPiで読み込むことが出来ます。

OprnCV3をインストール

anacondaでインストール出来れば良いのですが、ARMv7版は対応していないのでソースをダウンロードし、コンパイルしなければなりません。(RaspberryPi3で2時間位掛かります)

以下の海外記事の手順通りに行います。

Install guide: Raspberry Pi 3 + Raspbian Jessie + OpenCV 3 - PyImageSearch

日本語の解説記事はこちらを参考にして下さい。

Raspberry Pi 3にOpenCV 3.1のインストール - TomoSoft

上記記事のコマンドを転記させて頂きます。

$ sudo apt-get install build-essential cmake pkg-config
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
$ sudo apt-get install libgtk2.0-dev
$ sudo apt-get install libatlas-base-dev gfortran
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
$ unzip opencv_contrib.zip
$ cd ~/opencv-3.1.0/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
-D BUILD_EXAMPLES=ON ..
$ make -j4
$ sudo make install
$ sudo ldconfig

依存ライブラリ含めてインストールが完了したらテストしてみて下さい。

$ python3
Python 3.4.2 (default, Oct 19 2014, 13:31:11) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> 

importしてみてエラーが出なければ無事インストール出来ています。

デフォルトのカスケード分類器(例えば顔認識の分類器haarcascade_frontalface_default.xml)を利用したい場合

Monosnap 2017-01-29 10-57-21.png

/usr/local/share/OpenCV/haarcascadesフォルダに格納されています。こちらのパスを指定するか、任意のディレクトリにコピーするかして利用出来ます。

Mecabのインストール

以下記事を参考にワンライナーでインストール可能です。

Raspberry Pi で形態素解析をやってみる(前編) - uepon日々の備忘録

$ sudo apt-get update
$ sudo apt-get install mecab libmecab-dev mecab-ipadic-utf8 python-mecab

テストしてみます。

$ mecab
すもももももももものうち
すもも   名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも  名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち  名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

無事インストールされました。デフォルト辞書は/var/lib/mecab/dic/ipadic-utf8に格納されます。

固有名詞抽出の精度を高めるためにmecab-ipadic-neologdを使います。

neologd/mecab-ipadic-neologd - GitHub

RaspberryPiでは展開が出来ないので、Macなどで展開した辞書をZipファイルにします。

ここではホームディレクトリにdic.zipとしてFTPソフトを利用してアップロードしました。

$ unzip dic.zip
$ mv -v /home/pi/dic/mecab-ipadic-neologd /var/lib/mecab/dic/mecab-ipadic-neologd

解凍した辞書をデフォルトの辞書と同じフォルダに移動します。これでmecab-ipadic-neologdを利用出来ます。

$ mecab -d /var/lib/mecab/dic/mecab-ipadic-neologd
攻殻機動隊
攻殻機動隊 名詞,固有名詞,一般,*,*,*,攻殻機動隊,コウカクキドウタイ,コウカクキドータイ
EOS

gensimをインストール

gensimはpipでインストール出来ますので、Word2Vecが利用可能です。

$ sudo pip3 install ginsim

テストしてみます。

$ python3
Python 3.4.2 (default, Oct 19 2014, 13:31:11) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from gensim.models import word2vec
>>> 

無事import出来ました。試しに映画「攻殻機動隊」の台詞を元に作成したモデルを使ってみましょう。

Monosnap 2017-01-28 21-24-41.png

FTPソフトを利用しアップロード解凍し、任意のディレクトリに移動します。

$ unzip kokaku.model.zip
$ mv -v /home/pi/kokaku.model /home/pi/word2vec/kokaku.model

モデルを利用してテストしてみます。

~/word2vec $ python3
Python 3.4.2 (default, Oct 19 2014, 13:31:11) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from gensim.models import word2vec
>>> model = word2vec.Word2Vec.load('kokaku.model')
>>> answer = model.most_similar(positive=['人形使い'])
>>> print(answer)
[('こと', 0.4652143120765686), ('ところ', 0.4647933542728424), ('の', 0.4600028097629547), ('課', 0.4548775553703308), ('部長', 0.4542877972126007), ('義体', 0.43155333399772644), ('わけ', 0.43044525384902954), ('回収', 0.4292528033256531), ('ネット', 0.422966867685318), ('記憶', 0.4185473620891571)]
>>> 

モデルを元に単語の類似度を抽出できました。


ここからはおまけです。作成した日本語を発話させてみます。

Open JTalkのインストール

以下の記事を参考にします。Raspbianでも同じ方法でインストール出来ます。

OpenJTalk + python で日本語テキストを発話 - Qiita

上記記事のコマンドを転記させて頂きます。

$ sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
$ wget https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/MMDAgent_Example-1.6/MMDAgent_Example-1.6.zip/download -O MMDAgent_Example-1.6.zip
$ unzip MMDAgent_Example-1.6.zip MMDAgent_Example-1.6/Voice/*
$ sudo cp -r MMDAgent_Example-1.6/Voice/mei/ /usr/share/hts-voice

テストしてみます。

hello.txt
こんにちは
$ open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -r 1.0 -ow hello_jtalk.wav ~/hello.txt

テキストからwavファイルを生成します。

$ aplay hello_jtalk.wav
再生中 WAVE 'hello_jtalk.wav' : Signed 16 bit Little Endian, レート 48000 Hz, モノラル

aplayコマンドで再生出来ました。Python3で利用するときは、subprocessモジュールのパイプコマンドを利用して、wavファイル生成→再生します。

音響モデル.htsvoiceを指定する場合(例えば「メイ」ちゃんのノーマルボイスを使用したい場合)

Monosnap 2017-01-29 11-32-15.png

/usr/share/hts-voice/meiに格納されています。男性ボイスや有志が作った音響モデルを利用する際は任意の場所に格納してパスを指定してください。

まとめ

最近こんな記事(グーグル、「Raspberry Pi」向けAIツールを提供へ)を目にし、今のところ使えそうなライブラリをまとめてみました。

学習済み辞書や、学習済みモデルを出来る限りコンパクトにまとめれば、RaspberryPiでも結構色んなことが出来るかもしれません。(さすがに1.2GBのWikipedia辞書モデルの読み込みはエラーになりましたが)

5千円位の手の平サイズPCで人工知能が動くって、なんか凄い未来な感じですね。

それでは皆様良き人工知能ライフを。