本発明の実施の形態について図面を参照しつつ詳細に説明する。
まず、本実施の形態としてのパターン認識処理について概略的に説明する。
パターン認識処理では、所定時間内での処理の必要性から、高速化な処理が必要となることがしばしば起こる。例えば、パターン認識処理の代表的な例としては、住所情報などように複数の階層の情報から構成される文字情報全体を認識する処理がある。住所情報の認識処理では、先に候補数の少ない上位階層を認識し、その結果を用いて下位階層の候補を絞り込むことがしばしば行われる。このような複数段階の処理からなるパターン認識処理(複数段構成のパターン認識)では、処理全体を高速化するため、初期段階の処理において、高速動作する粗い識別器による認識処理(つまり、処理速度を重視して候補を選出する認識処理)が実行される。この場合、後段の処理では、前段の処理結果を用いて、順次、処理範囲あるいは処理対象を絞り込むという方法が取られることがある。このような複数段階の候補から正解となる候補を選出する問題は、探索問題と捉えることが可能である。
すなわち、複数段構成のパターン認識では、前段の認識結果などを用いて、後段の処理範囲あるいは対象を絞ることが可能である。このような手法は、ビーム探索を行っていることに相当する。本実施の形態で説明する複数段構成のパターン認識処理には、各段階の候補を事後確率などによる評価値に基づいて順次絞り込む探索手法が適用される。また、探索方法としては、たとえば、各段において所定数の候補を順次絞り込む手法、あるいは、最良優先探索の手法などが想定される。なお、事後確率は、P(c|x)と書き表され、認識処理により得られた出力xを条件とし、候補cが正解である確率を意味するものとする。事後確率P(c|x)は、後述する近似計算法により近似値が算出されるものである。また、事前確率は、P(c)と書き表され、認識処理を行っていない段階において、候補cが正解である確率のことを意味するものとする。
一方、複数段構成のパターン認識処理の代表的な例としては、顔画像などの生体情報による人物の認識処理、あるいは、複数層の情報から構成される住所情報の認識処理などがある。たとえば、住所情報は、第1階層の情報(例えば、都市名)、第2階層の情報(例えば、町名、ストリート名)、第3階層の情報(たとえば、番地、ストリート番号)などの複数階層の情報から構成される。これらの各階層の情報を組み合わせて構成される住所情報の総数は、数百万から数千万に及ぶ。このため、全住所情報について認識処理を行うことは、効率的ではない。本実施の形態で説明するパターン認識方法は、複数層の情報からなる情報(たとえば、住所情報)の認識処理に適用することにより、情報の認識処理を効率的かつ高速に認識結果を得ることが可能である。
ここで、単語の認識処理に関する技術として、文献1「浜村倫行、赤木琢磨、水谷博之、入江文平:“ワード長正規化されたベイズ推定によるワードマッチング”、画像の認識・理解シンポジウム(MIRU2000) 講演論文集II、pp.1-6(Jul.2000).」、文献2(「浜村倫行、赤木琢磨、入江文平:“単語認識における事後確率を用いた評価関数”、信学技報、PRMU2006-92,(Oct.2006).」)、文献3(「浜村倫行、赤木琢磨、入江文平:“事後確率を用いた解析的単語認識−文字切り出し数の正規化−”、信学技報、PRMU2006-238,(Mar. 2007).」)には、単語候補の評価値としての事後確率を算出する手法が開示されている。
上記文献1には、各文字の認識結果が独立であるとする近似を用いることにより、単語候補の事後確率比(事前確率と事後確率の比)が各文字の事後確率比の積に分解できることが記載されている。上記文献2には、上記文献1において大きな誤差を起こす近似を避ける式展開を行うことにより、正規化事後確率比を算出する手法が記載されている。上記文献3には、注目している場所以外にも何らかの文字が書かれていることを用いて、拡張事後確率比を算出する手法が記載されている。
しかしながら、上記文献2あるいは上記文献3に記載されている正規化事後確率比あるいは拡張事後確率比の計算には、いずれも単語辞書内の全単語についての処理が必要である。これは、単語辞書内の単語の数が多ければ多いほど、正規化事後確率比あるいは拡張事後確率比の計算に時間がかかってしまうことを示唆している。これに対して、本実施の形態では、注目する1つの単語についての処理のみを行った状況においても、文献3のアイデアを適用できるような式展開について後述する。すなわち、本実施の形態で説明するパターン認識方法では、効率的な候補の探索が可能となる手法に利用可能な計算式により事後確率を算出するようになっている。
次に、複数段構成のパターン認識と探索問題との関係について説明する。
ここでは、複数段構成のパターン認識処理の例として、顔認識処理と住所認識処理とについて説明する。
まず、顔認識処理の例について説明する。
顔認識処理は、バイオメトリクスの一種である。顔認識処理では、生体情報としての人物の顔画像に基づいて個人を特定する。顔認識処理は、大きく分けて、以下のような3段階の処理により、認識結果が得られるようになっている。すなわち、顔認識処理は、第1段階の処理として取得した画像(入力画像)内から人物の画像を検出し、第2段階の処理として検出した人物の画像から顔画像を検出し、第3段階の処理として検出した顔画像と登録者の顔画像との照合を行う。
第1段階の処理は、入力画像に対して人物検出用識別器を適用することにより実行される人物検出処理である。上記人物検出用識別器は、入力画像に対して位置及びサイズを変化させた人物検出用のテンプレートを重ね合わせることにより人物の画像を検出するものである。この第1段階の処理は、たとえば、高速に処理結果を得るために、低解像度の画像において実施される。
第2段階の処理は、第1段階の処理で得られた人物の画像に対して顔検出用識別器を適用することより実行される顔検出処理である。上記顔検出用識別器は、人物の画像に対して位置及びサイズを変化させた顔検出用のテンプレートを重ね合わせることにより顔画像を検出する。この第2段階の処理は、たとえば、高精度に顔を検出するために、高解像度の画像において実施される。
第3段階の処理は、第2段階の処理で得られた顔画像と登録者の顔画像との照合を行う顔照合処理である。第3段階の処理は、たとえば、高精度に顔を識別するために、高解像度の顔画像において実行される。
図1は、顔認識処理の各段階の処理を探索木で表現したものである。なお、探索木とは、複数階層の候補をノードとして表示した場合の探索の様子を示す概念図である。図1に示す探索木では、登録者の人数が3人であるものとする。
図1に示すような探索木では、各段階の候補がそれぞれノードとして表現される。第1段階の処理では、人物検出用識別器を種々の位置及びサイズで走らせて複数の人物検出結果を得る。図1に示す探索木では、1段目の各ノードが第1段階の候補として得られる複数の人物検出結果に対応する。つまり、探索木においてルートノードに従属する1段目の各ノードは、人物検出用識別器が1つの位置及びサイズで検出した人物の検出結果に相当している。第2段階の処理では、第1段階の処理として得られた各人物検出結果(人物の画像)に対して、複数の顔検出結果が得られる。図1に示す探索木では、2段目の各ノードが第2段階の処理結果として得られる複数の顔検出結果に対応する。従って、探索木における1段目の各ノードには、それぞれ複数の2段目のノードが従属している。第3段階の処理では、第2段階の処理として得られた各顔検出結果(顔画像)に対して、登録人数分の照合結果が得られる。図1に示す探索木では、3段目の各ノードが第3段階の処理結果として得られる各登録者に対する照合結果に対応する。従って、探索木における2段目の各ノードには、それぞれ登録人数分の3段目のノードが従属している。
図1に示すような各ノードの親子関係は、包含関係を意味する。例えば、図1に示す第1段階の1つの処理結果としてのノードAには、4つのノードB〜Eが従属している。ノードB〜Eは、ノードAの処理結果に基づく4つの第2段階の処理結果(顔検出結果)に相当している。ノードCには、3つのノードF〜Hが従属している。ノードF〜ノードHは、第2段階の処理結果としてのノードCに基づく3つの第3段階の処理結果(3人の登録者との照合結果)に相当する。
顔認識処理では、3段目の全ノードに対応する顔認識処理を全て実行できれば理想的ではある。しかしながら、処理を高速化するためには、第1段階の処理結果および第2段階の処理結果を利用して効率的に第3段階の処理(照合処理)を行う必要がある。これは、図1に示すような探索木を効率的に探索するという探索問題の解決方法に相当する。
次に、住所情報の認識処理の例について説明する。
図2は、住所データベースの例を示す図である。ここでは、認識対象とする住所情報は、複数段階の情報から構成されているものとする。図2に示す例では、認識対象とする住所情報は、1段目が都市名、2段目が町名、3段目が番地である。
また、図3は、住所情報の表記例を示す図である。図3は、認識処理の入力画像として与えれる画像の例を示しているものとする。たとえば、図3に示すような画像は、住所情報が記載された媒体をスキャナなどで読取ることにより得られる情報であるものとする。図3に示すような住所情報を含む画像に対しては、行候補検出、単語候補切出し、文字候補切出し、各文字候補に対する個別文字認識などが実行される。個別の文字認識結果が得られると、個別の文字認識結果に基づいて複数の単語候補が選出される。以下の説明では、各単語候補と住所データベース内の各単語とをマッチングする処理について説明するものである。
図4は、図3に示す住所情報の画像から得られた単語候補の例を示す図である。図4に示す例では、単語候補として、I1〜I10までの候補が検出されている。また、図5は、マッチング処理を探索木で示すものである。すなわち、単語候補Iiと住所データベース内の単語との組が、探索木の1つのノードに対応し、1組に対してマッチングを行うことが、1つのノードを探索することに相当する。
住所情報の認識処理としては、住所データベース内の全単語について、全単語候補とマッチングすれば理想的である。しかしながら、住所データベースに記憶されている単語は膨大である。このため、複数段構成のパターン認識方法では、上位の階層からマッチング処理を行うことにより、効率的に解を探索(住所情報全体の認識結果を決定)する。
上述したような複数段構成のパターン認識では、通常、上位の段の処理から順に行い、各段ごとに候補を絞り込んでから次の段の処理を行うという手順が取られる。例えば、図1の例では、1段目のノードに対して全て処理を行い、その中からn個のノードに絞り込む。次に、絞り込んだ1段目の各ノードに従属する2段目の各ノードを全て処理し、それらの2段目のノードの中からn個に絞り込む。さらに、絞り込んだ2段目の各ノードに従属する3段目の各ノードを全て処理し、それらの3段目のノードの中から最適な認識結果を決定する。このような一連の処理の流れを探索問題の視点から見ると、ビーム探索を行っていることに相当する。
一方、優れた探索問題の解法として、最良優先探索という方法が知られている。最良優先探索という方法は、処理済のノードに従属する各子ノードのうち、未処理のものを全て記憶しておき、その中で最も評価値の高いノードを次の探索対象とする方法である。例えば、図1に示す例において、ノードAとノードCとが処理済、かつ、他のノードが未処理であるとすると、ノードAおよびノードCの子ノードで未処理のものは、ノードB、D、E、F、G、Hの6つのノードである。この場合、、ノードB、D、E、F、G、Hの6つのノードから次の探索対象を選ぶことになる。複数段構成のパターン認識においても、上記のような最良優先探索を用いることができれば、探索効率を向上することが可能と考えられる。
一般に、ビーム探索では、同一段内のノード間での比較のみできればよい。このため、例えば、その段の識別器の出力する類似度等を評価値とすればよい。しかしながら、最良優先探索では、異なる段のノード間での比較が必要となる。このため、最良優先探索では、識別器の出力をそのまま用いても比較しても意味がないものとなってしまう。つまり、既存のビーム探索で用いられている評価値は、最良優先探索には用いることができない。
そこで、本実施の形態では、事後確率を評価値として用いるパターン認識方法を提供するものである。一般に、上述した非特許文献3などで定義される事後確率は、直接計算することが難しい。ただし、上述した文献1、2、3に記載の方法によれば、たとえば、単語認識において、個別文字認識の出力から近似的に事後確率を計算することが可能である。本実施の形態のバーコード認識処理では、上述した文献1、2、3に記載されている計算テクニックを応用することにより、評価値としての近似的な事後確率を計算する。
次に、最良優先探索に用いる評価値としての事後確率の計算法について説明する。
ここで、ノードniに対応する処理結果をxiとする。たとえば、最良優先探索を顔認識認識に応用する場合、各ノードniに対応する各段階の識別器の出力が処理結果xiに相当する。また、最良優先探索を住所情報の認識処理に応用する場合、各ノードniに対応する各段階における各単語候補内の文字認識などの結果が処理結果xiに相当する。なお、以下の説明では、X、ni、Ui、Xetcを以下のように定義する。処理済の全ノードに対応する全処理結果をXとする。niの親ノードを辿ることで到達できるノードの集合をUiとする。niはUiに属さないとする。Uiに含まれないノードのうち、処理済のノードの全処理結果をXetcとする。
図6は、探索木で表される各ノードの状態を示す図である。図6において、黒丸は処理済のノード、白丸と二重丸は未処理のノードであり、二重丸は処理済のノードを親に持つノードである。つまり、図6に示す例では、二重丸で表されたノードが次の探索対象の候補である。これらの各ノードについては、事後確率P(ni|X)が計算される。ここで、事後確率P(ni|X)とは、ノードniだけでなく、Uiに含まれる全ノードが満たされる確率を意味するものとする。たとえば、住所情報の認識処理の例では、単独の階層(町等)の単語が書かれている確率ではなく、その上位の階層の単語も同時に書かれている確率となり、住所が書かれている確率に相当する。なお、顔認識処理の例では、子ノードが満たされれば、親ノードが自動的に満たされる。
式(2)では、Uiに含まれる各ノードの処理結果が、他の処理結果とは独立に起こっているとする近似を用いている。式(3)では、P(xj|ni)≒P(xj|nj) とする近似を用いた。式(3)を用いることで、ノードniの事後確率P(ni|X)を近似的に計算できる。顔認識処理の例では、xjは単独の識別器の出力である。このため、データを集めることにより、P(xj|nj)、P(xj)は容易に得ることが可能であり、事後確率の計算が可能となる。一方、住所情報の認識処理の例では、xjには単語候補内の複数の文字認識結果が含まれている。このため、式(3)の計算が単純ではない。住所情報の認識処理における事後確率の計算方法については、後で詳細にするものとする。
と変形することができる。事前確率と事後確率との比を事後確率比と呼ぶことにすると、「ノードniの事後確率比は、その親ノードの事後確率比の積である」と表現できる。
次に、住所情報の認識処理における事後確率比の計算方法について説明する。
住所情報の認識処理において、xjには、単語候補内の複数の文字認識結果が含まれている。このため、式(3)の事後確率比P(xj|nj)/P(xj)の計算が容易ではないことが多い。上記文献1、2、3では、事後確率比の計算式がいくつか提案されている。それらの事後確率比の分母P(xj)に注目して整理する。まず、文献1では、xjに含まれる各文字候補の文字認識結果を全て独立と近似している。これは、大きな誤差を起こしてしまうことと、文字候補構造(説明は後述)あるいは経路の選択に関する項が残ってしまい計算が困難となることがある。文献2に記載されている正規化事後確率比は、分母をP(xj)=ΣkP(xj、wk)とする変形により、分母の計算を単語辞書内の全単語で展開し、大きな誤差を起こす近似変形を避けることに成功している。また、同時に、計算のしにくい項を分母と分子とでうまくキャンセルさせることに成功している。更に、文献3に記載されている拡張事後確率比では、注目している単語候補以外の場所にも何らかの文字が書かれていることを考慮することにより、近似誤差を低減している。何らかの文字が書かれていることを考慮することにより、計算利便性を落とす項が発生する。しかし、正規化事後確率比と同様に分母の計算を単語辞書内の全単語で展開することにより、計算し難い項が分母と分子とでキャンセルされている。
ただし、探索時にも事後確率比を用いることができるようにするためには、全単語の処理を必要とせず、注目する1つの単語のみの処理で計算できるのが望ましい。そこで、本実施の形態では、以下の式展開により、分母の計算を単語辞書内の全単語に展開せず、「何らかの文字が書かれている」とする。これにより、拡張事後確率比の利点、すなわち、文字認識結果を全て独立とするよりも近似精度が高まるという利点がある上に、計算が困難な項のキャンセルもできていることを示す。
ノードniに対応する単語候補をLi、単語をwiとする。ノードniを探索することが、単語候補Liに対し単語wiをマッチングすることに相当する。単語候補Li内の全文字候補の集合をAi、各文字候補をa∈Aiとする。
図7は、文字候補の例を示す図である。図7に示すような構造は、ラティス構造と呼ばれる。つまり、ここでは、文字候補が、図7のようなラティス構造を取っているものとする。また、以下の説明では、ai、ri、Li、Si、xi、wiなどを以下のように定義するものとする。文字候補aiの文字認識結果をriとする。単語候補Li内の全文字認識結果をri、文字候補構造をSiとする。文字候補の構造とは、文字候補同士の隣接情報、あるいは、文字候補数などの文字認識結果以外の情報を指す。上述した処理結果xiを、xi=(ri、Si)と定義する。単語wiのj番目の文字をcij∈C(Cはアルファベットの集合)とする。C*を任意文字列とする。
単語候補Li内の左端から右端に至る全経路の集合をFi={fp}、p=1、2、…、経路をfp=(af1p、af2p、…)、afjp∈Aiとする。af(j+1)pは、afjpの右側に隣接して位置するものとする。図7には、太線で経路fpなどの例を示している。経路fp上の文字候補の集合をE´p={afjp}、j=1、2、…、E´pに含まれないがAiに含まれる文字候補の集合をEpとする。Ep∩E´p=φ、Ep∪E´p=Aiである。事後確率比P(xj|nj)/P(xj)を以下の通り変形する。
式(4)左辺の分子P(xj|nj)は、その親ノードを辿って得られるノードをnp1、np2、…とすると、P(xj|Lj、wj、Lp1、wp1、Lp2、wp2、…)という意味になる。xjは単語候補Ljに関する情報以外の影響を受けないとする近似を行うと、P(xj|Lj、wj)となる。
式(4)の分母において、P(xj)≒P(xj|Lj、C*)としているのは、先に述べたとおり、どの単語候補にも何らかの文字が書かれているとする近似であるからである。
式(6)では、確率が最大となる経路の確率に比べ、その他の経路の確率は無視できるとする近似を用いている。続いて以下の近似を行う。
ここで、Kjはpによらない定数とする。この近似は、どのパスが正解である確率も同様に確からしい、とする近似である。
式(7)、式(8) を用いることにより、式(6)は以下のように計算される。(どのfpでも単語wjと長さの一致しない場合、式(6)は0となる。以後の計算はそれ以外の場合の計算とする。)
ただし、match()は、以下の通りに定義している。
式(10)では、各文字認識結果が互いに独立であるとする近似を用いている。式(10)から式(11)への変形では、fpに依存しない値
で分母分子を割っている。また、式(9)において、計算の困難な文字候補構造Sjや経路fpに関する項がキャンセルできていることに注意する。
式(11)が本実施の形態で提案する事後確率比の計算式である。式(11)では、拡張事後確率比と同じアイデアによる近似精度の向上を行いつつ、余計な項のキャンセルもできている。更に、注目する一単語wjのみの処理で計算可能であり、探索時にも用いることができる。
上述したように、本実施の形態に係るパターン認識方法では、複数の段階からなるパターン認識処理の一部を探索問題と捉えている。上記パターン認識方法では、各段階で得られる各候補をそれぞれノードとし、得られたノードを事後確率に基づいて選択的に処理する。これにより、上記パターン認識方法では、複数段階からなるパターン認識処理を効率的かつ高速化に実行することができる。
また、上記パターン認識方法では、処理対象とする各段のノードを選択する場合、最良優先探索などの手法が適用可能である。最良優先探索では、異なる段階のノードを比較する必要がある。そのための評価値として、上記パターン認識方法では、事後確率が用いられる。事後確率は、各ノードにおける事後確率比(事前確率と事後確率の比)の積により算出される。特に、住所情報の認識に特化した場合、探索時にも計算可能な形で各ノードの事後確率比が計算される。
以下、上述したようなパターン認識方法の適用例について説明する。
図8は、上述したようなパターン認識方法によるパターン認識機能を有する情報処理装置11の構成例を示す図である。
図8に示す例では、情報処理装置11には、画像入力装置12が接続されている。画像入力装置12は、スキャナあるいはカメラなどにより構成される。上記画像入力装置12は、情報処理装置11により処理すべき画像を取得するものである。たとえば、上記画像入力装置12は、スキャナあるいはカメラなどにより構成される。上記画像入力装置12は、取得した画像情報を情報処理装置11へ供給するようになっている。なお、上記画像入力装置12は、記録媒体に記憶された画像情報を読み出して、記録媒体から読み出した画像情報を上記情報処理装置11へ供給するものであっても良い。
上記情報処理装置11は、パターン認識装置あるいは文字認識装置として機能するものである。上記情報処理装置11は、上記画像入力装置12から供給される画像に含まれる所望の情報(たとえば、住所情報あるいは顔画像など)をパターン認識処理により認識するものである。
上記情報処理装置11は、たとえば、コンピュータとして実現される。また、図8に示す構成例では、上記情報処理装置11は、画像インターフェース(I/F)21、プロセッサ22、ワーキングメモリ23、プログラムメモリ24、データメモリ25、出力インターフェース(I/F)26などを有している。すなわち、上記情報処理装置11は、たとえば、画像インターフェース21および出力インターフェース26としてのデータ入出力部と、プロセッサ22としての制御部と、ワーキングメモリ23、プログラムメモリ24およびデータメモリ25などの各種の記憶部などを有するコンピュータにより実現される。
上記画像インターフェース21は、上記画像入力装置12から供給される画像を取り込むためのインターフェースである。つまり、上記画像インターフェース21は、パターン認識処理の対象となる画像を取得するためのインターフェースである。
図9は、上記画像インターフェース21により取り込まれるパターン認識処理の対象となる画像の例を示す図である。図9に示す例は、複数層の情報からなる住所情報が記載された紙葉類の読取画像の例であるものとする。図9示す例では、パターン認識処理としての複数層の情報からなる住所情報の認識処理の対象となる画像の例を示している。
上記プロセッサ22は、当該情報処理装置11における種々の処理機能を実行するものである。上記プロセッサ22は、たとえば、CPUなどの演算ユニットにより構成される。上記プロセッサ22は、上記プログラムメモリ24あるいはデータメモリ25に記憶されているプログラムを実行することにより、種々の処理機能を実現している。たとえば、上記プロセッサ22は、プログラムを実行することにより実現される機能の1つとしてパターン認識処理を行うパターン認識部22aを有している。上記パターン認識部22aの構成例については、後で詳細に説明するものとする。
上記ワーキングメモリ23は、一時的にデータを格納するための記憶部である。上記ワーキングメモリ23は、たとえば、RAM(ランダムアクセスメモリ)などにより構成される。上記プログラムメモリ24は、制御プログラムおよび制御データなどが記憶されている記憶部である。上記プログラムメモリ24は、たとえば、ROM(リードオンリーメモリ)などにより構成される。上記データメモリ25は、データを記憶するための大容量の記憶部である。上記データメモリ25は、たとえば、ハードディスクドライブ(HDD)などにより構成される。
上記データメモリ25には、バターン認識処理に用いられる辞書データベース25aが設けられている。たとえば、当該情報処理装置11がパターン認識処理として住所情報を認識するものである場合、上記辞書データベース25aは、住所情報が格納される住所データベースとして構成される。当該情報処理装置11がパターン認識処理として顔画像などの生体情報による個人認証を行うものである場合、上記辞書データベース25aは、登録者の生体情報が格納される生体情報データベースとして構成される。なお、ここでは、情報処理装置11が住所情報を認識するものであること想定する。このため、上記辞書データベース25aは、住所データベースであるものとする。
図10は、辞書データベース25aとしての住所データベースの構成例を示す図である。図10に示す構成例では、辞書データベース(住所データベース)25aには、複数階層(CITY階層、STREET階層、DIRECTION階層)の各単語からなる住所情報が記憶されている。つまり、辞書データベース25aには、各階層の各情報には、次の下階層の情報が従属するように記憶されている。
図10に示す例では、CITY階層には、「STOCKHOLM」(単語D1)、「GOTEBORG」(単語D2)、「ABCDE」(単語D3)、…などの単語が存在し、STREET階層には、「AGATAN」(単語D4)、「TOSHIBA」(単語D5)、「BGATAN」(単語D6)、…などの単語が存在し、DIRECTION階層には、「EAST」、「WEST」、「NORTH」などの単語が存在している。さらに、図10に示す例では、CITY階層の「STOCKHOLM」(単語D1)という1つの単語には、STREET階層の「AGATAN」(単語D4)と「TOSHIBA」(単語D5)という2つの単語が従属している。
上記出力インターフェース26は、上記プロセッサ22により得られた情報などを外部へ出力するためのインターフェースである。たとえば、上記プロセッサ22内のパターン認識処理により得られた認識結果は、上記出力インターフェース26により外部へ出力されるようになっている。
次に、上記パターン認識部22aの構成について説明する。
図11は、上記パターン認識部22aの構成例を示す図である。なお、以下の説明では、主として、当該情報処理装置11が住所情報などの複数階層の情報からなる文字情報を認識するものであることを想定している。
上記パターン認識部22aは、認識制御部30、候補抽出部31、ノード展開部32、評価値算出部33、ノード選別部34、決定部35などにより構成されている。上述したように、上記パターン認識部22aは、プロセッサ22がプログラムを実行することにより実現される機能である。つまり、上記候補抽出部31、ノード展開部32、評価値算出部33、ノード選別部34、決定部35も、プロセッサ22がプログラムが実行することにより実現される機能である。
上記認識制御部30は、パターン認識部22aにおけるパターン認識処理全体を制御する機能を司るものである。上記候補抽出部31は、上記画像インターフェース21を介して上記画像入力装置12から供給された入力画像から認識結果における各階層の候補となる情報を抽出するものである。たとえば、当該情報処理装置11が住所情報などの複数階層の情報からなる文字情報を認識するものである場合、上記候補抽出部31は、入力画像から各階層の単語候補を抽出する処理を行う。
図12は、図9に示す入力画像から抽出される単語候補の例を示す図である。図12に示す例では、アルファベットを認識対象の住所情報を構成する文字として想定している。このため、図12に示す例では、7つの単語候補が抽出されている。なお、図12に示す7つの単語候補は、当該画像における位置情報により示される位置P1〜P7に存在しているものとする。
上記ノード展開部32は、上記候補抽出部31により抽出された候補に対する探索木を構成するための各ノードを生成するものである。上記ノード展開部32は、各ノードに属する次の階層のノードを得る処理である。つまり、上記ノード展開部32では、ある階層の各候補に対して次の階層の候補となり得る全ての候補を選出することにより、複数階層の各ノードからなる探索木を生成する。
例えば、図12に示す位置P6の単語候補が図10に示す住所データベース25aの単語D1であることを示すノードを(D1、P6)と表すものとする。ここで、図10に示す住所データベース25aでは、単語D1(「CITY」階層の「STOCKHOLM」)には、単語D4(「STREET」階層の「AGATAN」)と単語D5(「STREET」階層の「TOSHIBA」)とが属している。また、位置P6がCITY階層の情報である場合、STREET階層は、図12に示す入力画像において、位置P7あるいは位置P3の何れかであることが、当該住所情報の記載順序(各階層の情報の表記上のルール)により判別可能であるものとする。これらの状況に従って、上記ノード展開部32は、ノード(D1、P6)に属するノードとして、(D4、P7)、(D4、P3)、(D5、P7)、(D5、P3)の4つのノードを展開する。
上記評価値算出部33では、上記ノード展開部32により生成された各ノードの評価値を算出するものである。たとえば、上記評価値算出部33では、各ノードとしての各候補に対する認識処理を実行することにより、各ノードの評価値を算出する。本実施形態では、上記評価値算出部33は、上述した手法により算出される事後確率を評価値として算出するものとする。
上記ノード選別部34は、各ノードのうち最終的に評価すべきノードを選別するものである。上記ノード選別部34では、上記評価値算出部33により算出された評価値に基づいて各ノードを最終的に評価すべきノードとするか否かを判定する。たとえば、上記ノード選別部34は、各階層ごとに上記評価値算出部33により算出された評価値が高い順に所定数(つまり、上位N個)のノードを選出する。また、探索手法として最良優先探索が適用される場合、上記ノード選別部34は、各階層に関わらずに、後述する複数の終端ノードから最も評価値の高いものを選択する。
上記決定部35は、一連のパターン認識処理としての最終的な認識結果を決定するものである。上記決定部35は、上記ノード選別部34により最終階層のノードが選別された場合、それらの最終階層のノードに基づいて最終的な認識結果を決定する。たとえば、上記ノード選別部34により最終階層のノードが複数得られた場合、上記決定部35は、最大評価値となるノードに基づく認識結果を最終的な認識結果として出力する。また、上記決定部35は、上記ノード選別部34により得られた最終階層のノードのうち所定値以上の評価値となる各ノードに基づく各認識結果(1つ又は複数の認識結果)を最終的な認識結果として出力するようにしても良い。さらに、上記決定部35は、上記ノード選別部34により得られた最終階層のノードの評価値が所定値未満である場合、最終的な認識結果として当該パターンが認識不能であったことを出力するようにしても良い。
次に、上記のように構成される情報処理装置11におけるパターン認識処理の第1、第2、第3の処理例について説明する。
まず、上記情報処理装置11におけるパターン認識処理の第1の処理例について説明する。
図13は、パターン認識処理の第1の処理例としての処理の流れを説明するためのフローチャートである。
まず、上記画像入力装置12から供給されるパターン認識処理の対象となる画像は、画像インターフェース21により情報処理装置11に取り込まれる(ステップS10)。画像インターフェース21によりパターン認識処理の対象となる画像が取り込まれると、プロセッサ22は、パターン認識部22aによるパターン認識処理を開始する。すなわち、上記パターン認識部22aの認識制御部30は、まず、上記候補抽出部31により入力画像から単語候補を抽出する処理を実行する(ステップS11)。たとえば、図9に示すような画像が与えられた場合、上記候補抽出部31は、図12に示すような単語候補を抽出する。この際、上記候補抽出部31は、抽出した各単語候補を識別するための識別情報を付与するとともに、各単語候補の位置を示す情報を特定する。
入力画像から単語候補が抽出されると、上記認識制御部30は、抽出された各単語候補に対する探索処理を開始する。まず、上記認識制御部30は、探索木のルートノードを設定する処理を行う。これは、バッファ上において探索木の生成を開始することに相当する。すなわち、上記認識制御部30は、ワーキングメモリ23などに設けられたバッファにルートノードを格納する(ステップS12)。ルートノードを設定すると、上記認識制御部30は、処理中の階層を示す変数Lに初期値としての「L=1」を設定する(ステップS13)。
変数Lが設定されると、上記認識制御部30は、L階層の各ノードを生成し、各ノードの評価値を算出する処理を行う(ステップS14〜S17)。すなわち、上記認識制御部30は、既にバッファに格納されているノードを1つ取り出す(ステップS14)。たとえば、L=1の場合、認識制御部30は、バッファからルートノードを取り出す。また、L=2の場合、認識制御部30は、バッファに格納されている第1階層の各ノードを順次取り出す。
上記バッファからノードが1つ取り出されると(ステップS14)、上記認識制御部30は、上記ノード展開部32により取り出したノードに属する1つ下の階層(L階層)の各ノードを得るノード展開処理を行う(ステップS15)。例えば、L=1の場合、上記ノード展開部32は、上記候補抽出部31により抽出された候補のうち第1階層の候補に相当する各ノードをルートノードに従属する各ノードとしてバッファに格納する。また、図12に示す単語候補の抽出例に対して、上記ステップ14で取り出されたノードが(D1、P6)である場合、上記ノード展開部32は、上述したように、(D4、P7)、(D4、P3)、(D5、P7)、(D5、P3)の4通りのノードを展開する。
上記ノード展開部32により取り出したノードに属するL階層の各ノードが得られた場合、上記評価値算出部33は、得られた各ノードに対する評価値を計算する(ステップS16)。ここでは、上述した計算式により、各ノードに対する認識処理によって近似的に得られる事後確率が評価値として算出されるものとする。
上記評価値算出部33により展開された各ノードの評価値が算出されると、上記認識制御部30は、バッファに未処理のノードが存在するか否かを判断する(ステップS17)。つまり、上記認識制御部30は、L階層のノードに対して親ノードとなりうるノードのうち未処理のノードが存在するか否かを判断する。上記バッファに未処理のノードが存在すると判断した場合(ステップS17、NO)、上記認識制御部30は、上記ステップS14へ戻り、次のノードをバッファから取り出すことにより、上記ステップS14〜S16の処理を繰り返し実行する。
また、上記バッファに未処理のノードが存在しないと判断した場合(ステップS17、YES)、上記認識制御部30は、上記ノード選別部34により上記ステップ16で計算された各ノードの評価値順に上位N個のノードを選択し、バッファに格納する(ステップS18)。つまり、上記ステップS18の処理では、上記ノード選別部34により選別された各ノード(評価値が上位Nのノード)がL階層のノード(つまり、L階層の候補)として得られる。ここで、上記ノード選別部34が評価値順に選出するノードの数は、正解となる候補が破棄されしまうことがないような値が設定される。ただし、選出するノードの数が多くなればなるほど、処理の速度が低下する。従って、選出するノードの数は、認識対象とするパターンの性質および必要とされる処理時間などの運用形態に応じて適宜設定すべきものである。
上位N個のノードをL階層のノードとしてバッファに格納すると、上記認識制御部30は、L階層が当該パターン認識における最終階層であるか否かを判断する。この判断によりL階層が最終階層でないと判断した場合(ステップS19、NO)、上記認識制御部30は、上記変数Lを「L=L+1」に更新することにより、変数Lをインクリメントする(ステップS20)。変更Lをインクリメントした場合、上記認識制御部30は、上記ステップS14へ進み、更新されたL階層の各ノードに対する処理を行う。
また、上記判断によりL階層が最終階層であると判断した場合(ステップS19、YES)、上記認識制御部30は、上記決定部35により最終的な認識結果を決定する処理を行う(ステップS21)。この場合、上記決定部35では、各ノードの評価値に基づいて当該パターン認識処理の最終的な認識結果を決定する。たとえば、所定の閾値に基づいて各ノードの評価値を評価する場合、上記決定部35は、所定の閾値以上の評価値となった各ノードにより特定される各候補を認識結果として出力する。また、パターン認識処理の認識結果を一意に決定する場合、上記決定部35は、最大評価値となるノード(あるいは所定の閾値以上でかつ最大評価値となるノード)により特定される候補を認識結果として出力する。
上記のように、第1の処理例では、複数段階からなるパターン認識処理において、各階層ごとに評価値が上位N個のノードに絞り込んで探索を行う。これにより、第1の処理例によれば、誤って正解候補が破棄される可能性が低く、かつ、高速に正解となる候補を選出することが可能となる。
次に、上記情報処理装置11におけるパターン認識処理の第2の処理例について説明する。
本第2の処理例は、複数階層の候補から正解となる候補を探索する手法として最良優先探索を適用したパターン認識処理の例である。上述したように、最良優先探索では、異なる階層のノードについても、比較対象として、最も評価値が高いノードを優先的に処理してく探索手法である。また、ここでは、各ノードの評価値は、上述したような計算手法により算出されるものとする。
図14は、上記情報処理装置11におけるパターン認識処理の第2の処理例としての処理の流れを説明するためのフローチャートである。
まず、上記画像入力装置12から供給されるパターン認識処理の対象となる画像は、画像インターフェース21により情報処理装置11に取り込まれる(ステップS30)。画像インターフェース21によりパターン認識処理の対象となる画像が取り込まれると、プロセッサ22は、パターン認識部22aによるパターン認識処理を開始する。すなわち、上記パターン認識部22aの認識制御部30は、まず、上記候補抽出部31により入力画像から単語候補を抽出する処理を実行する(ステップS31)。
入力画像から単語候補が抽出されると、上記認識制御部30は、抽出された各単語候補に対する探索処理を開始する。まず、上記認識制御部30は、探索木のルートノードを設定する処理を行う。これは、バッファ上において探索木の生成を開始することに相当する。すなわち、上記認識制御部30は、ワーキングメモリ23などのバッファにルートノードを格納する(ステップS32)。ルートノードを設定すると、上記認識制御部30は、順次評価値が最大となるノードを探索していく処理を行う。
すなわち、上記認識制御部30は、既にバッファに格納されているノードから評価値が最大となっているノードを1つ取り出す(ステップS33)。なお、ルートノードのみがバッファに格納されている状態では、上記認識制御部30は、バッファからルートノードを取り出す。また、バッファに複数のノードが格納されている場合、上記認識制御部30は、各ノードの階層に係らずに、バッファに格納されている各ノードから評価値が最大となるノードを取り出す。
バッファからノードを1つ取り出すと、上記認識制御部30は、取り出したノードが終端ノードであるか否かを判断する(ステップS34)。ここで、終端ノードとは、従属するノードが存在しないノードのことである。つまり、終端ノードは、ルートノードから構成される探索木において末端となるノードである。たとえば、図15は、探索木の構成例を示す概念図である。図15に示す例において、各白丸、黒丸は、探索における各状態を示すノードである。さらに、図15に示す例では、黒丸は、下位にノードのない(従属するノードがない)終端ノードを示している。
上記判断により終端ノードでないと判断した場合(ステップS34、NO)、上記認識制御部30は、上記ノード展開部32により取り出したノードに対するノード展開処理を行う(ステップS35)。上述したように、ノード展開処理は、取り出したノードに属する1つ下の階層(L階層)の各ノードを得る処理である。なお、ルートノードが取り出された場合、上記ノード展開部32は、上記候補抽出部31により抽出された候補のうち第1階層の候補に相当する各ノードをルートノードに従属する各ノードとしてバッファに格納する。
上記ノード展開部32により取り出したノードに属する各ノードが得られた場合、上記評価値算出部33は、得られた各ノードに対する評価値を計算する(ステップS36)。ここでは、上述した計算手法により、各ノードに対する認識処理によって近似的に得られる事後確率が評価値として算出されるものとする。
上記評価値算出部33により展開された各ノードの評価値が算出されると、上記認識制御部30は、これらの各ノードと各評価値とを対応づけてバッファに格納する(ステップS37)。得られた各ノードと各評価値とをバッファに格納すると、上記認識制御部30は、上記ステップS33へ戻り、上述した処理を繰り返し実行する。上記ステップS33〜S37の処理は、上記ステップS33で取り出したノードが終端ノードと判断されるまで繰り返し実行される。この結果として、最大評価値となるノードが終端ノードに到達するまでの探索木が得られる。
すなわち、上記ステップS34で取り出したノードが終端ノードであると判断した場合(ステップS34、YES)、上記認識制御部30は、当該ノードの評価値が所定の閾値以上であるか否かを上記決定部35により判定する(ステップS38)。この判定により当該ノードの評価値が所定の閾値未満であると判定された場合(ステップS38、NO)、上記認識制御部30は、上記バッファに当該ノード以外に未処理のノードが存在するか否かを判断する(ステップS39)。
上記バッファに未処理のノードが存在すると判断した場合(ステップS39、NO)、上記認識制御部30は、上記ステップS33へ戻り、当該ノード以外で未処理のノードから最大評価値となるノードを取り出すことにより、上記ステップS33〜S37の処理を実行する。また、上記バッファに未処理のノードが存在しないと判断した場合(ステップS39、YES)、上記認識制御部30は、評価値が所定の閾値以上となる候補が得られなかったものとして、処理を終了する。
また、上記ステップS38の判定により当該ノードの評価値が所定の閾値以上であると判定された場合(ステップS38、YES)、上記認識制御部30は、上記決定部35により当該ノードにより特定される各階層の候補で示されるパターンを最終的な認識結果として出力する(ステップS40)。なお、第2の処理例としては、最終的な認識結果として所定の閾値以上の全ノードを出力するようにしても良い。これは、上記ステップS40で最終的な認識結果が得られた場合であっても、上記ステップS39へ進み、バッファに存在する未処理のノードに対して上記ステップS33以降の処理を実行することにより実現可能である。これにより、最終的な認識結果としてノードの評価値が所定の閾値以上となる複数の認識結果を出力するようにできる。
上記のように、第2の処理例では、複数段階からなるパターン認識処理において、最良優先探索により認識結果としての候補を絞り込み、絞り込んだ候補のうち所定の閾値以上の評価値となる候補に基づいて最終的な認識結果を得るようになっている。これにより、第2の処理例によれば、効率的に認識結果の候補を絞り込むことができ、絞り込んだ候補から最終的な認識結果を得ることが可能である。
また、第2の処理例に適用される最良優先探索では、必要がある。このため、第2の処理例では、評価値として、上述した計算式により近似的に算出される事後確率が用いられる。これにより、第2の処理例によれば、異なる段階のノードについても比較することが可能となり、最良優先探索を実現可能となっている。
次に、上記情報処理装置11におけるパターン認識処理の第3の処理例について説明する。
本第3の処理例は、第2の処理例と同様に、複数階層の候補から正解となる候補を探索する手法として最良優先探索を適用したパターン認識処理の例である。第3の処理例では、第2の処理例の変形例である。第3の処理例では、各ノードの評価値として、各ノードの事後確率を推定される処理時間で割った値が用いられるものである。
図16は、上記情報処理装置11におけるパターン認識処理の第3の処理例としての処理の流れを説明するためのフローチャートである。なお、図16に示すステップS50〜S60は、それぞれ第2の処理例として説明した図14に示すステップS30〜S40と同等な処理である。
まず、上記画像入力装置12から供給されるパターン認識処理の対象となる画像は、画像インターフェース21により情報処理装置11に取り込まれる(ステップS50)。画像インターフェース21によりパターン認識処理の対象となる画像が取り込まれると、プロセッサ22は、パターン認識部22aによるパターン認識処理を開始する。すなわち、上記パターン認識部22aの認識制御部30は、まず、上記候補抽出部31により入力画像から単語候補を抽出する処理を実行する(ステップS51)。
入力画像から単語候補が抽出されると、上記認識制御部30は、抽出された各単語候補に対する探索処理を開始する。まず、上記認識制御部30は、探索木のルートノードを設定する処理を行う。これは、バッファ上において探索木の生成を開始することに相当する。すなわち、上記認識制御部30は、ワーキングメモリ23などのバッファにルートノードを格納する(ステップS52)。ルートノードを設定すると、上記認識制御部30は、順次評価値が最大となるノードを探索していく処理を行う。
すなわち、上記認識制御部30は、既にバッファに格納されているノードから評価値が最大となっているノードを1つ取り出す(ステップS53)。バッファからノードを1つ取り出すと、上記認識制御部30は、取り出したノードが終端ノードであるか否かを判断する(ステップS54)。上記判断により終端ノードでないと判断した場合(ステップS54、NO)、上記認識制御部30は、上記ノード展開部32により取り出したノードに対するノード展開処理を行う(ステップS55)。
上記ノード展開部32により取り出したノードに属する各ノードが得られた場合、上記評価値算出部33は、得られた各ノードに対する評価値を計算する(ステップS56)。この第3の処理例では、事後確率を推定処理時間で割った値を評価値として算出する。
すなわち、上記評価値算出部33は、まず、上記ノード展開部32により得られた各ノードに対して事後確率を算出する(ステップS61)。各ノードの事後確率は、上述した計算手法により、各ノードに対する認識処理によって近似的に算出される。
各ノードの事後確率が算出されると、上記評価値算出部33は、各ノードに関する処理に要する時間を推定する処理を行う(ステップS62)。ここでは、各ノードの属する下位階層の認識処理に要する処理時間が推定されるものとする。このような処理時間は、たとえば、下位階層の単語の総文字数から想定する方法が考えられる。
各ノードの事後確率と推定処理時間とが得られると、上記評価値算出部33は、各ノードごとに上記ステップS61で算出された事後確率を上記ステップS62で算出された推定処理時間で割った値を各ノードの評価値として算出する(ステップS63)。
このような手法により上記評価値算出部33で得られた各ノードの評価値が算出されると、上記認識制御部30は、これらの各ノードと各評価値とを対応づけてバッファに格納する(ステップS57)。得られた各ノードと各評価値とをバッファに格納すると、上記認識制御部30は、上記ステップS53へ戻り、上述した処理を繰り返し実行する。
すなわち、上記ステップS54で取り出したノードが終端ノードであると判断した場合(ステップS54、YES)、上記認識制御部30は、当該ノードの評価値が所定の閾値以上であるか否かを上記決定部35により判定する(ステップS58)。この判定により当該ノードの評価値が所定の閾値未満であると判定された場合(ステップS58、NO)、上記認識制御部30は、上記バッファに当該ノード以外に未処理のノードが存在するか否かを判断する(ステップS59)。
上記バッファに未処理のノードが存在すると判断した場合(ステップS59、NO)、上記認識制御部30は、上記ステップS53へ戻り、当該ノード以外で未処理のノードから最大評価値となるノードを取り出すことにより、上記ステップS53〜S57の処理を実行する。また、上記バッファに未処理のノードが存在しないと判断した場合(ステップS59、YES)、上記認識制御部30は、評価値が所定の閾値以上となる候補が得られなかったものとして、処理を終了する。
また、上記ステップS58の判定により当該ノードの評価値が所定の閾値以上であると判定された場合(ステップS58、YES)、上記認識制御部30は、上記決定部35により当該ノードにより特定される各階層の候補で示されるパターンを最終的な認識結果として出力する(ステップS60)。なお、第3の処理例としては、最終的な認識結果として所定の閾値以上の全ノードを出力するようにしても良い。これは、上記ステップS60で最終的な認識結果が得られた場合であっても、上記ステップS59へ進み、バッファに存在する未処理のノードに対して上記ステップS53以降の処理を実行することにより実現可能である。これにより、最終的な認識結果としてノードの評価値が所定の閾値以上となる複数の認識結果を出力するようにできる。
上記のように、第3の処理例では、複数段階からなるパターン認識処理において、各候補に対する事後確率を推定処理時間で割った値を評価値とし、最良優先探索により認識結果としての候補を絞り込み、絞り込んだ候補のうち所定の閾値以上の評価値となる候補に基づいて最終的な認識結果を得るようになっている。これにより、第3の処理例によれば、処理時間を加味した評価値により効率的に認識結果の候補を絞り込むことができ、絞り込んだ候補から最終的な認識結果を得ることが可能である。
次に、上記情報処理装置11におけるパターン認識処理の第4の処理例について説明する。
本第4の処理例は、評価値が上位N個のノード(複数のノード)を探索していく手法を適用したパターン認識処理である。第4の処理例では、上記第2の処理例で説明した最良優先探索と同様に異なる階層のノードも比較対象として、評価値が上位N個のノードを探索する。また、第4の処理例では、抽出したN個のノードに評価値が所定閾値以上となる終端ノード(パターン全体の認識結果)が存在するか否かを判定する。抽出したノードに評価値が所定閾値以上の終端ノードが存在しない場合、第4の処理例では、抽出した各ノードをさらに展開することにより、上述した処理を繰り返す。
以下に説明する第4の処理例において、抽出するノード数は、予め設定されるものとする。抽出するノード数は、認識処理時間、情報処理装置の処理能力、および、認識対象とするパターン(文字あるいは単語)の特徴などの条件に応じて設定される。図17は、図11に示すパターン認識部22aに、抽出するノード数の設定値を保持するための設定情報記憶部30aを設けた構成例を示す図である。
図17に示す構成例では、設定情報記憶部30aは、上記認識制御部30に設けられている。たとえば、上記設定情報記憶部30aに記憶されるノード数の設定値は、認識制御部30に適用される認識アルゴリズムの設計段階で設定される。ただし、上記設定情報記憶部30aに記憶されるノード数の設定値は、図示しないキーボード等の操作部によりオペレータが適宜指定できるようにしても良い。
図18は、抽出するノード数とそれらのノードに対する処理時間との関係を概念的に示す図である。図18に示すように、1つのノードに対する処理時間に比べて、2つ目以降のノードに対する処理時間は短い。たとえば、図18に示す例では、各ノードが日本語あるいはアルファベット等の文字からなる単語候補である場合、1つ目のノードに対する処理時間に比べて、2つ目以降のノードに対する処理時間は非常に短くなっている。このような傾向は、一般に、パターン認識を行うためのアルゴリズムに当てはまる。
つまり、パターン認識処理では、認識候補としての各ノードを個別に処理するよりも、複数のノードをまとめて処理を実行した方が効率が良いと考えられる。ただし、まとめて処理するノード数を無制限に増やしても、必ずしも認識精度の向上が望めるものではない。従って、まとめて処理するノード数(抽出するノード数)は、許容される認識処理時間、認識対象となるパターンの特徴、および、パターン認識処理を実行する情報処理装置11の処理能力に応じて適宜設定されるのが好ましい。
たとえば、日本語と英語とでは、文字自体の複雑さ及び辞書の単語数などが大きく異なる。一般には、日本語は、アルファベットに比べて文字自体が複雑で、かつ、辞書の単語数も多いと考えられる。このため、日本語の文字認識処理では、アルファベットの文字認識処理に比べて、抽出するノード数を多く設定するのが好ましい。また、図18に示す例では、1つ目のノードに対する処理時間は、アルファベットに比べて日本語の方が長い。1つ目のノードに対する処理時間が長くなるようなパターンの認識処理では、処理時間の許容範囲内において、多くのノードをまとめて処理する方が効率及び精度が良くなると考えられる。
次に、第4の処理例としてのパターン認識処理の流れについて説明する。
図19は、上記情報処理装置11におけるパターン認識処理の第4の処理例としての処理の流れを説明するためのフローチャートである。
まず、上記画像入力装置12から供給されるパターン認識処理の対象となる画像は、画像インターフェース21により情報処理装置11に取り込まれる(ステップS70)。画像インターフェース21によりパターン認識処理の対象となる画像が取り込まれると、プロセッサ22は、パターン認識部22aによるパターン認識処理を開始する。すなわち、上記パターン認識部22aの認識制御部30は、まず、上記候補抽出部31により入力画像から単語候補を抽出する処理を実行する(ステップS71)。
入力画像から単語候補が抽出されると、上記認識制御部30は、抽出された各単語候補に対する探索処理を開始する。まず、上記認識制御部30は、探索木のルートノードを設定する処理を行う。これは、バッファ上において探索木の生成を開始することに相当する。すなわち、上記認識制御部30は、ワーキングメモリ23などのバッファにルートノードを格納する(ステップS72)。
上記バッファにノードを格納する処理が行われると、上記認識制御部30は、評価値が大きい順から所定数までのノード(上位N個のノード)を抽出する処理を行う。すなわち、上記認識制御部30は、バッファに格納されている複数のノードから評価値が大きい順にN番目までのN個のノードを取り出す(ステップS73)。なお、バッファに格納されているノードがN個未満である場合(たとえば、ルートノードのみがバッファに格納されている場合)、上記認識制御部30は、バッファに格納されている全てのノードを取り出すようにすれば良い。
上記バッファからN個までのノードを取り出す場合、上記認識制御部30は、上記バッファから抽出するノードに終端ノードが含まれるか否かを判断する(ステップS74)。上述したように、たとえば、図15に示す探索木の概念図において、探索木の末端となる黒丸で示すノードが終端ノードである。図15に示すように、終端ノードには、従属するノードが存在しない。これは、終端ノードが、各階層のノードの組合せからなる1つのパターン全体(例えば、住所情報などの文字列)を示すものであることを意味している。
上記バッファから取り出したN個のノードに終端ノードが含まれないと判断した場合(ステップS74、NO)、上記認識制御部30は、上記ノード展開部32により取り出したN個の各ノードに対するノード展開処理を行う(ステップS75)。ノード展開処理は、各ノードに属する1つ下の階層の各ノードを得る処理である。なお、ルートノードが取り出された場合、上記ノード展開部32は、上記候補抽出部31により抽出された候補のうち第1階層の候補に相当する各ノードをルートノードに従属する各ノードとしてバッファに格納する。
上記ノード展開部32により取り出した各ノードに従属する複数のノードが得られた場合、上記評価値算出部33は、得られた各ノードに対する評価値を計算する(ステップS76)。ここでは、上述した計算手法により、各ノードに対する認識処理によって近似的に得られる事後確率が評価値として算出されるものとする。
上記評価値算出部33により展開された各ノードの評価値が算出されると、上記認識制御部30は、これらの各ノードと各評価値とを対応づけてバッファに格納する(ステップS77)。得られた各ノードと各評価値とをバッファに格納すると、上記認識制御部30は、上記ステップS73へ戻り、上述した処理を繰り返し実行する。上記ステップS73〜S77の処理は、上記ステップS73で取り出すノードから認識結果として採用される終端ノードが検出されるまで繰り返し実行される。この結果として、評価値が上位N個となる各ノードを順に結合した探索木が得られる。
また、上記ステップS74でバッファから取り出したノードに終端ノードが含まれると判断した場合(ステップS74、YES)、上記認識制御部30は、各終端ノードの評価値が所定の閾値以上であるか否かを上記決定部35により判定する(ステップS78)。上記バッファには、各ノードに対する評価値が記憶されている。従って、バッファから抽出される終端ノードにも評価値が算出されている。終端ノードは、パターン全体を一意に特定するものである。このため、終端ノードに対する評価値は、当該終端パターンで特定されるパターン全体が確からしいか否かを評価する値でもある。従って、上記認識制御部30は、終端ノードに対する評価値が所定の閾値以上であれば、当該終端ノードで特定されるパターン全体が認識結果として確からしいと判定する。
すなわち、抽出したN個のノードに含まれる終端ノードの評価値が所定の閾値以上である場合(ステップS78、YES)、上記認識制御部30は、当該終端ノードにより特定されるノードの組合せ(パターン全体)を最終的なパターン全体の認識結果として採用する。つまり、上記認識制御部30は、評価値が所定の閾値以上となる終端ノードで特定される各段階のノードの組合せからなるパターン全体を最終的な認識結果として出力する(ステップS80)。
なお、第4の処理例としては、所定の閾値以上の全ての終端ノードをパターン全体の認識結果の候補として出力するようにしても良い。これは、上記ステップS78で所定閾値以上の終端ノードが得られた場合であっても、上記ステップS75へ進むことにより実現できる。この場合、所定閾値以上の終端ノードを蓄積しつつ、バッファが空になるまで上記ステップS73〜79の処理を実行すれば良い。これにより、上記認識制御部30は、評価値が所定閾値以上となった全ての終端ノードに基づく複数の認識結果を出力することができる。
また、上記判定により抽出した終端ノードの評価値が所定の閾値以上でないと判定された場合(ステップS78、NO)、上記認識制御部30は、上記ステップS75へ進み、終端ノード以外の各ノードに対するノード展開処理を行う。上記ノード展開処理により展開した各ノードに対する評価値をバッファに格納すると(ステップS79、YES)、上記認識制御部30は、上記ステップS73へ戻り、上記バッファから評価値が上位N番目までのN個のノードを取り出すことにより、上記ステップS73〜S77の処理を実行する。ただし、バッファから取り出した全ノードが終端ノードで、かつ、それらの終端ノードが全て所定の閾値未満である場合、上記バッファにはノードが格納されない。このようにバッファが空となった場合(ステップS79、YES)、上記認識制御部30は、評価値が所定の閾値以上となる候補が得られなかったものとして当該処理を終了する。
上記のように、第4の処理例では、複数段階の部分パターン(例えば、単語)からなるパターン全体(文字列)を認識する処理において、最良優先探索により各段階の部分パターンの候補(ノード)をN個ずつ絞り込み、絞り込んだN個のノードのうち評価値が所定閾値以上となる終端ノードを最終的な認識結果として得るようになっている。これにより、第4の処理例では、正解となるノードが破棄されることなく、効率的に各段階のノードを絞り込むことができ、効率的かつ高精度なパターン認識処理を実現できる。
また、第4の処理例では、評価値が上位N個のノードを抽出するために、各ノードに従属するノードを展開し、展開した各ノードに対する評価値としての事後確率を近似的に算出する。これにより、第4の処理例では、事後確率が評価値となるため、異なる段階のノードについても比較でき、それらのノードから上位N個のノードを容易に抽出できる。
次に、上記情報処理装置11におけるパターン認識処理の第5の処理例について説明する。
第5の処理例は、第4の処理例の変形例である。第5の処理例では、第4の処理例と同様に最良優先探索により評価値が上位N個のノードを探索していく手法を適用したパターン認識処理である。第5の処理例では、上記第4の処理例で説明した各処理における各ノードの評価値の算出処理として、各ノードの事後確率を推定される処理時間で割った値を算出する処理を行う。
図20は、上記情報処理装置11におけるパターン認識処理の第5の処理例としての処理の流れを説明するためのフローチャートである。なお、図20に示すステップS90〜S95、S97〜S100の各処理は、それぞれ第4の処理例で説明した図19に示すステップS70〜S75、S77〜S80と同様な説明が可能である。
上記画像入力装置12から供給されるパターン認識処理の対象となる画像は、画像インターフェース21により情報処理装置11に取り込まれる(ステップS90)。画像インターフェース21によりパターン認識処理の対象となる画像が取り込まれると、上記パターン認識部22aの認識制御部30は、上記候補抽出部31により入力画像から単語候補となる画像領域を抽出する(ステップS91)。入力画像から単語候補の領域が抽出されると、上記認識制御部30は、まず、ワーキングメモリ23などのバッファにルートノードを格納する(ステップS92)。
上記バッファにノードが格納されると、上記認識制御部30は、バッファに格納されている複数のノードから評価値が大きい順にN個までのノードを取り出す(ステップS93)。上記バッファから上位N個までのノードを取り出す場合、上記認識制御部30は、上記バッファから抽出するノードに終端ノードが含まれるか否かを判断する(ステップS94)。上記バッファから取り出したN個のノードに終端ノードが含まれない場合(ステップS94、NO)、上記認識制御部30は、上記ノード展開部32により取り出したN個の各ノードに対するノード展開処理を行う(ステップS95)。ノード展開処理は、各ノードに属する1つ下の階層の各ノードを得る処理である。
上記ノード展開部32により取り出した各ノードに従属する複数のノードが得られた場合、上記評価値算出部33は、得られた各ノードに対する評価値を計算する(ステップS96)。この第5の処理例では、事後確率を推定処理時間で割った値を評価値として算出する(ステップS101〜S103)。
すなわち、上記評価値算出部33は、上記ノード展開部32により得られた各ノードに対して事後確率を算出する(ステップS101)。各ノードの事後確率は、上述した計算手法により、各ノードに対する認識処理によって近似的に算出される。
各ノードの事後確率が算出されると、上記評価値算出部33は、各ノードに関する処理に要する時間を推定する処理を行う(ステップS102)。ここでは、各ノードの属する下位階層の認識処理に要する処理時間が推定されるものとする。このような処理時間は、たとえば、下位階層の単語の総文字数から想定する方法が考えられる。
各ノードの事後確率と推定処理時間とが得られると、上記評価値算出部33は、各ノードごとに上記ステップS101で算出された事後確率を上記ステップS102で算出された推定処理時間で割った値を各ノードの評価値として算出する(ステップS103)。
このような手法により上記評価値算出部33により展開された各ノードの評価値が算出されると、上記認識制御部30は、これらの各ノードと各評価値とを対応づけてバッファに格納する(ステップS97)。得られた各ノードと各評価値とをバッファに格納すると、上記認識制御部30は、上記ステップS93へ戻り、上述した処理を繰り返し実行する。上記ステップS93〜S97の処理は、上記ステップS93で取り出すノードから認識結果として採用される終端ノードが検出されるまで繰り返し実行される。この結果として、評価値が上位N個となる各ノードを順に結合した探索木が得られる。
また、上記ステップS94でバッファから取り出したノードに終端ノードが含まれると判断した場合(ステップS94、YES)、上記認識制御部30は、各終端ノードの評価値が所定の閾値以上であるか否かを上記決定部35により判定する(ステップS98)。上記決定部35により抽出したN個のノードに含まれる終端ノードの評価値が所定の閾値以上であると判定された場合(ステップS98、YES)、上記認識制御部30は、当該終端ノードにより特定されるノードの組合せからなるパターン全体の最終的な認識結果として出力する(ステップS100)。
なお、第5の処理例としては、所定の閾値以上となる全ての終端ノードに基づくパターンを最終的な認識結果の候補として出力するようにしても良い。これは、上記ステップS98で所定閾値以上の終端ノードが得られた場合であっても、上記ステップS95へ進むことにより実現可能である。この場合、所定閾値以上となった終端ノードを蓄積しつつ、バッファが空になるまで上記ステップS93〜99の処理が実行される。これにより、上記認識制御部30は、評価値が所定閾値以上となった全ての終端ノードに基づく複数の認識結果を最終的な認識結果として出力すれば良い。
また、上記判定により抽出した終端ノードの評価値が所定の閾値以上でないと判定された場合(ステップS98、NO)、上記認識制御部30は、上記ステップS95へ進み、終端ノード以外の各ノードに対するノード展開処理を行う。上記ノード展開処理により展開した各ノードに対する評価値をバッファに格納すると(ステップS99、YES)、上記認識制御部30は、上記ステップS93へ戻り、上記バッファから評価値が上位N番目までのN個のノードを取り出すことにより、上記ステップS93〜S97の処理を実行する。ただし、バッファから取り出した全ノードが終端ノードで、かつ、それらの終端ノードが全て所定の閾値未満である場合、上記バッファにはノードが格納されない。このようにバッファが空となった場合(ステップS99、YES)、上記認識制御部30は、評価値が所定の閾値以上となる候補が得られなかったものとして当該処理を終了する。
上記のように、第5の処理例では、各ノードに対する評価値として、事後確率を推定処理時間で割った値を算出する。このような評価値に基づいてノードをN個ずつ絞り込むことにより、第5の処理例では、評価値が所定閾値以上となる終端ノードを最終的な認識結果として得るようになっている。これにより、第5の処理例によれば、処理時間を加味した評価値により効率的に認識結果の候補を絞り込むことができる。
11…情報処理装置、21…画像インターフェース、22…プロセッサ、22a…パターン認識部、23…ワーキングメモリ、24…プログラムメモリ、25…データメモリ、25a…辞書データベース(住所データベース)、26…出力インターフェース、30…認識制御部、31…候補抽出部、32…ノード展開部、33…評価値算出部、34…ノード選別部、35…決定部、30a…設定情報記憶部。