こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
皆さんの愛車、守りませんか?
近年、スマートキーの特性を悪用した自動車盗難事件が多発しています。皆さんの大切な愛車を守るために、このシステムが役立つことを夢見ています。
1.開発背景
近年、リレーアタックやコードグラバーといった、スマートキーの特性を悪用した自動車の盗難事件が多発しています。これらの手法では、オーナーに気付かれないうちに盗難されてしまい、犯人の消息が掴めないまま泣き寝入りしてしまう可能性が非常に高いです。そこで私たちは、GPSやカメラを使って、盗まれてしまった自動車や犯人を追跡できるようなシステムを開発しました。さらにオプション機能として、まぶたの情報から眠気を検知するシステムも開発しました。
2.開発したシステム
私たちは今回、ラズパイを用いて大きく3つのシステムを開発しました。
- 運転者の顔を認識して、オーナーであるかを確認するシステム
- GPSから自動車の位置情報を取得して、スマホで追跡できるシステム
- オプション機能として、オーナーが安心して運転できるための、眠気検知システム
実装のためラズパイに取り付ける部品の一覧は次のようになります。
・超音波距離センサー
・カメラモジュール
・GPSモジュール
・モバイルバッテリー
・SIM
まずは、犯人に自動車が盗まれた前提たときの全体の流れ図を示します。
今回は、スマホとラズパイでデータをやり取りする際のサーバとして、GoogleのサービスであるFirebaseを使用しました。まず、超音波距離センサーで人を感知すると、顔認証を開始します。本人でないことを確認すると、Firebaseに通知が行き、位置情報と犯人の顔写真がFirebase上に格納されていきます。通知を受け取ったFirebaseはアプリ側に盗まれたことを通知し、アプリを起動すると位置情報を取得して経路情報・犯人の顔をアプリ上で表示します。なお、カメラの向きが変わったりして顔をうまく認識できなくても、本人が確認されなければ、盗まれたと判断して通知が行きます。
ここから3つのシステムを順に解説します。
2-1.運転者の顔を認識して、オーナーであるかを確認するシステム
フローチャートは以下のようになります。
超音波距離センサーで50cm以内にものがあるか、という判断基準により、運転席に人がいるかを確認します。人がいると判断されると顔認証システムが作動します。本人確認には「Local Binary Pattern」というものを用いて実装しました。 顔認証システムは1分間起動し、この間に1度でもオーナーであると判断されれば、システムは中断されます。もし、1分間オーナーであると確認されなければ、GPSによる位置情報と、顔写真を取得します。なお、なんらかの理由で顔が認識できなくても、1分間オーナーの確認が取れなければ通知がいくようになっています。
通知は次のような画面で送られます。
経路を取得した画面、犯人の顔の確認方法は次の章で説明します。
2-2.GPSから自動車の位置情報を取得して、スマホで追跡できるシステム
まずは、こちらの動画をご覧ください。(※動画は16倍速です。)
左側が自動車に乗っている人のスマホから取ったGPS情報、右側が開発したアプリケーションの挙動です。
動画のように、しっかりと犯人の経路情報の追跡が可能であることが分かるかと思います。GPSは3秒に1度、ラズパイが取得しています。このアプリでは、動画画面右下に表示されている4つの機能を実装しました。
・犯人画像の表示
タッチすると、カメラから取得した犯人の顔画像をアプリ上で表示します。次のような画像が得られます。
(※安全のため、自宅に駐車してエンジンを切って撮影しています。)
・経路全体の表示
タッチすると、取得した経路情報の全体を表示することができます。上の動画内の0:02 ~ 0:07のように、経路全体を見ることができます。
・現在位置を表示
タッチすると、オーナーである自分が今いる位置を表示してくれます。
・自動車位置を表示
タッチすると、自動車の経路情報で最新の位置座標を現在位置として、Mapの中央座標に自動車のいる場所を表示するようにします。上の動画内の0:27 ~ を見ていただくと分かりやすいかと思います。自動車の位置情報が更新されるたびに、自動車の位置をマップの真ん中に自動的に配置するようにしました。
2-3.オーナーが安心して運転できるための、眠気検知システム
私たちは、上記2つのメイン機能の他にオプションとして、PERCLOSと呼ばれる指標を使った眠気検知システムを開発しました。PERCLOSとは単位時間における閉眼時間(まぶたが80%以上閉じている状態の時間)の割合のことを意味し、眠気や注意力の指標としてよく用いられています。私たちは、このPERCLOSを求めるためのシステムをOpenCVを用いて開発しました。なお、PERCLOSから分かる眠気具合(注意力低下度合い)の基準は文献[1]を参考にしました。
システムのフローチャートを以下に記載します。
20fpsで顔画像を取得し、画像1枚ごとにOpenCVを用いてまぶたの開き具合を求めます。そして、保存しておいた直近1分間のまぶたの開き具合情報を使ってフレーム処理毎にPERCLOS値を計算し、基準値を超えている場合はオーナーに通知するようにしました。
まぶたなどの顔のパーツは次の画像のように検出されています。
また、通知は次のようになります。
3.まとめと今後の課題
私たちは自動車盗難の対策として、GPSによる経路取得機能と顔認証システムを開発しました。また、オプションとして眠気検知システムも開発を行いました。今後の課題として主に2つ挙げられます。まず1つ目は、顔認証システムです。こちらは逆光や暗闇の中での顔認識が難しいという欠点があります。犯人の顔を確実に取得するためには、顔認識の精度を上げる必要があります。2つ目は眠気検知システムです。眠気検知システムにはPERCLOSを用いましたが、眠気やまぶたの動きには個人差があるため、このシステムで全ての人に対応した眠気を検知することは難しいと考えられます。あくまで補助的な機能として開発しました。今後の改善が必要です。
今回は自動車の盗難のみにフォーカスしましたが、GPSによる追跡システムは自転車やバイクなどの盗難対策にも応用できるかと思います。また、子どもや高齢者といった家族の見守りシステムにも活用できるのではないでしょうか。
参考文献
[1]Abe T, Nonomura T, Komada Y, Asaoka S, Sasai T, Ueno A, Inoue Y. Detecting deteriorated vigilance using percentage of eyelid closure time during behavioral maintenance of wakefulness tests. Int J Psychophysiol. 2011 Dec;82(3):269-74.