新人研修OJT2020_Vieurekaを用いた混雑状況の配信

>100 Views

September 14, 20

スライド概要

2020/09/14公開
Tech Blog「OJT2020:Vieureka を用いた混雑状況の配信」内資料
https://techblog.morphoinc.com/entry/2020/09/14/100524

profile-image

モルフォは“画像処理×AI技術”の研究開発型企業として、ソフトウェア事業をグローバルに展開しています。テックブログにて画像処理・AIに関する情報をお届けしています。 ・コーポレートサイト:https://www.morphoinc.com/ ・テックブログ:https://techblog.morphoinc.com/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

新人研修 OJT 2020 Vieureka を用いた混雑状況の配信 植田 大貴 角田 良太郎 山本 太郎 Copyright © 2020 Morpho, Inc. All Rights Reserved.

2.

テーマ Vieureka を用いた混雑状況の Web 配信サービスの実装 • 映像配信により視覚的に混雑状況を伝える – プライバシーに配慮し、個人が特定できない形(シルエット化)で表示 – 定量的な混雑度を併せて表示 – Web 配信により簡便なアクセスを可能に カメラ取得画像 Copyright © 2020 Morpho, Inc. All Rights Reserved. Web 配信画像 1

3.

システム構成 Vieureka Vieureka のカメラ画像取得 人数カウント 検出した 人数を送信 人物領域の抽出 (人がいないとき) 背景画像を送信 抽出した領域の マスク画像を送信 サーバ (AWS) Copyright © 2020 Morpho, Inc. All Rights Reserved. DB を更新 背景画像とマスク画像の合成 混雑度表示 映像配信 2

4.

人数カウント • Morpho Deep Detector を用いた – モルフォの物体検出技術 • 人数 = [人間とカテゴライズされた BBox の数] とした – 一般的な物体検出のアルゴリズム (YOLOv3) を 用いたため人間以外も検出している YOLOv3 による人物検出の例 [1] • サーバへの結果の送信 – 検出人数 – さらに検出人数がゼロのとき、取得画像を背景画像として送信 [1] 元画像は https://pixnio.com より引用 Copyright © 2020 Morpho, Inc. All Rights Reserved. 3

5.

人物領域の抽出 • Vieureka の視点は固定 – 背景が動かないため、動体 (人物) 領域の検出には 背景差分法 (MOG2) を用いた – Instance Segmentation も試したが、 速度・精度面で背景差分法の方が優れていた – 止まっている人でも輪郭は検出できる • 抽出された人物領域のマスク画像を送信 – ノイズの少ない 2 値画像のためランレングス圧縮をかけた Copyright © 2020 Morpho, Inc. All Rights Reserved. 4 MOG2 による人物領域抽出の例

6.

Vieureka への組み込み カメラ画像を取得すると、画像受信ハンドラ関数が実行される – ハンドラ内では、人数カウントと人物領域抽出をそれぞれスレッドを立てて実行 – 画像を受信しても前の処理が終わっていなければ、その画像についての処理をスキップ – 各処理終了時に(非同期的に)結果をサーバに送信 メインスレッド イベントループ ハンドラ関数の実行 スレッド1 人数カウント スレッド2 人物領域抽出 Copyright © 2020 Morpho, Inc. All Rights Reserved. イベントループ ハンドラ関数の実行 人物領域抽出 5 イベントループ ・・・ t→

7.

サーバ側の処理 ― 混雑度の統計 • サーバ (AWS) が受け取るデータ – 検出された人数 – 背景画像 – 抽出された人物領域のマスク画像 • 混雑度に関する統計量の格納にはデータベース SQLite3 を使用 • 検出された人数と受信した日時を DB テーブル “perMinute” に登録 • 同時に DB テーブル “perHour” が更新される – perHour は各時間に1つのレコードを持つ – perHour のカラム:時刻(1 時間単位)・受信回数・合計人数・最大人数・天気 • Open Weather Map から各時間の天気を取得 Copyright © 2020 Morpho, Inc. All Rights Reserved. 6

8.

サーバ側の処理 ― 背景とマスク画像の合成 • 背景画像と人物領域のマスク画像はサーバ側で掛け合わされる – 半透明のシルエット化された人間が映った画像となる × 背景画像 (検出人数がゼロのときの画像) Copyright © 2020 Morpho, Inc. All Rights Reserved. 人物領域のマスク画像 7 出力画像

9.

サーバ・クライアント間の通信 サーバ (AWS) perMinute にレコード追加 perHour テーブルを更新 html/css/js HTTP リクエスト HTTP レスポンス perHour のデータ 取得クエリ perHour の データを送信 背景とマスク画像の合成 配信画像を定期送信 クライアント (Web ブラウザ) Chart.jsによるグラフ描画 Copyright © 2020 Morpho, Inc. All Rights Reserved. 8 配信画像の表示

10.

UI 人物領域をマスクした映像を表示 Copyright © 2020 Morpho, Inc. All Rights Reserved. 9

11.

UI 平均・最大検出人数をグラフ表示 天気(混雑度と相関を持つかも?) Copyright © 2020 Morpho, Inc. All Rights Reserved. 10

12.

おわりに やり残したこと • 人数カウントの高速化 – 現状では人数カウントの処理時間は約 40 秒と非常に遅い – SoftNeuro によってモデルをチューニングすることで大幅に高速化できる見込みだったが 今回はそこまで至らなかった • 日ごとのデータ集計と混雑予測モデルの作成 – 実際の利用場面(店舗など)では混雑度と天気に相関があるのではないかと予想 – そもそも人がほとんどいないためにデータを取れなかったという問題があった Copyright © 2020 Morpho, Inc. All Rights Reserved. 11

13.

おわりに 苦労した点など • テーマ決め – 「Vieureka の利点を活かすこと」「技術的に面白いこと」「期間内に完成すること」など様々な要件を 考慮したテーマを考え出すのに苦労した • デバッグ作業 – Vieureka で中間画像を出力するのが非常に大変であったため、 バグの原因等を特定するのが難しかった • 未経験の分野 – Web 開発の経験がなく、PHP の書き方など手探りで調べながら実装していった Copyright © 2020 Morpho, Inc. All Rights Reserved. 12