ホーム › 記事一覧 › Frigateで防犯カメラをローカル録画・AI検知する:ミニPCのIntel iGPUを使うCoralなし構成

Frigate

Frigateで防犯カメラをローカル録画・AI検知する:ミニPCのIntel iGPUを使うCoralなし構成

公開 2026-11-05読了 4 分

Photo: Atypeek Dgn / Pexels

この記事でわかること
Coral を買わずに、N100 などミニPCの Intel iGPU だけで Frigate を動かす構成。OpenVINO 検知と VAAPI デコードの設定、Docker Compose、カメラの2ストリームの分け方、録画の保存日数までまとめます。

先に結論です。N100 クラスのミニPCなら、Coral(Google の AI アクセラレータ)を買わなくても、内蔵の Intel iGPU で Frigate の人物・車検知を動かせる とされています。やることは 3 つで、検知は OpenVINO を device: GPU で動かす/映像のデコードは VAAPI に任せる/カメラは「検知用の低画質」と「録画用の高画質」の 2 本に分ける です。これで CPU の負担をかなり抑えられます。

Coralなしで足りる理由と、向いている台数

Frigate は、映像の中で動きがあった部分だけを AI モデルに渡して「人」「車」「犬」などを判定する NVR(ネットワークビデオレコーダー)です。以前は Coral を挿すのが定番でしたが、今は Intel の iGPU で動く OpenVINO 検知器が公式に用意されています。

公式ドキュメントの推奨ハードウェアの表では、N100 で既定モデル(MobileNetV2)の推論時間が 約 15ms とされています。検知は 1 カメラあたり毎秒 5 コマが推奨なので、計算上は家庭で使う 2〜4 台程度なら余裕がある水準です。ただし N100 で動かせる検知器は 1 つまでとされているため、台数を大きく増やす予定があるなら上位の CPU を検討してください。

なお、OpenVINO は第 6 世代以降の Intel CPU(iGPU つき)が対象とされています。Celeron J4105 のような古い世代は対象外という回答が開発者から出ているので、中古ミニPCを流用する場合は世代を確認してから進めます。

これから用意するなら、N100 搭載ミニPC(メモリ 16GB) に、録画用として 監視カメラ向け HDD(WD Purple など) を組み合わせるのが扱いやすい構成です。録画は書き込みが 24 時間続くので、システム用 SSD とは分けておくと安心です。

Docker Composeで立てる

services:
  frigate:
    image: ghcr.io/blakeblackshear/frigate:stable
    container_name: frigate
    restart: unless-stopped
    shm_size: "512mb"
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128   # iGPU を渡す
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./config:/config
      - /mnt/hdd/frigate:/media/frigate           # 録画の保存先(HDD)
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "8971:8971"   # 管理画面(ログインあり)
      - "8554:8554"   # RTSP 再配信
      - "8555:8555/tcp"
      - "8555:8555/udp"

ポイントは 3 つです。

  • /dev/dri/renderD128 を渡す:これがないと iGPU を使えず、デコードも検知も CPU に落ちます
  • shm_size を増やす:Docker の既定は 64MB で、公式では 720p 検知のカメラ 2 台で約 210MB が目安とされています。カメラが増えたら上げます。足りないと Bus error で落ちることがあります
  • 管理画面は 8971 番:ログイン付きの画面です。初回起動時のログに管理者のパスワードが表示されるので、docker logs frigate で確認します

検知とデコードをiGPUに向ける設定

./config/config.yml に次を書きます。

detectors:
  ov:
    type: openvino
    device: GPU          # 書かないと CPU で動く

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

ffmpeg:
  hwaccel_args: preset-vaapi

一番多い失敗は device: GPU の書き忘れ です。Frigate は既定では OpenVINO を CPU で動かすとされていて、設定が正しく見えても CPU 使用率が高いままになります。既定モデルはイメージに同梱されているので、別途ダウンロードは不要です。

デコードの preset-vaapi は、第 8〜12 世代の Intel(N100 も含む)で推奨とされています。第 13 世代以降や Arc では preset-intel-qsv-h264 系が推奨で、ログに Failed to download frame: -5 が出るときは VAAPI と QSV を入れ替えて試すのが公式の案内です。

カメラは2ストリームに分けて登録する

検知に高画質の映像を使うと、デコードの負担が一気に増えます。多くのネットワークカメラは高画質と低画質の 2 本を同時に出せるので、低画質を検知(detect)、高画質を録画(record) に割り当てます。

例として、TP-Link の Tapo シリーズは stream1 が高画質、stream2 が低画質とされています。RTSP 用のアカウントは Tapo アプリの中で別に作る必要があります。RTSP 対応のネットワークカメラ(Tapo C210 など)

cameras:
  entrance:
    ffmpeg:
      inputs:
        - path: rtsp://user:[email protected]:554/stream1
          roles: [record]
        - path: rtsp://user:[email protected]:554/stream2
          roles: [detect]
    detect:
      fps: 5
    objects:
      track: [person, car]

record:
  enabled: true
  continuous:
    days: 3
  alerts:
    retain:
      days: 14
  detections:
    retain:
      days: 14

録画は enabled: true だけでは何も残らない 点に注意してください。常時録画・検知時の録画のどれを何日残すかを書いて初めて保存されます。録画まわりの書き方は版によって変わってきているので、うまく保存されないときは使っている版の公式ドキュメントで確認します。

カメラ側は、Frigate とスマホアプリの両方から高画質を同時に見ると接続が切れる機種があります。映像が途切れるときは、同時に見ている端末の数も疑ってみてください。

まとめ

  • N100 クラスの Intel iGPU なら、Coral なしでも家庭の 2〜4 台程度の検知は回る水準とされている
  • Compose では /dev/dri/renderD128 を渡し、shm_size をカメラ台数に合わせて増やす
  • 検知は OpenVINO を device: GPU で、デコードは N100 なら preset-vaapi で iGPU に向ける
  • カメラは低画質を detect、高画質を record に分け、録画の保存日数は明示的に書く

運営者が作った Excel テンプレートを BOOTH で配布しています。IT 資産管理台帳(無料 Lite 版あり) / IT 資格の学習管理シート

部長(本業: IT インフラ) 家でも同じことをして遊んでいます。記事は実機で試してから書き、失敗もそのまま載せます。