概要
認知症の祖父が同居する家族の知らない内に玄関ドアを開けて外に出ることがありました。
そこで、家にあった物を用いて祖父が玄関ドアを開けたことを家族にすぐに通知するシステムを作りました。
用意
- HP ProLiant DL360 G7(サーバー)
- Xperia Z3 Compact SO-02G(スマホA) ※カメラ用
- ARROWS NX F-05F(スマホB) ※スピーカー用
スマホAを玄関ドアを監視するカメラ、スマホBを家族に音声通知するスピーカーとする。
設定
- 【サーバー】
Proxmoxをインストールしてその上にWindows11のVMを作成する。
以降、サーバーとしてこのVMに設定を行う。 - 【スマホA】
サーバーと同じネットワークに接続する。
Google Play ストアからiVCamをインストールして起動する。 - 【スマホB】
サーバーと同じネットワークに接続する。
Google Play ストアからwireless speaker for androidをインストールして起動する。 - 【サーバー】
iVCamをインストールしてスマホAと接続する。 - 【サーバー】
仮想オーディオデバイスであるVB-CABLEをインストールする。 - 【サーバー】
WiFiAudioをインストールしVB-CABLEをキャプチャして、スマホBと接続する。
インストーラーをダウンロードするにはアカウントを作成する必要がある。 - 【サーバー】
gitとpython3.10をインストールする。 - 【サーバー】
cmakeをインストールする。この時、以下の画像のように選択してパスを通す。
- 【サーバー】
Visual Studioをインストールする。
この時、「C++によるデスクトップ開発」を選択してインストールする。
- 【サーバー】
必要なモジュールをインストールする。pip install opencv-python pip install imutils pip install cmake pip install dlib pip install face_recognition
- 【サーバー】
kotamorishiさんが公開されている顔認識プログラムをgit cloneで取得してホームディレクトリに配置する。git clone https://github.com/kotamorishi/facial_recognition
- 【サーバー】
既に用意されている以下のプログラムを用いて、祖父の顔を撮影し学習させる。
ラベルはgrandfatherとする。プログラム名 機能 headshots.py カメラ撮影を行い教師データを作成する train_model.py 顔認識モデルに教師データを学習させる - 【サーバー】
VoiceVoxで通知用の音声ファイル(notification_grandfather.wav)を作成してプログラムと同じフォルダに配置する。
今回は「(祖父の名前)さんが外に出ます」という音声にする。 - 【サーバー】
既に用意されているfacial_req.pyをコピーしfacial_req_notify.pyとして以下の通り追記する。facial_req_notify.py+ import os ... 中略 ... print(currentname) + # check if the recognized person is "grandfather" + if currentname == "grandfather": + # play the notification sound + os.system("start C:\\Users\\(ユーザー名)\\facial_recognition\\notification_grandfather.wav") + currentname = "" # update the list of names
- 【サーバー】
facial_req_notify.pyを実行する。python facial_req_notify.py
感想
ときどき祖父以外を誤認識・通知しますが、祖父が玄関ドアを開けようとした時の音声通知は実現できました。
また、VPNを設定して遠隔からリアルタイムのカメラ映像を確認できるようにしました。他にも出入りを記録するなど機能を追加する余地はあると考えているので、その内に取り組めたら良いと思います。