Home - myantyuWorld/ap_cat_decision GitHub Wiki
Welcome to the ap_cat_decision wiki!
使用技術
raspberrypi + motion + shell
flask + subprocess run
yolov5 + teams通知
実装タスク
-
[1]ラズパイ環境構築
・ 環境構築済み、社内に持っていき、wifiにつながせてもらえば完了 -
【ラズパイ】動体検出プログラム作成
・ 動体検知が、写真撮影、YOLO側の分析開始トリガー用APIを叩くタイミング -
【ラズパイ】動体検知して、写真をローカルにため込むように設定するとこまでいけば設定完了
-
【ラズパイ】検出したら、写真撮影し、API叩く(YOLOマシン)
・ ラズパイで動体検知、写真をLINEに送信する
・ 写真撮影したら、ローカルの特定フォルダに日付フォルダを作成し保存する(← モデル構築用の写真として使用する)
か、ラズパイ側で保存するのではなくて、YOLO側で保存するほうがよいか(ディスク容量的にも) ・ APIのパラメータは以下を想定
{
photo : "base64化した写真"
}
- [5]写真使って、分析かける(その際の過程などは記録化[google colabにて]
本記事を参考に、モデル構築してもらう
↑ はだめ
社内でやります
https://www.alpha.co.jp/blog/202108_02
https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data - [6]YOLOマシン環境構築
- [7]APIキックしたら、YOLO分析し、Teamsに通知するPGを開発(yoloのdetect.py)をちょいといじればできそう
flaskで、写真受け取り、保存し、"python detect.py --source {file path}"を叩くAPIを作成し、
detect.pyの中をちょっといじって、Teamsに通知するように修正したらよさそう
■ detect.py
純正だと、特定フォルダの特定ファイルパスを引数に当該PGを呼び出すと、写真に矩形を描画して、新しい画像として保存する
そこの処理はいらないので、なにか物体を検知して、それが"yakulto"ラベルだったら、Teams通知するように改修すればよさそう
↓
L133付近
========================================================
# Print results
for c in det[:, -1].unique():
n = (det[:, -1] == c).sum() # detections per class ★ n == "yakulto"だったら、Teams通知するように改修する
s += f"{n} {names[int(c)]}{'s' * (n > 1)}, " # add to string
========================================================
- [8]TBD
工数
No.5については、収集した写真を使って、モデルを構築する作業、ラベリングする工数にする
-※ ラベリングについてはこちら
精度によっては、追加の画像を使用して、継続的にモデル構築を進めていく
分析時のパラメータはに記録し、記事にする際に欠けるようにする
No. | 工数 |
---|---|
1 | 1.25 |
2 | 8.125 |
3 | 4.375 |
4 | 3.125 |
5 | 3.125 |
6 | 3.125 |
7 | 8.125 |
合計 | 31.25 |
スケジュール
- 9/3w
ラズパイ本社玄関に配置、ヤクルトさんの画像収集開始(撮影した写真をラズパイにどんどん保存できるようにしておく) - 9/4w
YOLOマシン製造完了(ラズパイからAPIキックされて、分析し、Teamsに通知まで) - 9/5w
【テスト】実際に分析させて、評価 - 10/1w
運用開始(以降は継続的にモデルを再構築していく)