AI・機械学習 コラム

AIで密集度・群衆人数を解析|混雑状況の可視化に役立つ技術 Crowd Counting(クラウド カウント)

世界中で新型コロナウィルスの感染拡大が続くなか、対策として密集回避が重要だと言われています。

そこで、今回はAIを使って密集度合いを検知する技術について紹介します。

Crowd Counting(クラウド カウント)とは

写真に写った群衆(Crowd)の人数や密集度合いを測る技術は「Crowd Counting(クラウド カウント)」と呼ばれています。

クラウドカウントは、群衆に限らず、車や動植物の数を計測するなど様々なことに応用できる技術です。「Visual Counting(画像から数を割り出すこと)」や「Density Estimation(密集度を推定すること)」とも呼ばれています。

密集度予測の難しさ

人間の目で数える際にも人数が多くなるほど難易度が上がりますが、Crowd Counting(クラウド カウント)でも人数が多いほど予測が難しくなります。

これは、学習データを揃えることができないことが原因です。

原理的にはいくらでも密集度合いの高い環境を想定することはできますが、実際の写真には限りがあるので、それに対応する写真を用意することができません。そのため、密集度の高い画像ほど予測精度が低くなります。

本稿で紹介するSpatial Divide-and-Conquer Network(S-DCNet)では、画像を分割して1枚に写る人数を調整することで、この問題に対処しています。おおよそ20人以下になるように分割するのが良いと提案されています。

Spatial Divide-and-Conquer Network(S-DCNet)

S-DCNetは、群衆の画像を入力して、画像に写った人数を推定するネットワークです。

画像をいくつかのスケールで分割して人数を推定した後、各スケールの結果を組み合わせて最終的な人数を推定します。学習する際には、人数を教師データとして与えて学習します。教師データもスケールごとに用意する必要があります。

S-DCNetの構成を詳しく見ていきましょう。

S-DCNetの構成は以下の図のようになっています。この図では、入力画像を64×64ピクセルとして、3つのスケールを使ったネットワーク構成を紹介しています。S-DCNetはVGG16学習済みネットワークを転用します。

図中のConvは、VGG16の先頭から2つのCovolutional層ブロックに対応します。Conv3とConv4、Conv5は、それ以降のConvolutinal層ブロックに対応します。

S-DCNetは、スケールの異なる特徴量(F0, F1, F2)を作成して、人数を推定します。

  1. まず、F0を使って画像全体の人数を推定します。classifierの中でさらにダウンサンプリングするので、C0はF0よりひと回り小さな行列となります。
  2. 次に、F1を使って2×2に分割したときの人数(C1)を推定します。
  3. 最後に、F2を使って4×4に分割したときの人数(C2)を推定します。

参考文献[1]より引用

classifierの構成を、テーブル1に掲載します。特徴量(F0, F1, F2)の平均プーリングを取るので、人数推定値(C0, C1, C2)はひと回り小さな行列となります。

参考文献[1]より引用

3つのスケールで人数(C0, C1, C2)を推定しましたが、どれが適当なスケールでしょうか?

S-DCNetでは、スケールの選択基準も教師データを使って学習する仕組みになっています。下図が、スケールを選択するプロセスです。細かいスケールの推定値(C1、C2)を使って、粗いスケールの推定値(C0)を段階的に補正します。

C0とC1を結合する際は、C0をC1に合わせてアップサンプリングして、W1で重みづけします。これにより、1段階細かいスケールの推定値(C1)を使って、粗いスケールの推定値(C0)を補正します。

この結果に、さらにC2を結合します。先の手順と同様に、アップサンプリングして、W2で重みづけします。

参考文献[1]より引用

この例では3つのスケールを使用しましたが、スケールの数は選ぶことができます。ただし、VGG16ネットワークを使用している関係上、5つのスケールが上限となります。

S-DCNetの実行結果を紹介します。

下図左端のImageが入力画像です。人数の特に多い部分に色がついています。この部分は人数が多くてオリジナルスケールで人数を計測するのが難しい部分です。

真ん中のW1は、1段階細かいスケールの重みを可視化したものです。S-DCNetは、色のついた部分を細かいスケールで測った方が良いと判断したようです。人数の多い部分とおおよそ重なっていますね。

右端のW2は、もう1段階細かいスケールの重みです。さらに密集度の高い部分に色がついています。S-DCNetは、このように数えやすいスケールを選びながら最終的な人数を推定します。

参考文献[1]より引用

各種データセットを使用して、従来の手法と推定精度を比較した結果を掲載します。テーブル6には、ShanghaiTechデータセットを使用した際の比較結果が掲載されています。

Part Aは密集度の高い写真を集めたデータセット、Part Bは密集度の低い疎な写真を集めたデータセットです。

密と疎のどちらの環境でも高い精度で人数を推定できることが報告されています。その他のデータセットでも高い精度で推定できることが報告されています。

参考文献[1]より引用

さいごに

今回はCrowd Counting(クラウド カウント)について紹介しました。

S-DCNetは人以外にも農作物の密度を推定したりなど様々なことに応用できる技術です。人数の多い場合にも使えるので、様々なシーンに活用できると期待しています。

参考文献

[1]Xiong, H., Lu, H., Liu, C., Liu, L., Cao, Z. and Shen, C. (2019). From Open Set to Closed Set: Counting Objects by Spatial Divide-and-Conquer. ,arXiv:1908.06473.

  • この記事を書いた人
  • 最新記事

suzuki

2019年よりインフォマティクス所属。システムエンジニア。 機械学習に挑戦中。機械学習とその関連情報を掲載していきます。 鹿児島県出身。1児の父。 趣味は美術鑑賞と散歩、ベランダ菜園。

-AI・機械学習, コラム
-, ,

© 2020 株式会社インフォマティクス