Tapo C520WSのONVIF AIイベントをFrigateに渡す & Frigateと物体検出精度比較

TP-Link Tapo C520WS と 物体検出

8500円くらいの360度首振りできる防犯カメラ、TP-Link Tapo C520WS を購入してみました。とりあえず各種設定が行えるTapoアプリからRTSPを有効にして、自鯖に立てたFrigateから接続しました。

C520WSは、仕様に “On-Device Machine Learning” と書いてある通り、人物・ペット・車両などの物体検知をカメラ内でリアルタイムに行えます。8500円でよくエッジAIなんて入ってるよな。

これらの物体検出結果は ONVIF と呼ばれる規格で RTSPのように外部から取得することが可能です。

Frigate側から映像をローカルAIで推論して物体検出することも可能ですが、せっかくカメラ内で推論してるのに無駄にもう一回推論することになるので、これを活用したいと思います。

取得できるクラス分類

以下が ONVIF から取得できました。

  • IsPeople=true -> 人物検知
  • IsVehicle=true -> 車検知
  • IsMotion=true -> 単純な動体検知
  • IsLineCross=true -> ライン通過
  • IsPet=true -> ペット検知
  • IsTamper=true -> カメラが塞がれた

これらを Frigate Manual Event API に送りつけて連携します。

Tapo ONVIF と Frigate を接続

実装は GPT-5.6 に全て投げた上に、解説も丸投げです。以下のmarkdownをCodexに読ませると、お手元のFrigateにすぐ構築できると思います。

以下のように、カメラで検出されたイベントがFrigateで取得できることが確認できました。

カメラ内蔵Tapo AI vs Frigate 物体検出

一時的にFrigateの物体検出を有効にして、今回のカメラ内蔵AI(以下Tapo AI)と検出精度を比較してみました。

Frigate側の物体検出モデルは SSDLite MobileNet V2 を用います。

detectors:
  ov:
    type: openvino
    device: GPU

model:
  width: 300
  height: 300
  input_tensor: nhwc
  input_pixel_format: bgr
  path: /openvino-model/ssdlite_mobilenet_v2.xml
  labelmap_path: /openvino-model/coco_91cl_bkgr.txt

objects:
  track:
    - person
    - car
    - bicycle
    - motorcycle
    - cat
    - dog

昼間であれば、Tapo AIもFrigateも検出精度自体に差はありませんでした。24時間程度録画してみましたが、見逃しは無し。(両方とも見逃していた場合は記録できていませんが…)

例えば、自転車が通過すると以下のような感じになります。

Tapo AIでは「人」と「Line Cross」が、Frigateでは「人」と「自転車」が検出できています。
Frigateは詳細にクラス分類できる点で有利ですね。

夜間に関しては、Tapo AIのほうが良さそうです。以下は夜間に自転車が横切ったときの映像ですが、Tapo AIのLine Crossのみ検知できています。

Tapo AIも何が横切ったかは判定できていませんが、何かが横切ったことは検知できています。Frigateは検知もできていない。

加えて、停車している車が常時画角に映っている環境では、車が動いていないにもかからわずFrigateが誤検知することが目立ちました。

Tapo AIの圧勝ですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Index