0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Raspberry Pi3で人だけを検出する監視カメラをつくる

Posted at

監視カメラで人を検出する方法は画像処理による動体検知等様々あるが、
ディープラーニングを用いてみようと思い立った。
そのときのいくつかの、トラブルシューティングについての備忘録である。

####1. 使用するモデルについて
(1)Masked-RCNNを使用してみる

RaspberryPi3では重すぎてうまく動かなかった・・・
RaspberryPiのスワップ領域を広げたり、様々試みたがダメだった。

(2) MobileNet SSD v2を使用してみる

こちらのサイトを参照
ラズパイ上で訓練済みモデルを使って物体検出をしてみた

MobileNetはエッジデバイスでも動かせるように軽量化されているため、RaspberryPiには最適かも。
上記サイトで紹介されているリンクから学習済みモデルをそのままダウンロードして使用してみると、RaspberryPiでもサクサクと動いた。

で、ここでは、このMobileNet SSD v2をベースに機能を拡張していく。

####2. サンプリング間隔と熱暴走
(1)サンプリング間隔

上記のモデルを使用して、以下のようなフローのプログラムを作成。

【カメラ画像取得】
    ↓
【AIによる物体識別】
    ↓
【「人間」と識別されるフレームが存在するか判定】
    ↓
【存在すればLINE通知を送信】

この一連のフローの実行に2~3秒程度かかった。
このフローをそのままループさせて実行。
すると、数分後には処理が停止し、RaspberryPiが固まってしまった。
熱暴走のようである。

vcgencmd measure_temp

上記コマンドで、CPU温度を確認すると、85℃くらいまで跳ね上がっている。
やはり、かなりCPUに負荷がかかっているようだ。

そこで、ループの間にsleep()を挟み、サンプリング間隔を長めにとってみた。
確かにサンプリング間隔が長いほどCPU温度の上昇率は抑えられたが、温度上昇が続くことは変わらなかった。
そして、時間の差こそはあれ、熱暴走することがわかった。

(2)RaspberryPi冷却

Amazonで、冷却ファン付のRaspberryPiケースを1000円程度で購入。
Miuzei 最新Raspberry Pi 3B+ ケース

冷却ファンの威力は素晴らしかった。
上記の処理でsleep()を挟まなくても、CPU温度が47℃前後からほとんど変化しなくなった。
半日実行しつづけても全く問題なく、熱暴走から解放された。

(3)通知をリモートから停止する

人を検知時に無条件にLINE通知を送るようにしたが、留守中の家に家族が帰宅したときにLINE通知が送信され続けるので、通知送信をリモートから止められる仕組みが必要だった。

そこで、無料のSalesforce Developerエディションを活用。
カスタムオブジェクトを作成し、パラメータ名とパラメータ値を項目として作成する。
このカスタムオブジェクトに欲しいパラメータをデータとして登録する。

RaspberryPi側のプログラムでは、作成したカスタムオブジェクトから欲しいパラメータ値をSalesforceの REST API で取得し、値に応じてLINE通知をするかしないかを選択できるようにした。

これで、リモートからSalesforceのサイトにアクセスし、カスタムオブジェクトのレコードのパラメータ値を変更することで、LINE通知する/しないを切り替えられるようになった。
同じ仕組みで、他にもきめ細かい制御をリモートから行うことができるはず。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?