試してみたいGIGAZINEの次の紹介記事を見つけ、カメラ映像に映っている物体が何かを機械学習モデルで認識してくれるというオープンソースのNVR「Frigate」を手元で試してみたくなった。どこかの横断歩道のカメラ映像を使っているデモサイトもある。GIGAZINEなお、NVRとは「ネットワークビデオレコーダー」の略だ。サーバにNVRソフトウェアを導入すると、ネットワークカメラの映像を束ねた監視カメラシステムが構築できる。上にUbuntuの仮想マシンを構築し、その中でFrigateのdockerコンテナを動かすことにする。3400GE」で、別立てのGPUは無し。Passthroughも設定しない)。物体検出の演算には仮想マシンのCPUを用いる構成だ。次のリンク先のFrigate公式ドキュメントを参考に導入を進める。Docker環境を用意するDockerを動かす場所を用意する。RTSPソースを用意するRTSPでのVideoストリーミングが可能な、ネットワークカメラまたはカメラアプリを用意する。今回の実験では2台用意してみたが1台でも構わない。Atomcam2の公式アプリがRTSP対応しました。設定ファイルを用意するDocker環境の母艦で作業を行う。計算式にしたがって調整する。2箇所を自身の環境に合わせて書き換える。https://docs.frigate.video/configuration/camerasここでは、atomcam2とandroidという2台のカメラを定義している。行は、各RTSPソースのURLに書き換える。https://docs.frigate.video/configuration/recordカメラ映像が、一定期間、検出したオブジェクトごとに保存されるように適宜設定している。Detectorを2つ定義している。(テストのためにありったけ定義した)。この定義を書かないデフォルト状態の場合、検出されるオブジェクトは「person」のみである。保存領域を準備するDocker環境の母艦にて、Frigateが保存領域として使用するディレクトリを作成する。Frigateを起動するDocker環境でFrigateコンテナを次のように起動し、コンソール画面に特にエラーが表示されないことを確認する。アイコンが左上にある「FRIGATE」画面が確認できる。左メニューの「Cameras」を選択すると、接続しているカメラの映像が静止画で一覧できる。全カメラの動画を一覧したい場合は「Birdseye」を選択すれば良いようだ。Frigateの物体検出はどんな感じか左メニューの「Cameras」を選択し、次に右側で任意のカメラ映像を一度クリックする。カメラ映像に映った各物体をリアルタイム検出し、分類の確度とともに四角い枠で表示している様子を、毎秒5コマぐらいの動きで見ることができる。左メニューの「Events」を選択すると、物体検出の様子を時系列イベントとして閲覧できる。Bear」と認識されているのはご愛嬌)。機械学習モデルを使って物体が何かを認識することは昨今当たり前に行われている。Frigateはその機能が予め組み込まれているオープンソースなNVRソフトウェアであり、物体検出関連も含めてセットアップがとても簡単で驚いた。今回の実験では物体検出の演算にCPUのみを利用しており、GPU等を利用する場合はセットアップが実際どうなるか不明だけども。Assistantへの統合方法も案内されている)。機会があれば実戦投入して、NVRで物体検出が利用できると実際どのような利点があるのか、確かめてみたいと思う。個人的な記録や思いをつらつらと。福岡長崎育ち、神戸在住。