8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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で画像を表示して認識します。
結果として、以下の画像が得られました。

得られた名前で検索を行い、結果が正しいことが確認できました。

以上で、学習結果の説明は終了となります。

8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?