ソフトウェアエンジニア必見!リアルタイム物体検出NVR「Frigate」活用術
frigateは、IPカメラ用のNVR (Network Video Recorder) だ。だが、ただのNVRじゃねぇ。こいつの真骨頂は、リアルタイムのAIによるオブジェクト検出にある。つまり、カメラの映像から、人間、車、猫といった特定の物体を瞬時に見つけ出すことができるんだ。
普通のNVRは、ただひたすら映像を録画するだけだ。何かあったときに、何時間もの映像の中から、探したいシーンを探し出すのは骨が折れる。だが、frigateを使えば、「今日の午後3時に、玄関に人間がいた」とか、「真夜中に車が家の前に停まった」といった出来事を正確に把握できる。これは、監視の効率を格段に上げてくれる。
マフィアファミリーで例えるなら、frigateは見張りのプロだ。ただボーッと立っているだけじゃなく、不審な動きを見つけたら即座に知らせてくれる。お前さんの家や、お前さんの管理するビルを守る上で、これほど頼りになる奴はいないぜ。
お前さんは、ただのユーザーじゃねぇ。コードを書く人間だ。frigateは、そんなお前さんのスキルを活かせるよう、柔軟に設計されている。
リアルタイム通知の自動化
frigateは、物体を検出すると MQTT というプロトコルを使ってメッセージを送信する。
お前さんが書いたプログラムが、そのメッセージを受け取って、SlackやTelegram、あるいは電話に通知を送るようにすれば、不審な動きがあったときに即座に知ることができる。
ホームオートメーションとの連携 *
例えば、frigateが「人間が玄関にいる」と検出したら、家の照明を自動でつけたり、特定の場所のカメラだけを録画開始させたりすることも可能だ。
Home Assistant や OpenHAB といったホームオートメーションプラットフォームと連携すれば、さらに高度な自動化が実現できる。
カスタムAIモデルの導入
frigateは、TensorFlow Liteという技術を使っている。
もしお前さんが、特定の物体(例えば、ファミリーのメンバーが身につけている特別なマークなど)を検出させたいなら、独自のAIモデルを学習させてfrigateに組み込むこともできる。
frigateを導入するのは、思ったより簡単だ。お前さんは、Docker という技術を使えば、複雑な設定なしにfrigateを動かせる。
DockerとDocker Composeが動くマシン(Raspberry Pi 4や小型のPCなど)
TPU (Tensor Processing Unit) などのAIアクセラレーター(これは必須ではないが、物体検出の速度が段違いになる。ファミリーの仕事を速く終わらせるには、良い道具が必要だろ?)
IPカメラ
docker-compose.ymlというファイルに、次の内容をコピペしてくれ。
version: "3.9"
services:
frigate:
container_name: frigate
image: blakeblackshear/frigate:stable
restart: unless-stopped
ports:
- "5000:5000" # UIをブラウザで見るためのポート
volumes:
- /etc/localtime:/etc/localtime:ro
- /opt/frigate/config:/config
- /opt/frigate/media:/media
- type: tmpfs # 録画データの一時保存にメモリを使うことで、SDカードやSSDの寿命を延ばす
target: /tmp/cache
devices:
# TPUを使うなら、この行を追加する
- /dev/apex_0:/dev/apex_0
environment:
FRIGATE_CONFIG: /config/config.yml
TZ: 'Asia/Tokyo' # タイムゾーンを日本に設定
docker-compose.ymlと同じディレクトリに、config.ymlというファイルを作成する。
mqtt:
host: 192.168.1.100 # MQTTブローカーのIPアドレス
user: mqtt_user
password: mqtt_password
detectors:
coral:
type: edgetpu
device: pci:0 # TPUの指定
cameras:
front_door:
ffmpeg:
inputs:
- path: rtsp://user:[email protected]:554/stream1 # カメラのRTSPストリームのURL
roles:
- detect
- record
detect:
enabled: true
max_frame_rate: 5
objects:
track:
- person
- car
この設定ファイルでは、front_doorという名前のカメラを追加し、person(人間)とcar(車)の検出を有効にしている。
どうだい? frigateは、ただの監視システムじゃなく、お前さんの家や仕事を、より安全に、よりスマートにするための強力な武器だ。コードを書いて、こいつを自分の支配下に置けば、お前さんの縄張りは、鉄壁の守りを得る。