Skip to content

function-transportation/CongestionDetector

Repository files navigation

CongestionDetector

Fairy Devices社が開発したカメラデバイスTHINKLET CUBE用の写真撮影・人物検出アプリです.
定期的に写真撮影を行い、撮影した写真に写っている人間の数を特定します.
また、検出された人間の数に応じて、混雑度合いをリアルタイム通知します.
ユースケースとしては、イベントやお店における来場者数分析、混雑度チェックを想定しています.

アプリの概念図

開発時

  • Android Studio Meerkat Feature Drop | 2024.3.2

機能

定期撮影

任意の時間間隔で、定期的に写真を撮影します.
撮影した写真は人物検出に用いられますが、検出処理が終わり次第自動で削除されます.
これは、本アプリの目的が来場者数の分析や混雑度合いの把握にあるためです.

人物検出

撮影した写真に、訓練された人物検出AIをかませ、写真内に何人の人がいるか判定します.
写真は、横向きで撮影されます.必ず、充電ポートのある側面が下になる向きでデバイスをセットしてください.
常時給電しながら使うことを想定しており、建物の下部に存在するコンセントや給電装置と接続しやすいよう設定しました.

Important

thinklet cube本体が正しい向きでセットされていることを必ず確認してください

混雑通知

写真内に閾値以上の人間が検出された場合、Slackに混雑アラートを通知します.閾値は、任意の値に設定が可能です.
通知はリアルタイムに行われるため、混雑度合いを即座に把握することができます.
また、1日に1回、任意の時刻で、その日の検出結果を全てまとめたCSVファイルをSlackに送信します.
その日の来場者数の分析や、混雑しやすい時間帯の把握などにお役立てください.

設定

パラメータ設定

本アプリには、以下の3つの重要なパラメータが存在します.

  • 撮影および人物検出処理の時間間隔 (1回の処理後にどの程度待機時間を設けるか)
  • 混雑判定の閾値 (検出人数が何人を超えたら、混雑アラートを通知するか)
  • 日次サマリの送信時間 (1日のどのタイミングでサマリを送信するか)

上記パラメータはすべて、app/src/main/assets直下にあるconfig.jsonで設定が可能です.
デフォルトでは、待機時間10秒、混雑判定の閾値10人、日次サマリは毎日23:59送信、という設定になっています.
お好みの設定に変更してお使いください.

Slack連携設定

本アプリでは、Slackを通じて混雑度合いや来場者数のサマリを通知します.
Slackと本アプリの連携のためには、Slack Appを新たに作成します.作成の手順は以下の通りです.

1. 新しいSlack Appを作成する

Slack Appにアクセスし、Create AppからFrom scratchを選択

2. 必要な権限を与える

OAuth & Permissions > Bot Token Scopesから以下の権限を与えます

  • chat:write
  • files:write
  • channels:read

その他、Slack Appの名前やアイコンなどは任意のものを設定ください

3. Slack Appをインストールする

作成したSlack Appを、Slackのワークスペースにインストールします.

4. AppをSlackチャンネルに追加する

今インストールしたSlack Appを、任意のチャンネルに追加してください.

5. Slackの情報をアプリに設定する

root直下に存在するlocal.propertiesファイルに、以下のように設定します.

slack.bot.token= <作成したアプリのBot Token>
slack.channel.id= <アプリをインストールしたSlackチャンネルのチャンネルID>

設定は以上です.

開発

  • 混雑をSlackに通知する際の文面はSlackNotifer.ktの以下の部分を編集することで変更できます.
val message = "🚨 混雑検知アラート\n" +
                "検出された人数: ${detectionCount}人\n" +
                "閾値: ${threshold}人\n" +
                "時刻: $currentTime"
  • アプリのインストールは、AndroidStudio あるいは,./gradlew installDebug 等で行います.
  • 実行前に,scrcpy を用いて,設定アプリからすべてのPermissionを許可しておいてください.
    または、以下コマンドを打つことで権限を設定することもできます
adb shell pm grant com.example.fd.camera android.permission.CAMERA
adb shell pm grant com.example.fd.camera android.permission.RECORD_AUDIO

KeyConfig

  • テキスト開発者ポータルに記載のKeyConfigを使ったキーコンフィグ設定例です.
  • keyConfigs直下でadb push key_config.json /sdcard/Android/data/ai.fd.thinklet.app.launcher/files/key_config.json && adb reboot で設定可能です
  • このキーコンフィグを設定すると、真ん中のボタンを長押しするだけでアプリを起動することができます

人物検出モデル

人物検出に用いている画像認識AIは、以下のモデルを元に訓練したものです.

本OSSは株式会社Functionが開発いたしました.
弊社では、限りられた場所の人物検出だけでなく、より広域の人流の復元や施策の効果検証などを行える独自技術(デジタルツイン)を開発しています.
カメラを使ったより実用的な人流解析についてご相談がありましたら、お気軽にお問い合わせください.

About

Fairy Devices社が開発したカメラデバイスTHINKLET CUBE用の写真撮影・人物検出アプリ.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages