(57)【特許請求の範囲】
【請求項１】
リアルタイムで入力された動画像フレームデータをメモリに蓄積する手段と、
前記動画像フレームデータからフレーム間差分データを生成する手段と、
前記フレーム間差分データから立体高次局所自己相関によって特徴データを抽出する手段と、
前記特徴データを用いて更新行列を生成する手段と、
前記更新行列を追加して、共有メモリ上の自己相関行列を更新する手段と、
共有メモリ上から異常検知に利用する固有ベクトルを読み込む手段と、
前記特徴データと共有メモリから読み込んだ前記固有ベクトルから異常値を求め、該異常値が閾値より大きいか小さいかの判定を行い、大きい場合に異常と判定する手段と、
前記異常判定手段が異常と判定した場合に判定結果を出力する手段と、
を実行する第１中央演算装置と、
主成分分析により前記共有メモリ上の自己相関行列から固有ベクトルを生成する手段と、
生成した固有ベクトルを共有メモリ上に保存し更新処理を行う手段と、
を実行する第２中央演算装置と、
を備える異常動作監視装置。
【請求項２】
前記更新行列更新手段は、前記異常判定手段が異常と判定した特徴データのみを用いて更新行列を生成することを特徴とする請求項１記載の異常動作監視装置。
【請求項３】
前記自己相関行列更新手段は、追加する更新行列と自己相関行列の加重平均を計算し、追加する更新行列の加重値が一定値以下にならないことを特徴とする請求項１または２記載の異常動作監視装置。
【請求項４】
前記自己相関行列更新手段は、前記固有ベクトルを用いて学習用データの更新処理を行うことを特徴とする請求項１または２記載の異常動作監視装置。
【請求項５】
前記第１中央演算装置は、共有メモリ上の固有ベクトルが前記第２中央演算装置によって更新されていない場合に、共有メモリからの読み込みを行わず、既に読み込みを行った古い固有ベクトルを用いて前記異常値計算を行うことを特徴とする請求項１または２記載の異常動作監視装置。
【請求項６】
前記特徴データ抽出手段は、フレームＣＨＬＡＣデータの計算を行い、現在の特徴データに最新のフレームＣＨＬＡＣデータを加算し、所定期間以上古いフレームＣＨＬＡＣデータを減算する手段を備えることを特徴とする請求項１または２記載の異常動作監視装置。
【請求項７】
前記異常値計算は、前記特徴データと前記固有ベクトルによって張られる通常動作の部分空間との垂直距離または角度を求めることを特徴とする請求項１または２記載の異常動作監視装置。
【請求項８】
前記第１中央演算装置及び第２中央演算装置が一体として構成されている事を特徴とする請求項１または２記載の異常動作監視装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、立体高次局所自己相関（ＣＨＬＡＣ）技術を利用した異常動作監視装置に関する。
【背景技術】
【０００２】
現在、駐車場や店舗内等において、カメラによる監視システムが多く導入されている。しかし、従来の監視システムでは、カメラ映像を常に監視する必要がある上、問題が発生した際にあらかじめ録画して撮り溜めておいた映像から、該当のシーンを人間が目視で見つけ出している。このため、従来システムでは、監視に要する労力も多大になり、見逃すこともある等ヒューマン・エラーも起こりがちとなっていた。また、実際に不具合が発生した際に迅速に対応することも難しく、コンピュータによる省力化が望まれてきた。この問題を解決する手法として、特許公開２００６−７９２７２（特許文献１）が提案されている。
【０００３】
特許文献１で提案されている手法は大きく二つに分かれる。一方は、問題の無い通常の動作が記録されているフレームデータから、特許文献２に示されたCHALC特徴を抽出し、主成分分析により求まった固有ベクトルにより張られる空間(以下、固有ベクトルにより張られる空間を通常動作の部分空間と呼ぶ)を予め計算しておき、監視時にはその通常動作の部分空間を用いてそこからの逸脱の度合いとして異常値を求めるオフライン学習型の異常監視手法である。他方は、監視しながら部分空間の更新も行うオンライン学習型の異常監視手法である。部分空間の更新には、非特許文献１に記載されている様な主成分分析の近似を用いることができる。オンライン学習型の異常監視手法により、一日の日照条件等の監視環境の変動に自動で追従する事が可能になり、更なる省力化が図られる。
【特許文献１】特許公開２００６−７９２７２
【特許文献２】特許公開２００５−９２３４６
【非特許文献１】Juyang Weng, Yilu Zhang andWey-Shiuan Hwang, "Candid Covariance-Free Incremental Principal ComponentAnalysis",IEEE Transactions on Pattern Analysis and MachineIntelligence,Vol.25, No.8, pp.1034-1040, 2003
【非特許文献２】大津展之、“判別および最小２乗規準に基づく自動しきい値選定法”電子通信学会論文誌Ｄ、J63-D-4、P349-356、1980年。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１にも記載されている非特許文献１記載の手法（以下、ＣＣＩＰＣＡとよぶ）を用いたオンライン学習型の異常監視を行うことで、オフライン学習型の異常監視の諸問題を解決する事は可能であるが、ＣＣＩＰＣＡは直接固有値問題を解かずに近似的に解を求めているため、計算精度が低下してしまうという新たな問題点があった。
【０００５】
さらに、ＣＣＩＰＣＡを用いたオンライン学習型の異常監視では、オンラインで追従したい環境変動の速さ(季節の変化、一日の日照条件の変化、突然の豪雨等の急激な天候変化等)を明示的に指定する事が困難であった。たとえば急激な天候の変化に対応したい場合は、環境変動に即座に対応し新しい通常動作を学習する必要があるが、その反作用として過去の通常動作を忘れやすくなってしまう。逆に、緩やかな季節の変化に対応したい場合は、過去の通常動作を長期間忘れないようにする必要があるが、その反作用として急激な環境変動には対応できなくなってしまう。このように、追従したい環境変動の速さに応じて、学習条件も明示的に指定できる必要があるが、ＣＣＩＰＣＡはサンプル分布が定常状態である事を前提にしているため、それが難しい。
【０００６】
なお、オンライン学習の際にＣＣＩＰＣＡを用いずに、厳密解を解くことも考えられる。しかし、厳密解による通常動作の部分空間の更新には計算時間がかかり、単一の中央演算装置の逐次処理による計算では更新の最中には監視動作を中断せざるを得ない場合もあり、リアルタイム性を損なう問題もあった。
【課題を解決するための手段】
【０００７】
本発明の異常動作監視装置は、リアルタイムで入力された動画像フレームデータをメモリに蓄積する手段と、
前記動画像フレームデータからフレーム間差分データを生成する手段と、
前記フレーム間差分データから立体高次局所自己相関によって特徴データを抽出する手段と、
前記特徴データを用いて更新行列を生成する手段と、
前記更新行列を追加して、共有メモリ上の自己相関行列を更新する手段と、
共有メモリ上から異常検知に利用する固有ベクトルを読み込む手段と、
前記特徴データと共有メモリから読み込んだ前記固有ベクトルから異常値を求め、該異常値が閾値より大きいか小さいかの判定を行い、大きい場合に異常と判定する手段と、
前記異常判定手段が異常と判定した場合に判定結果を出力する手段と、
を実行する第１中央演算装置と、
主成分分析により前記共有メモリ上の自己相関行列から固有ベクトルを生成する手段と、
生成した固有ベクトルを共有メモリ上に保存し更新処理を行う手段と、
を実行する第２中央演算装置と、
を備える。
【０００８】
前記更新行列更新手段は、前記異常判定手段が異常と判定した特徴データのみを用いて更新行列を生成することを特徴とする。
【０００９】
前記自己相関行列更新手段は、追加する更新行列と自己相関行列の加重平均を計算し、追加する更新行列の加重値が一定値以下にならないことを特徴とする。
【００１０】
前記自己相関行列更新手段は、前記固有ベクトルを用いて学習用データの更新処理を行うことを特徴とする。
【００１１】
前記第１中央演算装置は、共有メモリ上の固有ベクトルが前記第２中央演算装置によって更新されていない場合に、共有メモリからの読み込みを行わず、既に読み込みを行った古い固有ベクトルを用いて前記異常値計算を行うことを特徴とする。
【００１２】
前記特徴データ抽出手段は、フレームＣＨＬＡＣデータの計算を行い、現在の特徴データに最新のフレームＣＨＬＡＣデータを加算し、所定期間以上古いフレームＣＨＬＡＣデータを減算する手段を備えることを特徴とする。
【００１３】
前記異常値計算は、前記特徴データと前記固有ベクトルによって張られる通常動作の部分空間との垂直距離または角度を求めることを特徴とする。
【００１４】
前記第１中央演算装置及び第２中央演算装置が一体として構成されている事を特徴とする。
【発明の効果】
【００１５】
本発明では、オンライン学習型で主成分分析を行う際に用いる自己相関行列において、既存のデータと新規に追加するデータに対して明示的に重み付けを行う。新規に追加するデータに対する重み付けを大きくすると新規に学習した動作の重要度を増す事になり、急激な環境変動に対しても自動追従が可能になる。また、新規に追加するデータに対する重み付けを小さくすると、既存のデータの重要度が増す事になり、環境変動に対する追従は緩やかなものになる。
【００１６】
本発明では、異常値の高いＣＨＬＡＣ特徴のみを用いて通常動作の部分空間の更新を行う方法も提案する。この処理により十分に学習した動作に対するＣＨＬＡＣ特徴は学習対象から除外されるため、効率的に部分空間の更新を行うことができる。さらに、本来は生起確率で重み付けするところを、本発明で提案する重み付けを行う事で環境変動により迅速に追従可能となる。
【００１７】
近年のＰＣはマルチプロセッサ化が進み、一台のＰＣに複数の中央演算装置(以下、中央演算装置をＣＰＵと言う)が搭載されているような場合が多くなっている。そこで本発明では通常動作の部分空間の更新において、近似式を用いるのではなく、厳密解を求めることとする。またこれを複数のＣＰＵを用いて並列分散処理する事により、厳密解の計算時間がかかったとしても監視動作を中断することなくリアルタイムに異常監視を可能とする仕組みを提案する。これによりオンライン学習時の、近似式による監視精度の悪化も解決しオフライン学習時と同等の精度で監視することができる。
【００１８】
図１は、定期的に通常動作の部分空間の更新を行う手法を従来手法と本発明で行う際の比較図である。通常動作の部分空間の更新にはハイスペックのＰＣでも最低で１００ミリ秒近く更新に時間を要すため、テレビ映像などのフレーム間隔の場合、図1の左図のように最低３フレーム〜５フレーム程度の欠落が従来手法では発生する。本発明では、通常動作の部分空間の更新は異常か正常の判定を行うＣＰＵとは別のＣＰＵで行うので、図1の右図のようにフレームの欠落は発生しない。通常動作の部分空間の更新処理が別ＣＰＵで行われている間は、更新処理が始まる直前まで利用していた通常動作の部分空間を利用して異常監視を行う。このため、ハイスペックのＰＣを用いずとも監視動作が中断されることなく、主成分分析を用いた通常動作の部分空間の更新が可能となる。
【発明を実施するための最良の形態】
【００１９】
本発明では通常動作の部分空間の計算を、異常監視を行うＣＰＵとは別のＣＰＵ上で実行する。さらに、別ＣＰＵにて通常動作の部分空間を計算している間は、更新前の自己相関行列を用いて既に計算されている通常動作の部分空間を用いて異常値の計算を行う。
【実施例１】
【００２０】
図２は本発明による異常監視システムのシステム構成図の一例である。
カメラ１０は対象となる人や装置の動画像フレームデータをリアルタイムで出力する。カメラ１０はモノクロでもよいしカラーカメラであってもよい。また、カメラとＰＣ１１の接続方法はＵＳＢ、ＩＥＥＥ１３９４、ネットワーク接続等どのような接続方式でも問題ない。ＰＣ11は市販されている通常のＰＣ等で問題ない。最新のＰＣはマルチコアＣＰＵを搭載しており、ＣＰＵ１２とＣＰＵ１３の様に一つのＬＳＩに複数のＣＰＵを搭載している。
【００２１】
図３はＣＰＵ１２とＣＰＵ１３の動作概要である。ＣＰＵ１２では、処理１としてカメラ映像の読み込みを行う。次に処理２としてＣＨＬＡＣ特徴の計算を行う。さらに処理３で自己相関行列の更新を行い、処理4で異常か正常の判断を行う。ＣＰＵ１３では処理５として異常か正常の判断を行うのに必要な通常動作の部分空間をＣＰＵ１２で求めた自己相関行列から生成する。ＣＰＵ１３で通常動作の部分空間の計算が完了するまでの間、ＣＰＵ１２では過去に計算された通常動作の部分空間を用いて異常監視を行う。
【００２２】
共有メモリ１４はＰＣに搭載されているメモリを指し、ＣＰＵ12とＣＰＵ13でデータの受け渡しを行う場合には共有メモリ１４を用いて行う。キーボード１５とマウス１６は本発明による異常監視システムを制御するのに利用する。モニタ１７は本発明による異常監視システムの出力情報を表示するのに用いる。ＰＣ１１に作成したプログラムをインストールして起動することにより実現される。
【００２３】
図４は図３の処理の詳細を記述したものである。ＣＰＵ１２において工程1-0ではＰＣに接続されたカメラからフレームデータの入力が完了するまで待つ。ここで、フレームデータとは動画像の1フレーム分の画像である。また、フレームデータはカメラから直接取り込むのではなく、カメラ映像を予め録画しておいて読み込む事も可能である。
【００２４】
工程1-1では、フレームデータをメモリに読み込む。このときのフレームデータは例えば２５６階調のグレースケールデータやＲＧＢのカラーデータである。
【００２５】
工程1-2では、フレームデータから動きに着目した情報を抽出しフレーム間差分データとする。情報の抽出は1-1で取得した連続する二つのフレームデータから差分画像を生成する事で行う。フレーム間差分データの一例として、フレーム間差分の後にピクセル値を２値化する差分二値画像が上げられる。差分二値画像の具体的な抽出方法を説明する。
差分の取り方としては、隣接するフレーム間の同じ位置の画素の輝度の変化を抽出するフレーム間差分方式を採用するが、フレーム内における輝度の変化部分を抽出するエッジ差分、あるいは両方を採用してもよい。なお、画素毎にＲＧＢのカラーデータを持っている場合には、２つの画素の差分データとして、２つのＲＧＢカラーベクトル間の距離を算出してもよい。
【００２６】
さらに、「動き」とは無関係な色情報やノイズ等の余計な情報を除去する為に差分画像を二値化し差分二値化画像を求める。二値化の方法としては、例えば一定閾値、非特許文献２に開示されている判別最小二乗自動閾値法、閾値０及びノイズ処理方式（濃淡画像において差が０以外を全て動き有り＝１とし、公知のノイズ除去法によってノイズを除去する方法）を採用可能である。以上の前処理により入力動画データは画素値に「動いた（１）」「動かない（０）」の論理値をもつフレームデータ（二値画像）の列となる。
なお、本実施例ではフレーム間差分データとして差分二値画像を用いたが二値化の変わりにグレースケール化（差分値の絶対値をとる）を行った、グレースケール差分画像を用いてもかまわない。
【００２７】
工程2-1では、1フレーム毎の立体画素データに関する相関パターンを計算してＣＨＬＡＣ特徴を計算する。ＣＨＬＡＣの二値画像の立体画素データに関する相関パターンは２次までの相関を考慮した場合は、２５１種類存在する。本実施例では、これに伴いＣＨＬＡＣデータは２５１次元の特徴量とする。ＣＨＬＡＣデータの具体的な計算方法は従来発明に示した特許文献2の処理を用いて行う。
【００２８】
工程2-2で異常監視を行う際には、工程2-1で計算したＣＨＬＡＣデータではなく、Nフレーム分のＣＨＬＡＣデータの平均を特徴量として利用する。これをＣＨＬＡＣ特徴と呼ぶ。Nは認識しようとする動作の１周期と等しいか、より長い時間が望ましい。この処理により、CHLAC特徴（ベクトル）を平滑化する事でノイズに対してより頑健な値に変換する。
【００２９】
なお、平均のとり方は図５の様にＣＨＬＡＣデータを時系列に並べた列に時間窓を設定し、窓を1データずつシフトさせながらＣＨＬＡＣデータの和を求める。求まったＣＨＬＡＣデータの和をNで割ったものをＣＨＬＡＣ特徴と呼ぶ。
なお、効率的な計算方法としては時間窓のシフトにより除去されるＣＨＬＡＣデータをＣＨＬＡＣデータの和から減算し、時間窓のシフトにより追加されるＣＨＬＡＣデータをＣＨＬＡＣデータの和に加算する方法が特許文献２に示されている。
【００３０】
工程4-3で、異常か正常の判定を行うのに通常動作の部分空間を用いる。これは、
【００３１】
【数１】
0004654347.tif 000002
【００３２】
式1の固有値問題を解くこと(主成分分析)により求まる固有値Λ、固有ベクトルUにより定められる。工程3-1では、自己相関行列と呼ばれる式中のRを求める計算を行う。ここでは非特許文献１の近似は行わず、自己相関行列Rから式１により直接固有ベクトルを求めているので計算精度は低下しない。自己相関行列Rを求める計算は、大きく二段階に分けて処理を行う。一段目は、一定期間ＣＨＬＡＣ特徴をサンプリングしながら自己相関行列Ｒを更新するための行列r(更新行列)を生成する。二段目は一段目で求めた更新行列rを用いて自己相関行列Ｒの更新を行う。
【００３３】
工程3-1ではその一段目を実行しrの更新を行う。通常、ＣＨＬＡＣ特徴から更新行列rは、
【００３４】
【数２】
0004654347.tif 000003
の式にて計算される。ここでnは更新行列rを構成するＣＨＬＡＣ特徴のサンプル数を指し、xiはＣＨＬＡＣ特徴を指す。L次元のＣＨＬＡＣ特徴を以下のように表す。
【００３５】
【数３】
0004654347.tif 000004
なお、本実施例ではL＝２５１であるため、更新行列rは251×251の正方行列となる。式２をそのまま解くと計算量がサンプル数に比例して増大していく。
【００３６】
そこで、本発明ではサンプル数に関わらず一定の計算量で更新行列rが求まるような計算方法を用いる。具体的にはn個のＣＨＬＡＣ特徴のサンプルで構成されている更新行列rに対して、新たなＣＨＬＡＣ特徴のサンプルxが追加される更新を下記式にて行う。
【００３７】
【数４】
0004654347.tif 000005
これにより１ステップごとに計算量を割り振れるため、更新行列rの生成をより少ない計算量で行うことができる。
【００３８】
工程3-2では、通常動作の部分空間の更新する条件を満たしているか否かの判定を行う。条件を満たしている場合、自己相関行列Ｒを更新するための2段目の処理を行う。判定の条件としては、例えば上記式のnが一定値を超えた場合、つまり更新行列を構成するＣＨＬＡＣ特徴が一定量を超えた場合等が上げられる。
【００３９】
工程3-3では、自己相関行列Ｒを更新するための2段目の処理を行う。具体的には、自己相関行列Rに対して更新行列rを追加する。更新行列ｒの追加は以下の式で行う事が出来る。
【００４０】
【数５】
0004654347.tif 000006
【００４１】
ここで、NはRを構成するＣＨＬＡＣ特徴のサンプル数、Mは更新行列rを構成するＣＨＬＡＣ特徴のサンプル数である。これにより、3−1で記述したとおりＲの更新をサンプル数に関わらず一定の計算量で行う事が可能である。また、常時膨大なＣＨＬＡＣ特徴をメモリ上に保持する必要がなくなるため、少ないメモリでも異常監視を行う事が可能となる。
上記式5では、Nの値が十分に大きくなると、新たに追加する更新行列ｒが自己相関行列Rに及ぼす影響が小さくなり、急激な環境の変動に追従するのが難しくなる。
【００４２】
本発明では、これらの問題を解決するため新たに追加する更新行列rが自己相関行列Rに対して及ぼす影響が一定以下にならない仕組みを用意した。この仕組みを利用する場合、自己相関行列Rの更新は下記式で行う。
【００４３】
【数６】
0004654347.tif 000007
式5.0中のk0は[0 1]の実数である。
【００４４】
図６はk0の制御により新規に追加する更新行列rが自己相関行列Rに及ぼす割合の様子を図示したものである。k0の導入により新規に追加する更新行列ｒが自己相関行列Ｒに及ぼす割合の下限が一定に保たれる事がわかる。
k0の値を大きくとると、新規に追加する更新行列rの影響が強くなり、急激な環境変動に対しても自動追従が可能になる。逆にk0の値を小さくとると、既存の自己相関行列Ｒの重要度が増す事になり、環境変動に対する追従は緩やかなものになる。
【００４５】
工程3-4では、共有メモリ上にある自己相関行列Rの値を更新する。共有メモリとは別ＣＰＵと共有するデータを保存するメモリの事をさす。共有メモリの更新後、更新行列rを零行列で初期化する。
【００４６】
工程4-1では、共有メモリ上の固有ベクトルが更新されているか確認を行う。この固有ベクトルで張られた空間が異常監視に用いる通常動作の部分空間となる。更新の確認方法の一例としては、通常動作の部分空間を計算するＣＰＵ１３からＣＰＵ１２に対して、実行状態(待機中、計算中、計算完了等)を通知する方法が挙げられる。
共有メモリ上の固有ベクトルが更新されていた場合、工程4-2に推移して通常動作の部分空間の更新処理を行う。共有メモリ上の通常動作の部分空間が更新されていない場合、工程4-3に推移して異常値の計算を行う。その際に用いる通常動作の部分空間は、図１で示した様に古い自己相関行列を用いて既に計算された通常動作の部分空間を用いて異常監視を続行する。
なお、通常動作の部分空間の計算方法は別プロセス上で並列処理にて行うため、通常動作の部分空間の導出方法は後述する。
【００４７】
通常動作の部分空間の更新間隔がフレーム間隔程度の周期であれば、自己相関行列Ｒに新規に追加されるＣＨＬＡＣ特徴は多くても１００サンプル程度なので更新行列rの追加前後の誤差は極めて小さいので、更新前後の通常動作の部分空間に大きな性能差は発生しない。そのため、通常動作の部分空間を更新しているわずかな期間を更新前の通常動作の部分空間を用いて異常監視を行っても問題は無い。この発明により、通常動作の部分空間を計算している最中も異常監視を行う事が可能となる。
【００４８】
工程4-2では、共有メモリ上から、別プロセスで計算された固有ベクトルを通常動作の部分空間として読み込む。
【００４９】
工程4-3では、工程2-2で求めたＣＨＬＡＣ特徴と工程4-2で共有メモリから読み込んだ通常動作の部分空間から異常か正常の指針となる異常値を計算する。具体的には、ＣＨＬＡＣ特徴と通常動作の部分空間の垂直距離ｄ⊥を求め異常値とする。
【００５０】
垂直距離ｄ⊥の計算をするための第一ステップとして、主成分分析によって求まった固有ベクトルＵK=[u1,...,uK] によって張られた部分空間への射影子Ｐおよびそれに対する直交補空間への射影子Ｐ⊥を下記の式から計算する。
【００５１】
【数７】
0004654347.tif 000008
式中のＵ'は行列Ｕの転置行列であり、ＩMはＭ次の単位行列である。直交補空間での２乗距離、即ち、部分空間Ｕへの垂線の２乗距離ｄ2⊥は下記式で表現する。
【００５２】
【数８】
0004654347.tif 000009
【００５３】
本実施例においては、この垂直距離ｄ⊥を異常であるか否かの指標である異常値とする。また、上記のような方法の他にＣＨＬＡＣ特徴と通常動作の部分空間のなす角度を異常値とする様な手法をとっても良い。
【００５４】
工程4-4では、工程4-3で求めた異常値が閾値より大きいか小さいかの判定を行う。
【００５５】
工程4-5では、工程4-4で異常値が閾値より小さい場合の処理である。この処理で該当するフレームを通常動作が記録されているフレームと判定する。
【００５６】
工程4-6では、工程4-4で異常値が閾値より大きい場合の処理である。この処理で該当するフレームを異常動作が記録されているフレームと判定する。
【００５７】
工程4-7では、異常か正常の判定結果をディスプレイ等に出力する。
【００５８】
工程4-8では、異常監視を終了するか否かの判定を行う。例えば、ユーザが異常監視を終了するような処理を行った場合、異常監視を終了する。
異常監視を続行する場合は、工程1-0に戻り処理を続行する。
【００５９】
ＣＰＵ１３のフローチャートは通常動作の部分空間の更新を行うためのフローチャートである。この処理は、上記で説明した異常監視の処理とは別のプロセス上で行う。別のプロセスとは、例えばマルチコアＣＰＵにおいて別のコアで実施するような状態を指す。なお、ＣＰＵ１２のフローチャートとＣＰＵ１３のフローチャートは独立して動作するのであれば装置として問題無いため、マルチコアではない単一ＣＰＵ上でそれぞれのフローチャートを独立して動かすという手法も考えられる。
【００６０】
工程5-1においては、ＣＰＵ１２上の処理3-4によって自己相関行列Rが更新されたかを確認する。更新の確認方法の一例としては、通常動作の部分空間を計算するＣＰＵ１２からＣＰＵ１３に対して、実行状態(待機中、計算中、計算完了等)を通知する方法が挙げられる
【００６１】
工程5-2では、主成分分析手法を用いて工程5-1で取得した自己相関行列から通常動作の部分空間を求める。
主成分分析は先に記述したとおり
【００６２】
【数９】
0004654347.tif 000010
の固有問題を解く事で求まる。式中の自己相関行列Rは本実施例に置いては２５１×２５１の行列で表現されている。
式中のUは主成分ベクトル（固有ベクトル）を列に並べた行列であり下記の様に表現する。
【００６３】
【数１０】
0004654347.tif 000011
uは主成分分析によって求まった固有ベクトルである。本実施例ではL=２５１となる。Λは固有値行列を指し下記式で表現する。
【００６４】
【数１１】
0004654347.tif 000012
ここで、λは主成分分析で求まった固有ベクトルに対応する固有値である。
【００６５】
さらに第Ｋ固有値までの累積寄与率ηK は、以下の様な式で表す。
【００６６】
【数１２】
0004654347.tif 000013
ここでηKがある一定の値(例えばηK=0.99)になるまでK個の固有ベクトルを列にならべた下記行列を通常動作の部分空間とする。
【００６７】
【数１３】
0004654347.tif 000014
【００６８】
なお、累積寄与率ηKの最適値は監視対象や検出精度にも依存するものと考えられるので実験等により決定する。以上の計算を行うことにより、通常動作の部分空間が生成される。
【００６９】
工程5-3では、工程5-2で求まった固有ベクトルを共有メモリ上に保存する。この固有ベクトルによって張る空間が通常動作の部分空間になる。
【００７０】
工程5-4では、工程4-8と同様の異常監視の終了判定を行う。ただし、異常監視を続行する場合は工程5-1に戻るものとする。
【実施例２】
【００７１】
本発明の別の実施例として、異常値の高いＣＨＬＡＣ特徴のみを用いて通常動作の部分空間の更新する実施例を記載する。システム構成例は実施例１の構成と同様である。
図７はＣＰＵ１２とＣＰＵ１３の動作概要である。ＣＰＵ１２では、処理1としてカメラ映像の読み込みを行う。次に処理2としてＣＨＬＡＣ特徴の計算を行う。次に処理３として異常か正常の判断を行う。さらに処理４で自己相関行列の更新を行う。自己相関行列の更新の際には、異常値の高いＣＨＬＡＣ特徴を未学習の通常動作に対するデータと仮定して、異常値の高いＣＨＬＡＣ特徴のみＣＨＬＡＣ特徴のみを用いる。ＣＰＵ１３では処理5として異常か正常の判断を行うのに必要な通常動作の部分空間をＣＰＵ１２で求めた自己相関行列から生成する。ＣＰＵ１３で通常動作の部分空間の計算が完了するまでの間、ＣＰＵ１２では過去に計算された通常動作の部分空間を用いて異常監視を行う。
【００７２】
図８は図７の処理の詳細を記述したものである。ＣＰＵ１２において、工程a-0、a-1、a-2、b-1、b-2はそれぞれ、図６の工程1-0、1-1、1-2、2-1、2-2に対応しフレームデータの読み込みからＣＨＬＡＣ特徴の計算までを行う。
工程c-1、c-2、c-3、c-4、c-5、c-6、c-7はそれぞれ図６の工程4-1、4-2、4-3、4-4、4-5、4-6、4-7に対応し異常か正常の判定を行う。
【００７３】
d-1はb-2でもとめたＣＨＬＡＣ特徴をc-3で計算した異常値を元に通常動作の部分空間の更新に利用するか否かの判定を行う。
ＣＨＬＡＣ特徴を通常動作の部分空間の更新に用いる場合、d-2に推移する。そうでない場合は、e-1に推移する。
具体的な判定条件の一例として、異常と判定された一連の動作から異常値が最大となるＣＨＬＡＣ特徴のみをサンプリングするという方式が考えられる。
一連の動作の定義方法として、例えば、図１１のように異常値＞thresholdを満たす異常値の集まりを一連の動作と定義する方法がある。thresholdの値の一例として、異常か正常の判定を行う際の閾値を設定してもよい。
この方式で通常動作の部分空間の更新に用いるＣＨＬＡＣ特徴を効率的にサンプリングする事が可能となる。
【００７４】
工程d-2では、d-1でサンプリング条件を満たすＣＨＬＡＣ特徴xを下記の式で表すＣＨＬＡＣ特徴群Faに追加する。
【００７５】
【数１４】
0004654347.tif 000015
【００７６】
本実施例ではＣＨＬＡＣ特徴群Faを更新行列として扱う。
なお、本実施例ではＣＨＬＡＣ特徴の次元数Ｌを251とする。
工程c-3で、異常か正常の判定を行うのに通常動作の部分空間を用いる。これは、
【００７７】
【数１５】
0004654347.tif 000016
【００７８】
式14の固有値問題を解く主成分分析という手法により求まる固有値行列Λ、固有ベクトルUから求まる。実施例１ではＲにＣＨＬＡＣ特徴群から計算された自己相関行列を採用し、固有値行列Λ、固有ベクトルUを計算した。
このような方法の他に本実施例で示すような、既に求まっている通常動作の部分空間を利用して、自己相関行列Ｒを計算する方式をとってもよい。
本実施例で示す方式をとった場合、自己相関行列Ｒの行列サイズが縮小されるため、通常動作の部分空間を更新するのに要する時間を削減する事も可能である。
【００７９】
工程d-3では、通常動作の部分空間を更新するための条件を満たしているか否かの判定を行う。判定の条件としては、例えばd-2の記憶したＣＨＬＡＣ特徴のサンプル数が所定の値を超えた場合があげられる。この所定の値をnとする。
【００８０】
工程d-4では、通常動作の部分空間を更新するために必要な自己相関行列Rを求める。実施例１では、ＣＨＬＡＣ特徴群から計算した自己相関行列Ｒを計算したが、本実施例ではd-2でサンプリングされたＣＨＬＡＣ特徴群Faと、現在通常動作の部分空間を張っている固有ベクトルＵo、Ｕoを導出する際に求まった固有値Λoから以下のような式で求まる行列から自己相関行列Ｒを計算する。
【００８１】
【数１６】
0004654347.tif 000017
【００８２】
ここで、ＮはＣＨＬＡＣ特徴がnサンプル集まるまでに計算されたＣＨＬＡＣ特徴の総数である。
過去にサンプリングしたＣＨＬＡＣ特徴群は固有ベクトルＵoを用いて代表される。通常動作の部分空間Ｕoの次元数が過去にサンプリングしたＣＨＬＡＣ特徴群の代表サンプル数になる。
【００８３】
環境変動に追従するため、実施例１と同様に既存のデータであるＵoと新規追加データであるFaの重み付け比の制御を行う。これにより新規に追加されるデータFaが自己相関行列Ｒ及ぼす影響が一定以上になる。重み付け比を制御したＸの導出は例えば、下記の式で行う。
【００８４】
【数１７】
0004654347.tif 000018
式4.0中のk0は[0 1]の実数である。
【００８５】
図６はk0の制御により新規に追加する更新行列が学習データＸに及ぼす割合の様子を図示したものである。k0の導入により新規に追加する更新行列が学習データＸに及ぼす割合の下限が一定に保たれる事がわかる。
k0の値を大きくとると、新規に追加する更新行列の影響が強くなり、急激な環境変動に対しても自動追従が可能になる。逆にk0の値を小さくとると、既存のデータの重要度が増す事になり、環境変動に対する追従は緩やかなものになる。
【００８６】
工程ｄ-5では、工程ｄ-4で生成した学習データＸから主成分分析の計算に用いる自己相関行列Ｒの計算を行う。本実施例ではＲは以下の式で計算する。
【００８７】
【数１８】
0004654347.tif 000019
【００８８】
通常部分空間の更新に用いるＣＨＬＡＣ特徴群が少ない場合にこのような方式でＲを計算すると、ＣＨＬＡＣ特徴群から自己相関行列を計算するよりもＲの行列のサイズは小さくなる。
例えば、通常動作の部分空間が5次元、更新に用いるＣＨＬＡＣ特徴のサンプル数が１００サンプルだった場合にこのような方式をとった場合、自己相関行列Rは１０５×１０５の行列となり、行列サイズが小さくなる分、主成分分析の実行に要する時間は削減される。
【００８９】
工程d-6では、共有メモリ上にある自己相関行列Rを更新する。共有メモリとは別ＣＰＵと共有するデータを保存するメモリの事をさす。共有メモリの更新後、更新行列を空にする。
【００９０】
工程e-1では、異常監視を終了するか否かの判定を行う。例えば、ユーザが異常監視を終了するような処理を行った場合、異常監視を終了する。
異常監視を続行する場合は、工程a-0に戻り処理を続行する。
【００９１】
ＣＰＵ１３のフローチャートは通常動作の部分空間の更新を行うための処理である。この処理は、上記で説明した異常監視の処理とは別のプロセス上で行う。別のプロセスとは、例えばマルチコアＣＰＵにおいて別のコアで実施するような状態を指す。なお、ＣＰＵ１２のフローチャートとＣＰＵ１３のフローチャートは独立して動作するのであれば装置として問題無いため、マルチコアではない単一ＣＰＵ上でそれぞれのフローチャートを独立して動かすという手法も考えられる。
【００９２】
工程ｆ-1においては、ＣＰＵ１２上のd-4の処理によって自己相関行列Ｒが更新されたかを確認する。更新の確認方法の一例としては、通常動作の部分空間を計算するＣＰＵ１２からＣＰＵ１３に対して、実行状態(待機中、計算中、計算完了等)を通知する方法が挙げられる。
【００９３】
工程f-3では、主成分分析手法を用いて工程f-2で計算した自己相関行列Rから通常動作の部分空間を求める。
主成分分析は先に記述したとおり
【００９４】
【数１９】
0004654347.tif 000020
の固有問題を解く事で求まる。
式中のUAは主成分ベクトル（固有ベクトル）を列に並べた行列であり下記の様に表現する。
【００９５】
【数２０】
0004654347.tif 000021
uは主成分分析によって求まった固有ベクトルである。ｌは学習データＸのサンプル数である。ΛAは固有値行列を指し下記式で表現する。
【００９６】
【数２１】
0004654347.tif 000022
ここで、λは主成分分析で求まった固有ベクトルに対応する固有値である。
さらに第Ｋ固有値までの累積寄与率ηK は、以下の様な式で表す。
【００９７】
【数２２】
0004654347.tif 000023
ここでηKがある一定の値(例えばηK=0.99)になるまでK個の固有ベクトルを列にならべた行列を
【００９８】
【数２３】
0004654347.tif 000024
また、ηKがある一定の値(例えばηK=0.99)になるまでK個の固有値から求めた行列を、
【００９９】
【数２４】
0004654347.tif 000025
とした時、通常動作の部分空間を張る固有ベクトルＵnは下記の式で求まる。
【０１００】
【数２５】
0004654347.tif 000026
なお、累積寄与率ηKの最適値は監視対象や検出精度にも依存するものと考えられるので実験等により決定する。以上の計算を行うことにより、通常動作の部分空間が生成される。
【０１０１】
工程f-4では、工程f-3で求まった固有ベクトルＵnを通常動作の部分空間として共有メモリ上に保存する。
【０１０２】
工程f-5では、工程e-1と同様の異常監視の終了判定を行う。ただし、異常監視を続行する場合は工程f-1に戻るものとする。
【０１０３】
なお実施例１及び実施例２では、１台のＰＣ上にＣＰＵ１２、ＣＰＵ１３が存在する事を想定しているが、ネットワーク上に分散する２台のＰＣをそれぞれＣＰＵ１２、ＣＰＵ１３として利用するという構成も考えられる。このような構成で、自己相関行列や通常部分空間をＣＰＵ１２、ＣＰＵ１３で送受信する場合、ネットワークを介してメモリの共有を行うなどの手法がある。
さらに、実施例１及び実施例２においてＣＰＵ１３上で動作するフローチャートは異常監視を終了するまでループし続けているが、通常動作の更新を行う際に、ＣＰＵ１２から呼び出されるサブルーチンとして扱っても良い。
【０１０４】
実施例１及び実施例２では更新行列に対する重みの下限値を固定値で与えていたが、異常の頻度によって適応的に求めても構わない。例えば、過去一定期間の異常の頻度を求めて、異常の頻度が大きかった場合、更新行列に対する重みの下限値を大きく設定し、異常の頻度が小さかった場合更新行列に対する重みの下限値を小さく設定する。
【産業上の利用可能性】
【０１０５】
本発明を利用するメリットとして、既存システムと比較して導入が容易な点が上げられる。既存のオフライン型の監視システムは事前に通常動作を学習する必要があり、また、環境変動を考慮して通常動作映像を用意する必要があり、導入時及びセットアップ等に膨大なコストと時間を費やす必要があった。一方、従来のオンライン型の監視システムでも、明示的な環境変動への追従設定が困難なため環境変動に追従しきれず学習を一からやり直す必要があり、オフライン型の監視システムと同様に設置コストが飛躍的に増大するケースがあった。これに対して本発明により、短い更新間隔かつ高い計算精度で通常動作の更新が可能なオンライン学習型の異常監視システムが実現でき、製品の導入時のコスト及びセットアップ等に費やす時間を大幅に削減する事が可能となる。
本発明の具体的な利用方法として、マンションエントランスや工場の敷地内の様に定義すべき通常動作が多く、環境の変動が激しい場所への導入が考えられる。
【図面の簡単な説明】
【０１０６】
【図１】本発明と従来手法の通常動作の部分空間の更新方法の比較図である。
【図２】本発明による異常監視システムを示す構成図である。
【図３】本発明による第１の異常監視装置の動作を示す概略図である。
【図４】図３の本発明による第１の異常監視装置の動作を示すフローチャート図である。
【図５】本発明による異常監視装置のＣＨＬＡＣデータを時系列に並べた列に時間窓を設定した図である。
【図６】新規に追加する更新行列が自己相関行列に及ぼす割合の様子を示す図示である。
【図７】本発明による第２の異常監視装置の動作を示す概略図である。
【図８】図７の本発明による第２の異常監視装置の動作を示すフローチャート図である。
【図９】ＣＨＬＡＣ特徴のサンプリング条件を満たすＣＨＬＡＣ特徴を示す図である。
【符号の説明】
【０１０７】
１０；カメラ
１１；ＰＣ
１２；ＣＰＵ１
１３；ＣＰＵ２
１４；共有メモリ
１５；キーボード
１６；マウス
１７；モニタ
【図１】
0004654347.tif 000027
【図２】
0004654347.tif 000028
【図３】
0004654347.tif 000029
【図４】
0004654347.tif 000030
【図５】
0004654347.tif 000031
【図６】
0004654347.tif 000032
【図７】
0004654347.tif 000033
【図８】
0004654347.tif 000034
【図９】
0004654347.tif 000035