【物体検知】来客を分析して、Teams通知(環境構築/実装編)

2021 年 11 月 5 日 by uma

毎朝、弊社にはヤクルトさんが来られて、ヤクルトを売りに来てくれます。
購入頻度の高い部署は奥側にいるため、気が付いた人が、毎回声掛けしに行っています。

毎回面倒なので、ITっぽく解決してみよう、と思い立ちました。
今回は、写真撮影し、その結果が”ヤクルトさん”なら、Teamsに「ヤクルトさん来られました!」を
通知するシステムを構築してみます。
※ 撮影した写真がヤクルトさんである、という判定は”yolo”で行います

yolo : https://www.renom.jp/ja/notebooks/tutorial/image_processing/yolo/notebook.html

以下、簡単ですが今回作成する「ヤクルトさん通知システム」のシステム構成概要です。

環境構築・実装

まずは、ラズパイをセットアップします。詳細は記事が長くなるため割愛。
その後、”motion”(*)をインストールします。設定で検知した際の処理として、curlを設定できます。
この設定に、サーバー側PGを指定します(撮影した写真を送信し、物体検知モデルを動かすPGのURLを指定)

Motion : https://motion-project.github.io/index.html

次にMotionで動体検知したときの設定を行います
以下のファイルに記述すると、動体検知のタイミングで設定したURLに画像つきでHTTPリクエストするようになります。

/etc/motion/motion.conf

on_picture_save curl -X POST -H -F "imageFile=@%f" http://hogehoge

yoloマシン

今回は、yoloの中でも最新の「yolov5」を使用して開発してみます。

YOLOv5は、YOLOv3のPytorchバージョンを開発していたultralyticsが開発した、

最新の物体検出モデルです。(2020/06公開)

詳細はyolov5

https://medium.com/axinc/yolov5-%E7%89%A9%E4%BD%93%E6%A4%9C%E5%87%BA%E3%81%AE%E6%9C%80%E6%96%B0%E3%83%A2%E3%83%87%E3%83%AB-5b7316d1e54d

実際に手持ちの写真を分析できる実行サンプルもあるみたいです。
yolov5とはなんぞ?という方、ぜひ手持ちの適当な写真をyolov5に食わせて分析させてみてください。

実際に実行できるサンプルはこちら: https://ultralytics.com/yolov5

実装編

■ yolov5マシン#flask.写真保存処理

ラズパイから送信された写真を後から見ることができるよう、サーバーに保存する処理を記述します。

詳細はこちらなどを参考に実装してみてください : https://auth0.com/blog/jp-developing-restful-apis-with-python-and-flask/


■ yolov5マシン# flask.yolov5分析プログラム起動処理

“写真保存処理”を行った後、その画像を使用して、物体検出モデルであるYolov5を用いた解析処理を記述します。
今回は、Flaskで実装したAPIがリクエストされたらその処理中にサブプロセスとして、yolov5解析処理を動かすよう実装しました。

詳細はこちら : https://docs.python.org/ja/3/library/subprocess.html


■ yolov5マシン#yolov5解析処理&Teams通知処理

最後に、実際に画像を引数にして、yolov5物体検知・分析処理(*)を実行します。

(*) : すでに学習済みのモデルがあるので、今回はこちらを使用して実行してみます。

実行結果

ラズパイで撮影した写真

上記写真をyolov5で分析した結果

私は、88%の確率で人間のようです。

Teamsへの通知内容は、「現時点」では以下の通りです。

※ 通知内容は、上記画像のものでなく、別の分析結果の通知内容

まとめ

いったん、ラズパイで写真撮影 ~ yolov5物体検知、Teams通知の、全体的な流れは
完成しました。
次回は、撮影したヤクルトさんを学習させ、「yakult」モデルを構築し、

実際に判定してみた記事を投稿します。

ではまた。

タグ: , , ,

TrackBack