Arducam のPico4ML でエッジAI を試してみる


【製造中止】ArduCam はこの製品の製造をやめてます。多分マイコンレベルのCPU の環境でエッジAIをやるのは現状では時期尚早だったのかな?エッジの環境でやるにしても専用のSoCなどが必要なのかもしれません。ここでは一応、どんなレベルなのか可能性を探る程度をやってみます。


Arducam Pico4ML TinyML開発キットを使ってエッジAI のモデルをいくつか試してみます。

これはTensorFlow Lite Microを実行/学習するために専用設計されたRP2040開発ボードです。
QVGAカメラ、0.96インチLCD、PDMマイク、IMUを搭載しています。

 

 

 

 

 

 

 

 

 

 

 

 

 

これらを使うことで、人物認識、Magic Wand、ウェイクワード認識などを行うことができます。

 


既にコンパイル済のサンプルを使ってみる

ファームウェアのuf2ファイルは以下のArduCAMサイトにあります。

ArduCAM/pico-tflmicro

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 用開発環境を構築します。

母艦ラズパイのターミナルを開いて以下を実行。

ラズパイを再起動

 

pico-tflmicroをダウンロード

コンパイルします。

makeしますが オリジナルのソースのままだとnumeric_limits、max、min関連でコンパイルに失敗します。ひと手間加えます。

micro_utils.hを開きます。

以下のインクルードを追加

#include <limits>

で、makeを実行。

 

 

 

 

 

 

 

 

 

 

 

作成されたmicro speech のuf2がある場所に移動

 

上記と同様にPico4ML のBOOTSEL を押しながらラズパイに接続しておきます。

こうすることでPico4MLは/dev/sda1として認識されています。

 

 

 

 

 

 

 

 

 

音声認識(micro speech)をビルドして作成したファームウェア(.uf2)をPicoにコピーします。

ラズパイから切り離して、Pico4MLに単体で電力供給してもOKです。
このサンプルは「yes」と「no」の音声を認識します。

「yes」は比較的認識されやすいですが、「no」はめったに認識してくれません。

 

 

 

 

 

 

 

 

 

 

Pico4MLはMicro USB から電力供給できますが、乾電池からでも起動できます。

 

 

 

 

 

 

 

 

 

 

 

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*