本文へスキップ
Esc

AI 認識

このページの内容

Rerinku View の AI 認識は、すべて Rerinku View を動かしているこのマシンの上で行われ、映像も認識結果もアップロードされません。AI 認識は次の 2 つからなります。

  • 物体検出:人、車両(車、トラック、バス、バイク、自転車)、ペット(犬、猫、鳥)を認識します。モデルは COCO の 80 クラスに対応しており、よく使う 9 クラスはそのままチェックを入れて選べます。
  • 顔認識:検出した人をもとに、顔ライブラリに登録した人を判別します。それ以外の人は「不明な人物」または「確認待ち」になります。

認識結果からはイベントが作られます。イベントには映像のスナップショットが付き、対象の位置が示されるほか、対象を最初に捉えた 5 秒前からの動画が録画されます。詳しくはイベントと通知を参照してください。

有効にする

  1. 設定 → スマート検知 を開きます。初めて使うときは、案内に従って検出モデルをダウンロードします。モデルは Hugging Face から取得します。中国本土では「モデルのダウンロード元」を「中国本土ミラー」に切り替えられます。
  2. カメラの一覧で、認識させたいカメラの「物体検出」をオンにします。人を判別したい場合は「顔認識」もオンにします。
  3. カメラごとの細かい設定は デバイス詳細 → 設定 → スマート検知 で調整します。検出に使うストリーム、認識するクラス、検出する範囲を指定できるほか、「検知フレームを表示」をオンにすると認識枠をリアルタイムで確認できます。

顔認識は物体検出の上に成り立っています。顔認識をオンにすると、そのカメラの物体検出も自動でオンになり、「人」が選択されます。顔認識がオンのときに物体検出をオフにしたり「人」を外したりすると、まず確認を求められ、確認すると両方がオフになります。

モデル

モデル サイズ 用途
YOLOX-Nano 3.5 MB 物体検出。最もリソースを使わない
YOLOX-Tiny 19 MB 物体検出。推奨
YOLOX-S 34 MB 物体検出。より高精度だが負荷も高い
YuNet + ArcFace 約 250 MB 顔検出と顔認識。顔認識をオンにするときにダウンロード

モデルはデータディレクトリの models/ に保存されます(MODELS_PATH で変更できます)。使用中のモデルは削除できませんが、対応する機能をオフにすれば削除できます。自分でエクスポートした YOLOX の ONNX モデルをアップロードすることもできます。

イベントが作られるタイミング

  • 動いているものだけを対象にします。 Rerinku View はまず動き検出を行い、映像に変化があった領域でだけ推論を実行します。これとは別に、10 秒ごとに画面全体を 1 回スキャンします。
  • 静止している対象は通知しません。 対象がおよそ 10 秒動かなければ静止しているとみなします。検出を始めたときから一度も動いていない対象(ずっと停まっている車など)はイベントになりません。
  • 連続して映っている間がひとつのイベントです。 同時に現れた複数の対象はひとつのイベントにまとめられ、対象がいなくなるとイベントは終了します。
  • 既定のしきい値:毎秒 5 フレームを解析し(1〜15 に設定可能)、1 フレームの信頼度は 0.5、対象を確定するには 0.7 が必要です。既定では「人」と「車」を検出します。いずれも 設定 → スマート検知 → 詳細設定 で調整でき、カメラごとに個別に上書きすることもできます。
  • モーションマスク:映像の中で常に動いているものの、気にする必要のない領域(木、道路)は、カメラの検知ゾーンで除外できます。

イベントの頻度を抑える

設定 → スマート検知 → 詳細設定 に、頻度を抑えるためのオプションが 2 つあります。どちらも既定ではオフで、カメラごとに個別に設定することもできます。

  • イベント間隔:イベントが終わったあと、そのカメラの検出をどれだけ止めておくかです(最長 24 時間)。止めている間も録画は通常どおり続きますが、推論は実行されず、状態には「イベント間隔中、HH:MM に検出を再開」と表示されます。Rerinku View を再起動すると、すぐに検出が再開されます。
  • イベントの最長時間:1 件のイベントが続く最長の時間です(10 秒〜24 時間)。この時間に達すると、そのイベントは終了します。

認識ページ

サイドバーの 認識 ページで、結果をまとめて確認できます。

  • 物体:検出された対象を、クラス(人、車両、ペット)、カメラ、時間で絞り込めます。
  • 人物:
    • 検出記録:捉えた顔が 1 枚ずつ、「認識済み」「確認待ち」「不明な人物」に分けて表示されます。確認待ちの顔は、特定の人物に割り当てられます。
    • 顔ライブラリ:判別したい人を登録します。写真は 1 人あたり最大 5 枚で、グループ(家族、友人、常連)に分けられます。重複して登録された人をまとめたり、認識の精度を試したりすることもできます。

判別された人の名前はイベントに記録され、スマートフォンの通知や MQTT でも確認できます。

対応プラットフォーム

認識コンポーネントはプログラムに同梱されて配布され、Rerinku View の起動時に自動で展開されます。別途インストールする必要はありません。

プラットフォーム AI 認識
Linux(x86-64) 対応。glibc 2.34 以降が必要
Linux(ARM64) 対応。glibc 2.34 以降が必要
Windows 10 / 11(x64) 対応。ランタイムの追加インストールは不要。GPU があれば GPU での高速化(DirectML)を試みます
Windows(ARM64) 現時点では未対応
macOS(Apple シリコン) 対応。macOS 14 Sonoma 以降が必要
macOS(Intel プロセッサ) 非対応
Docker イメージ(x86-64) 対応。認識コンポーネントと Intel / AMD の GPU ドライバーを同梱

AI 認識に対応していないプラットフォームでも、ライブ表示・録画・再生などほかの機能は通常どおり使えます。認識関連の入口は非表示になりません。認識 ページと 設定 → スマート検知 の上部に理由が表示され、関連するスイッチはグレーアウトされます。

Linux

glibc 2.34 以降が必要です。ここ数年の主要なディストリビューションであれば条件を満たしています。たとえば Debian 12 以降、Ubuntu 22.04 以降、Fedora 35 以降、RHEL 9 系、Debian 12 ベースの Raspberry Pi OS(Bookworm)です。Alpine など musl を使うディストリビューションは条件を満たしません。わからない場合は次のコマンドで確認できます。

ldd --version

1 行目の末尾の数字が glibc のバージョンです。Linux では、推論は現在 CPU で実行されます。

Docker イメージ(x86-64)にも認識コンポーネントが内蔵されており、別途インストールする必要はありません。クイックスタートを参照してください。

Windows

対象は Windows 10 / 11(x64)です。認識コンポーネントは内蔵されており、ランタイムを別途インストールする必要は一切ありません。

Windows 版は、物体検出と顔認識を GPU で実行しようとします。DirectML を使うため、Direct3D 12 に対応した GPU であれば、NVIDIA・AMD・Intel(内蔵 GPU を含む)のいずれも使えます。GPU を使えないとき(GPU がない、仮想マシン、ドライバーに問題があるなど)は自動的に CPU に戻り、認識は通常どおり動作します。

  • 設定 → スマート検知 → 詳細設定 → 検出パラメーター の「推論デバイス」で、「自動(GPU を優先)」(既定)か「CPU のみ」を選べます。保存するとすぐに反映されます。
  • GPU が使われているかどうかは、設定 → スマート検知 下部の「パフォーマンス」で確認できます。「推論デバイス」の項目に GPU の名前が表示されます。GPU が使われていない場合は、その理由が表示されます。
  • GPU アクセラレーションには新しめのグラフィックスドライバーが必要です。GPU が使われないときは、まずドライバーを更新してから試してください。

macOS

Apple シリコン(M1 以降) を搭載し、macOS 14 Sonoma 以降が動いている Mac が必要です。認識コンポーネントは内蔵されており、追加のインストールは不要です。推論は現在 CPU で実行されます。

  • Intel プロセッサの Mac は AI 認識に対応していません。推論ランタイムの ONNX Runtime が、1.24 から Intel 版を提供しなくなったためです。ほかの機能は通常どおり使えます。
  • Apple シリコンの Mac で Intel 版を動かしている場合(Rosetta による変換):Apple シリコン(arm64)版に切り替えれば使えます。
  • macOS 13 以前:macOS 14 以降にアップグレードすれば使えます。

チップと macOS のバージョンは、画面左上のアップルメニュー → この Mac について で確認できます。Apple シリコンの Mac には「チップ」の項目(例:Apple M1)が、Intel プロセッサの Mac には「プロセッサ」が表示されます。同じウインドウで macOS のバージョンも確認できます。

ビデオデコード

認識は映像の中身を見る必要があるため、まずカメラの映像を画像にデコードします。ライブ表示と録画はカメラの元のストリームをそのまま転送するのでデコードは不要で、デコードされるのは認識を行うカメラだけです。

Rerinku View は GPU のビデオデコーダー(ハードウェアデコード。CPU をほとんど使いません)を優先し、GPU がデコードできない形式のときや GPU でエラーが起きたときだけ、CPU(ソフトウェアデコード)に回します。

プラットフォーム ハードウェアデコード
Linux(x86-64) VA-API(Intel、AMD)、NVDEC(NVIDIA)
Linux(ARM64) 現時点では未対応。ソフトウェアデコードを使用
Windows D3D11VA(NVIDIA、AMD、Intel)
macOS VideoToolbox

Rerinku View は起動時に、内蔵の短い映像を使って各 GPU で H.264 と H.265 を実際にデコードしてみて、デコードできた形式だけを GPU に任せます。設定 → ビデオデコード では、各カメラがいまハードウェアとソフトウェアのどちらでデコードされているか、ハードウェアを使っていない理由、見つかった GPU とそれぞれがデコードできる形式を確認できます。

Linux にネイティブでインストールした環境でハードウェアデコードを使うには、次のものが必要です。

  • GPU ドライバー:Intel は intel-media-va-driver(古い GPU は i965-va-driver)、AMD は mesa-va-drivers をインストールします。NVIDIA は公式ドライバー 470 以降を使います(オープンソースの nouveau ドライバーでは使えません)。
  • Rerinku View を実行するユーザーが render と video グループに入っていること:sudo usermod -aG render,video ユーザー名 を実行し、再ログインするかサービスを再起動したあと、設定 → ビデオデコード で「再検出」をクリックします。

Docker イメージには Intel・AMD の GPU ドライバーがあらかじめ入っているので、ホストにドライバーを入れる必要も、ユーザーグループを設定する必要もありません。コンテナの起動時に --device /dev/dri を付ければ(Compose では devices: の下に書きます)GPU でデコードでき、コンテナには GPU へのアクセス権が自動で与えられます。NVIDIA の GPU では、ホストに NVIDIA ドライバーと NVIDIA Container Toolkit をインストールし、起動時に --gpus all を付けてください。

ある GPU でデコードするとすぐに問題が起きる場合は、環境変数 VIDEO_HW_DECODE=false を設定して、ソフトウェアデコードだけを使うように強制できます。

必要な処理能力

決まった必要スペックはなく、カメラの台数、解像度、モデルによって変わります。参考値として、Ryzen 7 5825U 搭載ノート PC の CPU では、YOLOX-Tiny の推論 1 回あたり約 22 ミリ秒で、毎秒 5 フレームを解析する場合はおよそ 8 台分を処理できます。1080p の映像 1 本をデコードするには、CPU コアを約 0.35〜0.6 個分使います。

最も確実なのは、設定 → スマート検知 下部の「パフォーマンス」を見ることです。推論速度を実測し、このマシンであと何台分の認識を追加できるかを見積もってくれます。