[3日目] 学校の食堂をIT化させる話　混雑度カメラの機器構成を考える

こんにちは、なりかくんと申します。
この記事はなりかくん Advent Calender 2023の3日目の記事です。

この話は、1日目から始めた学校の食堂をIT化させる話の続きとなります。今回は、2日目で混雑度カメラで何のモデルを使うのかを決めたので、カメラの機器構成を実際に考えてみようと思います。

# 今回考えた構成は3パターン
今回、混雑状況をサーバーにアップロードするためのシステム構成を3パターン考えました。
以下が考えた3パターンです。

- USBカメラの画像をRaspberry Pi自体で処理する方法
- USBカメラの画像をクラウド上で処理する方法
- ネットワークカメラを用いてクラウド上で処理する方法

この3つのシステムについて今回は、一つずつ詳しく考察していきます。
なお、最初にまとめを言っておきますが、一番最初の「USBカメラの画像をRaspberry Pi自体で処理する方法」を最終的に採用します。

# USBカメラの画像をRaspberry Pi自体で処理する方法
まず最初に考えた構成は、USBカメラをRasberry Piに接続して、Raspberry Pi内で画像をYOLOv8で処理して人数データや画像データをクラウド上のアプリケーションサーバーに送信する方法です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/502330fa-6608-fa3b-7a5b-469bfcfbc145.png)

## メリット
- クラウド上に負担がかからない
- Raspberry Pi上で処理するのでRaspberry Piの台数を増やせばカメラも増設が楽
- 画像データなどをセグメンテーション化して送信することが出来る（プライバシー問題）

## デメリット
- Raspberry Piのスペックが求められる
- Raspberry Piのケーブル等が邪魔になる

この方法が一番シンプルなのかなと思います。

# USBカメラの画像をクラウド上で処理する方法
二つ目に考えた構成は、USBカメラをRaspberry Piに接続して、Raspberry Piからクラウドのアプリケーションサーバーに画像を送信して、アプリケーションサーバー上でYOLOv8で処理する方法です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/c87a0a08-b056-f50c-4daf-6974ab9af28a.png)

## メリット
- Raspberry Piにあまり負担がかからない
- 検出プログラムなどをクラウド上で一括管理が出来る

## デメリット
- クラウド上のサーバーにスペックが求められる
- クラウド上で処理するのでカメラの台数を増やす場合はクラウドの強化が必要
- 画像データをそのまま送信するのでプライバシー問題が起きる場合がある
- Raspberry Piのケーブル等が邪魔になる

正直デメリットが多すぎるので、あまり現実的では無さそうです。

# ネットワークカメラを用いてクラウド上で処理する方法
三つ目に考えた構成は、クラウドからネットワークカメラにアクセスして、カメラ画像を取得しクラウド上でYOLOv8で処理する方法です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/49970d38-b3a3-efbf-4ce2-280086d1ff00.png)

## メリット
- 検出プログラムなどをクラウド上で一括管理が出来る
- Raspberry PiやUSBカメラを使わないのでコンパクトに設置することが出来る

## デメリット
- クラウド上のサーバーにスペックが求められる
- クラウド上で処理するのでカメラの台数を増やす場合はクラウドの強化が必要
- 画像データをそのまま送信するのでプライバシー問題が起きる場合がある
- ネットワークカメラという点からネットワークのセキュリティをしっかりする必要がある

この方法だと、Raspberry Piを使わずに市販のネットワークカメラを使えるのでクラウドを除くと安価で製作できそうです。ただし、ネットワークの整備をしっかりする必要がありそうです。

# 結論
まあここまで書いて、良くない結論なのですが私はクラウド上で処理するのはあまり好きではないため今回は、Raspberry Piで処理する方法でUSBカメラの画像をRaspberry Pi自体で処理する方法を取ります。

# 混雑度を確認できるページ
混雑度は、Webページからリアルタイムの映像と人数・混雑度（パーセンテージ）を表示するようにします。

デザインとしては、このようなカードスタイルで表示しようと考えています。（実際に作ったやつは画像とかが使えない情報が多すぎるのでイメージで許してください）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/46e00922-58b0-495d-344b-08d10e6c26a6.png)

# カメラ台数について
今回、このような食堂で全体の混雑度が分かるようにするのが理想です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/bc19486a-8b8e-e14e-5264-5a18a57d9eff.png)

待ち列をしっかりと見えるようにしたいので、まず一台目はここに設置したいと考えています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/72c12154-28eb-c4b4-b5d1-59f96e5cf11d.png)

ですが、これでは席全体を見ることが出来ないため席側にももう一台設置したいと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/549951/4c45fbc4-4194-cde2-dfce-f5f53ff718dd.png)

これで全体を覆えるのではないかと思います。計2台のカメラが必要ですね。

# 機器について
今回、混雑度カメラを開発するにあたって以下の機器を用意します。

| 商品名 | 値段 |
|:-|:-:|
|  [Raspberry Pi 4 Model B / 4GB](https://www.switch-science.com/products/5680) |  ¥10,560 |
|  [バッファロー WEBカメラ 1080P 30fps 200万画素 広角約120°](https://amzn.asia/d/7I8saCR) | ¥2,980  |
| [Samsung microSDカード 64GB](https://amzn.asia/d/eiI7Mv2)  |  ¥980 |
|  [GeeekPi Raspberry Pi 4アーマーケース](https://amzn.asia/d/8mLJ8fs) |  ¥2,199 | 
| [Raspberry Pi 4 5V 3A ACアダプター](https://amzn.asia/d/iDbtwmT)  | ¥1,179  | 
| [サンワサプライ 電源延長コード 3m](https://amzn.asia/d/0kEAOST)  |  ¥836 | 

以上の機器がカメラ1個当たりで、合計18,734円ですね。カメラ1台でこれだけするっていうのはやっぱり自作するのはかなりコストがかかります。
今回は、カメラが2台なので合計の2倍で混雑度カメラで計37,468円かかりました。

ネットで混雑度カメラの相場を調べてみると、大体初期費用で30万～50万円程度、月額のシステム使用料がカメラ1台当たり15万円程度なので、それに比べると非常に安く見えますね。（自分で管理する必要があるというのを考えるとどうなのかという声もあるかと思いますが、考えないことにします。）

今回採用したカメラは、120度の広角カメラを利用しました。実際に使ってみるとわかるのですが、大きめの教室全体を撮影できるぐらいの広い範囲を撮影できます。おすすめです。

# 最後に
今回は、混雑度カメラのカメラの機器構成について考えました。
最後までお読みいただきありがとうございました。