【物体検知】来客を分析して、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」モデルを構築し、
実際に判定してみた記事を投稿します。
ではまた。
タグ: CentOS, Python, Pythonライブラリ, 機械学習