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
ファイルを用意します。
{
"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
特にh5py
をpip
でインストールすると非常に時間が掛かるのでこちらの方法がオススメです。これらをインストールすることにより、Macなどで学習させたモデルのファイル
.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.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
$ unzip opencv.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 BUILD_EXAMPLES=ON ..
$ make -j4
$ sudo make install
$ sudo ldconfig
インストールが完了したらテストしてみて下さい。
追記(2017/5/22)
コード間違いを修正しました。
$ 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
)を利用したい場合
/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
出来ました。試しに映画「攻殻機動隊」の台詞を元に作成したモデルを使ってみましょう。
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
テストしてみます。
こんにちは
$ 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
を指定する場合(例えば「メイ」ちゃんのノーマルボイスを使用したい場合)
/usr/share/hts-voice/mei
に格納されています。男性ボイスや有志が作った音響モデルを利用する際は任意の場所に格納してパスを指定してください。
まとめ
最近こんな記事(グーグル、「Raspberry Pi」向けAIツールを提供へ)を目にし、今のところ使えそうなライブラリをまとめてみました。
学習済み辞書や、学習済みモデルを出来る限りコンパクトにまとめれば、RaspberryPiでも結構色んなことが出来るかもしれません。(さすがに1.2GBのWikipedia辞書モデルの読み込みはエラーになりましたが)
5千円位の手の平サイズPCで人工知能が動くって、なんか凄い未来な感じですね。
それでは皆様良き人工知能ライフを。