画像からオブジェクトを検出する(Darknet YOLOv4-tiny model)
はじめに
ラズパイ4とカメラモジュールが転がっていたので何かobject検知系で何か作ろうと思いつく。
その前段で必要前提条件である画像からのオブジェクト検知について使えそうな技術を検証したのが本記事。
全体システムの最終的なゴール
簡易的な交通量監視システムの構築
(趣味の範疇なので精度や速度は無視する。)
本記事の検証項目
静止画像からオブジェクトを検知できて、raspi4bでも動作する軽量な方法を調査・検証
検証実施内容
GPT4-Vision
OpenAI社のVisionモデルでサクッとやろうとしたが、結果的には不適合で検証終了。
メリット
◎APIに画像を載せるだけなので導入が超手軽
⚪︎費用も512x512pixの画像なら約0.002ドル/1リクエスト(0.3円くらい)とお手頃。
デメリット
❌オブジェクトのカウントをしてくれない
CAPTHA対策なのかオブジェクトの数を数えるように指示してもNGの旨が返ってくる。
△JSON形式でレスポンスを固定できない
システムプロンプトで指示はできるが、完全固定ではない模様(95%くらい守ってくれる?)
△安いとはいえリクエストの都度費用がかかるため大量のリクエストに不向き
1時間に1回リクエストで月220円くらいかかる。
TensorFlow LiteのMobileNet+SSDモデル
お手頃順にtensorFlowを検証したが、こちらはそもそもうまく動作しなかったため、不採用。
Colab上で動作検証をしたが、オブジェクト検知部分がおかしく色々調査してみたが、時間がかかりそうであったためスキップ。
・利用したモデル
lite-model_ssd_mobilenet_v1_1_metadata_2.tflite
YOLOv4-tinyモデル
本記事で紹介するモデル。特に問題なく動作したためこちらを採用。
こんなお手頃に動作するなんて驚きですね。
・簡単な説明(by gpt4)
特徴: YOLO(you only look once)は非常に高速であり、多くの一般物体を検出するための学習済みモデルが豊富に用意されています。
使用方法: YOLOの学習済みモデル(例えばYOLOv3-tinyやYOLOv4-tiny)をダウンロードし、YOLOフレームワークを使用して画像から車両を検出します。
メリット
⚪︎ローカルで動作するのでAPI費用が不要
⚪︎実行に要する時間も数秒程度(対象画像の解像度に比例するがHD画質程度であればこのくらい)
デメリット
△導入や閾値調整が必要
・利用した学習済みモデル(各種外部ファイルはここからダウンロード)
・ソースコード(Colab)
概ねあってます。
今流行りでのLLMではないですが、これくらいの精度でるなら交通量調査人の代替もすぐではないでしょうか。
*1:input_shape[1], input_shape[2]