見たものを識別して記録する？node-red1号

# 通行量調査を自動で行い記録に残してみたい
今回、`Node-RED`を使用して通行する人や自転車、車を識別するプロトタイプを作成してみたいと考えました。
店舗を新規出店する際には物件地の前を人や自転車や車がどれだけ通過するのか調査を行いデータを取っていました。しかし、調査には時間や労力を消費していたため、少しでも楽に行える様に無人で判定して記録に残せるようなツールができたら良いなと思い作成しました。
今回は試作品として静止画で識別し記録に残すようなものを作りました。

# まずは完成品
<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/%E8%A8%98%E9%8C%B2?src=hash&amp;ref_src=twsrc%5Etfw">#記録</a> <a href="https://twitter.com/hashtag/%E8%87%AA%E5%8B%95?src=hash&amp;ref_src=twsrc%5Etfw">#自動</a> <a href="https://twitter.com/hashtag/Googlespread?src=hash&amp;ref_src=twsrc%5Etfw">#Googlespread</a> <a href="https://twitter.com/hashtag/%E5%88%A4%E5%AE%9A?src=hash&amp;ref_src=twsrc%5Etfw">#判定</a> <a href="https://twitter.com/hashtag/%E5%88%A4%E6%96%AD?src=hash&amp;ref_src=twsrc%5Etfw">#判断</a> <a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a> <a href="https://twitter.com/hashtag/%E3%81%AE%E3%83%BC%E3%81%93%E3%83%BC%E3%81%A9?src=hash&amp;ref_src=twsrc%5Etfw">#のーこーど</a> <br>node-redを使って自動判定したものを記録してみました！ <a href="https://t.co/cDC0lpuhnj">pic.twitter.com/cDC0lpuhnj</a></p>&mdash; 雑草パンダ (@m0526579) <a href="https://twitter.com/m0526579/status/1750170682103677428?ref_src=twsrc%5Etfw">January 24, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


# 使用ツール
・`Teachable Machine`
・`Node-RED`
・`Google spread sheet`

# Teachable Machineに学ばせる
### 画像を認識して判断できるのか?
今回、人・自転車・車を識別するため、`TeachableMachine`を使用しました。
`Teachable Machine`に関する詳しい記事はこちら↓

https://qiita.com/misa_m/items/d8a20d153c8ee7daf0c1/

この様にして判断の元となる写真を`Teachable Machine`に学習させます。↓
![スクリーンショット (31).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656665/30fe9005-16d0-a0ee-b105-55d02dd5a8bd.png)

# Node-REDのフローの設定
次に"Node-RED"の設定。↓
![スクリーンショット (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656665/8ffd05df-4c7f-0e99-37a2-108d4fcfd9d6.png)



### ちゃんと識別できるのか?
おっ！ちゃんと識別してる！
![スクリーンショット (32).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656665/2823cc2d-d534-7a9a-8ef4-d602bee323fa.png)
しっかり識別出来てますね。
静止画であれば人や車、自転車をしっかり判定できそう。

# 記録に残したい。
次に`Google spread sheet`を活用して識別結果を記録していきたいと考えました。
記録を残すために`Node‐RED`の一部フローを変更しなければいけません。
`G sheet`（"Google spread sheet"）のノードを使うにあたって詳しい記事はこちら↓

https://blog.enebular.com/nodes/letsuse-google-spreadsheet-node/

追加したnode一覧
`G sheet`：`node-red-contrib-google-sheets`
`payload-cron` : `node-red-contrib-payload-cron`

以下の通に修正↓
![スクリーンショット (34).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656665/c9a9c601-8147-9fa3-7287-6743e9a774b7.png)
う～ん、繋げたは良いけど何か上手くいかない。
判定はしているけど、`Google spread sheet`に記録されていない。


# 試行錯誤
なかなか`Google spread sheet`へ記録してくれない。
"G sheet"(`Node-RED-contrib-Google-sheet`)の`node`を確認したら、"API"が有効になっていないようでした。そこで再度アカウントを確認し、"API"を有効にして再チャレンジが・・・
実はここまで行きつくまでに`Google spread sheet`のAPIキーの取得、また会社アカウントではセキュリティの関係でGoogle spread sheetへの共有と記録されず、最終的に別途アカウントを作成してなんとかここまできました。
![スクリーンショット (37).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656665/e1ef1afa-a631-ae2a-5338-f1fae6e3f7cb.png)

半角での打ち込みができていないため`spread sheet`へ記録が残せていませんでした。

![スクリーンショット (38).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656665/cbe45451-d370-3510-2315-29c58ecb9afa.png)
また、`Google spread sheet`のシート名を全角日本語で「シート1」と表示されていたものを半角英語で「sheet1」にしました。この違いだけで記録に残せないなんて。



# 遂に修正を重ね記録できるようになりました。
![スクリーンショット (35).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656665/d4bbd6ba-9dfc-8a76-a07c-d43c25851b06.png)
spread sheetへの記録はこちら↓
![スクリーンショット (36).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656665/cff2eb19-0d61-e541-6eab-88a695d0677d.png)
##### `Google spread sheet`内の集計はsheet内で加算（=COUNTIF(A:A,"車"))の計算式を入れてクリアしました。
# 理想の形
今回"Node-RED"を使用して通行量を調査するプロトタイプを作成してみましたが、静止してる状態での判定のため制度は高かった。実際には動く物を識別していくために、かなりの車種や自転車や人の基データが必要になるし、カメラの前を通り過ぎるスピードによっては認識できない可能性もあるため実用化にか課題も多い気がする。今後は以上の課題を踏まえた上で動画等で撮影して通行量を記録できるものが理想。
今回作成したプロトタイプについてTeachable Machineを使用して、学ばせた写真は各1種類でしたが、別の写真をNode-REDで判定させてもしっかり識別していたので更に情報を学ばせることで制度の高いものが出来ると感じました。
次はPCカメラではなく外付のカメラにて`Node-RED`と繋げることができれば飛躍的に実用化へ近づくはず。