こんにちは、ヨシケンです!
今回は、ラズパイの最新作ラズパイ5(Raspberry Pi 5)を使って、ラズパイ上でAIを動かしてみたいと思います。これまでのラズパイに比べて、ラズパイ5は大幅に高性能化しているので、画像認識などの動きも良くなっているのではないでしょうか。前作ラズパイ4と比較しながら使っていきたいと思います。
今回の記事の流れ
1. 今回の電子工作に必要な部品群
今回必要な機器は、以下のようになっています。
必要な部品群:
名前、説明 | デバイス |
---|---|
Raspberry Pi 5 4GB
2023年9月に発表されたラズパイの最新版。ここでは4GB RAMを使っています。 |
|
USBカメラ
ラズパイのUSBに接続する小型のUSBカメラ |
|
MicroSDカード、接続するUSBケーブル、ディスプレイケーブルなど | 適宜必要に応じて |
これらの部品をそろえて、ラズパイ5でAIデバイスを作っていきます。
2. ラズパイ5(Raspberry Pi 5)について
ラズパイ5は、ラズベリーパイ財団から2023年9月に発表がありましたが、日本国内では2024年2月から店舗にも出回ってきました。そんなラズパイ5を手に入れて、まずは開封からラズパイOSを動かすための最低限のセットアップをしていきます。
ラズパイ5では、CPUがクアッドコア2.4 GHz Arm Cortex-A76になって高速化しています。ラズパイ公式ページでも、ラズパイ4の2倍以上速いとうたっているほどです。また、GPUも800 MHz VideoCore VIIになって、AI性能も向上しています。
さらに、RP1チップというラズパイのIOを司るチップが追加され、データの入出力が強化されています。これにより特にカメラとディスプレイの接続など映像系のパフォーマンスが向上しているとのこと。これは楽しみです。
まずは、ラズパイ5を使い始めるために、MicroSDカードにRaspberry Pi OSをインストールしていきます。Macの方は、brewコマンドでraspberry-pi-imagerをインストールします。それ以外の方は、こちらのページから使用環境に応じてインストーラをダウンロードします。
ラズパイのインストーラであるイメージャをパソコンに入れたら、それを立ち上げます。このようなストレージやOSを選ぶ画面が立ち上がります。
ストレージはパソコンに差したマイクロSDカード、デバイスはRaspberry Pi 5を選びます。そして最新のRaspberry Pi OS (bookworm)をインストールします。逆にこれまでのラズパイOSは、Legacy(ラズパイ4以前のもの)としてラズパイ5にはインストールできないようになっています。
OSのインストールが終わったら、SDカードをラズパイに差して起動します。あとで画面が必要になるので、HDMIでディスプレイにつなぐか、リモートデスクトップのVNC Viewerなどを入れておきます。ラズパイのRaspi-ConfigのInterface OptionでVNCをEnableにしておきます。
以下のサイトからVNCビューワをお使いの環境に合わせダウンロード、インストールしておきます。
https://www.realvnc.com/en/connect/download/viewer/
そして、パソコン側からVNCビューワでラズパイ5に接続します。
ラズパイ5のデスクトップが立ち上がりました。
手元で確かめてみても、ラズパイ5の起動時間は4と比べて2倍ほど速く、無線接続もかなり速くなっています。
それでは次にAI性能を確かめるために、ラズパイにAIを導入し、エッジAIをおこなってみます。
3. エッジAIを実行する
エッジAIとは、コンピュータにAIライブラリをインストールし、エッジ(端末)で動かす技術です。いくらラズパイが速くなって来たとはいえ、複雑な処理をするAIをこの小さなコンピュータ上で動かせるでしょうか。ここでは、画像解析のAIライブラリをラズパイ5にインストールし、その処理を見てみます。まず、必要なライブラリをインストールします。
$ sudo apt-get install -y libatlas-base-dev
$ sudo pip3 install -U pip
$ sudo pip3 --default-timeout=1000 install opencv-python==4.7.0.72
$ sudo pip3 install onnxruntime
基本的なライブラリをインストールします。
次に画像処理を行う、OpenCVをインストールします。
さらにTensorflowなどのAIライブラリを使うための、Onnxをインストールします。
これでライブラリの準備はできました。次に画像解析をおこなうためのカメラをUSBにセットし、使えるようにします。
ラズパイのエッジ画像解析には、YOLOという物体検出AIを使います。ここではそのサンプルプログラムも作ってくれている、Kazuhito00さんのYOLOX-ONNX-TFLiteを使わせてもらいます。
https://github.com/Kazuhito00/YOLOX-ONNX-TFLite-Sample
以下のようにGitからクローンして、ラズパイ5に導入します。
$ sudo git clone https://github.com/Kazuhito00/YOLOX-ONNX-TFLite-Sample.git
クローンできたら、サンプルプログラム sample_omnx.py があるので、それを流してみます。カメラをUSBに差して、ディスプレイ又はVNCビューワ経由で、プログラムを流します。
そうすると画面が立ち上がって、物体検出を始めます。カメラを物体に向けると、リアルタイムにその物体が何であるか読み取ってくれます。この時は読み取り速度は、73ms (0.07秒)でした。
同じことをラズパイ4でもやってみます。同様に、YOLOX-ONNX-TFLiteをラズパイ4に導入し、サンプル・プログラムを流してみます。
プログラムを流すと、同様にリアルタイムの画面が上がってきますが、パフォーマンスが厳しいせいか、カクカクしてしまいます。読み取りはされるものの、推定時間は298ms(約0.3秒)と、ラズパイ5の方が4倍ほど速いですね!
リアルタイムの動画でも、精度も処理時間もラズパイ5でサクサク動くことが確認できました。
4. まとめ
今回は最新のラズパイ5を、開封から初期セットアップ、そしてエッジでAIを動かすところまでを紹介してきました。
ラズパイ4と比べても、全体的に2倍ほど速く、AIも問題なく動いているのが驚きでした。ますますAI用途にラズパイを使っていけそうです。ただ、ラズパイ5からOSがバージョンアップし、まだ対応していないライブラリなどもあるのも実情です。物を判別する画像解析だけでなく、体のポーズや動きを検知するPoseNetというのも実行したかったのですが、ライブラリが整備されるまでもう少し待つ必要がありそうです。
これからも、ラズパイ5のパフォーマンスを活かした使い方を考案して、ものづくりをしていこうと思います。お楽しみに!