見出し画像

画像処理のあれこれ2 目指せ!「ぼくのかんがえたさいきょう」の映像解析システム

はじめに

こんにちは。アダコテックの伊藤です。
近年、Python、PyTorch 、openCVなどの開発言語やライブラリを活用して簡単に機械学習を利用した映像解析のプログラムを開発できる世の中になっています。
google検索を行えば、各種詳細な情報を入手する事もできますので、ちょっとした機械学習プログラムを簡単に開発する事ができます。

そこで、「良い感じな」映像解析プログラムが開発できたと仮定します。
仕事で開発を行っていた場合、この成果をもって「自社プロダクトを開発だー!」みたいな流れになる可能性もありえるとおもいます。

しかしながら、映像解析システムという観点では、様々なカメラからの入力対応、録画機能、警報機能など映像解析機能の他にも諸々の機能を実装する必要があり、開発コストが馬鹿になりません。

そこで、本記事では開発コストを抑制し「ぼくのかんがえたさいきょう」の映像解析システムを目指すための情報を紹介したいと思います。
(利用許諾とかの問題で法人ではないと役にたたない情報かもしれませんが・・・。)

openCVを活用した映像入力

IPカメラの中には、カメラ制御用のCGIを公開しているものもあります。
たとえば、AXISコミュニケーションズ社製のIPカメラの場合、

http://myserver/axis-cgi/mjpg/video.cgi?fps=15

のようなCGIコマンドを実行することで、MotionJpegストリームを取得できます。
このCGIとopenCV(とffmpeg)を利用して、下記のようなコードを書くことでカメラ映像を取得する事が可能です。

import cv2
import sys

file_path = 'http://myserver/axis-cgi/mjpg/video.cgi?fps=15'
delay = 1
window_name = 'video stream'
cap = cv2.VideoCapture(file_path)
if not cap.isOpened():
   sys.exit()
while True:
   ret, frame = cap.read()
   if ret:
       cv2.imshow(window_name, frame)
       if cv2.waitKey(delay) & 0xFF == ord('q'):
           break
   else:
       cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
       
    
cv2.destroyWindow(window_name)

下記は、実際の映像入力例です。

画像1

システムとして考えた場合、録画機能、警報機能など諸々の機能を自前実装するべき機能はまだまだありますが、試験的に簡単なプログラムを開発したい場合などには重宝します。

MIP(Milestone Integration Platform)  SDK

マイルストーンシステム社のXProtectは、世界シェアNo1のVMS(ビデオマネジメントシステム)です。
マイルストーンシステム社は、サードパーティ製品との連携にも力を入れておりMIP SDKというXProtectとのシステム連携をおこなうための各種APIを提供しています。
このAPIを利用しXProtectと連携することで、様々なカメラからの入力対応、録画機能、警報機能など諸々の機能を実現する事が可能です。

このSDKを利用する事で、独立したアプリケーションを実装する他に、VMSサーバーやクライアントのプラグインを開発する事が可能です。
さらに、APIの提供は.net framworkのクラスライブラリのみですが、プロコル情報も公開されているため、Windows環境以外での開発も可能です。

画像2

弊社では、このプラットフォームを活用したプロダクトAdaWatcherを開発しております。

ACAP(AXIS Camera Application Platform)

AXISコミュニケーションズ社は、AXIS Camera Application Platform (ACAP)というAxisアプリケーション開発パートナー (ADP) プログラムのメンバーが、ダウンロードしてAxisネットワークカメラやビデオエンコーダーにインストールするアプリケーションを開発できる、オープンアプリケーションプラットフォームを提供しています。

このプラットフォームを利用する事で、AXISコミュケーションズ社のIPカメラに組み込むアプリケーションを開発する事ができます。
カメラ側で映像解析を行うため、映像解析用にハイエンドのサーバーを用意する必要がなくなるというのが最大のメリットです。

IPカメラに搭載されているI/Oポートなどは、アプリケーションイベントというトリガーを起点に簡単に制御する事が可能です。(AXIS社の提供するVMSとの連携も可能です。)

さらに、アプリケーションイベントをトリガにTCP/IP通信を行う事も可能なので、他社VMSとの連携も可能です。

画像3

弊社では、MIP SDK同様こちらのプラットフォームを活用したプロダクトの開発事例があります。

おわりに

近年、Raspberry Pi+USBカメラのような構成で、簡単にカメラ映像をリアルタイムに解析する仕組みを実現する事が可能です。

しかしながら、プロダクトいう観点では既設のカメラから映像取得が出来る、異常時に様々な手段で通報が行えるなど、諸々検討する必要があります。

本日、社内で実際に利用しての感想になりますが、今回紹介したプラットフォームには、下記のようなメリット、デメリットを感じています。
このため、弊社では開発のフェーズや要件に応じて、ご紹介したようなアプリを利用して、プログラムの開発を行っております。

画像4


メンバー募集中です
アダコテックは上記のような画像処理技術を使って、大手メーカーの検査ラインを自動化するソフトウェアを開発している会社です。
機械学習や画像処理の内部ロジックに興味がある方、ご連絡下さい!
我々と一緒にモノづくりに革新を起こしましょう!
https://adacotech.co.jp/recruit

この記事が気に入ったらサポートをしてみませんか?