Raspberrry Pi4 でやってみた機械学習
はじめに
今回、会社で学習用に存在した、Raspberrry Pi4を使ってインストールから解析するまでの説明をさせていただこうかなと思います。
やってみた流れは以下のようになります。
- インストールから起動まで
- SSHとRemote Desktop接続
- Coral AcceleratorとRaspberry Piカメラを使って画像解析とリアルタイム映像解析
インストールから起動まで
準備したもの
- Raspberry Pi 4 Model B(8GB基盤)
- SDカード(Sandisk Ultra 256GB)
- SD カードリーダー
- Type-C電源アダプターとスイッチ
- ケース
- MicroHDMI-to-HDMIケーブル
- Coral USB Accelerator
- Raspberry Piカメラ
- モニター、USBキーボード、USBマウス
- Macパソコン
- Wi-Fi(無線LAN)
ダウンロードとインストール
Mac(Pro)を使用してRaspberry Pi環境をmicroSDカードにインストールします。
OS は従来 Raspbian と呼ばれていた Raspberry Pi OS を利用します。
Raspberry Pi公式サイトに提供してるRaspberry Pi Imager を利用するため、イメージファイルを事前にダウンロードしておく必要はありません。
以下の手順の通りに実行します。
Raspberry Pi Imager のインストール
MacOSだと brew cask install raspberry-pi-imager
でインストール可能ですが、今回は公式サイトから「Raspberry Pi Imager for macOS」をダウンロードしてインストールします。
Raspberry Pi OS をSDカードにインストール
SD カードリーダーに microSD カードをセットし、スタートメニューから Raspberry Pi Imager を起動します。
CHOOSE SD CARD で書き込む microSD カードを選択し、 CHOOSE OS をクリックします。
OS を選択すると、自動でイメージをダウンロードできます。
WRITE ボタンを押すと、書き込みが開始されます。
書き込みが完了すると、自動的にベリファイが走ります。
しばらく待って、ベリファイが完了するとSDカードにRaspbianのインストールが完了です。
※Raspberry Pi Imagerを使うと、他のツールを利用する必要が無いため、非常に便利です。
SSHとRemote Desktop接続
初期設定として、自分のMacからSSHとRemote Desktopが実行できるように準備します。
理由はモニター、USBキーボード、USBマウスの切替が面倒なので、モニターに繋がず、自分のMac上でRaspberry Piを利用するためです。
起動と接続
次に、以下の手順を実行していきます。
Raspbianを書き込んだmicroSDカードをRaspberry Pi4に挿入します。
初回のみ、HDMIケーブルをRaspberry Piに接続し、電源を入れて起動します。
起動シーケンスの後でログイン出来たら、以下の初期インストールを実行します。
「Welcome to the Raspberry Pi Deskop!」が表示したら「Next」を押します。
「国、言語、キーボードタイプ、タイムゾーンなど」をセットし、「Next」を押します。
初期ユーザーとパスワードは pi と raspberry になっています、ここでは、新しいパスワードを設定し、「Next」を押します。
スクリーン設定画面で「This screen shows a black border around the desktop」をオンにして「Next」を押します(再起動してから反映されます)。
Wi-Fiネットワークを設定し、「Next」を押します。
ソフトウェアの更新画面でスキップしてもいいですが、アップデートした良いので、「Next」を押します。
アップデート中にタスクマネージャーを開くと、プロセスを確認出来ます。
アップデートが完了したら、「Restart」を押して再起動を行います。
初期設定と接続設定
OS バージョン確認
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.4.79-v7l+ #1373 SMP Mon Nov 23 13:27:40 GMT 2020 armv7l GNU/Linux
パッケージ更新
pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt upgrade -y
vim インストール
pi@raspberrypi:~ $ sudo apt install vim -y
raspi-config による設定
pi@raspberrypi:~ $ sudo raspi-config
次のようなキャラクタベースのUIが起動します。
「5 Interfacing Options」を選択して、「P2 SSH」を選択しSSHを有効化と、「P3 VNC」を選択しVNCを有効化します。
※VNCが表示されない場合、以下のように手動でインストールしてください。
pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt install realvnc-vnc-server realvnc-vnc-viewer
その後、以下のコマンドで再起動させます。
pi@raspberrypi:~ $ sudo reboot
VNC Viewerの設定
Raspberry Pi に割り振られた、private IPアドレスを調べます。
pi@raspberrypi:~ $ ifconfig
もしくは
pi@raspberrypi:~ $ ping raspberrypi.local
VNC Viewerを起動します。
VNC Viewerの検索ボックスに、Raspberry Piに割り振られたprivate IPアドレスを入力します。
「Connect to address」を押してRaspberry Piのユーザーとパスワードを入れます。
問題なく設定出来たらトップバーにアイコンが表示されます。
ついでに、画面解像度が良くなるように設定します。
pi@raspberrypi:~ $ sudo vim /boot/config.txt
=====
これを追加します。
hdmi_ignore_edid=0xa5000080
hdmi_group=2
hdmi_mode=85
=====
次はRaspberry Piをsleepしないように設定します。
方法は2つあります。
方法1
pi@raspberrypi:~ $ sudo vim /etc/lightdm/lightdm.conf
=====
これを追加します。
xserver-command=X -s 0 -p 0 -dpms
=====
方法2
pi@raspberrypi:~ $ sudo apt-get install xscreensaver
preferenceからscreensaverに行って、Display ModesタグのModeをDisable Screen Saverを選択します。その後、再起動させます。
自分のMacからSSHで接続する
自分のMacの「ターミナル」に以下のコマンドを入力します。
IPのところにRaspberry Piに割り振られたprivate IPアドレスを入力します。
[~]$ ssh pi@192.168.0.107
自分のMacから画面共有アプリケーションで接続する
自分のMacの「Screen Sharing」画面共有アプリを開きます。
接続先の入力部に、Raspberry Piに割り振られたprivate IPアドレスを入力し、接続を押します。
パスワードの入力部に、ログインパスワードを入力しサインインを押します。(パスワードを保存するチェックボックスをオンにすると次回入力が楽になります。)
以下のように、raspberrypiの画面が表示されます。
CoralAcceleratorとRaspberry Piカメラを使って画像解析とリアルタイム映像解析
Raspberry Piにセットアップする
初めに、CoralAcceleratorの「Get started」を行います。
Coral USB AcceleratorをRaspberry Piに繋げます。
その後、以下の手順を実行します。
pi@raspberrypi:~ $ echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
pi@raspberrypi:~ $ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
pi@raspberrypi:~ $ sudo apt-get update
次に、Edge TPUランタイムをインストールします。
pi@raspberrypi:~ $ sudo apt-get install libedgetpu1-std
次に、Raspberry PiカメラをRaspberry Piに繋げます。
その後、以下の手順を実行して、サンプル用に写真を撮ります。
Raspberry Pi Configurationを開きます。
Interfacesタブからcameraをenabledにします。
次のコマンドで写真を撮ります。
pi@raspberrypi:~ $ raspistill -o Desktop/image.jpg
画像解析しましょう
これらの手順に従って、Coralが提供しているコンパイル済みのモデルとサンプルスクリプトを使用して、画像分類を実行します。
まずは、GitHubからダウンロードを行います。
pi@raspberrypi:~ $ mkdir coral && cd coral
pi@raspberrypi:~ $ git clone https://github.com/google-coral/tflite.git
鳥の分類モデル、ラベルファイル、と鳥の写真をダウンロードします。
pi@raspberrypi:~ $ cd tflite/python/examples/classification
pi@raspberrypi:~ $ bash install_requirements.sh
以下の鳥の写真を使用して画像分類子を実行します。
pi@raspberrypi:~ $ python3 classify_image.py \
--model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--labels models/inat_bird_labels.txt \
--input images/parrot.jpg
リアルタイム映像解析
今回は、Coralが提供しているサンプルの中から「Image recognition with video」をRaspberry Piカメラを利用して、リアルタイム映像解析を行います。
まずは、GitHubからダウンロードします。
pi@raspberrypi:~ $ mkdir google-coral && cd google-coral
pi@raspberrypi:~ $ git clone https://github.com/google-coral/examples-camera --depth 1
モデルをダウンロードします。
pi@raspberrypi:~ $ cd examples-camera
pi@raspberrypi:~ $ sh download_models.sh
gstreamerライブラリをインストールします。
pi@raspberrypi:~ $ cd gstreamer
pi@raspberrypi:~ $ bash install_requirements.sh
そして、デモを実行します。
pi@raspberrypi:~ $ python3 classify_capture.py
iPadで画像を表示して認識します。
結果として、以下の画像が得られました。
得られた名前で検索を行い、結果が正しいことが確認できました。
以上で、学習結果の説明は終了となります。