Raspberry PiでDeep Learningと画像処理をする環境を整える

Raspberry Pi 3 Model Bをセットアップします。
ヒートシンクや扇風機が無いと Open CVのインストールで熱暴走します。

Raspbianをインストールする

Raspbianをインストールします。

Raspbianをダウンロードする

Raspbian jessie (2017-07-05)をJAISTからダウンロードします。
2017.11.01のとき、stretchはリリースされたばかりで不具合報告があったのでjessieを選びました。

JAIST(北陸先端科学技術大学院大学)
raspbian-2017-07-05

Raspberry Pi 公式
raspbian-2017-07-05

Raspbianを展開する

展開すると4GBを超えるため、7zipで展開します。

Raspberry Pi 公式のページで、Windowsでは7zipを使ってください、と書いてあります。
RASPBIAN

7-Zip

micro SDカードをフォーマットする

Windowsの機能を使って、micro SDカードをフォーマットします。

SDカードの性能をより引き出したい場合は、SDメモリカードフォーマッターを使います。
SDメモリカードフォーマッター

Raspbianをmicro SDカードにコピーする

DD for Windowsを使って、Raspbianをmicro SDカードにコピーします。管理者として実行しないとmicro SDカードが見えないはずです。

DD for Windows

zipを展開してddでコピーしただけですが、ここまでで、OSのインストールが完了です。

Raspbianをセットアップする

micro SDカードをRaspberry Piに入れて、電源を入れるとOSが起動します。
Raspberry Piには電源ボタンが無いので、ON/OFFできる電源タップを使うと便利です。
以降、RaspbianとRaspberry PiをあわせてRaspberry Piと呼びます。

キーボードとマウスをRaspberry Piに接続して、直接制御することを想定しています。
ログイン後、ターミナルを使って操作します。

アカウントを追加する

Wi-Fiを使う前にパスワード保護を有効にする設定をします。
Raspberry Piは、piユーザーが用意されています。piユーザーは初期パスワードがraspberryと決まっています。piユーザーのパスワードを変更し、sudo権限を外して、追加したユーザーでログインするようにします。

rootユーザーのパスワードを作成する

rootユーザーになって、パスワードを作成します。


> su root
> passwd
// パスワード
// パスワード

このままrootで作業します。

ユーザーを追加する

adduserでユーザーを追加します。

ユーザー名を仮にaramakiとします。

パスワードを入力した後は、必要な回数だけEnterを押してください。


> adduser aramaki
// パスワード
// パスワード
// Enter
// Enter
// ...

自動ログインを無効にする

raspi-configを使って自動ログインを無効にします。


> raspi-config

この画面になります。
raspi_config_001
3 Boot Optionsを選択します。
raspi_config_002
B1 Desktop / CLIを選択します。
raspi_config_003
B3 Desktopを選択します。グラフィカルログインで、パスワードが必要、の設定になります。
raspi_config_005

最初の画面に戻ります。Finishを選択すると、rebootしますか、と訊かれるので、Noを選択してrootで行う作業を継続します。Yesを選択して、aramakiユーザーでログインしてsudoを使って作業しても同様です。

追加したユーザーにグループ権限を付与する

aramakiユーザーのグループ権限をpiユーザーと同じにします。

piユーザーに付与されているグループ権限を確認します。


> groups pi
pi : pi adm dialout cdrom sudo audio video plugdev games users input netdev spi i2c gpio

出力結果を加工します。


> groups pi | sed -e 's/ /,/g' | tail -c +6

rubyをよく使う人は、こちらの方が好みかもしれません。


> groups pi | ruby -pe "gsub(' ', ',')" | tail -c +6

sedとtailについて説明します。

sed -e 's/ /,/g'

全てのスペースをカンマに変換して出力します。

tail -c +6

先頭から数えて6Byte目から表示します。つまり、最初の5文字は捨てて表示します。

出力結果は下記となります。


pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio

aramakiユーザーにグループ権限を付与します。


> usermod -G グループ権限 aramaki

内容を確認し、マウスで選択して、上記のusermod -G の後ろのグループ権限の箇所に張り付けます。
usermod -Gは上書きを意味します。すでに別のグループ権限があれば消えてしまいますが、ここでは適切な操作です。

piユーザーからsudo権限を外す

piユーザーのsudo権限を外しておきます。


> gpasswd -d pi sudo

/etc/sudoersファイルが自動的に編集されるので、確認します。


> less /etc/sudoers

piユーザーのパスワードを変更する

piユーザーのパスワードを変更します。


> passwd pi
// パスワード
// パスワード

Wi-Fiを使えるようにする

ここで、再起動して、aramakiユーザーでログインし直します。

Wi-Fiルーターなどを利用するための情報を設定ファイルに追記します。

  • SSID
  • パスワード(=暗号化キー)

> sudo sh -c 'wpa_passphrase SSID パスワード(=暗号化キー) >> /etc/wpa_supplicant/wpa_supplicant.conf'

パスワード(=暗号化キー)が暗号化されてwpa_supplicant.confに書き込まれますが、暗号化されていないパスワード(=暗号化キー)もコメントとして書き込まれるため、これを削除します。


> sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

再起動します。


> shutdown -r now

環境全体を安定した最新にする

下記を更新が無くなるまで繰り返します。


> sudo apt-get update
> sudo apt-get upgrade
> reboot

上記が完了したら、vimをインストールします。


> sudo apt-get install vim

Deep Learningと画像処理のライブラリをインストールする

下記をインストールします。

  • tensorflow 1.1.0
  • keras
  • OpenCV 3.2

TensorFlowは、Deep Learning用のライブラリです。Kerasは、TensorFlowを簡単に使うためのライブラリです。
OpenCVは画像処理のライブラリです。(このとき、OpenCV3.3がリリースされていましたが、リリースしてから3ヵ月だったので避けました。)

Deep Learningで特に学習をするにはRaspberry Piでは性能が足りなくて、学習はWindows PCやMacを使うことになると思います。それでも10時間以上、計算し続ける場合が多いと思います。
学習した結果をRaspberry Piにコピーして使う、ということになると思います。

既にインストールされているPython 3.4.2とpip3を使います。
virtualenvなどは使いません。micro SDに余裕があれば、使った方が柔軟な環境になります。

Raspbian jessie (2017-07-05)は最初から下記が使えます。

  • Python 2.7.9
  • Python 3.4.2
  • pip
  • pip2
  • pip3
  • pip-3.2
  • numpy

下記は、ありません。

  • scipy
  • pandas

TensolFlowをインストールする

TensolFlowをインストールします。


> wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl
> sudo pip3 install tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl

Kerasをインストールする

Kerasをインストールします。


> sudo pip3 install keras

多くのワーニングメッセージが出力されますが、正常にインストールされます。
このインストールでscipyもインストールされるようです。

OpenCVをインストールする

apt-getを使ったOpenCVのインストールでは、全ての機能が使えない、ということで下記を実施しましたが、apt-getを使ったインストールでも事足りるかもしれません。
全部のライブラリの準備が整ったところで、make -j4としてARM A53の4コア全てを使ってコンパイルすると熱暴走して処理が止まってしまう可能性が高いです。自分は2回やって2回とも止まりました。make -j1として1コアだけにすると熱暴走しなくなりましたが、ヒートシンクを付けたり扇風機をあてるなどの対応をした方が良さそうです。


> 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

ここまででOpenCVをmakeする準備が整いました。ホームディレクトリで作業する場合の例になります。contribの方は拡張ライブラリなので、基本的なことをやりたい場合は不要かもしれません。


> cd ~
> wget -O opencv.zip https://github.com/opencv/opencv/archive/3.2.0.zip
> wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.2.0.zip
> unzip opencv.zip
> unzip opencv_contrib.zip

> cd ./opencv-3.2.0/
> mkdir build
> cd build

最後のピリオド2つは1つ上のディレクトリのことです。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.2.0/modules \
-D BUILD_EXAMPLES=OFF \
..

makeします。-j4は4コアを使う指示です。ヒートシンクなし、扇風機なし、で実行すると熱暴走する場合があります。自分の場合、2回実行して2回とも60%強で止まり何もできなくなってしまいました。


> sudo make -j4

ヒートシンクなし、扇風機なし、の場合は-j4を外した方が無難です。


> sudo make -j1

> sudo make install
> sudo ldconfig

Deep Learningと画像処理をするための環境が整いました。

参考

Raspberry Pi 人工知能ツールをインストール【Python3】
Raspberry Pi 3にOpenCV 3.1のインストール





«       »