【製造中止】ArduCam はこの製品の製造をやめてます。多分マイコンレベルのCPU の環境でエッジAIをやるのは現状では時期尚早だったのかな?エッジの環境でやるにしても専用のSoCなどが必要なのかもしれません。ここでは一応、どんなレベルなのか可能性を探る程度をやってみます。
Arducam Pico4ML TinyML開発キットを使ってエッジAI のモデルをいくつか試してみます。
これはTensorFlow Lite Microを実行/学習するために専用設計されたRP2040開発ボードです。
QVGAカメラ、0.96インチLCD、PDMマイク、IMUを搭載しています。
これらを使うことで、人物認識、Magic Wand、ウェイクワード認識などを行うことができます。
既にコンパイル済のサンプルを使ってみる
ファームウェアのuf2ファイルは以下のArduCAMサイトにあります。
person_detection_int8.uf2を使ってみます。これはカメラに写っているのが人かどうかを検出します(誰か……ではありません)。
ダウンロードボタンをクリックします。
母艦にはRaspi 4 Model B + Bookwork (Debian 12) 64-bit を用意します。
Pico4ML のBOOTSEL ボタンを押しながら、データ送信できるUSBケーブルでラズパイに接続します。
Pico4ML はストレージとして認識されて、ウィンドウが開きます。
ここにダウンロードしておいたuf2ファイルをドラッグ・ドロップします。
読み込まれるとウィンドウが閉じてPico4ML でアプリが起動します。
person detection なのでカメラに人を映します。
例えば以下のようにオータニサンを映してみると、94%の確率で「人」と認識されています。
ソースからビルドして使ってみる
音声認識(micro speech)を使ってみます。このサンプルでは音声が「yes」なのか「no」なのかを判別します。
上記サイトのQuick Pico Setup以降を参照しますが、そのままだとコンパイルできません、少し修正を加えます。
Pico 用開発環境を構築します。
母艦ラズパイのターミナルを開いて以下を実行。
|
1 2 3 |
git clone https://github.com/raspberrypi/pico-setup.git ./pico-setup/pico_setup.sh |
ラズパイを再起動
|
1 |
sudo reboot |
pico-tflmicroをダウンロード
|
1 |
git clone --recursive https://github.com/ArduCam/pico-tflmicro.git |
コンパイルします。
|
1 2 3 4 5 6 7 |
cd pico-tflmicro mkdir build cd build cmake .. |
makeしますが オリジナルのソースのままだとnumeric_limits、max、min関連でコンパイルに失敗します。ひと手間加えます。
micro_utils.hを開きます。
|
1 |
sudo nano /home/<ユーザー>/pico-tflmicro/src/tensorflow/lite/micro/micro_utils.h |
以下のインクルードを追加
#include <limits>
で、makeを実行。
|
1 |
make -j4 |
作成されたmicro speech のuf2がある場所に移動
|
1 |
cd /home/<ユーザー>/pico-tflmicro/build/examples/micro_speech |
上記と同様にPico4ML のBOOTSEL を押しながらラズパイに接続しておきます。
こうすることでPico4MLは/dev/sda1として認識されています。
音声認識(micro speech)をビルドして作成したファームウェア(.uf2)をPicoにコピーします。
|
1 2 3 4 5 |
sudo mkdir -p /mnt/pico sudo mount /dev/sda1 /mnt/pico sudo cp micro_speech.uf2 /mnt/pico |
ラズパイから切り離して、Pico4MLに単体で電力供給してもOKです。
このサンプルは「yes」と「no」の音声を認識します。
「yes」は比較的認識されやすいですが、「no」はめったに認識してくれません。
Pico4MLはMicro USB から電力供給できますが、乾電池からでも起動できます。







Leave a Reply