ラズベリーパイで顔認識(改-2)


ラズパイ単体で顔認識をする場合

ラズベリーパイで顔認識(改-1)


ここではストリーミングしたカメラ画像を使って、ネットワーク越しに顔認識してみます。

こんな感じ。

 

 

 

 

 

 

 

 

ストリーミング側

CSIカメラモジュール + ラズパイZero 2 W

 

 

 

 

ストリーミングは軽量なMjpg-Streamerを使います。

ラズパイ Zero W とCSIカメラモジュールでライブ・ストリーミング(メモ)参照

また、カメラとZeroのハウジングには100均のダミーカメラがよさげです。これを使えばダミーカメラが本物の監視カメラになります。ただしZeroの電源は外部から取る必要があります。カメラには単三電池3個用の配線が取られていますが、Zeroは5v起動です。昇圧回路を挟んで使ってみましたが起動できませんでした。工作には工夫が必要です…..。

 

 

顔認識側

(改-1)で使ったラズパイ5

 

 

 

 

 

 

 

 


ストリーミング側

Mjpg-Streamer はラズパイで使う場合、最新のOSでは動かないようです。

で、Zero 2 W のOSにはBullseye Lite を使います。

以下にOLDバージョンのイメージがあります。

raspios_lite_armhf-2022-01-28

2022-01-28-raspios-bullseye-armhf-lite.zipをダウンロードします。

また、このイメージを焼く場合、最新のRaspberry Pi OS Imager を使うとユーザやSSHの設定ができません。

少し古いバージョン1.8.5 のImagerを使ってUse custom で焼くとユーザやSSHの設定もできます。

まずBullseyeが焼けたらImagerで設定したユーザー名とパスワードでログインします。

以下実行

Lite版の各種設定画面を起動します。

 Interface Optionsで以下を設定

Legacy Camera
SPI
I2C
Serial Port

Localisation Optionsで以下を設定

Locale
Ja_JP.UTF-8
Ja_JP.EUC-JP

最後にFinishしてrebootします。

 

次にIPアドレスを固定します。

最後尾に以下を追加

interface wlan0
static ip_address=<IPアドレス>
static routers=192.168.0.1
static domain_name_servers=<DNSのアドレス>

 

最後にrebootします。

 

ついでにSAMBAも設定しておきましょう。

共有用のディレクトリを作っておきます。

編集

最後尾に以下を追加

[Public]
path = /home/<ユーザー名>/Public
read only = no
guest ok = yes
public = yes
writable = Yes
browsable = yes
force user = <ユーザー名>
directory mode = 0774
create mode = 0774

 

パスワード設定

サービスを起動

 

Mjpg-streamerをインストール

ツールやライブラリをインストール

ユーザールートに戻って Mjpg-streamerをクローンしておきます。

ビルド実行

カメラの番号をチェック

CSIカメラが装着されていれば0番のvideoにアサインされていると思います。

ポート:8080でキャストしてみます。

ストリームされている画像を外部ブラウザーで見てみます。

http://<IPアドレス>:8080

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

自動起動用のスクリプトを作っておきます。

シェルスクリプトコード

カメラの傾きはrot (回転) オプションで設定(0 ~ 360)。

 

/etc/rc.localに以下を追加して再起動

 


顔認識側

ストリームされている画像をキャプチャして、顔認識(識別)をやってみます。

基本的な動作は(改-1)でやった単体用のコードを少し変更するだけです。仮想環境を作ってface_recognitionをインストールしておきます。

単体動作の場合のコードはfaceディレクトリにあるfacial_recognition.pyです。

 

ここにはCSIカメラモジュールからの画像を得るのに以下のコードを使っています。

picam2 = Picamera2()

さらに、ここからフレームを切り出すのは以下のコードです。

frame = picam2.capture_array()

変更をかけるのはこの2か所ということになります。

こんな感じです。

オリジナルのコメントは外していますが、改変部分のみStreamingというコメントを入れています。

IPアドレスの部分は各自の環境で書き換えてください。

 

実行手順は(改-1)と同じです。

source V_face/bin/activate

cd face

python3 facial_recognition.py

 

 


Appendix

ストリーミング・サーバーを立てる場合の問題点

Mjpg-streamerやRTSPサーバーで問題になるのはセキュリティです。

要はストリームされているコンテンツが暗号化されていないのです。で、暗号化対策が未だの場合、特に今回のような場合エクステリアで使うのはいいとして、インテリアで使わないようにしましょう。

つまり見守りやペット監視などは止めときましょう….ということですね。

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*