Raspberry Pi 3+Amazon Rekognition+webカメラで顔認証付き監視カメラを作る #AWS #RaspberryPi #python #AmazonRekognition
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
はじめに
富山事業所所属のYです。
富山事業所にあるRaspberry Pi 3とwebカメラとAmazon Rekognitionを組み合わせて、簡易的な顔認証付き監視カメラを作ってみましたのでご紹介します。
Amazon Rekognitionとは?
Amazon Web Service(以下AWS)で提供されている、機械学習を使用した画像と動画の分析を行うサービスです。
Amazon Rekognition(公式サイト)
Amazon Rekognitionでは、オブジェクトとシーンの検出、顔の分析、有名人の認識、イメージ内のテキストの検出など
さまざまなことが可能です。今回のシステムでは、顔の検出と比較を利用しました。
まずは、提供されているデモ画面を使用し、富山事業所メンバーを検出できるか試してみました。
複数人の写真からでも、左側の画像の人物の存在を検出していますね!
システムのしくみ
大まかな流れは以下の通りです。
①カメラに近づいた人物を測距センサーで検知
②webカメラで撮影
③撮影した画像と、あらかじめS3にアップロードしておいた富山事業所メンバーの写真をAmazon Rekognitionで比較するように指示
④結果をslackに通知
開発環境は以下の通りです。
・Raspberry Pi 3 Model B
・Rasbpian Buster(10.4)
・python 2.7.16
・測距センサー(GP2Y0A710K0F)
・webカメラ(USB接続の汎用的なもの)
ハードウェア実装
測距センサーで取得される値はアナログ値なので、デジタル値に変換する際にA/Dコンバーターが必要です。
今回はMCP3008を用いました。これでデジタル値に変換された電圧を取得します。
測距センサーで検知する距離が変化すると、電圧が変化します。この電圧の値から距離を算出することができます。
今回は3mを閾値とし、それよりも近づいてきた物体を撮影することにしました。
pythonからwebカメラの操作はOpenCVを用いています。
ソフトウェア実装
冒頭でも述べた通り、顔の検出と人物の判断にはAmazon Rekognitionを使用しています。
顔の検出はDefectFaces、S3にある画像と撮影した写真との比較はCompareFacesを使用しました。
それぞれの使用方法については以下のドキュメントをご覧ください。
CompareFacesの入力パラメータでは
同一人物か判断するための閾値(SimilarityThreshold)は80%としました。
動かしてみた
富山事業所所属の十松さんにご協力いただきました。
十松さんの画像をS3に登録し、本人だと判定されるか検証してみました。
S3に登録しておいた画像が投稿されました!成功です!
顔の検出、人物の判定ともにかなり精度が高い印象を受けました。
変顔や髪形を隠したりしてもらいましたが、十松さんと判定されています。
さすがにここまで顔を変えると判定できないようです。
マスク姿はさすがに十松さんと判定はされませんでしたが、マスク姿の写真をS3にアップロードしておけば、
そちらと同一人物だと判定されました。(わかりにくいですが、下の画像があらかじめS3にアップロードしておいたものです)
今後の課題
センサーの前を歩いて通過した場合は、人物がはっきり写らず、検知することができませんでした。
これについてはシャッタースピードを上げることで解決できそうです。
また、Amazon Rekognition内でIndexFacesという機能があり、こちらを利用すれば、より高機能な顔検知ができそうです。
今後も、このようなレポートをアップしていきますので、ぜひクリエーションライン 富山事業所Twitter(@CL_toyama)のフォローをお願いします(^^♪