GoogleHome×ラズベリーパイ~カメラとの連動~(第6回)
こんにちは。ミーヤキャットです。
前回はGoogleHomeで窓口業務アシスタントを作成しました。
GoogleHomeを使えばユーザの発言を聞き取る「耳」、発声を行う「口」に相当するユーザインタフェースが実現できることが分かりました。
今はコンピュータと人とのインタフェースは「キーボード、マウスとディスプレイ」または「それらが一体化したタッチパネル」が中心ですが、その常識から外れた画期的な商品やサービスが生まれるといいですね。
今回はカメラと連動して、GoogleHomeに「目」を付ける方法を考えてみましょう。
- GoogleHomeの初期設定と使い方(第1回)
- Action on Google&DialogFlowで機能拡張(第2回)
- 機能拡張準備~クライアント編~(第3回)
- 機能拡張準備~サーバ編~(第4回)
- 窓口業務アシスタント作成(第5回)
- GoogleHome×ラズベリーパイ~カメラとの連動~(第6回)
GoogleHomeに目を付ける方法
カメラの機能を持った装置は何を使おうか?と考えていたところ、書店で以下の書籍を見つけました。
この書籍はIoTに関する知識が無くても読みやすく、解説も丁寧なので興味のある方は購入をお勧めします。
ここで登場するラズベリーパイというのはワンボードマイコンで、今回はカメラモジュールを取り付けることで「目」としての機能を持たせます。他にも温度センサーや光度センサーを取り付けることも可能です。
この書籍から頂いたアイデアとしては
- カメラ映像の入力装置としてラズベリーパイを使う
- 画像処理ライブラリOpenCVを使って画像の動体検知を行う
の2つです。
入力装置としてのカメラを準備
カメラ装置としてはRaspberry Pi 3 Model Bにカメラモジュールを取り付けることにしました。
Amazonで探してみると、スターターキットがありました。
このスターターキットではSDカードと、SDカードライターが付属されるのでUSBのスロットで読み書きができます。
また同梱されているSDカードにはすでにOSが保存されているのでカードスロットにさして電源を入れれば、すぐにOSのインストール画面になります。
SDカードを別々に買った場合は、OSを公式HPからダウンロードしてSDカードに書き込み(書き込む際にSDカードライターが必要)、OSのインストールを行うことが必要です。
私の場合は何のトラブルもなくセットアップできました。
ラズベリーパイに付けるカメラモジュールは以下のものを使いました。
基盤に差し込んだだけでは認識しないので、「sudo raspi-config」で設定ツールを起動して認識させます。
「raspi-config」⇒「Interface Option」⇒「Camera」⇒「enableをYes」とすれば認識されます。
ラズベリーパイのカメラで動体を検知
ラズベリーパイに画像処理ライブラリOpenCVを導入します。
GitHubでダウンロードして、関連ライブラリもインストールしていきます。
OpenCV
動体検知については前述の書籍内で解説付きで載っているのでほぼ流用しました。
何が映っているのかを判定
書籍では画像判定のディープラーニングのフレームワークであるCaffeを使って「猫」の検知を行っていますが、今回は人が来たかどうかを検知したいのでOpenCVの顔検出機能を使って判断します。
顔検知の方法としては、OpenCVをインストールすると同梱されているカスケード分類器を読み込ませて判定に利用します。
今回は「顔正面」を検出するカスケード分類器を使用しました。
Pythonでのイメージ
import cv2 cascade_file = "インストールフォルダ/data/haarcascades/haarcascade_frontalface_alt2.xml"←「顔正面」を検出するカスケード分類器 cascade = cv2.CascadeClassifier(cascade_file) cv_img = cv2.imread(file_path)←画像の読み込み img_gray = cv2.cvtColor(cv_img,cv2.COLOR_BGR2GRAY)←白黒にして判定 face_list = cascade.detectMultiScale(img_gray, minSize =(20, 20)) for(pos_x,pos_y,w,h) in face_list: img_face = cv_img[pos_y:pos_y + h, pos_x:pos_x + w]←顔部分の画像
GoogleHomeとの連動
ラズベリーパイのカメラで動体検知し、人が来たかどうかを判定する準備ができたので、GoogleHomeにどうやって情報を伝えるかを考えます。
調べたところ、Google-home-notifierというツールを使えば、GoogleHomeに任意の言葉をしゃべらせることができるようです。
GitHubで公開されているので、それをラズベリーパイに導入して判定結果をGoogleHomeに伝えることにしました。
このツールはNode.jsをベースにしているのですが、ラズベリーパイに初期導入されているNode.jsのバージョンが古かったので、Node.jsも最新化しました。
作成したアプリケーション
カメラに人が映ったら「誰か来たよー」と教えてくれるものを作りました。
では実際に動かしてみましょう。
使用している人物の画像は商用利用可能なフリー写真素材ぱくたそを利用しました。
ヒーホー君に反応してしまっていますが・・・ある程度はうまくいっていますね。
画像認識を利用したサービス
窓口業務アシスタントとしては人が来たかだけでなく、今カメラに映っている人が「男性」か「女性」かを判定できればマーケティングに活かしたりすることができます。
今回は性別や年齢を判断するところまではできませんでしたが、中小企業でも導入できそうな画像認識サービスをご紹介します(導入支援実績があるわけではありません)。
ABEJA Insight for Retail(小売店向けの顧客流入分析ができるサービス)
カメラを設置することで、どんな属性の顧客がどのように店舗内を回遊したかをデータとして蓄積し、分析してくれるサービスです。
POSレジでは測定できない未購入客を含めた来店人数や、来店客のなかで、どのような人が購入に至ったのかが把握ができるのが魅力ですね。
月額16,000円/カメラ1台で導入できるようです。
このコストが高いと見るかは、どれだけ購買促進(店舗内での購入促進策)の手を打つかによると思います。
頻繁に購買促進策を打たない店舗が毎月分析しても何も変化がないからです。
分析ツールを導入しなくてもビデオを見ながら人間がカウントすれば来店人数は把握できますし、ビデオを早送りすれば人の流れが分かるので顧客導線を把握することができます。分析ツールを導入する前に一度人間が手作業でやってみて、「毎月やるのは手間だな」「もっと正確な数が知りたいな」と思ったら導入するくらいでいいと思います。
これに限らずツールにお金を払ったら「売上が増えるに違いない!」と期待してしまいますが、有効に活用しなければ成果は出ません。
ツールを過信しないようにしたいですね。
今回は以上です。
またよろしくお願いします。
=======================
記事についてはリンクフリーですが、著作権は放棄していません。
また、この記事は個人の見解を示したものであり、書かれている情報を元に生じた損害についての保証は行いません。
書かれている内容が事実と異なる場合や、人権、知的財産権を侵害している場合は、問合せフォームよりご連絡ください。訂正、削除を行います。
=======================
