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
micro SDカードをフォーマットする
Windowsの機能を使って、micro SDカードをフォーマットします。
SDカードの性能をより引き出したい場合は、SDメモリカードフォーマッターを使います。
SDメモリカードフォーマッター
Raspbianをmicro SDカードにコピーする
DD for Windowsを使って、Raspbianをmicro SDカードにコピーします。管理者として実行しないとmicro SDカードが見えないはずです。
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
この画面になります。
3 Boot Optionsを選択します。
B1 Desktop / CLIを選択します。
B3 Desktopを選択します。グラフィカルログインで、パスワードが必要、の設定になります。
最初の画面に戻ります。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
- パスワード(=暗号化キー)
パスワード(=暗号化キー)が暗号化されて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をインストールします。
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のインストール