パターン識別装置、方法及びプログラム
【課題】複数のメモリを使ってインテグラルイメージの読み出しを高速に行う方法が提案されているが読み出す局所領域の形状(幅、高さ)に制約を設ける必要があるため、検出精度に影響を与える場合がある。その場合、前記高速化手法で検出精度が低下し要求検出精度を満たせずに問題となる。
【解決手段】パターン識別に使用する複数の局所領域の中でインテグラルイメージの読み出しを高速化できる形状を持つ局所領域と前記形状制約を外して検出精度を重視できる形状を持つ局所領域とに分ける。そして、これらの割合を調整し、検出精度の低下を軽減させる。
【解決手段】パターン識別に使用する複数の局所領域の中でインテグラルイメージの読み出しを高速化できる形状を持つ局所領域と前記形状制約を外して検出精度を重視できる形状を持つ局所領域とに分ける。そして、これらの割合を調整し、検出精度の低下を軽減させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、累積情報を用いた画像認識あるいは情報分析等のパターン識別装置等に関する。
【背景技術】
【0002】
情報処理分野においては、多次元配列情報を頻繁に取り扱う。その中でも、画像処理、画像認識や画像合成等に関わる一部処理や統計処理等では、特定領域範囲内における要素の総和値を求めて使用することが多い。
【0003】
コンピュータ・グラフィックスの分野では、F.C.Crowが矩形のsummed-area tableと呼ばれる、元の入力画像情報に対する累積情報の概念を提案している(非特許文献1)。この文献では、summed-area tableを入力画像と同サイズ(同要素数)の2次元配列とし、入力画像の座標(x,y)の画素値をI(x,y)としたとき、summed-area tableの同位置(x,y)の成分C(x,y)を、式(1)として定義している。
【0004】
【数1】
【0005】
すなわち図7に示すように、元の入力画像(a)において原点位置(0,0)と位置(x,y)の画素を対角とする矩形内の画素の総和値がsummed-area table(b)の位置(x,y)の値C(x,y)となる。なお、非特許文献1のオリジナルのsummed-area tableは、原点位置を画像左下として説明しているが、ここでは、後述の説明と整合させるため左上原点とする。
この定義によれば、入力画像上で水平または垂直に置かれた任意の矩形領域内のI(x,y)の和を、次の式を使ってsummed-area table上の4点を参照するだけで求めることができる。例えば図8に示すように(x0,y0)と(x1,y1)を対角とする矩形領域内の画素値の総和C(x0,y0;x1,y1)を求めるには、式(2)を用いればよい。これにより、画像上の任意の矩形領域内の値の総和を高速に求めることが可能となった。
【0006】
【数2】
【0007】
例えば、特許文献1には、累積情報の実装方法の1つが記載されている。
また、画像認識の分野では、ViolaとJonesが上記summed-area tableと同等の累積情報をIntegral Imageと呼んでいる。そのIntegral Imageを用いて複数の局所領域で特徴量を算出し、パターン識別を行っている(非特許文献2)。局所領域(local area)とは、入力画像から切り出された画像領域の部分領域を示す。
パターン識別では複数の局所領域で特徴量を算出しており、これら特徴量には予め学習によって求められたパラメータが使われる。パラメータは特徴量を算出する局所領域の位置や大きさなどの情報が含まれる。
また、パターン識別は参照する局所領域の数が非常に多く、特徴量算出のために累積情報が頻繁に読み出される。この累積情報の読み出しを高速化する手法の1つとして、累積情報を複数メモリに格納し、並列に読み出すことで高速化する技術がある。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2008−299627号公報
【非特許文献】
【0009】
【非特許文献1】F. C. Crow, “Summed-Area Tables For Texture Mapping”, Computer Graphics, 1984.
【非特許文献2】P. Viola, M. Jones, “Rapid Object Detection using a Boosted Cascade of Simple Features”, Proc. IEEE Conf. on Computer Vision and Pattern Recognition, Vol. 1, pp.511-518, December 2001.
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、上述したような技術では、読み出す局所領域の形状(幅、高さ)に制約を設けるため、検出精度に影響を与える場合がある。そして、上述した技術で示される高速化する手法で、検出精度が低下し要求検出精度を満たせない場合は問題となる。このような場合、検出精度の低下を軽減できる手段が望まれる。
【課題を解決するための手段】
【0011】
本発明は、データの累積情報を所定の規則に従って記憶手段に書き込む手段と、複数の前記累積情報を逐次または並列に読み出す読み出し手段と、逐次的に読み出すか或いは並列に読み出すかを指示する指示手段と、前記複数の累積情報を用いて前記データの局所領域の特徴量を算出する手段と、局所領域の特徴量を複数用いて所定のパターンを識別する手段とを備える。
【発明の効果】
【0012】
本発明によれば、パターン識別に使用する複数の局所領域を、高速化できる形状を持つ局所領域と形状制約を外して検出精度を重視した局所領域とに分けることができる。したがって、これらの割合を調整することで、検出精度の低下を軽減することができる。
【図面の簡単な説明】
【0013】
【図1】実施例1に係るパターン識別装置の構成を示すブロック図である。
【図2】実施例1に係る全体処理のフローチャートである。
【図3】実施例1に係るパターン識別処理のフローチャートである。
【図4】実施例1に係るメモリへの分配を説明する図である。
【図5】実施例1に係る局所領域と読み出し座標を説明する図である。
【図6】実施例1に係る読み出し方を説明するタイミングチャートである。
【図7】入力画像情報に対する累積画像情報の生成方法を説明する図である。
【図8】総和算出のため累積画像情報から読み出す座標を説明する図である。
【図9】処理ウィンドウを説明する図である。
【図10】実施例2に係るパターン識別装置の構成を示すブロック図である。
【図11】実施例2に係るパラメータ変換処理のフローチャートである。
【図12】実施例3に係る一次元累積情報のメモリへの分配を説明する図である。
【図13】実施例4に係る三次元累積情報と局所空間を説明する図である。
【図14】検出対象データのフィルタ出力ヒストグラムと非検出対象データのフィルタ出力ヒストグラムを示す図である。
【発明を実施するための形態】
【0014】
以下、本発明を実施するための実施例について、図面を用いて説明する。なお、本実施例においては、従来技術で説明したSummed-area tableあるいはIntegral Imageのような、二次元配列の情報を累積画像情報と呼ぶ。また、二次元配列の画像情報(RGB画像やGrayscale画像のような画像情報だけでなく一次微分フィルタをかけた画像など、加工された画像情報も含む)を入力画像情報と呼ぶ。
【実施例1】
【0015】
まず、本発明に係る実施例としてのパターン識別装置の構成と処理フローチャートについて説明する。累積画像情報の逐次読み出し、並列読み出しは処理フローチャートの中で説明する。その後、学習について説明する。
図1は、実施例1のパターン識別装置の構成を示すブロック図である。
101は、CPU(Central Processing Unit)であって、バス105を介して接続される各部を制御する。102は入力画像情報を入力するデータ入力部であって、処理対象となる入力画像情報を装置内に取り込む。データ入力部102は、例えばCCD(Charge Coupled Device)イメージセンサなどの画像センサによって構成されていてもよく、ネットワーク等所定の通信経路を持って外部装置から処理したいデータを受信するI/F装置であってもよい。104はバス105に接続される外部メモリであって、ROM(Read Only Memory)やRAM(Random Access Memory)あるいはHDD(Hard Disk Drive)等のストレージ装置で構成されている。
【0016】
外部メモリ104は、CPU101が動作するためのプログラムコードを記憶したり、各種処理を行う上での作業領域として用いられたりする。また、必要に応じて、入力画像情報やパターン識別に使用する各種情報を保持するための領域としても用いられる。103はDMA(direct memory access)コントローラ(以下、DMAC)である。DMAC103は、CPU101が設定して動作指令することにより、データ入力部102、外部メモリ104、パターン識別部107に所定サイズのデータ転送を自立的に連続で行うことが可能である。指令された転送動作が完了すると、バス105を介して割り込み信号をCPU101に通知する。
【0017】
107はパターン識別部であって、DMAC103からバス105を介して送られてくる入力画像情報をパターン識別処理する。パターン識別処理は入力画像情報が所定の検出パターン(例えば顔や人体の立像など)か否かを判定し、検出位置、検出形状、尤度などの検出情報を出力する。検出情報はバス105を介して外部メモリ104に書き込まれる。
パターン識別部107は、バスインタフェース111、累積画像情報生成部112、分配書き込み処理部113、メモリアクセス制御部114、メモリ115〜118、読み出し動作指示部130を有している。また、パターン識別部107は、識別処理制御部119、辞書記憶部120、特徴量算出部121、判定処理部122、処理ウィンドウ管理部123などを有している。本実施例のメモリ115〜119はシングルポート型のメモリを使用する。ただし、デュアルポート型のメモリや他の多ポート型のメモリで構成しても構わない。
【0018】
次に、図1のパターン識別装置の詳細と全体の処理の流れを、図2のフローチャートを使って説明する。
実施例1のパターン識別装置は、ユーザの操作や不図示の外部装置からの処理開始トリガによって、まずデータ入力処理ステップS201を実行する。
ステップS201では最初に、CPU101の指示によってデータ入力部102が入力画像情報を受信し、バス105を介して外部メモリ104に蓄積する。次に、外部メモリ104に蓄積された入力画像情報をDMAC103がパターン識別部107に転送する。パターン識別部107はバス105を介して転送されてくる入力画像情報をバスインタフェース111で受け、累積画像情報生成部112に転送する。本実施例では入力画像情報は画像左上の画素から画素単位でラスタ順に入力されるとする。
【0019】
次に、ステップS202では累積画像情報生成処理を行う。
累積画像情報生成部112は、ラスタ順で送られる入力画像情報を累積処理し、累積画像情報を生成する。累積画像情報は入力画像情報の画像左上の画素を原点として画素値を累積し、累積結果を順次、分配書き込み処理部113に転送する。累積処理の詳細については従来技術で説明した通りであり、その説明は省略する。
次に、ステップS203では累積画像情報の分配書き込み処理を行う。
分配書き込み処理部113は、まずメモリに対して書き込みを行ってよいか処理ウィンドウ管理部123に問い合わせる。処理ウィンドウ管理部123は、分配書き込み処理部113からのメモリの書き込みと識別処理制御部119からの読み出しの排他制御を管理している。
【0020】
処理ウィンドウとはパターン識別処理が処理を行う単位である。図9は、処理ウィンドウを説明する図である。900は入力画像情報であり、901は1つの処理ウィンドウを示し、処理ウィンドウ901の画像領域がパターン識別処理を行う1単位である。そして、処理ウィンドウ901に対してパターン識別処理を行い、この処理ウィンドウ901に所定の検出パターンが存在するかどうかを判定する。処理ウィンドウは、入力画像情報900の左上の処理ウィンドウ901から順に右方向に移動し、それぞれの位置でパターン識別処理をする。右端に達したら左端にもどって下方向に移動する。以上の移動を繰り返し右下位置まで順に移動させる。
【0021】
分配書き込み処理部113は、処理ウィンドウ管理部123から所定個数の書き込み許可を受ける。そして、分配書き込み処理部113は、累積画像情報の画素単位で書き込み先のメモリ番号(メモリ115〜118)とアドレスを決定し、メモリアクセス制御部114に書き込みを指示する。メモリアクセス制御部114は指示されたメモリ番号とアドレスに従ってメモリ115〜118に累積画像情報を格納する。分配書き込みの詳細は特許文献1などにも開示されている。
【0022】
本実施例は、図4に示すように累積画像情報400を分配して4つのメモリ115〜118に格納するものである。累積画像情報400で示される模様分けされた矩形1つ1つを画素とする。(0,0),(1,0),…,(3,3)と示されているのは左上を原点(0,0)とする各画素の座標を示している。累積画像情報は分配書き込み処理部113によって座標位置で格納先のメモリ番号が決定されメモリに格納される。図4で示すメモリ115にはx方向が偶数かつy方向が偶数の座標位置の画素が格納される。また、メモリ116にはx方向が奇数かつy方向が偶数の座標位置の画素が格納される。また、メモリ117にはx方向が偶数かつy方向が奇数の座標位置の画素が格納される。また、メモリ118にはx方向が奇数かつy方向が奇数の座標位置の画素が格納される。
分配書き込み処理部113は所定個数の書き込みが終了すると処理ウィンドウ管理部123に書き込み終了を通知する。
【0023】
次に、ステップS204でパターン識別処理を行う。パターン識別処理は従来技術で説明したような複数の弱判別器で判定を行う。弱判別器を使った処理方法はいくつかあるが、ここではある処理ウィンドウにおいて局所領域の総和を算出し、その算出結果を用いて弱判別器で判定する処理を複数回繰り返す。以下、パターン識別処理の詳細は図3のフローチャートを使って説明する。
【0024】
まず、パターン識別処理では、ステップS301で処理ウィンドウを要求する。
識別処理制御部119は、処理ウィンドウ管理部123に対して処理対象となる処理ウィンドウを要求する。処理ウィンドウ分のデータがメモリ115〜118に準備できたら次のステップS302に移る。
次に、ステップS302では、辞書データの読み込み処理を行う。
識別処理制御部119は、辞書記憶部120に格納されている辞書データをもとに識別処理を開始する。辞書データは予め学習によって得られたパラメータ群である。学習についての詳細は後述する。辞書データには累積画像情報から特徴量を算出する局所領域の位置や形状、判定処理の係数や閾値などのパラメータが格納されている。
【0025】
次に、ステップS303では、特徴量パラメータの送信処理を行う。
識別処理制御部119は、辞書データのパラメータから局所領域の位置や形状情報を読み出し動作指示部130に転送する。また、一方で、識別処理制御部119は特徴量算出部121、判定処理部122で使用するパラメータ(係数、閾値など)も辞書データから取り出して特徴量算出部121、判定処理部122に設定する。
【0026】
次に、読み出し動作指示部130は、転送された情報から4頂点分のデータの読み方を決め、メモリ番号とアドレスを算出する。図5、図6を使って4頂点分のデータの読み方について説明する。
図5では累積画像情報400から読み出す4つの局所領域500,510,520,530が示されている。各局所領域は幅、高さが偶数、奇数の組み合わせで分けられている。累積画像情報400は、図4同様、模様分けされた矩形1つ1つが画素を示し、模様は格納先メモリを表す。図6は各メモリ115〜118へのリードアクセスのタイミングチャートを示している。図6の横軸は時間である。
【0027】
局所領域500の4頂点501〜504は、図5(a)から4つのメモリに分かれていることがわかる。これは図6のタイミングチャートのread601〜604に示すように各メモリから同時に読み出せるため高速であることがわかる。ここで説明するread601は頂点501、read602は頂点502、read603は頂点503、read604は頂点504と対応している。
また、局所領域510の4頂点511〜514は、図5(b)から1つのメモリに集中していることがわかる。これはread611〜614で示すようにシーケンシャルに並べられて逐次読み出しになることから局所領域500に比べ4倍の時間を要することがわかる。
また、局所領域520の4頂点521〜524は、図5(c)から2頂点521,522が1つのメモリ、残り2頂点523,524が別の1つのメモリであることがわかる。これはread621〜624に示すように部分的に同時読み出しができているが、局所領域500に比べ2倍の時間を要していることがわかる。ここで、read621は頂点521、read622は頂点522、read623は頂点523、read624は頂点524と対応している。
また、局所領域530の4頂点531〜534は、図5(d)から2頂点531、533が1つのメモリ、残り2頂点532,534が別の1つのメモリであることがわかる。これはread631〜634に示すように部分的に同時読み出しができているが、局所領域500に比べ2倍の時間を要していることがわかる。ここで、read631は頂点531、read632は頂点532、read633は頂点533、read634は頂点534と対応している。
【0028】
読み出し動作指示部130は、局所領域の幅、高さが偶数か奇数かで上記の読み出し方か1つを決定し、逐次的な読み出しか、並列的な読み出しかを実行させる。
読み出し動作指示部130は、他にメモリ番号とアドレスを算出する。メモリ番号とアドレスは分配書き込み処理部113で格納した規則に従って算出する。
読み出し動作指示部130は、決定した読み出し方とメモリ番号とアドレスでメモリアクセス制御部114に指示する。
本実施例では読み出し動作指示部130で局所領域の形状を使って読み出し方を決定しているが、予め辞書データにどの読み出し方で読み出すかが埋め込まれていてもよい。この場合、読み出し動作指示部130は決定処理を行わないが本発明を限定するものではない。
【0029】
次に、ステップS304では累積画像情報の読み出し処理を行う。
メモリアクセス制御部114は、指示された読み出し方でメモリ番号とアドレスに対応するメモリからデータを読み出して、特徴量算出部121に送る。
次に、ステップS305では特徴量を算出する処理を行う。
特徴量算出部121は、読み出した4頂点の値から総和値を算出し、ステップS303で設定されたパラメータを使用して特徴量を算出する。そして、特徴量の算出結果は判定処理部122に送られる。
次に、ステップS306では結果判定の処理を行う。
判定処理部122は、特徴量の算出結果とステップS303で設定されたパラメータとを使用して判定を行う。設定されるパラメータは例えば閾値で特徴量の算出結果がその閾値よりも高ければ所定の検出パターンである(以下、True判定)、閾値よりも低ければ所定の検出パターンでない(以下、False判定)という判定がされる。True判定の場合、判定結果は、識別処理制御部119に送られ、ステップS307に移る。一方、False判定の場合、判定が確定(以下、False確定)し、ステップS308に移る。
【0030】
次に、ステップS307では全局所領域の識別が終了したかチェックする。
識別処理制御部119は判定結果がTrue判定であればステップS302に戻り次の局所領域用の辞書データを読み込み、ステップS302からステップS306の処理を所定の局所領域数分繰り返し行う。所定の局所領域全てでTrue判定が得られたら、所定の検出パターンであることが確定(以下、True確定)し、ステップS308に移る。
【0031】
次に、ステップS308では処理ウィンドウの終了通知を行う。
識別処理制御部119は処理ウィンドウ管理部123に対して処理が終了したことを通知する。通知を受けた処理ウィンドウ管理部123は次の処理ウィンドウを準備する処理を開始する。
識別処理制御部119は処理対象となった処理ウィンドウの最終結果がTrue確定の場合、識別処理制御部119はその処理ウィンドウの位置情報をバスインタフェース111を介して外部メモリ104に書き出す。一方、False確定の場合は、判定結果は書き出さない。
以上のパターン識別処理が入力画像情報の全処理ウィンドウに渡って処理が繰り返され、終了した後、ステップS205に移る。
次に、ステップS205では後処理を行う。
識別処理制御部119は、全処理ウィンドウのパターン識別処理が終了したことをCPU101に対して通知する。
【0032】
次に、辞書記憶部120に格納する辞書データの学習について説明する。
学習は、パターン識別処理において画像中に含まれるものが検出パターンかどうか識別するための基準を決定する手法として広く使用されている。本実施例では学習によって決定されたパラメータを辞書データと呼んでいる。学習は、所定の検出パターンを含むことがわかっている複数のサンプル画像と所定の検出パターンを含まないことがわかっている複数のサンプル画像の各々から所定のパラメータを導出し、記録しておくものである。この所定のパラメータの中には局所領域の位置、形状の導出が含まれている。
【0033】
次に、本発明に関する学習処理に関して詳細を説明する。
学習に先立ち、学習に必要なデータ群は用意されているものとする。例えば、画像中から特定の物体を検出する場合、検出対象を含む複数の画像データと検出対象を含まない画像データを複数用意し、それぞれ検出対象データ・非検出対象データとしてラベル付けしておく。
以下、Adaboostアルゴリズムに従って弱判別器を学習する。基本的な学習方法は非特許文献2に記載の手法と同一である。
【0034】
まず、保持する学習データから学習に使用するデータを選択する。ここでは、検出対象画像と非検出対象画像を所定の比率でランダムに選択する。
次に、各学習データに対する重み係数を初期化する。重み係数とは学習データの学習処理に対する寄与率に相当する。学習データの総数がm個の場合、全ての重み係数wt,i(t:生成する弱判別器の番号、i:学習データの番号)を以下の式(3)で初期化する。
【0035】
【数3】
【0036】
ここでは、全ての学習データに対して共通の重みを与える事になる。
次に、式(4)に従って重み係数を正規化する。
【0037】
【数4】
【0038】
以降の処理で重み係数が変更された場合、当該ステップで重み係数の総和が1になる様に正規化する。
次に、1つの弱判別器を学習する。まず、矩形フィルタ群の中から1つの矩形フィルタを選択する。矩形フィルタ群は予め定める形状の基本矩形フィルタに対してその大きさや検出ウィンドウ内の位置に応じた変形を有する複数の矩形フィルタ候補である。矩形フィルタ群は予め定める基本矩形フィルタを基準にしてその変形も含めた全ての組み合わせを用意しておく。
【0039】
次に、選択した矩形フィルタを用いて全ての学習データに対して矩形フィルタの判別性能評価を行う。まず、全ての学習データに対してそのフィルタ出力値を算出し、検出対象と非検出対象を分離する閾値を決定する。閾値の決定は矩形フィルタ出力値のヒストグラムを利用して行う。図14は検出対象データのフィルタ出力ヒストグラム1402と非検出対象データのフィルタ出力ヒストグラム1401を示す。当該ヒストグラムを使用して検出対象と非検出対象をよく分離する閾値Thを決定する。
次に決定した閾値Thを用いて全ての学習データに対する検出誤り率を算出する。式(5)は全ての学習データに対する重み付き誤り率である。
【0040】
【数5】
【0041】
ここで、hj(xi)は、選択した矩形フィルタによる判定出力であり、前記閾値Thを使用して入力対象データxiが検出対象である場合1を出力し、検出対象を含まない場合0を出力する。yiは正解ラベルであり入力画像データが検出対象であるか否かによってそれぞれ1又は0が割り当てられている。
以上の処理を全ての矩形フィルタ候補に対して演算する。
矩形フィルタ候補に対する全ての重みつき誤り率Ejの算出が終了すると、次に各矩形フィルタの形状に応じて決まる処理時間のペナルティを乗じた評価値Rjを式(6)により算出する。
【0042】
【数6】
【0043】
Ljは処理時間のペナルティの係数で、まず全並列で読み出せる条件、全て逐次読み出しとなる条件、それらの組み合わせとなる条件で係数が定義される。通常、係数は大きい順に逐次読み出し条件、組み合わせ条件、全並列で読み出しの条件の順になるように定義する。
そして、評価値Rjの小さい矩形フィルタ(即ち判別性能が高く、処理時間が短い矩形フィルタ)を弱判別器として選択する。
次に、選択した矩形フィルタのEjから式(7)により当該弱判別器に対する信頼度を算出する。
【0044】
【数7】
【0045】
次に、学習データに対する重み係数を下記演算式(8)で更新する。
【0046】
【数8】
【0047】
但し、式(8)で更新する重み係数Wt,jは正しく検出できた学習データiに付随する係数のみである。即ち正しく検出された学習データの重みが小さくなるように更新する。つまり、検出を誤った学習データに対する重みを相対的に大きくしていく。
ここまでの処理で1つの弱判別器を生成する。
以上説明した学習方法の例では、局所領域のパラメータは学習によって各サンプル画像内の局所領域が評価され、決定されている。また、その学習時の局所領域の評価の中で各局所領域に対して処理時間のペナルティが与えられることで検出精度だけでなく処理速度も評価した局所領域が選択される。
【0048】
従来の技術のように処理速度重視で全局所領域を同時読み出し可能な局所領域とすることもできるが検出精度に影響を与える場合がある。本発明はこのような場合、上記評価手法により高速化が可能な局所領域と精度を重視した局所領域を混在させる割合を調整することができる。そしてこれによって検出精度の低下を軽減することができる。
また、本実施例では4つのメモリにx方向、y方向それぞれに奇数座標、偶数座標で分配する規則を元に局所領域の形状制約は幅、高さが偶数長、奇数長である例を示した。しかしながら、分配規則は、x方向、y方向の分割数によって変わる場合がある。この場合、読み出し動作指示部130での読み出し方の判定はより複雑になるが本発明を限定するものではない。本発明は速度重視と精度重視の2つの特徴を持つ局所領域を混在させ、その割合を調整できるものである。
【実施例2】
【0049】
実施例1では予め学習によって形状制約の有無を選択的に行って2つの特徴を持つ局所領域を混在させるようにしたが、本発明はこれに限るわけではない。
実施例2では形状制約無しで学習された辞書データを使って、検出精度の低下を軽減する方法について説明する。実施例2では実施例1と説明が重なる部分があるため差分のみ説明する。
実施例2のパターン識別装置の構成を図10に示す。構成上の差分はパラメータ変換部1001が識別処理制御部119と読み出し動作指示部130の間に追加されていることである。
【0050】
パラメータ変換部1001は、識別処理制御部119から指示される局所領域の4頂点分のメモリ読み出しにおいて、局所領域の形状である幅と高さが奇数長になるように形状パラメータを変換する。例えば幅、高さが偶数長であった場合、それぞれから−1することで奇数長にする。
本実施例では形状パラメータを変換するか否かを指定する情報(以下、変換フラグ)は予め所定の局所領域に決められており、その情報は辞書データに入っているとする。
所定の局所領域は、複数の局所領域群の候補を定義した後、全候補を評価して決められる。評価は、実際のユースケース等を想定した複数の画像に対して検出精度と処理時間を計測して行う。
【0051】
次に、上記所定の局所領域の決め方と評価の具体例を説明する。1つずつ特徴量を算出処理するパターン識別において、まず特徴量の算出処理順で並べた局所領域群に1つの境界を設ける。その境界で分けられた局所領域群は一方が形状パラメータを変換する局所領域群、もう一方が形状パラメータを変換しない局所領域群とする。そして、これらの局所領域群を使って複数の画像に対してパターン識別処理を行い、その検出精度と処理時間を計測する。そして、次に境界を移動させて局所領域群を決めて上記評価を繰り返す。最後に要求検出精度を満たしたものの中から処理時間の最も短いものを選択する。
【0052】
次に、形状パラメータの変換処理を図11のフローチャートに示す。
まず、ステップS1101では、パラメータ変換部1001は識別処理制御部119から指示される局所領域の左上座標と幅、高さを取得する。
次に、ステップS1102では、パラメータ変換部1001は変換フラグのチェックと局所領域の幅が偶数長かどうかをチェックする。もし、変換フラグが1でかつ偶数長の場合はステップS1103に移り、それ以外はステップS1104に移る。
次に、ステップS1103では、パラメータ変換部1001は局所領域幅計算を行い奇数長にする。ここで指示される局所領域の幅をla_w、変換後の局所領域の幅をla_widthとすると式(9)のように表される。
【0053】
【数9】
【0054】
次に、ステップS1104では、パラメータ変換部1001は局所領域の高さが偶数長かどうかをチェックする。もし、変換フラグが1でかつ偶数長の場合はステップS1105に移り、それ以外はステップS1106に移る。
次に、ステップS1105では、パラメータ変換部1001は局所領域高さ計算を行い奇数長にする。ここで指示される局所領域の高さをla_h、変換後の局所領域の高さをla_heightとすると式(10)のように表される。
【0055】
【数10】
【0056】
次に、ステップS1106では、パラメータ変換部1001は変換後の局所領域情報を読み出し動作指示部130に転送する。
以上、パラメータ変換部1001の処理によって、同時読み出しできるように変換された局所領域と変換しないで読み出す精度重視の局所領域を混在させることができる。
これにより速度重視の局所領域と精度重視の局所領域を混在させる割合を調整することで検出精度の低下を軽減することができる。
【0057】
以上、実施例2では識別処理中にパラメータ変換部1001で変換を行った例を説明したが、同様の変換処理を予め辞書データに対して行っておき、変換済みの辞書データを使ってパターン識別処理を行う方法もある。この場合、実施例1の図1の構成となる。
また、実施例2では他に変換式(9)、(10)の一方を成り立たせるようにして、幅と高さに対して別々に変換指示を与える方法でも構わない。
【0058】
また、変換式(9)、(10)は近傍座標にずらすための一例であり、辞書データの局所領域の幅、高さに+1する計算であっても構わない。重要なのは局所領域の形状を奇数長に変換することである。
また、実施例2では元々の辞書データのパラメータから、読み出し座標位置をずらすことになるので局所領域の形状の変換前と変換後の総和値に差が出てしまう。この対処方法として、局所領域の形状の変換前と変換後の面積比を変換後の総和値S2dに乗じてS2d’として以下のような式(11)で総和値を補間してもよい。
【0059】
【数11】
【0060】
また、実施例2では変換フラグを予め辞書に入れておくことで説明したが、本発明はこれに限定するものではない。例えば形状パラメータを変換するか否かを動作モードとして与えられる方法がある。この動作モードは形状パラメータを変換して高速に動作させる高速モードと形状パラメータを変換しないで検出精度を重視する精度重視モードが定義される。そして、この動作モードは変換フラグと同義で動作モードが1なら変換フラグを1にして形状パラメータの変換を行い、動作モードが0なら変換フラグを0にして形状パラメータの変換を行わないようにする。
【0061】
また、他の方法として累積画像情報の位置に応じて形状パラメータを変換するか決める方法もある。この場合、変換フラグを累積画像情報の位置に応じて1または0にして制御する。具体的には人を検出するパターン識別装置を例に説明する。画面上、人が現れるドアや階段、エレベータの付近では検出精度を重視するために形状パラメータを変換しないように変換フラグを0にする。一方、壁など人が現れないところは変換フラグを1にして形状パラメータを変換して高速にパターン識別する方法がある。
【実施例3】
【0062】
上述した実施例1、2では累積画像情報と呼ぶ2次元配列の情報での例を説明したが、実施例3では本発明を1次元の情報に適用する方法を説明する。実施例3では、1次元配列のデータを入力とし、その入力データを一次元入力情報と呼ぶ。また、一次元入力情報を累積した情報を一次元累積情報と呼ぶ。
【0063】
実施例3での一次元配列の累積情報は図12に示すようになる。図12ではデータ1201を開始点として、x方向にデータの値を累積させたものを一次元累積情報1200としている。データ中の括弧内の数値はx方向の座標を示す。
実施例3のパターン識別装置の構成は実施例1とほぼ同じで、実施例3との差分はメモリ数が2つであることである。
【0064】
実施例1で説明した局所領域に相当するものはここでは直線の区分1220(以下、一次元累積情報では局所区分(local piecewise)と呼ぶ)となる。局所区分は奇数長の場合、2つのメモリから同時に読み出すことができるが、偶数長の場合、1つのメモリから逐次読み出す必要がある。実施例3においても実施例1、2と同様に形状制約を与える局所区分と形状制約を与えない局所区分を混在させて調整することで検出精度の低下を軽減させる。
【0065】
混在させる方法としては実施例1と同様に予め学習で形状制約の有無を選択的に行っておく方法と実施例2と同様に実行時にパラメータ変換する方法がある。また、実施例3では説明を簡単化するため偶数長、奇数長の場合を説明したが、実施例1の最後で説明したのと同様に本発明を限定するものではない。
【実施例4】
【0066】
実施例4では本発明を3次元の情報に適用した例で説明する。
実施例4では3次元配列のデータを入力とし、その入力データを三次元入力情報と呼ぶ。三次元入力情報とは例えば動画情報であって、二次元画像に時間軸の一次元が加わり三次元入力情報となる。また、三次元入力情報を累積した情報を三次元累積情報と呼ぶ。
【0067】
実施例4での三次元配列の累積情報は図13に示すようになる。図13では三次元入力情報1300の原点Oを開始点として、x方向、y方向、t方向に値を累積させたものを三次元累積情報1310としている。例えば点1302の座標(x,y,t)の三次元累積情報1310での値は原点Oと点1302を対角とする直方体1301に含まれるデータの合計値となる。本実施例では直方体を動画情報で考え、x方向を幅、y方向を高さ、t方向を時間で定義する。ここで、t方向は時間軸で定義したが、もし立体空間であればz方向として奥行きと定義してもよい。
【0068】
実施例4のパターン識別装置の構成は実施例1とほぼ同じで、実施例4との差分はメモリ数のみで、メモリを8つ使用する。
実施例1で説明した局所領域に相当するものは、ここでは直方体の空間1312(以下、三次元累積情報では局所空間(local space)と呼ぶ)となる。局所空間はx方向、y方向、t方向がそれぞれ偶数長か奇数長かで同時に読み出せるメモリが決まる。実施例4においても実施例1、2と同様に形状制約を与える局所空間と形状制約を与えない局所空間を混在させて調整することで検出精度の低下を軽減させる。実施例4では実施例1、2と比べて読み出し方の種類が多いだけで基本的な考え方は実施例1、2と同様である。
【0069】
混在させる方法としては実施例1と同様に予め学習で形状制約の有無を選択的に行っておく方法と実施例2と同様に実行時にパラメータ変換する方法がある。
また、実施例3では説明を簡単化するため偶数長、奇数長の場合を説明したが、実施例1の最後で説明したのと同様に本発明を限定するものではない。
【0070】
以上の実施例1〜実施例4では、一次元から三次元について説明した。さらに、三次元を超える多次元入力情報に対する累積情報であっても、同様に超直方体で考えれば、本発明を適用可能であるのは明らかである。
以上の実施例ではパターン識別処理に弱判別器を使った例で説明したが本発明はこれに限らない。実際、パターン識別処理には様々なものが提案されており、実装も多岐にわたっている。しかし、これらパターン識別処理において累積情報を使用し特徴量を算出するものはいずれも本発明が適用できることは明らかである。
また、本発明はコンピュータ内のプログラムによっても実現できることは当然である。
【符号の説明】
【0071】
101:CPU 102:データ入力部 103:DMAC 104:外部メモリ 105:バス 107:パターン識別部 111:インタフェース 112:累積画像情報生成部 113:分配書き込み処理部 114:メモリアクセス制御部 115〜118:メモリ 119:識別処理制御部 120:辞書記憶部 121:特徴量算出部 122:判定処理部 130:読み出し動作指示部 1001: パラメータ変換部
【技術分野】
【0001】
本発明は、累積情報を用いた画像認識あるいは情報分析等のパターン識別装置等に関する。
【背景技術】
【0002】
情報処理分野においては、多次元配列情報を頻繁に取り扱う。その中でも、画像処理、画像認識や画像合成等に関わる一部処理や統計処理等では、特定領域範囲内における要素の総和値を求めて使用することが多い。
【0003】
コンピュータ・グラフィックスの分野では、F.C.Crowが矩形のsummed-area tableと呼ばれる、元の入力画像情報に対する累積情報の概念を提案している(非特許文献1)。この文献では、summed-area tableを入力画像と同サイズ(同要素数)の2次元配列とし、入力画像の座標(x,y)の画素値をI(x,y)としたとき、summed-area tableの同位置(x,y)の成分C(x,y)を、式(1)として定義している。
【0004】
【数1】
【0005】
すなわち図7に示すように、元の入力画像(a)において原点位置(0,0)と位置(x,y)の画素を対角とする矩形内の画素の総和値がsummed-area table(b)の位置(x,y)の値C(x,y)となる。なお、非特許文献1のオリジナルのsummed-area tableは、原点位置を画像左下として説明しているが、ここでは、後述の説明と整合させるため左上原点とする。
この定義によれば、入力画像上で水平または垂直に置かれた任意の矩形領域内のI(x,y)の和を、次の式を使ってsummed-area table上の4点を参照するだけで求めることができる。例えば図8に示すように(x0,y0)と(x1,y1)を対角とする矩形領域内の画素値の総和C(x0,y0;x1,y1)を求めるには、式(2)を用いればよい。これにより、画像上の任意の矩形領域内の値の総和を高速に求めることが可能となった。
【0006】
【数2】
【0007】
例えば、特許文献1には、累積情報の実装方法の1つが記載されている。
また、画像認識の分野では、ViolaとJonesが上記summed-area tableと同等の累積情報をIntegral Imageと呼んでいる。そのIntegral Imageを用いて複数の局所領域で特徴量を算出し、パターン識別を行っている(非特許文献2)。局所領域(local area)とは、入力画像から切り出された画像領域の部分領域を示す。
パターン識別では複数の局所領域で特徴量を算出しており、これら特徴量には予め学習によって求められたパラメータが使われる。パラメータは特徴量を算出する局所領域の位置や大きさなどの情報が含まれる。
また、パターン識別は参照する局所領域の数が非常に多く、特徴量算出のために累積情報が頻繁に読み出される。この累積情報の読み出しを高速化する手法の1つとして、累積情報を複数メモリに格納し、並列に読み出すことで高速化する技術がある。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2008−299627号公報
【非特許文献】
【0009】
【非特許文献1】F. C. Crow, “Summed-Area Tables For Texture Mapping”, Computer Graphics, 1984.
【非特許文献2】P. Viola, M. Jones, “Rapid Object Detection using a Boosted Cascade of Simple Features”, Proc. IEEE Conf. on Computer Vision and Pattern Recognition, Vol. 1, pp.511-518, December 2001.
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、上述したような技術では、読み出す局所領域の形状(幅、高さ)に制約を設けるため、検出精度に影響を与える場合がある。そして、上述した技術で示される高速化する手法で、検出精度が低下し要求検出精度を満たせない場合は問題となる。このような場合、検出精度の低下を軽減できる手段が望まれる。
【課題を解決するための手段】
【0011】
本発明は、データの累積情報を所定の規則に従って記憶手段に書き込む手段と、複数の前記累積情報を逐次または並列に読み出す読み出し手段と、逐次的に読み出すか或いは並列に読み出すかを指示する指示手段と、前記複数の累積情報を用いて前記データの局所領域の特徴量を算出する手段と、局所領域の特徴量を複数用いて所定のパターンを識別する手段とを備える。
【発明の効果】
【0012】
本発明によれば、パターン識別に使用する複数の局所領域を、高速化できる形状を持つ局所領域と形状制約を外して検出精度を重視した局所領域とに分けることができる。したがって、これらの割合を調整することで、検出精度の低下を軽減することができる。
【図面の簡単な説明】
【0013】
【図1】実施例1に係るパターン識別装置の構成を示すブロック図である。
【図2】実施例1に係る全体処理のフローチャートである。
【図3】実施例1に係るパターン識別処理のフローチャートである。
【図4】実施例1に係るメモリへの分配を説明する図である。
【図5】実施例1に係る局所領域と読み出し座標を説明する図である。
【図6】実施例1に係る読み出し方を説明するタイミングチャートである。
【図7】入力画像情報に対する累積画像情報の生成方法を説明する図である。
【図8】総和算出のため累積画像情報から読み出す座標を説明する図である。
【図9】処理ウィンドウを説明する図である。
【図10】実施例2に係るパターン識別装置の構成を示すブロック図である。
【図11】実施例2に係るパラメータ変換処理のフローチャートである。
【図12】実施例3に係る一次元累積情報のメモリへの分配を説明する図である。
【図13】実施例4に係る三次元累積情報と局所空間を説明する図である。
【図14】検出対象データのフィルタ出力ヒストグラムと非検出対象データのフィルタ出力ヒストグラムを示す図である。
【発明を実施するための形態】
【0014】
以下、本発明を実施するための実施例について、図面を用いて説明する。なお、本実施例においては、従来技術で説明したSummed-area tableあるいはIntegral Imageのような、二次元配列の情報を累積画像情報と呼ぶ。また、二次元配列の画像情報(RGB画像やGrayscale画像のような画像情報だけでなく一次微分フィルタをかけた画像など、加工された画像情報も含む)を入力画像情報と呼ぶ。
【実施例1】
【0015】
まず、本発明に係る実施例としてのパターン識別装置の構成と処理フローチャートについて説明する。累積画像情報の逐次読み出し、並列読み出しは処理フローチャートの中で説明する。その後、学習について説明する。
図1は、実施例1のパターン識別装置の構成を示すブロック図である。
101は、CPU(Central Processing Unit)であって、バス105を介して接続される各部を制御する。102は入力画像情報を入力するデータ入力部であって、処理対象となる入力画像情報を装置内に取り込む。データ入力部102は、例えばCCD(Charge Coupled Device)イメージセンサなどの画像センサによって構成されていてもよく、ネットワーク等所定の通信経路を持って外部装置から処理したいデータを受信するI/F装置であってもよい。104はバス105に接続される外部メモリであって、ROM(Read Only Memory)やRAM(Random Access Memory)あるいはHDD(Hard Disk Drive)等のストレージ装置で構成されている。
【0016】
外部メモリ104は、CPU101が動作するためのプログラムコードを記憶したり、各種処理を行う上での作業領域として用いられたりする。また、必要に応じて、入力画像情報やパターン識別に使用する各種情報を保持するための領域としても用いられる。103はDMA(direct memory access)コントローラ(以下、DMAC)である。DMAC103は、CPU101が設定して動作指令することにより、データ入力部102、外部メモリ104、パターン識別部107に所定サイズのデータ転送を自立的に連続で行うことが可能である。指令された転送動作が完了すると、バス105を介して割り込み信号をCPU101に通知する。
【0017】
107はパターン識別部であって、DMAC103からバス105を介して送られてくる入力画像情報をパターン識別処理する。パターン識別処理は入力画像情報が所定の検出パターン(例えば顔や人体の立像など)か否かを判定し、検出位置、検出形状、尤度などの検出情報を出力する。検出情報はバス105を介して外部メモリ104に書き込まれる。
パターン識別部107は、バスインタフェース111、累積画像情報生成部112、分配書き込み処理部113、メモリアクセス制御部114、メモリ115〜118、読み出し動作指示部130を有している。また、パターン識別部107は、識別処理制御部119、辞書記憶部120、特徴量算出部121、判定処理部122、処理ウィンドウ管理部123などを有している。本実施例のメモリ115〜119はシングルポート型のメモリを使用する。ただし、デュアルポート型のメモリや他の多ポート型のメモリで構成しても構わない。
【0018】
次に、図1のパターン識別装置の詳細と全体の処理の流れを、図2のフローチャートを使って説明する。
実施例1のパターン識別装置は、ユーザの操作や不図示の外部装置からの処理開始トリガによって、まずデータ入力処理ステップS201を実行する。
ステップS201では最初に、CPU101の指示によってデータ入力部102が入力画像情報を受信し、バス105を介して外部メモリ104に蓄積する。次に、外部メモリ104に蓄積された入力画像情報をDMAC103がパターン識別部107に転送する。パターン識別部107はバス105を介して転送されてくる入力画像情報をバスインタフェース111で受け、累積画像情報生成部112に転送する。本実施例では入力画像情報は画像左上の画素から画素単位でラスタ順に入力されるとする。
【0019】
次に、ステップS202では累積画像情報生成処理を行う。
累積画像情報生成部112は、ラスタ順で送られる入力画像情報を累積処理し、累積画像情報を生成する。累積画像情報は入力画像情報の画像左上の画素を原点として画素値を累積し、累積結果を順次、分配書き込み処理部113に転送する。累積処理の詳細については従来技術で説明した通りであり、その説明は省略する。
次に、ステップS203では累積画像情報の分配書き込み処理を行う。
分配書き込み処理部113は、まずメモリに対して書き込みを行ってよいか処理ウィンドウ管理部123に問い合わせる。処理ウィンドウ管理部123は、分配書き込み処理部113からのメモリの書き込みと識別処理制御部119からの読み出しの排他制御を管理している。
【0020】
処理ウィンドウとはパターン識別処理が処理を行う単位である。図9は、処理ウィンドウを説明する図である。900は入力画像情報であり、901は1つの処理ウィンドウを示し、処理ウィンドウ901の画像領域がパターン識別処理を行う1単位である。そして、処理ウィンドウ901に対してパターン識別処理を行い、この処理ウィンドウ901に所定の検出パターンが存在するかどうかを判定する。処理ウィンドウは、入力画像情報900の左上の処理ウィンドウ901から順に右方向に移動し、それぞれの位置でパターン識別処理をする。右端に達したら左端にもどって下方向に移動する。以上の移動を繰り返し右下位置まで順に移動させる。
【0021】
分配書き込み処理部113は、処理ウィンドウ管理部123から所定個数の書き込み許可を受ける。そして、分配書き込み処理部113は、累積画像情報の画素単位で書き込み先のメモリ番号(メモリ115〜118)とアドレスを決定し、メモリアクセス制御部114に書き込みを指示する。メモリアクセス制御部114は指示されたメモリ番号とアドレスに従ってメモリ115〜118に累積画像情報を格納する。分配書き込みの詳細は特許文献1などにも開示されている。
【0022】
本実施例は、図4に示すように累積画像情報400を分配して4つのメモリ115〜118に格納するものである。累積画像情報400で示される模様分けされた矩形1つ1つを画素とする。(0,0),(1,0),…,(3,3)と示されているのは左上を原点(0,0)とする各画素の座標を示している。累積画像情報は分配書き込み処理部113によって座標位置で格納先のメモリ番号が決定されメモリに格納される。図4で示すメモリ115にはx方向が偶数かつy方向が偶数の座標位置の画素が格納される。また、メモリ116にはx方向が奇数かつy方向が偶数の座標位置の画素が格納される。また、メモリ117にはx方向が偶数かつy方向が奇数の座標位置の画素が格納される。また、メモリ118にはx方向が奇数かつy方向が奇数の座標位置の画素が格納される。
分配書き込み処理部113は所定個数の書き込みが終了すると処理ウィンドウ管理部123に書き込み終了を通知する。
【0023】
次に、ステップS204でパターン識別処理を行う。パターン識別処理は従来技術で説明したような複数の弱判別器で判定を行う。弱判別器を使った処理方法はいくつかあるが、ここではある処理ウィンドウにおいて局所領域の総和を算出し、その算出結果を用いて弱判別器で判定する処理を複数回繰り返す。以下、パターン識別処理の詳細は図3のフローチャートを使って説明する。
【0024】
まず、パターン識別処理では、ステップS301で処理ウィンドウを要求する。
識別処理制御部119は、処理ウィンドウ管理部123に対して処理対象となる処理ウィンドウを要求する。処理ウィンドウ分のデータがメモリ115〜118に準備できたら次のステップS302に移る。
次に、ステップS302では、辞書データの読み込み処理を行う。
識別処理制御部119は、辞書記憶部120に格納されている辞書データをもとに識別処理を開始する。辞書データは予め学習によって得られたパラメータ群である。学習についての詳細は後述する。辞書データには累積画像情報から特徴量を算出する局所領域の位置や形状、判定処理の係数や閾値などのパラメータが格納されている。
【0025】
次に、ステップS303では、特徴量パラメータの送信処理を行う。
識別処理制御部119は、辞書データのパラメータから局所領域の位置や形状情報を読み出し動作指示部130に転送する。また、一方で、識別処理制御部119は特徴量算出部121、判定処理部122で使用するパラメータ(係数、閾値など)も辞書データから取り出して特徴量算出部121、判定処理部122に設定する。
【0026】
次に、読み出し動作指示部130は、転送された情報から4頂点分のデータの読み方を決め、メモリ番号とアドレスを算出する。図5、図6を使って4頂点分のデータの読み方について説明する。
図5では累積画像情報400から読み出す4つの局所領域500,510,520,530が示されている。各局所領域は幅、高さが偶数、奇数の組み合わせで分けられている。累積画像情報400は、図4同様、模様分けされた矩形1つ1つが画素を示し、模様は格納先メモリを表す。図6は各メモリ115〜118へのリードアクセスのタイミングチャートを示している。図6の横軸は時間である。
【0027】
局所領域500の4頂点501〜504は、図5(a)から4つのメモリに分かれていることがわかる。これは図6のタイミングチャートのread601〜604に示すように各メモリから同時に読み出せるため高速であることがわかる。ここで説明するread601は頂点501、read602は頂点502、read603は頂点503、read604は頂点504と対応している。
また、局所領域510の4頂点511〜514は、図5(b)から1つのメモリに集中していることがわかる。これはread611〜614で示すようにシーケンシャルに並べられて逐次読み出しになることから局所領域500に比べ4倍の時間を要することがわかる。
また、局所領域520の4頂点521〜524は、図5(c)から2頂点521,522が1つのメモリ、残り2頂点523,524が別の1つのメモリであることがわかる。これはread621〜624に示すように部分的に同時読み出しができているが、局所領域500に比べ2倍の時間を要していることがわかる。ここで、read621は頂点521、read622は頂点522、read623は頂点523、read624は頂点524と対応している。
また、局所領域530の4頂点531〜534は、図5(d)から2頂点531、533が1つのメモリ、残り2頂点532,534が別の1つのメモリであることがわかる。これはread631〜634に示すように部分的に同時読み出しができているが、局所領域500に比べ2倍の時間を要していることがわかる。ここで、read631は頂点531、read632は頂点532、read633は頂点533、read634は頂点534と対応している。
【0028】
読み出し動作指示部130は、局所領域の幅、高さが偶数か奇数かで上記の読み出し方か1つを決定し、逐次的な読み出しか、並列的な読み出しかを実行させる。
読み出し動作指示部130は、他にメモリ番号とアドレスを算出する。メモリ番号とアドレスは分配書き込み処理部113で格納した規則に従って算出する。
読み出し動作指示部130は、決定した読み出し方とメモリ番号とアドレスでメモリアクセス制御部114に指示する。
本実施例では読み出し動作指示部130で局所領域の形状を使って読み出し方を決定しているが、予め辞書データにどの読み出し方で読み出すかが埋め込まれていてもよい。この場合、読み出し動作指示部130は決定処理を行わないが本発明を限定するものではない。
【0029】
次に、ステップS304では累積画像情報の読み出し処理を行う。
メモリアクセス制御部114は、指示された読み出し方でメモリ番号とアドレスに対応するメモリからデータを読み出して、特徴量算出部121に送る。
次に、ステップS305では特徴量を算出する処理を行う。
特徴量算出部121は、読み出した4頂点の値から総和値を算出し、ステップS303で設定されたパラメータを使用して特徴量を算出する。そして、特徴量の算出結果は判定処理部122に送られる。
次に、ステップS306では結果判定の処理を行う。
判定処理部122は、特徴量の算出結果とステップS303で設定されたパラメータとを使用して判定を行う。設定されるパラメータは例えば閾値で特徴量の算出結果がその閾値よりも高ければ所定の検出パターンである(以下、True判定)、閾値よりも低ければ所定の検出パターンでない(以下、False判定)という判定がされる。True判定の場合、判定結果は、識別処理制御部119に送られ、ステップS307に移る。一方、False判定の場合、判定が確定(以下、False確定)し、ステップS308に移る。
【0030】
次に、ステップS307では全局所領域の識別が終了したかチェックする。
識別処理制御部119は判定結果がTrue判定であればステップS302に戻り次の局所領域用の辞書データを読み込み、ステップS302からステップS306の処理を所定の局所領域数分繰り返し行う。所定の局所領域全てでTrue判定が得られたら、所定の検出パターンであることが確定(以下、True確定)し、ステップS308に移る。
【0031】
次に、ステップS308では処理ウィンドウの終了通知を行う。
識別処理制御部119は処理ウィンドウ管理部123に対して処理が終了したことを通知する。通知を受けた処理ウィンドウ管理部123は次の処理ウィンドウを準備する処理を開始する。
識別処理制御部119は処理対象となった処理ウィンドウの最終結果がTrue確定の場合、識別処理制御部119はその処理ウィンドウの位置情報をバスインタフェース111を介して外部メモリ104に書き出す。一方、False確定の場合は、判定結果は書き出さない。
以上のパターン識別処理が入力画像情報の全処理ウィンドウに渡って処理が繰り返され、終了した後、ステップS205に移る。
次に、ステップS205では後処理を行う。
識別処理制御部119は、全処理ウィンドウのパターン識別処理が終了したことをCPU101に対して通知する。
【0032】
次に、辞書記憶部120に格納する辞書データの学習について説明する。
学習は、パターン識別処理において画像中に含まれるものが検出パターンかどうか識別するための基準を決定する手法として広く使用されている。本実施例では学習によって決定されたパラメータを辞書データと呼んでいる。学習は、所定の検出パターンを含むことがわかっている複数のサンプル画像と所定の検出パターンを含まないことがわかっている複数のサンプル画像の各々から所定のパラメータを導出し、記録しておくものである。この所定のパラメータの中には局所領域の位置、形状の導出が含まれている。
【0033】
次に、本発明に関する学習処理に関して詳細を説明する。
学習に先立ち、学習に必要なデータ群は用意されているものとする。例えば、画像中から特定の物体を検出する場合、検出対象を含む複数の画像データと検出対象を含まない画像データを複数用意し、それぞれ検出対象データ・非検出対象データとしてラベル付けしておく。
以下、Adaboostアルゴリズムに従って弱判別器を学習する。基本的な学習方法は非特許文献2に記載の手法と同一である。
【0034】
まず、保持する学習データから学習に使用するデータを選択する。ここでは、検出対象画像と非検出対象画像を所定の比率でランダムに選択する。
次に、各学習データに対する重み係数を初期化する。重み係数とは学習データの学習処理に対する寄与率に相当する。学習データの総数がm個の場合、全ての重み係数wt,i(t:生成する弱判別器の番号、i:学習データの番号)を以下の式(3)で初期化する。
【0035】
【数3】
【0036】
ここでは、全ての学習データに対して共通の重みを与える事になる。
次に、式(4)に従って重み係数を正規化する。
【0037】
【数4】
【0038】
以降の処理で重み係数が変更された場合、当該ステップで重み係数の総和が1になる様に正規化する。
次に、1つの弱判別器を学習する。まず、矩形フィルタ群の中から1つの矩形フィルタを選択する。矩形フィルタ群は予め定める形状の基本矩形フィルタに対してその大きさや検出ウィンドウ内の位置に応じた変形を有する複数の矩形フィルタ候補である。矩形フィルタ群は予め定める基本矩形フィルタを基準にしてその変形も含めた全ての組み合わせを用意しておく。
【0039】
次に、選択した矩形フィルタを用いて全ての学習データに対して矩形フィルタの判別性能評価を行う。まず、全ての学習データに対してそのフィルタ出力値を算出し、検出対象と非検出対象を分離する閾値を決定する。閾値の決定は矩形フィルタ出力値のヒストグラムを利用して行う。図14は検出対象データのフィルタ出力ヒストグラム1402と非検出対象データのフィルタ出力ヒストグラム1401を示す。当該ヒストグラムを使用して検出対象と非検出対象をよく分離する閾値Thを決定する。
次に決定した閾値Thを用いて全ての学習データに対する検出誤り率を算出する。式(5)は全ての学習データに対する重み付き誤り率である。
【0040】
【数5】
【0041】
ここで、hj(xi)は、選択した矩形フィルタによる判定出力であり、前記閾値Thを使用して入力対象データxiが検出対象である場合1を出力し、検出対象を含まない場合0を出力する。yiは正解ラベルであり入力画像データが検出対象であるか否かによってそれぞれ1又は0が割り当てられている。
以上の処理を全ての矩形フィルタ候補に対して演算する。
矩形フィルタ候補に対する全ての重みつき誤り率Ejの算出が終了すると、次に各矩形フィルタの形状に応じて決まる処理時間のペナルティを乗じた評価値Rjを式(6)により算出する。
【0042】
【数6】
【0043】
Ljは処理時間のペナルティの係数で、まず全並列で読み出せる条件、全て逐次読み出しとなる条件、それらの組み合わせとなる条件で係数が定義される。通常、係数は大きい順に逐次読み出し条件、組み合わせ条件、全並列で読み出しの条件の順になるように定義する。
そして、評価値Rjの小さい矩形フィルタ(即ち判別性能が高く、処理時間が短い矩形フィルタ)を弱判別器として選択する。
次に、選択した矩形フィルタのEjから式(7)により当該弱判別器に対する信頼度を算出する。
【0044】
【数7】
【0045】
次に、学習データに対する重み係数を下記演算式(8)で更新する。
【0046】
【数8】
【0047】
但し、式(8)で更新する重み係数Wt,jは正しく検出できた学習データiに付随する係数のみである。即ち正しく検出された学習データの重みが小さくなるように更新する。つまり、検出を誤った学習データに対する重みを相対的に大きくしていく。
ここまでの処理で1つの弱判別器を生成する。
以上説明した学習方法の例では、局所領域のパラメータは学習によって各サンプル画像内の局所領域が評価され、決定されている。また、その学習時の局所領域の評価の中で各局所領域に対して処理時間のペナルティが与えられることで検出精度だけでなく処理速度も評価した局所領域が選択される。
【0048】
従来の技術のように処理速度重視で全局所領域を同時読み出し可能な局所領域とすることもできるが検出精度に影響を与える場合がある。本発明はこのような場合、上記評価手法により高速化が可能な局所領域と精度を重視した局所領域を混在させる割合を調整することができる。そしてこれによって検出精度の低下を軽減することができる。
また、本実施例では4つのメモリにx方向、y方向それぞれに奇数座標、偶数座標で分配する規則を元に局所領域の形状制約は幅、高さが偶数長、奇数長である例を示した。しかしながら、分配規則は、x方向、y方向の分割数によって変わる場合がある。この場合、読み出し動作指示部130での読み出し方の判定はより複雑になるが本発明を限定するものではない。本発明は速度重視と精度重視の2つの特徴を持つ局所領域を混在させ、その割合を調整できるものである。
【実施例2】
【0049】
実施例1では予め学習によって形状制約の有無を選択的に行って2つの特徴を持つ局所領域を混在させるようにしたが、本発明はこれに限るわけではない。
実施例2では形状制約無しで学習された辞書データを使って、検出精度の低下を軽減する方法について説明する。実施例2では実施例1と説明が重なる部分があるため差分のみ説明する。
実施例2のパターン識別装置の構成を図10に示す。構成上の差分はパラメータ変換部1001が識別処理制御部119と読み出し動作指示部130の間に追加されていることである。
【0050】
パラメータ変換部1001は、識別処理制御部119から指示される局所領域の4頂点分のメモリ読み出しにおいて、局所領域の形状である幅と高さが奇数長になるように形状パラメータを変換する。例えば幅、高さが偶数長であった場合、それぞれから−1することで奇数長にする。
本実施例では形状パラメータを変換するか否かを指定する情報(以下、変換フラグ)は予め所定の局所領域に決められており、その情報は辞書データに入っているとする。
所定の局所領域は、複数の局所領域群の候補を定義した後、全候補を評価して決められる。評価は、実際のユースケース等を想定した複数の画像に対して検出精度と処理時間を計測して行う。
【0051】
次に、上記所定の局所領域の決め方と評価の具体例を説明する。1つずつ特徴量を算出処理するパターン識別において、まず特徴量の算出処理順で並べた局所領域群に1つの境界を設ける。その境界で分けられた局所領域群は一方が形状パラメータを変換する局所領域群、もう一方が形状パラメータを変換しない局所領域群とする。そして、これらの局所領域群を使って複数の画像に対してパターン識別処理を行い、その検出精度と処理時間を計測する。そして、次に境界を移動させて局所領域群を決めて上記評価を繰り返す。最後に要求検出精度を満たしたものの中から処理時間の最も短いものを選択する。
【0052】
次に、形状パラメータの変換処理を図11のフローチャートに示す。
まず、ステップS1101では、パラメータ変換部1001は識別処理制御部119から指示される局所領域の左上座標と幅、高さを取得する。
次に、ステップS1102では、パラメータ変換部1001は変換フラグのチェックと局所領域の幅が偶数長かどうかをチェックする。もし、変換フラグが1でかつ偶数長の場合はステップS1103に移り、それ以外はステップS1104に移る。
次に、ステップS1103では、パラメータ変換部1001は局所領域幅計算を行い奇数長にする。ここで指示される局所領域の幅をla_w、変換後の局所領域の幅をla_widthとすると式(9)のように表される。
【0053】
【数9】
【0054】
次に、ステップS1104では、パラメータ変換部1001は局所領域の高さが偶数長かどうかをチェックする。もし、変換フラグが1でかつ偶数長の場合はステップS1105に移り、それ以外はステップS1106に移る。
次に、ステップS1105では、パラメータ変換部1001は局所領域高さ計算を行い奇数長にする。ここで指示される局所領域の高さをla_h、変換後の局所領域の高さをla_heightとすると式(10)のように表される。
【0055】
【数10】
【0056】
次に、ステップS1106では、パラメータ変換部1001は変換後の局所領域情報を読み出し動作指示部130に転送する。
以上、パラメータ変換部1001の処理によって、同時読み出しできるように変換された局所領域と変換しないで読み出す精度重視の局所領域を混在させることができる。
これにより速度重視の局所領域と精度重視の局所領域を混在させる割合を調整することで検出精度の低下を軽減することができる。
【0057】
以上、実施例2では識別処理中にパラメータ変換部1001で変換を行った例を説明したが、同様の変換処理を予め辞書データに対して行っておき、変換済みの辞書データを使ってパターン識別処理を行う方法もある。この場合、実施例1の図1の構成となる。
また、実施例2では他に変換式(9)、(10)の一方を成り立たせるようにして、幅と高さに対して別々に変換指示を与える方法でも構わない。
【0058】
また、変換式(9)、(10)は近傍座標にずらすための一例であり、辞書データの局所領域の幅、高さに+1する計算であっても構わない。重要なのは局所領域の形状を奇数長に変換することである。
また、実施例2では元々の辞書データのパラメータから、読み出し座標位置をずらすことになるので局所領域の形状の変換前と変換後の総和値に差が出てしまう。この対処方法として、局所領域の形状の変換前と変換後の面積比を変換後の総和値S2dに乗じてS2d’として以下のような式(11)で総和値を補間してもよい。
【0059】
【数11】
【0060】
また、実施例2では変換フラグを予め辞書に入れておくことで説明したが、本発明はこれに限定するものではない。例えば形状パラメータを変換するか否かを動作モードとして与えられる方法がある。この動作モードは形状パラメータを変換して高速に動作させる高速モードと形状パラメータを変換しないで検出精度を重視する精度重視モードが定義される。そして、この動作モードは変換フラグと同義で動作モードが1なら変換フラグを1にして形状パラメータの変換を行い、動作モードが0なら変換フラグを0にして形状パラメータの変換を行わないようにする。
【0061】
また、他の方法として累積画像情報の位置に応じて形状パラメータを変換するか決める方法もある。この場合、変換フラグを累積画像情報の位置に応じて1または0にして制御する。具体的には人を検出するパターン識別装置を例に説明する。画面上、人が現れるドアや階段、エレベータの付近では検出精度を重視するために形状パラメータを変換しないように変換フラグを0にする。一方、壁など人が現れないところは変換フラグを1にして形状パラメータを変換して高速にパターン識別する方法がある。
【実施例3】
【0062】
上述した実施例1、2では累積画像情報と呼ぶ2次元配列の情報での例を説明したが、実施例3では本発明を1次元の情報に適用する方法を説明する。実施例3では、1次元配列のデータを入力とし、その入力データを一次元入力情報と呼ぶ。また、一次元入力情報を累積した情報を一次元累積情報と呼ぶ。
【0063】
実施例3での一次元配列の累積情報は図12に示すようになる。図12ではデータ1201を開始点として、x方向にデータの値を累積させたものを一次元累積情報1200としている。データ中の括弧内の数値はx方向の座標を示す。
実施例3のパターン識別装置の構成は実施例1とほぼ同じで、実施例3との差分はメモリ数が2つであることである。
【0064】
実施例1で説明した局所領域に相当するものはここでは直線の区分1220(以下、一次元累積情報では局所区分(local piecewise)と呼ぶ)となる。局所区分は奇数長の場合、2つのメモリから同時に読み出すことができるが、偶数長の場合、1つのメモリから逐次読み出す必要がある。実施例3においても実施例1、2と同様に形状制約を与える局所区分と形状制約を与えない局所区分を混在させて調整することで検出精度の低下を軽減させる。
【0065】
混在させる方法としては実施例1と同様に予め学習で形状制約の有無を選択的に行っておく方法と実施例2と同様に実行時にパラメータ変換する方法がある。また、実施例3では説明を簡単化するため偶数長、奇数長の場合を説明したが、実施例1の最後で説明したのと同様に本発明を限定するものではない。
【実施例4】
【0066】
実施例4では本発明を3次元の情報に適用した例で説明する。
実施例4では3次元配列のデータを入力とし、その入力データを三次元入力情報と呼ぶ。三次元入力情報とは例えば動画情報であって、二次元画像に時間軸の一次元が加わり三次元入力情報となる。また、三次元入力情報を累積した情報を三次元累積情報と呼ぶ。
【0067】
実施例4での三次元配列の累積情報は図13に示すようになる。図13では三次元入力情報1300の原点Oを開始点として、x方向、y方向、t方向に値を累積させたものを三次元累積情報1310としている。例えば点1302の座標(x,y,t)の三次元累積情報1310での値は原点Oと点1302を対角とする直方体1301に含まれるデータの合計値となる。本実施例では直方体を動画情報で考え、x方向を幅、y方向を高さ、t方向を時間で定義する。ここで、t方向は時間軸で定義したが、もし立体空間であればz方向として奥行きと定義してもよい。
【0068】
実施例4のパターン識別装置の構成は実施例1とほぼ同じで、実施例4との差分はメモリ数のみで、メモリを8つ使用する。
実施例1で説明した局所領域に相当するものは、ここでは直方体の空間1312(以下、三次元累積情報では局所空間(local space)と呼ぶ)となる。局所空間はx方向、y方向、t方向がそれぞれ偶数長か奇数長かで同時に読み出せるメモリが決まる。実施例4においても実施例1、2と同様に形状制約を与える局所空間と形状制約を与えない局所空間を混在させて調整することで検出精度の低下を軽減させる。実施例4では実施例1、2と比べて読み出し方の種類が多いだけで基本的な考え方は実施例1、2と同様である。
【0069】
混在させる方法としては実施例1と同様に予め学習で形状制約の有無を選択的に行っておく方法と実施例2と同様に実行時にパラメータ変換する方法がある。
また、実施例3では説明を簡単化するため偶数長、奇数長の場合を説明したが、実施例1の最後で説明したのと同様に本発明を限定するものではない。
【0070】
以上の実施例1〜実施例4では、一次元から三次元について説明した。さらに、三次元を超える多次元入力情報に対する累積情報であっても、同様に超直方体で考えれば、本発明を適用可能であるのは明らかである。
以上の実施例ではパターン識別処理に弱判別器を使った例で説明したが本発明はこれに限らない。実際、パターン識別処理には様々なものが提案されており、実装も多岐にわたっている。しかし、これらパターン識別処理において累積情報を使用し特徴量を算出するものはいずれも本発明が適用できることは明らかである。
また、本発明はコンピュータ内のプログラムによっても実現できることは当然である。
【符号の説明】
【0071】
101:CPU 102:データ入力部 103:DMAC 104:外部メモリ 105:バス 107:パターン識別部 111:インタフェース 112:累積画像情報生成部 113:分配書き込み処理部 114:メモリアクセス制御部 115〜118:メモリ 119:識別処理制御部 120:辞書記憶部 121:特徴量算出部 122:判定処理部 130:読み出し動作指示部 1001: パラメータ変換部
【特許請求の範囲】
【請求項1】
データの累積情報を所定の規則に従って記憶手段に書き込む手段と、
複数の前記累積情報を逐次または並列に読み出す読み出し手段と、
逐次的に読み出すか或いは並列に読み出すかを指示する指示手段と、
前記複数の累積情報を用いて前記データの局所領域の特徴量を算出する手段と、
局所領域の特徴量を複数用いて所定のパターンを識別する手段とを備えることを特徴とするパターン識別装置。
【請求項2】
前記指示手段は、累積情報が前記記憶手段から並列読み出し可能か判定して前記動作を指示することを特徴とする請求項1記載のパターン識別装置。
【請求項3】
所定の局所領域の累積情報が並列読み出し可能なように前記所定の規則に応じて予め学習しておくことを特徴とする請求項1記載のパターン識別装置。
【請求項4】
前記所定の局所領域は局所領域ごとに処理時間を与えて前記学習を行うことを特徴とする請求項3記載のパターン識別装置。
【請求項5】
所定の局所領域の累積情報が並列読み出し可能なように前記所定の規則に応じて局所領域の形状パラメータを変換するパラメータ変換手段を備えることを特徴とする請求項1記載のパターン識別装置。
【請求項6】
前記所定の局所領域の形状を前記パラメータ変換手段で変換する動作、または変換しない動作を指定することを特徴とする請求項5記載のパターン識別装置。
【請求項7】
前記所定の局所領域の形状を前記パラメータ変換手段で変換する動作、または変換しない動作を所定の条件に応じて変更することを特徴とする請求項5記載のパターン識別装置。
【請求項8】
データの累積情報を所定の規則に従って記憶手段に書き込む工程と、
複数の前記累積情報を逐次または並列に読み出す読み出し工程と、
逐次的に読み出すか或いは並列に読み出すかを指示する指示工程と、
前記複数の累積情報を用いて前記データの局所領域の特徴量を算出する工程と、
局所領域の特徴量を複数用いて所定のパターンを識別する工程とを有することを特徴とするパターン識別方法。
【請求項9】
データの累積情報を所定の規則に従って記憶手段に書き込む工程と、
複数の前記累積情報を逐次または並列に読み出す読み出し工程と、
逐次的に読み出すか或いは並列に読み出すかを指示する指示工程と、
前記複数の累積情報を用いて前記データの局所領域の特徴量を算出する工程と、
局所領域の特徴量を複数用いて所定のパターンを識別する工程とをコンピュータに実行させるためのプログラム。
【請求項1】
データの累積情報を所定の規則に従って記憶手段に書き込む手段と、
複数の前記累積情報を逐次または並列に読み出す読み出し手段と、
逐次的に読み出すか或いは並列に読み出すかを指示する指示手段と、
前記複数の累積情報を用いて前記データの局所領域の特徴量を算出する手段と、
局所領域の特徴量を複数用いて所定のパターンを識別する手段とを備えることを特徴とするパターン識別装置。
【請求項2】
前記指示手段は、累積情報が前記記憶手段から並列読み出し可能か判定して前記動作を指示することを特徴とする請求項1記載のパターン識別装置。
【請求項3】
所定の局所領域の累積情報が並列読み出し可能なように前記所定の規則に応じて予め学習しておくことを特徴とする請求項1記載のパターン識別装置。
【請求項4】
前記所定の局所領域は局所領域ごとに処理時間を与えて前記学習を行うことを特徴とする請求項3記載のパターン識別装置。
【請求項5】
所定の局所領域の累積情報が並列読み出し可能なように前記所定の規則に応じて局所領域の形状パラメータを変換するパラメータ変換手段を備えることを特徴とする請求項1記載のパターン識別装置。
【請求項6】
前記所定の局所領域の形状を前記パラメータ変換手段で変換する動作、または変換しない動作を指定することを特徴とする請求項5記載のパターン識別装置。
【請求項7】
前記所定の局所領域の形状を前記パラメータ変換手段で変換する動作、または変換しない動作を所定の条件に応じて変更することを特徴とする請求項5記載のパターン識別装置。
【請求項8】
データの累積情報を所定の規則に従って記憶手段に書き込む工程と、
複数の前記累積情報を逐次または並列に読み出す読み出し工程と、
逐次的に読み出すか或いは並列に読み出すかを指示する指示工程と、
前記複数の累積情報を用いて前記データの局所領域の特徴量を算出する工程と、
局所領域の特徴量を複数用いて所定のパターンを識別する工程とを有することを特徴とするパターン識別方法。
【請求項9】
データの累積情報を所定の規則に従って記憶手段に書き込む工程と、
複数の前記累積情報を逐次または並列に読み出す読み出し工程と、
逐次的に読み出すか或いは並列に読み出すかを指示する指示工程と、
前記複数の累積情報を用いて前記データの局所領域の特徴量を算出する工程と、
局所領域の特徴量を複数用いて所定のパターンを識別する工程とをコンピュータに実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2013−29878(P2013−29878A)
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2011−163427(P2011−163427)
【出願日】平成23年7月26日(2011.7.26)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願日】平成23年7月26日(2011.7.26)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]