以前から自宅で動かしている物体認識ウェブサーバを汎用的な作りにして GitHub に公開しました。
GitHub - mattn/mongoose-tflite: Object Detect API server using TensorFlow Lite
mongoose-tflite Object Detect API server using TensorFlow Lite. Usage -1 ./mongoose-tflite Requiremen...
https://github.com/mattn/mongoose-tflite
TensorFlow は Raspberry Pi で動かす事も出来るけど、CPU 使用率やメモリ使用量がとてつもなく多く、特に Raspberry Pi 3 でもヒーヒー言ってしまいます。実際 TensorFlow と mackerel-agent を使ったお部屋監視システムがそうでした。
Mackerel と Raspberry Pi で作るお部屋監視システム - Qiita
https://qiita.com/mattn/items/e045875ad32b46b018f3
そこでもっと軽い物を作ろうと、以前 TensorFlow から TensorFlow Lite に移植しました。なかなか軽くて良い出来だったので、もしかしてこれはウェブ API にしてしまえば色々な人が使えるんじゃないかと思い、go-tflite を使ってウェブサーバにしてみました。これは結構ご機嫌よく動いていました。
その後、突然 C++ を書きたい病を患ってしまい、Go から C++ に書き直されました。
ひさびさ C++ 書きたい病になったので2晩使って自宅で動いてる Go のとあるシステムを C++ に書き換えてみた。プログラマたるもの素振りは常に必要。
— mattn@有益情報 (@mattn_jp) March 2, 2019
HTTP の標準的な機能を備えた C++ の組み込み用ウェブサーバって選択肢が少なすぎない?
— mattn@有益情報 (@mattn_jp) February 28, 2019
Big Sky :: C++ な WebServer 実装 crow と TensorFlow Lite を使って Object Detection の API サーバを書いた。
自宅で動かしている物体認識サーバは TensorFlow を使って Go で書かれていたのだけど、CPU 負荷が高いので以前 go-tflite で書き換えた。その後 Raspberry Pi Zer...
https://mattn.kaoriya.net/software/lang/c/20190630225105.htm
一応C言語版も書いておくかという事で今回は mongoose というC言語のウェブサーバ上に TensorFlow Lite の物体認識処理を乗せる事にしました。
TensorFlow のルートディレクトリを探す為だけに go コマンドが使われていますが、Go は使ってません。気にしないで下さい。make コマンドでビルド出来ます。実行して curl 等で画像をアップロードすると以下のレスポンスが返ります。
[
{
"label": "Egyptian cat",
"probability": 0.8392156958580017
}
]
※ jq でフォーマットしています。確率 0.2 より下はカットしています。