【Raspberry Pi Pico】カメラを接続して機械学習プログラムを動かす【Tensorflow Lite】

【Raspberry Pi Pico】カメラを使って人検出プログラムを動かす【Tensorflow Lite】

こんにちは! けい(Twiiter)です。

今回は、Raspberry Pi Pico(ラズピコ)にカメラを接続し、機械学習での人検出のデモを動かす方法を紹介していきます。

実際に動かしたときの動画をYoutubeにアップしました、イメージはこんな感じです。

Raspberry Pi Picoで使えるカメラ

Raspberry Pi Picoはラズパイと違い、カメラインターフェースやUSBアダプターがありません
そのため、ラズピコにラズパイ用カメラやUSBカメラといった類のものは接続することができません。

そこで、GPIO接続のカメラArducamを用意します。

このカメラはArduinoやラズパイでも使用可能です。

用意するもの

Raspberry Pi

ラズピコへのプログラム書き込み用に用います。
コマンド操作を基本的に行っていくので、LinuxPCやMacでも代用できます。

Raspberry Pi Pico

Arducam

USBシリアル変換ケーブル

ラズピコからラズパイへの画像の転送に用います。

HiLetgo® CP2102 USB 2.0 to TTL UART シリアル コンバータモジュール 5P STC PRGMR ケーブル付き [並行輸入品]
HiLetgo

その他

created by Rinker
Sintron
¥343 (2023/05/26 13:50:35時点 Amazon調べ-詳細)

USBシリアル変換の接続でコネクタが必要になります。

ラズパイとラズピコの接続に必要です。通信機能がないUSBケーブルを使用していると、プログラムの書き込みが行えないので注意が必要です。

created by Rinker
Amazonベーシック(AmazonBasics)
¥606 (2024/04/26 17:54:45時点 Amazon調べ-詳細)

配線

ラズピコとカメラの接続

カメラとラズピコは8本の線でつなぐ必要があります。

Arducamのピンとラズピコのピンを次の表のように接続します。

Arducamラズピコ
CSGP5
MOSIGP3
MISOGP4
SCKGP2
GNDGND
VCC3.3V
SDAGP8
SCKGP9

ラズピコとUSBシリアル変換ケーブルの接続

下の画像の真ん中の3つ(TXD、RXD、GND)をラズピコに接続します。

USBシリアル変換ケーブルラズピコ
TXDGP1
RXDGP0
GNDGND

配線後はこのような全体像になっています。

次に、ラズパイのUSBに接続します。

これで配線は完了です。

プログラムをビルドする

顔認識をするプログラムは、TensorFlow Liteを使用しているライブラリArduCAM/RPI-Pico-Camを用います。
このライブラリはArduCam公式が作成したライブラリで、ラズピコとArduCamで簡単に画像認識を行うために作成されたものです。

ビルドの過程はラズパイを用いて行いましたので、ラズパイでの操作を説明していきます。

セットアップ

ラズパイのターミナルを開いて、次のコマンドを実行します。

git clone https://github.com/raspberrypi/pico-setup.git
pico-setup/pico_setup.sh

このコマンドを実行することで、ビルドするための必要な環境構築を行います。

プログラムの実行後、ラズパイを再起動します。

sudo reboot

人検出デモをビルドする

ラズパイのターミナルで次のコマンドを実行します。

git clone https://github.com/ArduCAM/RPI-Pico-Cam.git

これでプログラムのダウンロードが完了するので、ビルド作業に移ります。

cd RPI-Pico-Cam/tflmicro
mkdir build 
cd build 
cmake ..
make

ビルドするためにそれなりに時間がかかります。

ビルドが完了したら、ラズピコでの実行ファイルが生成されます。
次のディレクトリに移動してみましょう。
/home/pi/RPI-Pico-Cam/tflmicro/build/examples/person_detection

赤枠で囲ったファイルが、人検出プログラムです。「person_detection_int8.uf2」
拡張子が「.uf2」となっているため、ラズピコにドラッグアンドドロップするとプログラムの書き込みが行えます。

ラズピコにプログラムを書きこむ

それでは、ラズパイとラズピコを接続しましょう。

接続する時にラズピコのBOOTSELボタンを押しながらUSBを挿します。(挿してから2秒くらいたったら離す)

(画像は以前撮ったものなので、実際には配線されています。)

ラズパイの画面上でこのようにファイルストレージとして認識されるはずです。

ここまで出来たら、あとは先ほどのプログラムファイルをラズピコにドラッグアンドドロップするだけです。

カメラ画像を表示する

ラズパイでProcessingを使って、結果を表示させることができます。

デフォルトではProcessingがインストールされていないと思いますので、次のコマンドを実行してインストールします。

curl https://processing.org/download/install-arm.sh | sudo sh

インストールが完了したら、①ラズパイアイコン、②プログラミング、③Processinngを順にクリックしてProcessingの起動を行います。

Processing上で、①ファイル、②開くをクリックします。

「pi/RPI-Pico-Cam/tflmicro/person_detection_display」まで移動して、開くをクリックします。

実行ボタンをクリックすると結果が表示されます。

USBシリアル変換のRXDが青色に点滅している時、正常に通信が出来ているのでプログラムが実行されています。

もしプログラムを書きこんで点滅していないようであれば、配線を見直すかラズピコのUSBケーブルを抜き差ししてみてください。