---
title: 新人研修OJT2020_Vieurekaを用いた混雑状況の配信
tags: 
author: [モルフォ](https://convert.docswell.com/user/Morpho)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GEWDW1R8J2.jpg?width=480
description: 2020/09/14公開 Tech Blog「OJT2020：Vieureka を用いた混雑状況の配信」内資料 https://techblog.morphoinc.com/entry/2020/09/14/100524
published: September 14, 20
canonical: https://convert.docswell.com/s/Morpho/ZG1L9Q-20200914
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/GEWDW1R8J2.jpg)

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


# Page. 2

![Page Image](https://bcdn.docswell.com/page/47ZG5PR9E3.jpg)

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


# Page. 3

![Page Image](https://bcdn.docswell.com/page/YJ6Y9MRD7V.jpg)

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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/GJ5GNZ88J4.jpg)

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


# Page. 5

![Page Image](https://bcdn.docswell.com/page/LE3R298G75.jpg)

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


# Page. 6

![Page Image](https://bcdn.docswell.com/page/8EDYZGMNEG.jpg)

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


# Page. 7

![Page Image](https://bcdn.docswell.com/page/V7P6D3RNJ8.jpg)

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


# Page. 8

![Page Image](https://bcdn.docswell.com/page/2JV314RYEQ.jpg)

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


# Page. 9

![Page Image](https://bcdn.docswell.com/page/5EG321MW7L.jpg)

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


# Page. 10

![Page Image](https://bcdn.docswell.com/page/4JQ5PDRQ7P.jpg)

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


# Page. 11

![Page Image](https://bcdn.docswell.com/page/K749YZ8YE1.jpg)

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


# Page. 12

![Page Image](https://bcdn.docswell.com/page/LJ1K6R2N7G.jpg)

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


# Page. 13

![Page Image](https://bcdn.docswell.com/page/GJWDW12M72.jpg)

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


