Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Vieurekaを用いた混雑状況の配信

875 views

Published on

Vieurekaを用いた混雑状況の配信

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Vieurekaを用いた混雑状況の配信

  1. 1. Copyright © 2020 Morpho, Inc. All Rights Reserved. 新人研修 OJT 2020 Vieureka を用いた混雑状況の配信 植田 大貴  角田 良太郎 山本 太郎 
  2. 2. Copyright © 2020 Morpho, Inc. All Rights Reserved. Vieureka を用いた混雑状況の Web 配信サービスの実装 • 映像配信により視覚的に混雑状況を伝える – プライバシーに配慮し、個人が特定できない形(シルエット化)で表示 – 定量的な混雑度を併せて表示 – Web 配信により簡便なアクセスを可能に  テーマ 1 カメラ取得画像 Web 配信画像
  3. 3. Copyright © 2020 Morpho, Inc. All Rights Reserved.  システム構成 2 Vieureka Vieureka のカメラ画像取得 人数カウント 人物領域の抽出 抽出した領域の マスク画像を送信 サーバ (AWS) 混雑度表示 検出した 人数を送信 (人がいないとき) 背景画像を送信 映像配信 背景画像とマスク画像の合成DB を更新
  4. 4. Copyright © 2020 Morpho, Inc. All Rights Reserved.  人数カウント • Morpho Deep Detector を用いた – モルフォの物体検出技術 • 人数 = [人間とカテゴライズされた BBox の数] とした – 一般的な物体検出のアルゴリズム (YOLOv3) を 用いたため人間以外も検出している • サーバへの結果の送信 – 検出人数 – さらに検出人数がゼロのとき、取得画像を背景画像として送信 3 YOLOv3 による人物検出の例 [1] [1] 元画像は https://pixnio.com より引用
  5. 5. Copyright © 2020 Morpho, Inc. All Rights Reserved.  人物領域の抽出 • Vieureka の視点は固定 – 背景が動かないため、動体 (人物) 領域の検出には 背景差分法 (MOG2) を用いた – Instance Segmentation も試したが、 速度・精度面で背景差分法の方が優れていた – 止まっている人でも輪郭は検出できる • 抽出された人物領域のマスク画像を送信 – ノイズの少ない 2 値画像のためランレングス圧縮をかけた 4 MOG2 による人物領域抽出の例
  6. 6. Copyright © 2020 Morpho, Inc. All Rights Reserved.  Vieureka への組み込み 5 カメラ画像を取得すると、画像受信ハンドラ関数が実行される – ハンドラ内では、人数カウントと人物領域抽出をそれぞれスレッドを立てて実行 – 画像を受信しても前の処理が終わっていなければ、その画像についての処理をスキップ – 各処理終了時に(非同期的に)結果をサーバに送信 イベントループ イベントループ ハンドラ関数の実行 イベントループハンドラ関数の実行 メインスレッド スレッド1 スレッド2 人物領域抽出 人数カウント ・・・ t →人物領域抽出
  7. 7. Copyright © 2020 Morpho, Inc. All Rights Reserved.  サーバ側の処理 ― 混雑度の統計 • サーバ (AWS) が受け取るデータ – 検出された人数 – 背景画像 – 抽出された人物領域のマスク画像 • 混雑度に関する統計量の格納にはデータベース SQLite3 を使用 • 検出された人数と受信した日時を DB テーブル “perMinute” に登録 • 同時に DB テーブル “perHour” が更新される – perHour は各時間に1つのレコードを持つ – perHour のカラム:時刻(1 時間単位)・受信回数・合計人数・最大人数・天気 • Open Weather Map から各時間の天気を取得 6
  8. 8. Copyright © 2020 Morpho, Inc. All Rights Reserved.  サーバ側の処理 ― 背景とマスク画像の合成 • 背景画像と人物領域のマスク画像はサーバ側で掛け合わされる – 半透明のシルエット化された人間が映った画像となる 7 × 背景画像 (検出人数がゼロのときの画像) 人物領域のマスク画像 出力画像
  9. 9. Copyright © 2020 Morpho, Inc. All Rights Reserved.  サーバ・クライアント間の通信 8 HTTP リクエスト HTTP レスポンス サーバ (AWS) 背景とマスク画像の合成 perMinute にレコード追加 perHour テーブルを更新 クライアント (Web ブラウザ) perHour のデータ 取得クエリ Chart.jsによるグラフ描画 配信画像の表示 html/css/js 配信画像を定期送信perHour の データを送信
  10. 10. Copyright © 2020 Morpho, Inc. All Rights Reserved.  UI 9 人物領域をマスクした映像を表示
  11. 11. Copyright © 2020 Morpho, Inc. All Rights Reserved.  UI 10 平均・最大検出人数をグラフ表示 天気(混雑度と相関を持つかも?)
  12. 12. Copyright © 2020 Morpho, Inc. All Rights Reserved.  おわりに やり残したこと • 人数カウントの高速化 – 現状では人数カウントの処理時間は約 40 秒と非常に遅い – SoftNeuro によってモデルをチューニングすることで大幅に高速化できる見込みだったが 今回はそこまで至らなかった • 日ごとのデータ集計と混雑予測モデルの作成 – 実際の利用場面(店舗など)では混雑度と天気に相関があるのではないかと予想 – そもそも人がほとんどいないためにデータを取れなかったという問題があった 11
  13. 13. Copyright © 2020 Morpho, Inc. All Rights Reserved.  おわりに 苦労した点など • テーマ決め – 「Vieureka の利点を活かすこと」「技術的に面白いこと」「期間内に完成すること」など様々な要件を 考慮したテーマを考え出すのに苦労した • デバッグ作業 – Vieureka で中間画像を出力するのが非常に大変であったため、 バグの原因等を特定するのが難しかった • 未経験の分野 – Web 開発の経験がなく、PHP の書き方など手探りで調べながら実装していった 12

×