JP3630837B2 - 情報処理方法及び装置 - Google Patents
情報処理方法及び装置 Download PDFInfo
- Publication number
- JP3630837B2 JP3630837B2 JP09109796A JP9109796A JP3630837B2 JP 3630837 B2 JP3630837 B2 JP 3630837B2 JP 09109796 A JP09109796 A JP 09109796A JP 9109796 A JP9109796 A JP 9109796A JP 3630837 B2 JP3630837 B2 JP 3630837B2
- Authority
- JP
- Japan
- Prior art keywords
- pattern
- sub
- learning
- classification tree
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Character Discrimination (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は画像、文字、音声等のパターンを認識する際に使用する分類木を作成、或いは認識する情報処理方法及び装置に関するものである。
【0002】
【従来の技術】
従来、特願平6−265054号公報にあるように、パターンを段階的に縮退化した前処理を経て、分類木を作成する方法が存在した。この方法によれば、パターンの巨視的な形から微視的な形にわたったバランスのよい分類木が作成でき、人間の認識能力に限りなく近い認識性能が期待できるようになる。
【0003】
【発明が解決しようとしている課題】
しかしながら、この方法では学習用パターンの多さでパターンの変形を吸収するため、学習用パターンが膨大に必要になるという欠点があった。
【0004】
この様子を図6を使って説明する。
【0005】
「0」から「9」までの数字ビットマップを認識するための分類木を上述の従来の方法で作成したとする。
【0006】
例えば、この方法で作成した分類木は、図6のような形になり、図6の右から5番目の枝には、「4」「5」「6」の3種類のカテゴリーの学習用パターンが存在することになる。
【0007】
このことは、逆にいうと、巨視的に視て図6の右から5番目の枝の形をした学習用パターンは「4」「5」「6」の3種類のカテゴリー以外は存在しないことを意味する。
【0008】
このようにして作成された分類木を使って、全く新しいビットマップパターンを認識することを考える。図22にある(a)から(e)のビットマップは全て巨視的に見ると、図6の右から5番目の枝の形になる。つまりこの上記説明した分類木でこれらのビットマップを認識しようとすると、必ず「4」「5」「6」のカテゴリーに分類されてしまう。結果的に(a)(b)(c)は正解で、(d)はリジェクトすべきところを認識してしまい、(e)にいたっては明らかな誤認識をしてしまう。
【0009】
この不具合の原因は、学習用パターンに図22の(e)のような形をしたカテゴリー「2」のパターンが存在しなかったことが原因であるが、これはとりも直さず、従来の方法が“全ての変動を包含した膨大な学習用パターンを必要とする”ということを意味しているのである。
【0010】
【課題を解決するための手段】
上記課題を解決するために、本発明の情報処理方法は、記憶媒体に記憶されている制御プログラムを実行することによりパターン認識に用いるための分類木を作成するように情報処理装置を制御するための情報処理方法であって、複数の学習用パターンそれぞれから学習用サブパターンを取り出す取り出しステップと、前記取り出しステップで取り出した各学習用サブパターンについて、当該学習用サブパターンの特徴を所定の縮退ルールにしたがって段階的に縮退することにより、各学習用サブパターンの階層データ構造を作成する階層化処理ステップと、前記階層化処理ステップで作成された各サブパターンの階層データ構造と各学習用サブパターンのカテゴリーとに基づいて、前記分類木のノードに対応付けされた前記縮退された特徴のうち最も分類効率が高くなる少なくとも1つの特徴を選択し、当該選択された特徴を複数の特徴に展開し、当該展開された複数の特徴それぞれに対応する学習用サブパターンのカテゴリーの数に基づき該ノードから下位のノードまたは葉へ伸びる枝を決定することによって、認識対象パターンから取り出した各サブパターンを分類するための前記分類木を上位のノードから順に作成する分類木作成ステップとを有することを特徴とする。
【0011】
上記課題を解決するために、本発明の情報処理装置は、複数の学習用パターンそれぞれからサブパターンを取り出す取り出し手段と、前記取り出し手段で取り出した各学習用サブパターンについて、当該学習用サブパターンの特徴を所定の縮退ルールにしたがって段階的に縮退することにより、各学習用サブパターンの階層データ構造を作成する階層化処理手段と、前記階層化処理手段で作成された各サブパターンの階層データ構造と各学習用サブパターンのカテゴリーとに基づいて、前記分類木のノードに対応付けされた前記縮退された特徴のうち最も分類効率が高くなる少なくとも1つの特徴を選択し、当該選択された特徴を複数の特徴に展開し、当該展開された複数の特徴それぞれに対応する学習用サブパターンのカテゴリの数に基づき該ノードから下位のノードまたは葉へ伸びる枝を決定することによって、認識対象パターンから取り出した各サブパターンを分類するための前記分類木を上位のノードから順に作成する分類木作成手段とを有することを特徴とする。
【0019】
【発明の実施の形態】
以下、図面に基づいて本発明の好適な実施例を説明する。
【0020】
〈実施の形態1〉
図2は本発明に関わる以下の全ての実施の形態に係わる情報処理装置の構成を示すブロック図である。
【0021】
装置は、パターン入力装置201、表示装置202、中央処理装置(CPU)203、メモリ204から構成される。
【0022】
パターン入力装置201は、例えばオンライン文字認識ならば、デジタイザとペンを有し、デジタイザの上にペンによって入力された文字や図形の座標データをCPU203に渡す。このパターン入力装置は、これから認識しようとするパターンが入力できるものならば、画像を光学的に読み取るスキャナーでも音声を入力するマイクでもまた、それらの入力手段から入力したパターンを通信手段を介して入力しても何でもよい。表示装置202はパターン入力手段201に入力された生のパターンデータやCPU203が認識した結果を表示するものであり、CRTや液晶表示器等で良い。CPU203は入力されたパターン認識を行ったり、すべての装置の制御を行ったりする。メモリ204はCPU203が使用する認識プログラムや辞書を記憶したり、入力されたパターンデータ、認識プログラムの使用する変数等を一時的に記憶する。
【0023】
図1は、本実施の形態の機能的構成を最もよく表す図画であり、101は「生の学習用パターン」、102は「生の学習用パターン」をサブパターン毎に切り出す「サブパターン取り出し手段」、103は「学習用サブパターン」をピラミッドに通す「階層化前処理手段」、104はピラミッドで処理された後の「階層化された学習用サブパターン」、105は「階層化された学習用サブパターン」を元に分類木を作成する「分類木作成手段」、106は「分類木作成手段」が分類木を作成する過程で使用する「展開変数判別手段」、107は「分類木作成手段」の結果得られた「分類木」である。本発明におけるインプットは“生の学習用パターン”で、アウトプットは“分類木”となる。
【0024】
図8は、本実施の形態のオンライン手書き文字認識方法が適用される情報処理装置における主にメモリ内の構造を示すものである。801は図2にも203として示したCPUであり、後述するメモリ802に格納されている制御プログラムに従って、本実施の形態において説明する各処理を実行するものである。後述するフローチャートの処理も、実行の為の制御プログラムがメモリ802に格納され、CPU801により実行されるのは同様である。
【0025】
メモリ802は、CPU801が各処理を実行する為の制御プログラムを格納するプログラム部802−1と、各種パラメータやデータを格納するデータ部802−2とを有する。プログラム部は、例えば図7のフローチャートの個々の部品がサブルーチンプログラムとして格納される。このサブルーチンプログラムは、注目ノードの状態を判別するS701の処理プログラムであり、ノードを削除するS702の処理プログラムであり、リーフノードとしてのS705の処理プログラムであり、適切な黒ビットを選択するS706の処理プログラムであり、黒ビットの組みの枝を生成するS707の処理プログラムであり、作成された分類木を利用して入力パターンを認識するプログラムであり、各処理についてのサブルーチンがプログラム部802−1に格納される。後述する各処理の実行時には、必要に応じてメモリ802の制御プログラムを読み出し、CPU801が実行する。データ部802−2には、個々の学習パターンを暫定的に保持する学習パターンバッファと、各学習パターンのピラミッド展開したパターンを保持するエリアと、作成途中の分類木を保持する分類木バッファを有する。
【0026】
HDD(ハードディスクドライブ)803は、全学習パターンを保持し、本実施の形態で説明する方法により、作成された分類木のデータを保持し、この分類木のデータにより図9のような分類木が示すルートをたどることができる。
【0027】
ここで、メモリ2は、格納のROM,RAM,HD等とし、予めプログラム及びデータを格納しておいても良いし、或いは装置本体に着脱可能なFDやCD−ROM等の記憶媒体から処理に先立ってプログラムやデータを読み込むようにしても良い。また、公衆回線やLAN等の通信手段を介して他の装置からプログラムやデータを読み込むようにしても良い。
【0028】
入力装置804はHDD803に格納された分類木を用いて認識を行うパターンを入力する為の入力装置であり、光学的に入力した学習用画像パターンから生成された分類木を用いて画像パターンを認識する場合はスキャナを用いる。また、同様にペンにより入力されるストロークデータを認識する場合はペンとデジタイザやタッチパネル、或いは音声データを認識する場合はマイクロフォンを用いる。
【0029】
また、これらの認識用のデータは、これらの各入力手段から直接入力する他に、公衆回線やLAN等を介して他の装置の有する上記各入力手段により入力されたデータを取り込むようにしても良いことはもちろんである。
【0030】
以下、図3から図8に基づいて、本発明の動きを詳細に述べる。
【0031】
まず、入力パターンとしては、8×8のメッシュ上に書かれた「0」から「9」までの10個の数字(カテゴリー)を想定する。「0」の1入力パターンを図5の下に示す。
【0032】
辞書作成用の学習パターンは「0」から「9」までそれぞれのカテゴリーについて100個存在すると仮定する。つまり、カテゴリー総数が10個あるので、学習パターンの総数は1000個になる。なお、これらを、LTi,j(=Learning Template i,j)(iは「0」から「9」のカテゴリーを表すサフィックスで、0<=i<=9の範囲の値をとる。jは学習パターンナンバーを示すサフィックスで、1<=j<=100の範囲の値をとる。)とする。
【0033】
本件に係わるパターン認識用辞書作成方式はサブパターン取り出しフェーズ、ピラミッド展開フェーズ、分類木作成フェーズの3段階の手段を経て実施される。以下、順に説明する(図3のフローチャート参照)。
【0034】
(1)サブパターン取り出しフェーズ(301)
サブパターン取り出しフェーズ301では、図4に示すように、生の学習用パターン400を部分的パターンに分割したサブパターンとして取り出す。図4においては、「A」と書かれている学習用パターン400が3×3のマトリクスの合計9個のサブパターンに分けて取り出した例を示す。サブパターンの取り出し方は、図4のように互いのサブパターンが重なるように行ってもよいし、全く重ならないように行ってもよい。このサブパターンの取り出しは、メモリ802に格納されているサブパターン取り出しルールに従って行う。
【0035】
図5にこのサブパターン取り出しフェーズの詳しい様子を示す。図5では、「0」と書かれている学習用パターンの真ん中の部分を取り出している様子を示している。この真ん中の部分は、図4の上に書かれている3×3個のサブパターンの真ん中のサブパターン401と同じと考えてよい。
【0036】
結局、図5において、生の学習用パターン501は8×8のビットマップとして表現されていて、そこから4×4のビットマップとして表現されるサブパターンが3×3の9個取り出されることになる。
【0037】
(2)ピラミッド展開フェーズ(302)
サブパターン取り出しフェーズ302において、取り出された9個のサブパターンの各々は、図5に示すような502〜504の3階層のピラミッドワークが構成されていることになる。図5の3階層はそれぞれ上からパターン504は1×1、パターン503は2×2、パターン502は4×4個のニューロン群からできている。
【0038】
まず、取り出された学習用サブパターンは図5の最下層の4×4個のニューロンに入力される。この時、入力パターン(LTi,j)501の各ビットの状態が白の部分はニューロンがOFFで、黒の部分はニューロンがONとなると仮定する(以下の説明において、「黒」と「ニューロンのON」/「白」と「ニューロンのOFF」同一視する。)。
【0039】
ピラミッドの構造は極めて単純である。つまり、下の層の2×2のニューロンの中で、ONとなっているものが1つでもあれば、一つ上位の層の1つのニューロンはONとなる。図5において、サブパターン502におけるニューロン505〜508のうち、507と508がONなので、これらのニューロンに対応するニューロン509もONになる。このようなルールで入力パターンを上に向かって処理していく。なお、このピラミッドの構造=ルールはこれに限ったものではなく、黒のニューロンを1としてカウントし、平均値がしきい値を超えた場合に、上位ニューロンをONにする等、下位の複数ニューロンの状態に従って上位ニューロンの状態を決めるルールであれば良い。
【0040】
これらの下位ニューロンから上位ニューロンを決定する処理を、サブパターンを構成する全てのニューロンについて行い、更に全てのサブパターンについても行う。
【0041】
(3)分類木作成フェーズ(303)
ピラミッド展開フェーズ303によって、学習用パターン(LTi,j)の全てが、図5のピラミッドに展開される。分類木の作成はこのピラミッドの展開302とは逆に、上位から下位へ行われる。
【0042】
ルートのノードは、図5の最上位の層(1×1)のニューロンから始まる。
【0043】
学習用サブパターン(LTi,j)をピラミッドに展開した結果、図5の2番目の層のパターン503(2×2)のどれかはONとなっている(本実施の形態で用いているルールによれば、真っ白い学習用サブパターンが存在しない限り2番目の層(2×2)は全てOFFにはならない)。よって、全ての学習用サブパターン(LTi,j)に対して、最上位の層(1×1)のニューロンの活動はONとなっている。
【0044】
2番目の層(2×2)の状態は2の4乗=16個存在するので(正確には、上記説明のように、全てOFFの状態はないので、15個)、ルートノードから16本の枝が伸びることとなる(図6参照)。
【0045】
図6の枝の状態は、図5の第2層のニューロン群の発火状況を図示することによって、示してある(黒はONで、白はOFFを表す)。
【0046】
存在するカテゴリーの種類の欄が「×」となっている枝は、上記1.学習用サブパターン(LTi,j)が1つも存在しない場合に相当し、削除される(なお、厳密には、一番左の枝はルートからは出ていない)。
【0047】
左から8番目の枝は「1」のカテゴリーの学習用サブパターンしか存在しない。これは、上記2.学習用サブパターン(LTi,j)の中で、あるカテゴリー(例えば「1」のサブパターンのみ存在する場合に相当し、葉となる。
【0048】
例えば、右から5番目の枝には「4」「5」「6」のカテゴリーの学習用サブパターンが存在し、上記3.上記1、2以外の場合=複数カテゴリーのサブパターンが混合して存在する場合に相当し、ノードとなる。
【0049】
分類木を作成する処理をフローチャートとして表現した図が図7である。以下、図10に示したような分類木の生成手順を説明する。
【0050】
まず、ステップS700では、注目ノードをルートノードとする。
【0051】
ステップS1001では、設定された注目ノードに関して、以下の3条件、即ち、
1.学習用パターンが存在しない。
2.単一カテゴリー学習パターンのみが存在する。
3.複数のカテゴリーの学習パターンが存在する。
のどれに当てはまるかチェックして、1.の条件を満たせば、ステップS702へ進む。また、2.の条件を満たせば、ステップS705へ進む。また、3.の条件を満たせば、ステップS706へ進む。
【0052】
ステップS702では、分類木からそのノードを削除する。
【0053】
ステップS703では、他の全ノードは、全てリーフノードになったかどうかチェックして、イエスであれば、処理を終了する。また、ノーであれば、ステップS704に進み、注目ノードとして次のノードを選ぶ。そして、ステップS701に戻り、同様の処理を繰り返す。
【0054】
ステップS705では、このノードをリーフノードとして、そのカテゴリー番号をアサインする。そして、ステップS703に進む。
【0055】
ステップS706では、そのノードに含まれるニューロンの中から、上述のエントロピー基準に基づいて、そのニューロン中の1つのニューロンを選択する。
【0056】
ステップS707では、選択されたニューロンの下位階層のベクトルの組の枝を生成する。
【0057】
図9は、このステップでの処理を説明するための図であり、左上のニューロンが選択された場合の下位階層のニューロンの組の例を示す。
【0058】
図9を参照すると、900が、ステップS706で選択されたニューロンが左上であるとする。このニューロンに対応する下位層での組は、15通りの組み合わせ、即ち、下位として示した15種のパターンが存在する。そして、これらの組み合わせの各々を新しいノードとする各枝を生成する。
【0059】
以上、ステップS707での処理を示した。
【0060】
次に、ステップS708へ進み、生成された枝のノードの1つを次の注目ノードとする。そして、S708で注目ノードを移してステップS701へ戻り、同様の処理を繰り返す。
【0061】
以上説明した手順によって、図10に示すような分類木を生成することにより、特徴量の多いパターンの大局的分類を維持しながら、類似のカテゴリー間の細かい特徴の違いを反映した分類木を生成でき、この分類木を探索することで、高速かつ高認識率の文字認識が可能になる。
【0062】
次に、このノードから枝を作成する方法について述べる。先の説明では、左上のニューロンが選ばれた場合について説明したが、このノードから枝を作成する際に、最も効率の良い枝の作成を行いたい。最も効率が良いとは、結局、枝を展開したときに、最も多くカテゴリーに関する情報が得られるニューロンを選択するということである。
【0063】
このような要請の元に枝を展開する方法は、一般に非常に多く存在し、そのどれを採用してよいかは、なかなか決定できない。従来この問題が原因で、認識用の分類木がうまく作成できないでいた。
【0064】
しかし、仮にこのノードから展開する枝を、このノードにおいて、ONとなっているニューロンを下の層に展開した枝に限ってみる。例えば、図6の右から5番目の枝の場合、図5の第2層における左上、左下、右下の3つのニューロンの中から1つ選び、そのニューロンの下、つまり図5の第3層の下4つのニューロンの状態に関する枝の展開を行う。
【0065】
こうすることによって、枝の展開に要する計算時間を大幅に削減できるし、このような制限をしても、本質的に分類木の分類性能に大きなダメージは与えない。
【0066】
では次に、このノードにおいて、ONとなっているニューロンの内で、展開したときに最も効率の良くなるニューロンを選ぶ方法を説明する。
【0067】
あるノードに存在する学習用サブパターン(LTi,j)の中で、カテゴリー番号iの数をNiで表す。このノードに存在する学習用パターンの総数をNとすると、このノードにおけるそれぞれのカテゴリーの存在確率piはpi=Ni/Nで表される。なお、
【0068】
【外1】
よって、このノードの情報が得られたときのエントロピーは、以下の式で表される。
【0069】
【外2】
【0070】
次に、このノードにおいて、ONとなっているニューロンの1つを選択して、そこから枝を展開したときのエントロピーの減少量を計算する。
【0071】
上述の通り、1つのニューロンを下の層に向かって展開したときの枝の数は16本である。この16本の枝に学習用サブパターン(LTi,j)がどのように分布するかを、展開したときの枝に存在する学習用サブパターン(LTi,j)の数=Ni,bで表す。Ni,bのiはカテゴリー番号を示し、bは枝(branch)の番号を示す。
【0072】
この時、それぞれの枝の情報が得られたときのエントロピーは、上の議論と同じく、
【0073】
【外3】
この式で、
【0074】
【外4】
は枝に存在する学習用サブパターン(TPi,j)の総数を表わす。
【0075】
それぞれの枝にいく確率は
【0076】
【外5】
(Nは(1)式のNと同じ)なので、結局、枝を展開したときの平均エントロピーは
【0077】
【外6】
となる。
【0078】
結局、エントロピーの平均減少値は、
【0079】
【外7】
となる。
【0080】
そして、この値を枝の数の対数で割った値
【0081】
【外8】
が、枝を展開したときの分類効率を表すことになる。
【0082】
この値が最高となるニューロンを選び、枝を展開していく。
【0083】
なお、1つのニューロンのみを展開するのではなく、複数のニューロンのグループに関して枝を展開してもよい。
【0084】
この場合、(5)式のBranchNumberは、ニューロンの数×16となる(厳密には展開する下の層のニューロンが全てOFFということは有り得ないので、BranchNumberは、ニューロンの数×15が正しい。)。
【0085】
また、本実施例においては、(5)式で表される値を枝を展開したときの分類効率を表す値として採用したが、例えば文献「Classfication and Regression Trees」に記載されている“Gini criterion”等の枝の展開効率を表す関数ならば(5)式に限らず何でもよい。
【0086】
以上、展開するニューロン、またはニューロンの組みが決定されれば、それに従って、枝を展開し、葉及びノードを作成していく。
【0087】
そして、最後、全部、葉になったところで、分類木作成を完了する。
【0088】
図10は、分類木作成フェーズ303により作成され、HDD803に格納された分類木の例である。
【0089】
図10において、S702により削除された枝は省いてある。また図10の○で囲ってある枝はS705でリーフノードとしてカテゴリーの番号がふられた葉であることを示す。
【0090】
葉以外の全ての枝はノードとなるので、更に深く枝の展開が行われるわけであるが、図10においては右から3番目のノードのみ、更なる枝の展開結果を図示した。
【0091】
右から3番目のノードは、「1」「7」「9」の3種類のカテゴリーが共存しており、枝の展開が必要となっている。ここで、第1層のどのニューロンを展開すべきかについて、「展開変数判別手段」が第1層の右上のニューロンという答えを出したとする。すると、右上のニューロンの状態に関して、図7と同様に24 =16本の枝が展開され、ある枝は削除され、ある枝は葉となり、ある枝はノードとなる。ノードとなった枝は更に枝を展開しなければならなく、最終的に全ての枝の端末は葉となる。
【0092】
図10では、右から3番目のノードの展開結果を、簡単のため、第1層と第2層を重ね書きすることによって示してある。実際は、図3に示したピラミッドの第1層の4つのニューロンと第2層の右上4つのニューロンに、これらの状態が表現されている。
【0093】
図11は、先に説明した方法により作成した分類木を用いて生の入力パターンを認識する流れを表す図画であり、101は「生の入力パターン」、102は「生の入力パターン」、102は「生の入力パターン」をサブパターン毎に切り出す「サブパターン取り出し手段」、103は「入力サブパターン」をピラミッドに通す「階層化前処理手段」、104はピラミッドで処理された後の「階層化された入力サブパターン」、105は「分類木」、106は「階層化された入力サブパターン」と「分類木」を元にカテゴリーの判別確率を求める「カテゴリー判別手段」、107は「カテゴリー判別手段」の結果得られた各カテゴリーの判別確率を統合する「判別確率統合手段」である。本発明におけるインプットは“生の入力パターン”で、アウトプットは“認識候補”となる。
【0094】
上記の「分類木」の内容は、実施例1の方法で作成しうる「分類木」であることが望ましい。
【0095】
1001「生の入力パターン」は、「生の学習用パターン」101に対応するもので、入力装置1104から入力されるが実質的なデータの構成としては何等変わりない。1002「サブパターン取り出し手段」、1003「階層化前処理手段」の2つの手段は図1のそれぞれ対応する手段と全く同じものである。1004「階層化された入力サブパターン」は、図1の場合は学習パターンの数だけ存在したが、本実施例においては、入力されたパターンから導き出された1つのみである。
【0096】
1006「カテゴリー判別手段」は、1004「階層化された入力サブパターン」に基づき、図10の分類木をたぐって葉に到達した時点で、その葉に存在するカテゴリーを認識結果として表示器やプリンタより出力する。
【0097】
また、葉に到達しなかった場合は、最後に通過したノードに含まれるカテゴリー確率を結果として出力する。
【0098】
1007「判別確率統合手段」は、1006「カテゴリー判別手段」のサブパターン毎の結果を相加平均、または相乗平均等の平均処理を行う。
【0099】
〈実施の形態2〉
本実施の形態では、学習用データ及び認識対象として入力されるデータが、ペン等の座標入力手段により入力されるストロークデータであり、先の実施の形態1で扱っていたデータがビットマップデータであったのに対し、入力ストロークを分割してベクトル量子化して処理を行う点に特徴があるが、全体的な流れは実施の形態1の処理に準ずる。
【0100】
図12は、本実施の形態における分類木作成処理流れを表す図画であり、1201は「学習用ストローク」、1202は前記「学習用ストローク」を分割する「ストローク分割手段」、1203は前記「ストローク分割手段」において分割されたストローク切片をベクトル量子化する「ベクトル化手段」、1204は、前記「ベクトル化手段」の結果得られたベクトル系列を部分的にサブベクトルとして取り出す「サブベクトル取り出し手段」、1205は前記「サブベクトル取り出し手段」の結果得られたベクトル系列を階層的に処理する「階層化前処理手段」、1206は前記で「階層化前処理手段」で処理された後の「階層化されたサブベクトル系列」、1207は前記「階層化されたベクトル系列」を元に分類木を作成する「分類木作成手段」、1208は前記「分類木作成手段」が分類木を作成する過程で使用する「展開ベクトル判別手段」、1209は「分類木作成手段」の結果得られた「分類木」である。
【0101】
本実施例におけるインプットは“学習用ストローク”で、アウトプットは“分類木”となる。
【0102】
以下、図12から図17に基づいて、本実施の形態の動きを詳細に述べる。
【0103】
まず、認識対象とするカテゴリーとしては、1画で書かれた「く」「し」「つ」の3種類の文字を想定する。
【0104】
次に辞書作成用の学習パターンは「く」「し」「つ」それぞれ100個存在すると仮定する。なお、これらを、TPi,j(=Training Pattern i,j)(iはカテゴリーを表すサフィックスで、0<=i<=2の範囲の値をとる。jは学習パターンナンバーを示すサフィックスで、1<=j<=100の範囲の値をとる。)と名前付ける。
【0105】
本件に係わるオンライン手書き文字認識用辞書作成方法は、図13のフローチャートに示すように、ベクトル生成フェーズ、サブベクトル取り出しフェーズ、階層化前処理フェーズ、分類木作成フェーズの4段階の手段を経て実行される。
【0106】
(1)ベクトル生成フェーズ(1301)
図14に基づいて、ベクトル生成フェーズ1301の様子を詳しく述べる。
【0107】
まず、学習用ストロークはn分割(図14ではn=8となっている)される。図14では、このn分割は、ストローク距離に関するn等分となっているが、本実施例はこれを制限しない。
【0108】
例えば始点終点付近のストロークの状態が不安定なストローク入力装置であれば、始点終点付近のストロークをいくら詳しくベクトル化してもあまり意味がなくなってくる。このような場合は、n分割における最初と最後の分割は、その他の分割に比べて長くとっても構わない。次に、n分割されたそれぞれの切片がベクトル量子化される。
【0109】
図14においては、番号0から番号11までの12方向の基本ベクトル量子化している。この基本ベクトルの方向は、360度の中で等間隔に並んでいるが、これもストローク分割手段と同様、制限するものではない。
【0110】
例えば、図14の12方向の基本ベクトルの中で、実際左上方向の(例えば番号10や番号11)基本ベクトルは筆記ストロークの中にはあまり出てこない。よって、これらの部分はもっと角度の間隔の開いた基本ベクトルのセットを用いてもよい。
【0111】
以上、ベクトル生成フェーズにおいて、図12の1202ストローク分割手段と1203ベクトル化手段が学習用ストローク全てに施される。
【0112】
図14の例でいうと、「〜」ストロークが基本ベクトル系列「12455421」に変換されている。
【0113】
(2)サブベクトル取り出しフェーズ(1302)
図15に基づいて、サブベクトル取り出しフェーズ1302の様子を詳しく述べる。
【0114】
図15において、ストロークは16等分され「5421124554211245」のベクトルに変換されている。
【0115】
この16個のベクトルで構成されているベクトル系列を部分的に取り出し(8個のベクトル系列×3個)のサブベクトル系列群を作成する。
【0116】
この取り出し方法は、図15のように重なるように行ってもよいし、また、全く重ならないように行ってもよい。
【0117】
また、サブベクトル系列のベクトル個数が図15では8個となっているが、これも限定しない。
【0118】
(3)階層化前処理フェーズ(1303)
次に、取り出された学習用サブストロークはピラミッド状に階層化前処理を施される。
【0119】
図16にその1例を示す。図16においては、ベクトル化手段の結果得られたベクトル系列の隣り合う2個のベクトルの平均ベクトルを上の階層に出力することによって、ベクトル情報が順次半分になっている(縮退している)。結局、図16において8個の基本ベクトルで表されたストロークを、順次4個、2個、1個のベクトルに変換していることになる。
【0120】
この隣り合う2個のベクトルを平均する1方法を、図17に基づいて詳しく述べる。
【0121】
なお、図14においては、基本ベクトルを12方向としたが、図17では8方向とする。このように、基本ベクトルの総数や個々の基本ベクトルの方向を変化させても本質は変わらない。
【0122】
また基本ベクトルは8方向であるという前提で、以下、実施例を記述する。
【0123】
隣り合う2個のベクトルの最初の番号をpre、後の番号をpostで示す。この時、2個のベクトルの平均は単純には(pre+post)/2となるが、これが基本ベクトルにならない場合が存在する。
【0124】
一般的に、8方向の等分割ベクトルと8方向の等分割ベクトルの平均ベクトルは16方向存在するので、これを8方向にしなくてはいけない。
【0125】
図17はこの方法を示している。図17の大きな→は上の階層で右向き(番号2)のベクトルが存在することを意味し、その下に書かれた8組みのベクトルは、下の階層で存在しうるベクトルを意味する。
【0126】
つまり、上の階層で番号2のベクトルになる(per,post)の組みを(2,2)(1,3)(3,1)(0,4)(2,3)(3,2)(1,4)(4,1)の8組にしていることになる(これは、perとpostの値の平均(pre+post)/2が1.5より大、かつ2.5以下という条件である)。
【0127】
上の階層のベクトルの番号が番号2以外の場合は、図17のベクトル組み合わせを全て45度ずつ回転して得られるベクトル組み合わせを用いる。
【0128】
なお、この上の階層のベクトルと下の階層の2個のベクトルの組み合わせは図17に限ったものではなく、上の階層のベクトルが下の階層の2個の平均ベクトルと見なせうる組み合わせであれば、何でもよい。
【0129】
(4)分類木作成フェーズ(1304)
階層化前処理フェーズ1303を経て、学習用サブストローク(TPi,j)の全てが、図16に示すようなベクトルのピラミッドに下から上へ展開される。分類木の作成はこのベクトルのピラミッド化とは逆に、上から下へ行われる。この処理について、図19のフローチャートに従って以下に説明する。
【0130】
なお、以下説明において、基本ベクトルは図17にある番号0から番号7までの8方向(個)であると仮定する(よって、ベクトルのピラミッド上にあるベクトルも全てこの基本ベクトルのどれかである。)。
【0131】
最上位の層のベクトルの状態は8個存在するので、ルートノードから8本の枝が伸びることとなる。
【0132】
この時、枝に存在する学習用ストローク(TPi,j)の数を数える。この結果によって、以後の処理が3つにわかれる。
【0133】
1.学習用ストローク(TPi,j)が1つも存在しない場合
この場合は、その枝を削除する。
【0134】
2.学習用ストローク(TPi,j)の中で、あるカテゴリー(例えば「つ」)のストロークのみ存在する場合
この場合は、この枝を葉とし、カテゴリーの番号(例えば「つ」)を割り振る。
【0135】
3.上記1、2以外の場合=複数カテゴリーのストロークが混合して存在する場合
この場合、この枝をノードとして、更に分類木作成を続ける。
【0136】
図18にこの処理の結果を示す。枝の状態は、図16の最上位の層=第1層のベクトルの状況を図示することによって、示してある。
【0137】
存在するカテゴリーの種類の欄が「×」となっている枝は、上記1.学習用ストローク(TPi,j)が1つも存在しない場合に相当し、削除される。
【0138】
左から3番目の枝は「つ」のカテゴリーの学習用ストロークしか存在しない。これは、上記2.学習用ストローク(TPi,j)の中で、あるカテゴリー(例えば「つ」)のストロークのみ存在する場合に相当し、葉となる。
【0139】
例えば、左から4番目と5番目の枝には「く」「し」「つ」のカテゴリーの学習用ストロークが存在し、上記3.1、2以外の場合=複数カテゴリーのストロークが混合して存在する場合に相当し、ノードとなる。
【0140】
以上説明した処理をフローチャートとして表現した図が図19である。以下、図18に示したような分類木の生成手順を説明する。
【0141】
まず、ステップS1000では、注目ノードをルートノードとする。
【0142】
ステップS1001では、設定された注目ノードに関して、以下の3条件、即ち、
1.学習用パターンが存在しない。
2.単一カテゴリー学習パターンのみが存在する。
3.複数のカテゴリーの学習パターンが存在する。
のどれに当てはまるかチェックして、1.の条件を満たせば、ステップS1002へ進む。また、2.の条件を満たせば、ステップS1005へ進む。また、3.の条件を満たせば、ステップS1006へ進む。
【0143】
ステップS1002では、分類木からそのノードを削除する。
【0144】
ステップS1003では、他の全ノードは、全てリーフノードになったかどうかチェックして、イエスであれば、処理を終了する。また、ノーであれば、ステップS1004に進み、注目ノードとして次のノードを選ぶ。そして、ステップS1001に戻り、同様の処理を繰り返す。
【0145】
ステップS1005では、そのノードをリーフノードとして、そのカテゴリー番号をアサインする。そして、ステップS1003に進む。
【0146】
ステップS1006では、そのノードに含まれるベクトル列の中から、上述のエントロピー基準に基づいて、そのベクトル列中の1つのベクトルを選択する。
【0147】
ステップS1007では、選択されたベクトルの下位階層のベクトルの組の枝を生成する。
【0148】
図11は、このステップでの処理を説明するための図であり、下位階層のベクトルの組の例を示す。
【0149】
図11を参照して、5000が、ステップS1006で選択された方向“2”を有するベクトルであるとする。このベクトルに対応する下位層でのベクトルの組は、8通りの組み合わせベクトル、即ち、5001、5002、5003、5004、5005、5006、5007、5008が存在する。そして、これらの組み合わせベクトルの各々を新しいノードとする各枝を生成する。
【0150】
以上、ステップS1007での処理の具体例を示した。
【0151】
次に、ステップS1008へ進み、生成された枝のノードの1つを次の注目ノードとする。そして、ステップS1001へ戻り、同様の処理を繰り返す。
【0152】
以上説明した手順によって、図9に示すような分類木を生成することにより、特徴量の多いストロークパターンの大局的分類を維持しながら、類似のカテゴリー間の細かい特徴の違いを反映した分類木を生成でき、この分類木を探索することで、高速かつ高認識率の文字認識が可能になる。
【0153】
ここで、S1907でノードから枝を作成する際に、最も効率の良い枝の作成を行いたい。最も効率が良いとは、結局、枝を展開したときに、最も多くカテゴリーに関する情報が得られるベクトルをS1906において選択するということである。
【0154】
以下、展開したときに最も効率の良くなるベクトルを選ぶ方法を説明する。
【0155】
あるノードに存在する学習用ストローク(TPi,j)の中で、カテゴリー番号iの数をNiで表す。このノードに存在する学習用ストロークの総数をNとすると、このノードにおけるそれぞれのカテゴリーの存在確率piはpi=Ni/Nで表される。なお、
【0156】
【外9】
よって、このノードの情報が得られたときのエントロピーは、以下の式で表される。
【0157】
【外10】
【0158】
次に、このノードにおいて、あるベクトルを選択して、そこから枝を展開したときのエントロピーの減少量を計算する。
【0159】
上述の通り、1つのベクトルを下の層に向かって展開したときの枝の数は8本である。この8本の枝に学習用ストローク(TPi,j)がどのように分布するかを、展開したときの枝に存在する学習用ストローク(TPi,j)の数=Ni,bで表す。Ni,bのiはカテゴリー番号を示し、bは枝(branch)の番号を示す。この時、それぞれの枝の情報が得られたときのエントロピーは、上の議論と同じく、
【0160】
【外11】
この式で、
【0161】
【外12】
は枝に存在する学習用ストローク(TPi,j)の総数を表わす。
【0162】
それぞれの枝にいく確率は
【0163】
【外13】
(Nは(1)式のNと同じ)なので、結局、枝を展開したときの平均エントロピーは
【0164】
【外14】
となる。
【0165】
結局、エントロピーの平均減少値は、
【0166】
【外15】
となる。
【0167】
そして、この値を枝の数の対数で割った値
【0168】
【外16】
が、枝を展開したときの分類効率を表すことになる。この値が最高となるベクトルを選び、枝を展開していく。
【0169】
なお、1つのベクトルのみを展開するのではなく、複数のベクトルのグループに関して枝を展開してもよい。この場合、(5)式のBranchNumberは、(選択されたベクトルの数)×8となる。
【0170】
また、本実施例においては、(5)式で表される値を枝を展開したときの分類効率を表す値として採用したが、例えば文献「Classfication and Regression Trees」に記載されている“Gini criterion”等の枝の展開効率を表す関数ならば(5)式に限らず何でもよい。
【0171】
以上、展開するベクトル、またはベクトルの組みが決定されれば、それに従って、枝を展開し、葉及びノードを作成していく。そして、最後、全部、葉になったところで、分類木作成を完了する。
【0172】
以上、本実施例では、学習ストロークが1本という前提で、本発明に係わるオンライン手書き文字認識用の辞書作成方法を述べてきたが、実際には何本のストロークが入力文字として切り出されるシステムであっても、それぞれのストロークを本実施例と同様に処理することによって対応できる。
【0173】
図20は、分類木作成フェーズによって作成され、HDD803に格納される分類木データであって、手書き文字認識用辞書として利用されるデータを示す図である。
【0174】
図20は図18を更に下の階層まで表示した図で、削除された枝は省いてある。図20の□で囲ってある枝は葉であることを示す。
【0175】
葉以外の全ての枝はノードとなるので、更に深く枝の展開が行われるわけであるが、図20においては左から2番目のノードのみ、更なる枝の展開結果を図示した。
【0176】
左から2番目のノードは、「く」「し」「つ」の3種類のカテゴリーが共存しており、枝の展開が必要となっている。
【0177】
このノードの状態を表現するベクトルは1つしか存在しない(○の中に表示されているベクトル)ので、展開するべきベクトルは一意的に決定する。この時の展開するベクトルの組み合わせは図15に記載されているベクトルの組みに準ずる。つまり、上の階層のベクトルが右下の方向(番号3)のベクトルでありうる下の階層の2個のベクトルの8つの組み合わせに相当する枝の展開が行われる。この状況は図16において、ベクトルの展開が第2層まで進んだことを意味する。
【0178】
更に展開した左から2番目の枝のノードには「し」「く」の2つのカテゴリーが存在する。よって、更なる枝の展開が必要になる。ここで、ノードを表現する2個のベクトルのうち、どのベクトルを展開すべきかについて、「展開ベクトル判別手段」が最初のベクトルという答えを出したとする。すると、最初のベクトルの状態に関して、上の階層と同様に8本の枝が展開され、ある枝は削除され、ある枝は葉となり、ある枝はノードとなる。ノードとなって枝は更に枝を展開しなければならなく、最終的に全ての枝の端末は葉となる。
【0179】
図21は、本実施の形態におけるオンライン手書き文字認識処理を表す図画であり、2101はユーザが入力した「筆記ストローク」、2102は前記「筆記ストローク」を分割する「ストローク分割手段」、2103は前記「ストローク分割手段」において分割されたストローク切片をベクトル量子化する「ベクトル化手段」、2104は前記「ベクトル化手段」の結果得られたベクトル系列から部分的なベクトルを取り出す「サブベクトル取り出し手段」、2105は前記「サブベクトル取り出し手段」の結果得られたベクトル系列を階層的に処理する「階層化前処理手段」、2106は前記で「階層化前処理手段」で処理された後の「階層化されたサブベクトル系列」、2107はカテゴリー分類に必要な情報にまとめた「分類木」、2108は前記「階層化されたベクトル系列」を元に前記「分類木」の分類内容に従って前記「筆記ストローク」のカテゴリーを決定する「カテゴリー判別手段」、2109は前記「カテゴリー判別手段」の結果得られた各カテゴリーの判別確率を統合する「判別確率統合手段」である。本発明におけるインプットは“筆記パターン”でアウトプットは“認識候補”である。上記の「分類木」の内容は、実施の形態1の方法で作成しうる「分類木」であることが望ましい。
【0180】
2101「筆記ストローク」は、実施例4の1001「学習用ストローク」対応するもので、実質的には何等変わりない。2102「ストローク分割手段」、2103「ベクトル化手段」、2104「サブベクトル取り出し手段」、2105「階層化前処理手段」の4つの手段は実施例4のそれぞれ対応する手段と全く同じものである。2106「階層化されたサブベクトル系列」は、図12の1206の場合は学習パターンの数だけ存在したが、ここでは、筆記されたストロークから導き出された1つのみである。
【0181】
2107「カテゴリー判別手段」は、2106「階層化されたベクトル系列」に基づき、図18の分類木をたぐって葉に到達した時点で、その葉に存在するカテゴリーを認識結果として出力する。また、葉に到達しなかった場合は、最後に通過したノードに含まれるカテゴリー確率を結果として出力する。
【0182】
2108「判別確率統合手段」は、2107「カテゴリー判別手段」のサブパターン毎の結果を相加平均、または相乗平均等の平均処理を行う。
【0183】
〈実施の形態3〉
先の実施の形態で説明した分類木の作成方法、及び認識方法を利用して、音声を認識することも可能である。
【0184】
音声データは時系列データとして表現されるが、このデータをフーリエ変換し、その包絡線をとると図23のようになる。図23は「あしたいく」と発声された音声データをフーリエ変換した結果である。この状態では、図23を見ても分かるように、2値のビットマップデータと異なり、アナログ値の強度を持ち、山脈のような起伏を持った3次元形状データとなっている。
【0185】
よって、この3次元データを何らかの定めた軸で切断し、N枚の2次元ビットマップデータに変換すれば、先の実施の形態で説明したビットマップデータの分類木作成方法で分類木が作成でき、また、入力音声についても同様のフーリエ変換と軸での切断によりビットマップデータで表せ、よって認識が可能となる。
【0186】
図24は強度と周波数を軸にして図23のデータを切断した図であり、図25は周波数と時間を軸にして図23のデータを切断した図である。
【0187】
尚、図23のような3次元形状全体の認識結果としては、上記のようなN枚の2次元ビットマップの認識結果の相加平均等の平均操作を施すことによって得られる。
【0188】
【発明の効果】
以上説明したように、本発明によれば、少量の学習パターンでも高認識率が実現できる。
【0189】
以上説明したように、本発明によれば、高速で高い認識率の認識処理を可能とする。
【0190】
以上説明したように、本発明によれば、認識能率の良い分類木(辞書データ)を作成することができる。
【0191】
以上説明したように、本発明によれば、サブパターンを容易に抽出できる。
【0192】
以上説明したように、本発明によれば、スキャナ等で入力される画像データや、ペン等により入力される軌跡データ、マイクロフォン等により入力される音声データ、などについて、認識能率の良い分類木(辞書データ)を作成し、高速で高い認識率の認識処理を可能とする。
【図面の簡単な説明】
【図1】実施の形態1の分類木作成処理を示す図である。
【図2】本発明に係る情報処理装置のハード構成を示すブロック図である。
【図3】実施の形態1の情報処理装置の処理の流れを示すフローチャートである。
【図4】実施の形態1におけるサブパターン取り出しを説明する図である。
【図5】実施の形態1におけるピラミッドの構造図である。
【図6】作成途中の分類木の様子を示す図である。
【図7】実施の形態1における分類木作成過程を示すフローチャートである。
【図8】本発明に係る情報処理装置の構成図である。
【図9】選択されたニューロンから作成される下の階層パターンの例を示す図である。
【図10】実施の形態1により作成された分類木の例を示す図である。
【図11】実施の形態1の認識処理を示す図である。
【図12】実施の形態2の分類木作成処理を示す図である。
【図13】実施の形態2の情報処理装置の処理の流れを示すフローチャートである。
【図14】ストローク生成フェーズの動きを示す図である。
【図15】サブベクトル取り出し手段を示す図である。
【図16】ベクトル系列の階層化処理を示す図である。
【図17】ベクトル平均化を示す図である。
【図18】作成途中の分類木の様子を示す図である。
【図19】分類木作成過程を示すフローチャートである。
【図20】実施の形態2により作成された分類木の例である。
【図21】実施の形態2の認識処理を示す図である。
【図22】従来例を示す図である。
【図23】音声パターンをフーリエ変換した結果の包絡線の図である。
【図24】強度と周波数を軸にした音声パターンの図である。
【図25】周波数と時間を軸にした音声パターンの図である。
【発明の属する技術分野】
本発明は画像、文字、音声等のパターンを認識する際に使用する分類木を作成、或いは認識する情報処理方法及び装置に関するものである。
【0002】
【従来の技術】
従来、特願平6−265054号公報にあるように、パターンを段階的に縮退化した前処理を経て、分類木を作成する方法が存在した。この方法によれば、パターンの巨視的な形から微視的な形にわたったバランスのよい分類木が作成でき、人間の認識能力に限りなく近い認識性能が期待できるようになる。
【0003】
【発明が解決しようとしている課題】
しかしながら、この方法では学習用パターンの多さでパターンの変形を吸収するため、学習用パターンが膨大に必要になるという欠点があった。
【0004】
この様子を図6を使って説明する。
【0005】
「0」から「9」までの数字ビットマップを認識するための分類木を上述の従来の方法で作成したとする。
【0006】
例えば、この方法で作成した分類木は、図6のような形になり、図6の右から5番目の枝には、「4」「5」「6」の3種類のカテゴリーの学習用パターンが存在することになる。
【0007】
このことは、逆にいうと、巨視的に視て図6の右から5番目の枝の形をした学習用パターンは「4」「5」「6」の3種類のカテゴリー以外は存在しないことを意味する。
【0008】
このようにして作成された分類木を使って、全く新しいビットマップパターンを認識することを考える。図22にある(a)から(e)のビットマップは全て巨視的に見ると、図6の右から5番目の枝の形になる。つまりこの上記説明した分類木でこれらのビットマップを認識しようとすると、必ず「4」「5」「6」のカテゴリーに分類されてしまう。結果的に(a)(b)(c)は正解で、(d)はリジェクトすべきところを認識してしまい、(e)にいたっては明らかな誤認識をしてしまう。
【0009】
この不具合の原因は、学習用パターンに図22の(e)のような形をしたカテゴリー「2」のパターンが存在しなかったことが原因であるが、これはとりも直さず、従来の方法が“全ての変動を包含した膨大な学習用パターンを必要とする”ということを意味しているのである。
【0010】
【課題を解決するための手段】
上記課題を解決するために、本発明の情報処理方法は、記憶媒体に記憶されている制御プログラムを実行することによりパターン認識に用いるための分類木を作成するように情報処理装置を制御するための情報処理方法であって、複数の学習用パターンそれぞれから学習用サブパターンを取り出す取り出しステップと、前記取り出しステップで取り出した各学習用サブパターンについて、当該学習用サブパターンの特徴を所定の縮退ルールにしたがって段階的に縮退することにより、各学習用サブパターンの階層データ構造を作成する階層化処理ステップと、前記階層化処理ステップで作成された各サブパターンの階層データ構造と各学習用サブパターンのカテゴリーとに基づいて、前記分類木のノードに対応付けされた前記縮退された特徴のうち最も分類効率が高くなる少なくとも1つの特徴を選択し、当該選択された特徴を複数の特徴に展開し、当該展開された複数の特徴それぞれに対応する学習用サブパターンのカテゴリーの数に基づき該ノードから下位のノードまたは葉へ伸びる枝を決定することによって、認識対象パターンから取り出した各サブパターンを分類するための前記分類木を上位のノードから順に作成する分類木作成ステップとを有することを特徴とする。
【0011】
上記課題を解決するために、本発明の情報処理装置は、複数の学習用パターンそれぞれからサブパターンを取り出す取り出し手段と、前記取り出し手段で取り出した各学習用サブパターンについて、当該学習用サブパターンの特徴を所定の縮退ルールにしたがって段階的に縮退することにより、各学習用サブパターンの階層データ構造を作成する階層化処理手段と、前記階層化処理手段で作成された各サブパターンの階層データ構造と各学習用サブパターンのカテゴリーとに基づいて、前記分類木のノードに対応付けされた前記縮退された特徴のうち最も分類効率が高くなる少なくとも1つの特徴を選択し、当該選択された特徴を複数の特徴に展開し、当該展開された複数の特徴それぞれに対応する学習用サブパターンのカテゴリの数に基づき該ノードから下位のノードまたは葉へ伸びる枝を決定することによって、認識対象パターンから取り出した各サブパターンを分類するための前記分類木を上位のノードから順に作成する分類木作成手段とを有することを特徴とする。
【0019】
【発明の実施の形態】
以下、図面に基づいて本発明の好適な実施例を説明する。
【0020】
〈実施の形態1〉
図2は本発明に関わる以下の全ての実施の形態に係わる情報処理装置の構成を示すブロック図である。
【0021】
装置は、パターン入力装置201、表示装置202、中央処理装置(CPU)203、メモリ204から構成される。
【0022】
パターン入力装置201は、例えばオンライン文字認識ならば、デジタイザとペンを有し、デジタイザの上にペンによって入力された文字や図形の座標データをCPU203に渡す。このパターン入力装置は、これから認識しようとするパターンが入力できるものならば、画像を光学的に読み取るスキャナーでも音声を入力するマイクでもまた、それらの入力手段から入力したパターンを通信手段を介して入力しても何でもよい。表示装置202はパターン入力手段201に入力された生のパターンデータやCPU203が認識した結果を表示するものであり、CRTや液晶表示器等で良い。CPU203は入力されたパターン認識を行ったり、すべての装置の制御を行ったりする。メモリ204はCPU203が使用する認識プログラムや辞書を記憶したり、入力されたパターンデータ、認識プログラムの使用する変数等を一時的に記憶する。
【0023】
図1は、本実施の形態の機能的構成を最もよく表す図画であり、101は「生の学習用パターン」、102は「生の学習用パターン」をサブパターン毎に切り出す「サブパターン取り出し手段」、103は「学習用サブパターン」をピラミッドに通す「階層化前処理手段」、104はピラミッドで処理された後の「階層化された学習用サブパターン」、105は「階層化された学習用サブパターン」を元に分類木を作成する「分類木作成手段」、106は「分類木作成手段」が分類木を作成する過程で使用する「展開変数判別手段」、107は「分類木作成手段」の結果得られた「分類木」である。本発明におけるインプットは“生の学習用パターン”で、アウトプットは“分類木”となる。
【0024】
図8は、本実施の形態のオンライン手書き文字認識方法が適用される情報処理装置における主にメモリ内の構造を示すものである。801は図2にも203として示したCPUであり、後述するメモリ802に格納されている制御プログラムに従って、本実施の形態において説明する各処理を実行するものである。後述するフローチャートの処理も、実行の為の制御プログラムがメモリ802に格納され、CPU801により実行されるのは同様である。
【0025】
メモリ802は、CPU801が各処理を実行する為の制御プログラムを格納するプログラム部802−1と、各種パラメータやデータを格納するデータ部802−2とを有する。プログラム部は、例えば図7のフローチャートの個々の部品がサブルーチンプログラムとして格納される。このサブルーチンプログラムは、注目ノードの状態を判別するS701の処理プログラムであり、ノードを削除するS702の処理プログラムであり、リーフノードとしてのS705の処理プログラムであり、適切な黒ビットを選択するS706の処理プログラムであり、黒ビットの組みの枝を生成するS707の処理プログラムであり、作成された分類木を利用して入力パターンを認識するプログラムであり、各処理についてのサブルーチンがプログラム部802−1に格納される。後述する各処理の実行時には、必要に応じてメモリ802の制御プログラムを読み出し、CPU801が実行する。データ部802−2には、個々の学習パターンを暫定的に保持する学習パターンバッファと、各学習パターンのピラミッド展開したパターンを保持するエリアと、作成途中の分類木を保持する分類木バッファを有する。
【0026】
HDD(ハードディスクドライブ)803は、全学習パターンを保持し、本実施の形態で説明する方法により、作成された分類木のデータを保持し、この分類木のデータにより図9のような分類木が示すルートをたどることができる。
【0027】
ここで、メモリ2は、格納のROM,RAM,HD等とし、予めプログラム及びデータを格納しておいても良いし、或いは装置本体に着脱可能なFDやCD−ROM等の記憶媒体から処理に先立ってプログラムやデータを読み込むようにしても良い。また、公衆回線やLAN等の通信手段を介して他の装置からプログラムやデータを読み込むようにしても良い。
【0028】
入力装置804はHDD803に格納された分類木を用いて認識を行うパターンを入力する為の入力装置であり、光学的に入力した学習用画像パターンから生成された分類木を用いて画像パターンを認識する場合はスキャナを用いる。また、同様にペンにより入力されるストロークデータを認識する場合はペンとデジタイザやタッチパネル、或いは音声データを認識する場合はマイクロフォンを用いる。
【0029】
また、これらの認識用のデータは、これらの各入力手段から直接入力する他に、公衆回線やLAN等を介して他の装置の有する上記各入力手段により入力されたデータを取り込むようにしても良いことはもちろんである。
【0030】
以下、図3から図8に基づいて、本発明の動きを詳細に述べる。
【0031】
まず、入力パターンとしては、8×8のメッシュ上に書かれた「0」から「9」までの10個の数字(カテゴリー)を想定する。「0」の1入力パターンを図5の下に示す。
【0032】
辞書作成用の学習パターンは「0」から「9」までそれぞれのカテゴリーについて100個存在すると仮定する。つまり、カテゴリー総数が10個あるので、学習パターンの総数は1000個になる。なお、これらを、LTi,j(=Learning Template i,j)(iは「0」から「9」のカテゴリーを表すサフィックスで、0<=i<=9の範囲の値をとる。jは学習パターンナンバーを示すサフィックスで、1<=j<=100の範囲の値をとる。)とする。
【0033】
本件に係わるパターン認識用辞書作成方式はサブパターン取り出しフェーズ、ピラミッド展開フェーズ、分類木作成フェーズの3段階の手段を経て実施される。以下、順に説明する(図3のフローチャート参照)。
【0034】
(1)サブパターン取り出しフェーズ(301)
サブパターン取り出しフェーズ301では、図4に示すように、生の学習用パターン400を部分的パターンに分割したサブパターンとして取り出す。図4においては、「A」と書かれている学習用パターン400が3×3のマトリクスの合計9個のサブパターンに分けて取り出した例を示す。サブパターンの取り出し方は、図4のように互いのサブパターンが重なるように行ってもよいし、全く重ならないように行ってもよい。このサブパターンの取り出しは、メモリ802に格納されているサブパターン取り出しルールに従って行う。
【0035】
図5にこのサブパターン取り出しフェーズの詳しい様子を示す。図5では、「0」と書かれている学習用パターンの真ん中の部分を取り出している様子を示している。この真ん中の部分は、図4の上に書かれている3×3個のサブパターンの真ん中のサブパターン401と同じと考えてよい。
【0036】
結局、図5において、生の学習用パターン501は8×8のビットマップとして表現されていて、そこから4×4のビットマップとして表現されるサブパターンが3×3の9個取り出されることになる。
【0037】
(2)ピラミッド展開フェーズ(302)
サブパターン取り出しフェーズ302において、取り出された9個のサブパターンの各々は、図5に示すような502〜504の3階層のピラミッドワークが構成されていることになる。図5の3階層はそれぞれ上からパターン504は1×1、パターン503は2×2、パターン502は4×4個のニューロン群からできている。
【0038】
まず、取り出された学習用サブパターンは図5の最下層の4×4個のニューロンに入力される。この時、入力パターン(LTi,j)501の各ビットの状態が白の部分はニューロンがOFFで、黒の部分はニューロンがONとなると仮定する(以下の説明において、「黒」と「ニューロンのON」/「白」と「ニューロンのOFF」同一視する。)。
【0039】
ピラミッドの構造は極めて単純である。つまり、下の層の2×2のニューロンの中で、ONとなっているものが1つでもあれば、一つ上位の層の1つのニューロンはONとなる。図5において、サブパターン502におけるニューロン505〜508のうち、507と508がONなので、これらのニューロンに対応するニューロン509もONになる。このようなルールで入力パターンを上に向かって処理していく。なお、このピラミッドの構造=ルールはこれに限ったものではなく、黒のニューロンを1としてカウントし、平均値がしきい値を超えた場合に、上位ニューロンをONにする等、下位の複数ニューロンの状態に従って上位ニューロンの状態を決めるルールであれば良い。
【0040】
これらの下位ニューロンから上位ニューロンを決定する処理を、サブパターンを構成する全てのニューロンについて行い、更に全てのサブパターンについても行う。
【0041】
(3)分類木作成フェーズ(303)
ピラミッド展開フェーズ303によって、学習用パターン(LTi,j)の全てが、図5のピラミッドに展開される。分類木の作成はこのピラミッドの展開302とは逆に、上位から下位へ行われる。
【0042】
ルートのノードは、図5の最上位の層(1×1)のニューロンから始まる。
【0043】
学習用サブパターン(LTi,j)をピラミッドに展開した結果、図5の2番目の層のパターン503(2×2)のどれかはONとなっている(本実施の形態で用いているルールによれば、真っ白い学習用サブパターンが存在しない限り2番目の層(2×2)は全てOFFにはならない)。よって、全ての学習用サブパターン(LTi,j)に対して、最上位の層(1×1)のニューロンの活動はONとなっている。
【0044】
2番目の層(2×2)の状態は2の4乗=16個存在するので(正確には、上記説明のように、全てOFFの状態はないので、15個)、ルートノードから16本の枝が伸びることとなる(図6参照)。
【0045】
図6の枝の状態は、図5の第2層のニューロン群の発火状況を図示することによって、示してある(黒はONで、白はOFFを表す)。
【0046】
存在するカテゴリーの種類の欄が「×」となっている枝は、上記1.学習用サブパターン(LTi,j)が1つも存在しない場合に相当し、削除される(なお、厳密には、一番左の枝はルートからは出ていない)。
【0047】
左から8番目の枝は「1」のカテゴリーの学習用サブパターンしか存在しない。これは、上記2.学習用サブパターン(LTi,j)の中で、あるカテゴリー(例えば「1」のサブパターンのみ存在する場合に相当し、葉となる。
【0048】
例えば、右から5番目の枝には「4」「5」「6」のカテゴリーの学習用サブパターンが存在し、上記3.上記1、2以外の場合=複数カテゴリーのサブパターンが混合して存在する場合に相当し、ノードとなる。
【0049】
分類木を作成する処理をフローチャートとして表現した図が図7である。以下、図10に示したような分類木の生成手順を説明する。
【0050】
まず、ステップS700では、注目ノードをルートノードとする。
【0051】
ステップS1001では、設定された注目ノードに関して、以下の3条件、即ち、
1.学習用パターンが存在しない。
2.単一カテゴリー学習パターンのみが存在する。
3.複数のカテゴリーの学習パターンが存在する。
のどれに当てはまるかチェックして、1.の条件を満たせば、ステップS702へ進む。また、2.の条件を満たせば、ステップS705へ進む。また、3.の条件を満たせば、ステップS706へ進む。
【0052】
ステップS702では、分類木からそのノードを削除する。
【0053】
ステップS703では、他の全ノードは、全てリーフノードになったかどうかチェックして、イエスであれば、処理を終了する。また、ノーであれば、ステップS704に進み、注目ノードとして次のノードを選ぶ。そして、ステップS701に戻り、同様の処理を繰り返す。
【0054】
ステップS705では、このノードをリーフノードとして、そのカテゴリー番号をアサインする。そして、ステップS703に進む。
【0055】
ステップS706では、そのノードに含まれるニューロンの中から、上述のエントロピー基準に基づいて、そのニューロン中の1つのニューロンを選択する。
【0056】
ステップS707では、選択されたニューロンの下位階層のベクトルの組の枝を生成する。
【0057】
図9は、このステップでの処理を説明するための図であり、左上のニューロンが選択された場合の下位階層のニューロンの組の例を示す。
【0058】
図9を参照すると、900が、ステップS706で選択されたニューロンが左上であるとする。このニューロンに対応する下位層での組は、15通りの組み合わせ、即ち、下位として示した15種のパターンが存在する。そして、これらの組み合わせの各々を新しいノードとする各枝を生成する。
【0059】
以上、ステップS707での処理を示した。
【0060】
次に、ステップS708へ進み、生成された枝のノードの1つを次の注目ノードとする。そして、S708で注目ノードを移してステップS701へ戻り、同様の処理を繰り返す。
【0061】
以上説明した手順によって、図10に示すような分類木を生成することにより、特徴量の多いパターンの大局的分類を維持しながら、類似のカテゴリー間の細かい特徴の違いを反映した分類木を生成でき、この分類木を探索することで、高速かつ高認識率の文字認識が可能になる。
【0062】
次に、このノードから枝を作成する方法について述べる。先の説明では、左上のニューロンが選ばれた場合について説明したが、このノードから枝を作成する際に、最も効率の良い枝の作成を行いたい。最も効率が良いとは、結局、枝を展開したときに、最も多くカテゴリーに関する情報が得られるニューロンを選択するということである。
【0063】
このような要請の元に枝を展開する方法は、一般に非常に多く存在し、そのどれを採用してよいかは、なかなか決定できない。従来この問題が原因で、認識用の分類木がうまく作成できないでいた。
【0064】
しかし、仮にこのノードから展開する枝を、このノードにおいて、ONとなっているニューロンを下の層に展開した枝に限ってみる。例えば、図6の右から5番目の枝の場合、図5の第2層における左上、左下、右下の3つのニューロンの中から1つ選び、そのニューロンの下、つまり図5の第3層の下4つのニューロンの状態に関する枝の展開を行う。
【0065】
こうすることによって、枝の展開に要する計算時間を大幅に削減できるし、このような制限をしても、本質的に分類木の分類性能に大きなダメージは与えない。
【0066】
では次に、このノードにおいて、ONとなっているニューロンの内で、展開したときに最も効率の良くなるニューロンを選ぶ方法を説明する。
【0067】
あるノードに存在する学習用サブパターン(LTi,j)の中で、カテゴリー番号iの数をNiで表す。このノードに存在する学習用パターンの総数をNとすると、このノードにおけるそれぞれのカテゴリーの存在確率piはpi=Ni/Nで表される。なお、
【0068】
【外1】
よって、このノードの情報が得られたときのエントロピーは、以下の式で表される。
【0069】
【外2】
【0070】
次に、このノードにおいて、ONとなっているニューロンの1つを選択して、そこから枝を展開したときのエントロピーの減少量を計算する。
【0071】
上述の通り、1つのニューロンを下の層に向かって展開したときの枝の数は16本である。この16本の枝に学習用サブパターン(LTi,j)がどのように分布するかを、展開したときの枝に存在する学習用サブパターン(LTi,j)の数=Ni,bで表す。Ni,bのiはカテゴリー番号を示し、bは枝(branch)の番号を示す。
【0072】
この時、それぞれの枝の情報が得られたときのエントロピーは、上の議論と同じく、
【0073】
【外3】
この式で、
【0074】
【外4】
は枝に存在する学習用サブパターン(TPi,j)の総数を表わす。
【0075】
それぞれの枝にいく確率は
【0076】
【外5】
(Nは(1)式のNと同じ)なので、結局、枝を展開したときの平均エントロピーは
【0077】
【外6】
となる。
【0078】
結局、エントロピーの平均減少値は、
【0079】
【外7】
となる。
【0080】
そして、この値を枝の数の対数で割った値
【0081】
【外8】
が、枝を展開したときの分類効率を表すことになる。
【0082】
この値が最高となるニューロンを選び、枝を展開していく。
【0083】
なお、1つのニューロンのみを展開するのではなく、複数のニューロンのグループに関して枝を展開してもよい。
【0084】
この場合、(5)式のBranchNumberは、ニューロンの数×16となる(厳密には展開する下の層のニューロンが全てOFFということは有り得ないので、BranchNumberは、ニューロンの数×15が正しい。)。
【0085】
また、本実施例においては、(5)式で表される値を枝を展開したときの分類効率を表す値として採用したが、例えば文献「Classfication and Regression Trees」に記載されている“Gini criterion”等の枝の展開効率を表す関数ならば(5)式に限らず何でもよい。
【0086】
以上、展開するニューロン、またはニューロンの組みが決定されれば、それに従って、枝を展開し、葉及びノードを作成していく。
【0087】
そして、最後、全部、葉になったところで、分類木作成を完了する。
【0088】
図10は、分類木作成フェーズ303により作成され、HDD803に格納された分類木の例である。
【0089】
図10において、S702により削除された枝は省いてある。また図10の○で囲ってある枝はS705でリーフノードとしてカテゴリーの番号がふられた葉であることを示す。
【0090】
葉以外の全ての枝はノードとなるので、更に深く枝の展開が行われるわけであるが、図10においては右から3番目のノードのみ、更なる枝の展開結果を図示した。
【0091】
右から3番目のノードは、「1」「7」「9」の3種類のカテゴリーが共存しており、枝の展開が必要となっている。ここで、第1層のどのニューロンを展開すべきかについて、「展開変数判別手段」が第1層の右上のニューロンという答えを出したとする。すると、右上のニューロンの状態に関して、図7と同様に24 =16本の枝が展開され、ある枝は削除され、ある枝は葉となり、ある枝はノードとなる。ノードとなった枝は更に枝を展開しなければならなく、最終的に全ての枝の端末は葉となる。
【0092】
図10では、右から3番目のノードの展開結果を、簡単のため、第1層と第2層を重ね書きすることによって示してある。実際は、図3に示したピラミッドの第1層の4つのニューロンと第2層の右上4つのニューロンに、これらの状態が表現されている。
【0093】
図11は、先に説明した方法により作成した分類木を用いて生の入力パターンを認識する流れを表す図画であり、101は「生の入力パターン」、102は「生の入力パターン」、102は「生の入力パターン」をサブパターン毎に切り出す「サブパターン取り出し手段」、103は「入力サブパターン」をピラミッドに通す「階層化前処理手段」、104はピラミッドで処理された後の「階層化された入力サブパターン」、105は「分類木」、106は「階層化された入力サブパターン」と「分類木」を元にカテゴリーの判別確率を求める「カテゴリー判別手段」、107は「カテゴリー判別手段」の結果得られた各カテゴリーの判別確率を統合する「判別確率統合手段」である。本発明におけるインプットは“生の入力パターン”で、アウトプットは“認識候補”となる。
【0094】
上記の「分類木」の内容は、実施例1の方法で作成しうる「分類木」であることが望ましい。
【0095】
1001「生の入力パターン」は、「生の学習用パターン」101に対応するもので、入力装置1104から入力されるが実質的なデータの構成としては何等変わりない。1002「サブパターン取り出し手段」、1003「階層化前処理手段」の2つの手段は図1のそれぞれ対応する手段と全く同じものである。1004「階層化された入力サブパターン」は、図1の場合は学習パターンの数だけ存在したが、本実施例においては、入力されたパターンから導き出された1つのみである。
【0096】
1006「カテゴリー判別手段」は、1004「階層化された入力サブパターン」に基づき、図10の分類木をたぐって葉に到達した時点で、その葉に存在するカテゴリーを認識結果として表示器やプリンタより出力する。
【0097】
また、葉に到達しなかった場合は、最後に通過したノードに含まれるカテゴリー確率を結果として出力する。
【0098】
1007「判別確率統合手段」は、1006「カテゴリー判別手段」のサブパターン毎の結果を相加平均、または相乗平均等の平均処理を行う。
【0099】
〈実施の形態2〉
本実施の形態では、学習用データ及び認識対象として入力されるデータが、ペン等の座標入力手段により入力されるストロークデータであり、先の実施の形態1で扱っていたデータがビットマップデータであったのに対し、入力ストロークを分割してベクトル量子化して処理を行う点に特徴があるが、全体的な流れは実施の形態1の処理に準ずる。
【0100】
図12は、本実施の形態における分類木作成処理流れを表す図画であり、1201は「学習用ストローク」、1202は前記「学習用ストローク」を分割する「ストローク分割手段」、1203は前記「ストローク分割手段」において分割されたストローク切片をベクトル量子化する「ベクトル化手段」、1204は、前記「ベクトル化手段」の結果得られたベクトル系列を部分的にサブベクトルとして取り出す「サブベクトル取り出し手段」、1205は前記「サブベクトル取り出し手段」の結果得られたベクトル系列を階層的に処理する「階層化前処理手段」、1206は前記で「階層化前処理手段」で処理された後の「階層化されたサブベクトル系列」、1207は前記「階層化されたベクトル系列」を元に分類木を作成する「分類木作成手段」、1208は前記「分類木作成手段」が分類木を作成する過程で使用する「展開ベクトル判別手段」、1209は「分類木作成手段」の結果得られた「分類木」である。
【0101】
本実施例におけるインプットは“学習用ストローク”で、アウトプットは“分類木”となる。
【0102】
以下、図12から図17に基づいて、本実施の形態の動きを詳細に述べる。
【0103】
まず、認識対象とするカテゴリーとしては、1画で書かれた「く」「し」「つ」の3種類の文字を想定する。
【0104】
次に辞書作成用の学習パターンは「く」「し」「つ」それぞれ100個存在すると仮定する。なお、これらを、TPi,j(=Training Pattern i,j)(iはカテゴリーを表すサフィックスで、0<=i<=2の範囲の値をとる。jは学習パターンナンバーを示すサフィックスで、1<=j<=100の範囲の値をとる。)と名前付ける。
【0105】
本件に係わるオンライン手書き文字認識用辞書作成方法は、図13のフローチャートに示すように、ベクトル生成フェーズ、サブベクトル取り出しフェーズ、階層化前処理フェーズ、分類木作成フェーズの4段階の手段を経て実行される。
【0106】
(1)ベクトル生成フェーズ(1301)
図14に基づいて、ベクトル生成フェーズ1301の様子を詳しく述べる。
【0107】
まず、学習用ストロークはn分割(図14ではn=8となっている)される。図14では、このn分割は、ストローク距離に関するn等分となっているが、本実施例はこれを制限しない。
【0108】
例えば始点終点付近のストロークの状態が不安定なストローク入力装置であれば、始点終点付近のストロークをいくら詳しくベクトル化してもあまり意味がなくなってくる。このような場合は、n分割における最初と最後の分割は、その他の分割に比べて長くとっても構わない。次に、n分割されたそれぞれの切片がベクトル量子化される。
【0109】
図14においては、番号0から番号11までの12方向の基本ベクトル量子化している。この基本ベクトルの方向は、360度の中で等間隔に並んでいるが、これもストローク分割手段と同様、制限するものではない。
【0110】
例えば、図14の12方向の基本ベクトルの中で、実際左上方向の(例えば番号10や番号11)基本ベクトルは筆記ストロークの中にはあまり出てこない。よって、これらの部分はもっと角度の間隔の開いた基本ベクトルのセットを用いてもよい。
【0111】
以上、ベクトル生成フェーズにおいて、図12の1202ストローク分割手段と1203ベクトル化手段が学習用ストローク全てに施される。
【0112】
図14の例でいうと、「〜」ストロークが基本ベクトル系列「12455421」に変換されている。
【0113】
(2)サブベクトル取り出しフェーズ(1302)
図15に基づいて、サブベクトル取り出しフェーズ1302の様子を詳しく述べる。
【0114】
図15において、ストロークは16等分され「5421124554211245」のベクトルに変換されている。
【0115】
この16個のベクトルで構成されているベクトル系列を部分的に取り出し(8個のベクトル系列×3個)のサブベクトル系列群を作成する。
【0116】
この取り出し方法は、図15のように重なるように行ってもよいし、また、全く重ならないように行ってもよい。
【0117】
また、サブベクトル系列のベクトル個数が図15では8個となっているが、これも限定しない。
【0118】
(3)階層化前処理フェーズ(1303)
次に、取り出された学習用サブストロークはピラミッド状に階層化前処理を施される。
【0119】
図16にその1例を示す。図16においては、ベクトル化手段の結果得られたベクトル系列の隣り合う2個のベクトルの平均ベクトルを上の階層に出力することによって、ベクトル情報が順次半分になっている(縮退している)。結局、図16において8個の基本ベクトルで表されたストロークを、順次4個、2個、1個のベクトルに変換していることになる。
【0120】
この隣り合う2個のベクトルを平均する1方法を、図17に基づいて詳しく述べる。
【0121】
なお、図14においては、基本ベクトルを12方向としたが、図17では8方向とする。このように、基本ベクトルの総数や個々の基本ベクトルの方向を変化させても本質は変わらない。
【0122】
また基本ベクトルは8方向であるという前提で、以下、実施例を記述する。
【0123】
隣り合う2個のベクトルの最初の番号をpre、後の番号をpostで示す。この時、2個のベクトルの平均は単純には(pre+post)/2となるが、これが基本ベクトルにならない場合が存在する。
【0124】
一般的に、8方向の等分割ベクトルと8方向の等分割ベクトルの平均ベクトルは16方向存在するので、これを8方向にしなくてはいけない。
【0125】
図17はこの方法を示している。図17の大きな→は上の階層で右向き(番号2)のベクトルが存在することを意味し、その下に書かれた8組みのベクトルは、下の階層で存在しうるベクトルを意味する。
【0126】
つまり、上の階層で番号2のベクトルになる(per,post)の組みを(2,2)(1,3)(3,1)(0,4)(2,3)(3,2)(1,4)(4,1)の8組にしていることになる(これは、perとpostの値の平均(pre+post)/2が1.5より大、かつ2.5以下という条件である)。
【0127】
上の階層のベクトルの番号が番号2以外の場合は、図17のベクトル組み合わせを全て45度ずつ回転して得られるベクトル組み合わせを用いる。
【0128】
なお、この上の階層のベクトルと下の階層の2個のベクトルの組み合わせは図17に限ったものではなく、上の階層のベクトルが下の階層の2個の平均ベクトルと見なせうる組み合わせであれば、何でもよい。
【0129】
(4)分類木作成フェーズ(1304)
階層化前処理フェーズ1303を経て、学習用サブストローク(TPi,j)の全てが、図16に示すようなベクトルのピラミッドに下から上へ展開される。分類木の作成はこのベクトルのピラミッド化とは逆に、上から下へ行われる。この処理について、図19のフローチャートに従って以下に説明する。
【0130】
なお、以下説明において、基本ベクトルは図17にある番号0から番号7までの8方向(個)であると仮定する(よって、ベクトルのピラミッド上にあるベクトルも全てこの基本ベクトルのどれかである。)。
【0131】
最上位の層のベクトルの状態は8個存在するので、ルートノードから8本の枝が伸びることとなる。
【0132】
この時、枝に存在する学習用ストローク(TPi,j)の数を数える。この結果によって、以後の処理が3つにわかれる。
【0133】
1.学習用ストローク(TPi,j)が1つも存在しない場合
この場合は、その枝を削除する。
【0134】
2.学習用ストローク(TPi,j)の中で、あるカテゴリー(例えば「つ」)のストロークのみ存在する場合
この場合は、この枝を葉とし、カテゴリーの番号(例えば「つ」)を割り振る。
【0135】
3.上記1、2以外の場合=複数カテゴリーのストロークが混合して存在する場合
この場合、この枝をノードとして、更に分類木作成を続ける。
【0136】
図18にこの処理の結果を示す。枝の状態は、図16の最上位の層=第1層のベクトルの状況を図示することによって、示してある。
【0137】
存在するカテゴリーの種類の欄が「×」となっている枝は、上記1.学習用ストローク(TPi,j)が1つも存在しない場合に相当し、削除される。
【0138】
左から3番目の枝は「つ」のカテゴリーの学習用ストロークしか存在しない。これは、上記2.学習用ストローク(TPi,j)の中で、あるカテゴリー(例えば「つ」)のストロークのみ存在する場合に相当し、葉となる。
【0139】
例えば、左から4番目と5番目の枝には「く」「し」「つ」のカテゴリーの学習用ストロークが存在し、上記3.1、2以外の場合=複数カテゴリーのストロークが混合して存在する場合に相当し、ノードとなる。
【0140】
以上説明した処理をフローチャートとして表現した図が図19である。以下、図18に示したような分類木の生成手順を説明する。
【0141】
まず、ステップS1000では、注目ノードをルートノードとする。
【0142】
ステップS1001では、設定された注目ノードに関して、以下の3条件、即ち、
1.学習用パターンが存在しない。
2.単一カテゴリー学習パターンのみが存在する。
3.複数のカテゴリーの学習パターンが存在する。
のどれに当てはまるかチェックして、1.の条件を満たせば、ステップS1002へ進む。また、2.の条件を満たせば、ステップS1005へ進む。また、3.の条件を満たせば、ステップS1006へ進む。
【0143】
ステップS1002では、分類木からそのノードを削除する。
【0144】
ステップS1003では、他の全ノードは、全てリーフノードになったかどうかチェックして、イエスであれば、処理を終了する。また、ノーであれば、ステップS1004に進み、注目ノードとして次のノードを選ぶ。そして、ステップS1001に戻り、同様の処理を繰り返す。
【0145】
ステップS1005では、そのノードをリーフノードとして、そのカテゴリー番号をアサインする。そして、ステップS1003に進む。
【0146】
ステップS1006では、そのノードに含まれるベクトル列の中から、上述のエントロピー基準に基づいて、そのベクトル列中の1つのベクトルを選択する。
【0147】
ステップS1007では、選択されたベクトルの下位階層のベクトルの組の枝を生成する。
【0148】
図11は、このステップでの処理を説明するための図であり、下位階層のベクトルの組の例を示す。
【0149】
図11を参照して、5000が、ステップS1006で選択された方向“2”を有するベクトルであるとする。このベクトルに対応する下位層でのベクトルの組は、8通りの組み合わせベクトル、即ち、5001、5002、5003、5004、5005、5006、5007、5008が存在する。そして、これらの組み合わせベクトルの各々を新しいノードとする各枝を生成する。
【0150】
以上、ステップS1007での処理の具体例を示した。
【0151】
次に、ステップS1008へ進み、生成された枝のノードの1つを次の注目ノードとする。そして、ステップS1001へ戻り、同様の処理を繰り返す。
【0152】
以上説明した手順によって、図9に示すような分類木を生成することにより、特徴量の多いストロークパターンの大局的分類を維持しながら、類似のカテゴリー間の細かい特徴の違いを反映した分類木を生成でき、この分類木を探索することで、高速かつ高認識率の文字認識が可能になる。
【0153】
ここで、S1907でノードから枝を作成する際に、最も効率の良い枝の作成を行いたい。最も効率が良いとは、結局、枝を展開したときに、最も多くカテゴリーに関する情報が得られるベクトルをS1906において選択するということである。
【0154】
以下、展開したときに最も効率の良くなるベクトルを選ぶ方法を説明する。
【0155】
あるノードに存在する学習用ストローク(TPi,j)の中で、カテゴリー番号iの数をNiで表す。このノードに存在する学習用ストロークの総数をNとすると、このノードにおけるそれぞれのカテゴリーの存在確率piはpi=Ni/Nで表される。なお、
【0156】
【外9】
よって、このノードの情報が得られたときのエントロピーは、以下の式で表される。
【0157】
【外10】
【0158】
次に、このノードにおいて、あるベクトルを選択して、そこから枝を展開したときのエントロピーの減少量を計算する。
【0159】
上述の通り、1つのベクトルを下の層に向かって展開したときの枝の数は8本である。この8本の枝に学習用ストローク(TPi,j)がどのように分布するかを、展開したときの枝に存在する学習用ストローク(TPi,j)の数=Ni,bで表す。Ni,bのiはカテゴリー番号を示し、bは枝(branch)の番号を示す。この時、それぞれの枝の情報が得られたときのエントロピーは、上の議論と同じく、
【0160】
【外11】
この式で、
【0161】
【外12】
は枝に存在する学習用ストローク(TPi,j)の総数を表わす。
【0162】
それぞれの枝にいく確率は
【0163】
【外13】
(Nは(1)式のNと同じ)なので、結局、枝を展開したときの平均エントロピーは
【0164】
【外14】
となる。
【0165】
結局、エントロピーの平均減少値は、
【0166】
【外15】
となる。
【0167】
そして、この値を枝の数の対数で割った値
【0168】
【外16】
が、枝を展開したときの分類効率を表すことになる。この値が最高となるベクトルを選び、枝を展開していく。
【0169】
なお、1つのベクトルのみを展開するのではなく、複数のベクトルのグループに関して枝を展開してもよい。この場合、(5)式のBranchNumberは、(選択されたベクトルの数)×8となる。
【0170】
また、本実施例においては、(5)式で表される値を枝を展開したときの分類効率を表す値として採用したが、例えば文献「Classfication and Regression Trees」に記載されている“Gini criterion”等の枝の展開効率を表す関数ならば(5)式に限らず何でもよい。
【0171】
以上、展開するベクトル、またはベクトルの組みが決定されれば、それに従って、枝を展開し、葉及びノードを作成していく。そして、最後、全部、葉になったところで、分類木作成を完了する。
【0172】
以上、本実施例では、学習ストロークが1本という前提で、本発明に係わるオンライン手書き文字認識用の辞書作成方法を述べてきたが、実際には何本のストロークが入力文字として切り出されるシステムであっても、それぞれのストロークを本実施例と同様に処理することによって対応できる。
【0173】
図20は、分類木作成フェーズによって作成され、HDD803に格納される分類木データであって、手書き文字認識用辞書として利用されるデータを示す図である。
【0174】
図20は図18を更に下の階層まで表示した図で、削除された枝は省いてある。図20の□で囲ってある枝は葉であることを示す。
【0175】
葉以外の全ての枝はノードとなるので、更に深く枝の展開が行われるわけであるが、図20においては左から2番目のノードのみ、更なる枝の展開結果を図示した。
【0176】
左から2番目のノードは、「く」「し」「つ」の3種類のカテゴリーが共存しており、枝の展開が必要となっている。
【0177】
このノードの状態を表現するベクトルは1つしか存在しない(○の中に表示されているベクトル)ので、展開するべきベクトルは一意的に決定する。この時の展開するベクトルの組み合わせは図15に記載されているベクトルの組みに準ずる。つまり、上の階層のベクトルが右下の方向(番号3)のベクトルでありうる下の階層の2個のベクトルの8つの組み合わせに相当する枝の展開が行われる。この状況は図16において、ベクトルの展開が第2層まで進んだことを意味する。
【0178】
更に展開した左から2番目の枝のノードには「し」「く」の2つのカテゴリーが存在する。よって、更なる枝の展開が必要になる。ここで、ノードを表現する2個のベクトルのうち、どのベクトルを展開すべきかについて、「展開ベクトル判別手段」が最初のベクトルという答えを出したとする。すると、最初のベクトルの状態に関して、上の階層と同様に8本の枝が展開され、ある枝は削除され、ある枝は葉となり、ある枝はノードとなる。ノードとなって枝は更に枝を展開しなければならなく、最終的に全ての枝の端末は葉となる。
【0179】
図21は、本実施の形態におけるオンライン手書き文字認識処理を表す図画であり、2101はユーザが入力した「筆記ストローク」、2102は前記「筆記ストローク」を分割する「ストローク分割手段」、2103は前記「ストローク分割手段」において分割されたストローク切片をベクトル量子化する「ベクトル化手段」、2104は前記「ベクトル化手段」の結果得られたベクトル系列から部分的なベクトルを取り出す「サブベクトル取り出し手段」、2105は前記「サブベクトル取り出し手段」の結果得られたベクトル系列を階層的に処理する「階層化前処理手段」、2106は前記で「階層化前処理手段」で処理された後の「階層化されたサブベクトル系列」、2107はカテゴリー分類に必要な情報にまとめた「分類木」、2108は前記「階層化されたベクトル系列」を元に前記「分類木」の分類内容に従って前記「筆記ストローク」のカテゴリーを決定する「カテゴリー判別手段」、2109は前記「カテゴリー判別手段」の結果得られた各カテゴリーの判別確率を統合する「判別確率統合手段」である。本発明におけるインプットは“筆記パターン”でアウトプットは“認識候補”である。上記の「分類木」の内容は、実施の形態1の方法で作成しうる「分類木」であることが望ましい。
【0180】
2101「筆記ストローク」は、実施例4の1001「学習用ストローク」対応するもので、実質的には何等変わりない。2102「ストローク分割手段」、2103「ベクトル化手段」、2104「サブベクトル取り出し手段」、2105「階層化前処理手段」の4つの手段は実施例4のそれぞれ対応する手段と全く同じものである。2106「階層化されたサブベクトル系列」は、図12の1206の場合は学習パターンの数だけ存在したが、ここでは、筆記されたストロークから導き出された1つのみである。
【0181】
2107「カテゴリー判別手段」は、2106「階層化されたベクトル系列」に基づき、図18の分類木をたぐって葉に到達した時点で、その葉に存在するカテゴリーを認識結果として出力する。また、葉に到達しなかった場合は、最後に通過したノードに含まれるカテゴリー確率を結果として出力する。
【0182】
2108「判別確率統合手段」は、2107「カテゴリー判別手段」のサブパターン毎の結果を相加平均、または相乗平均等の平均処理を行う。
【0183】
〈実施の形態3〉
先の実施の形態で説明した分類木の作成方法、及び認識方法を利用して、音声を認識することも可能である。
【0184】
音声データは時系列データとして表現されるが、このデータをフーリエ変換し、その包絡線をとると図23のようになる。図23は「あしたいく」と発声された音声データをフーリエ変換した結果である。この状態では、図23を見ても分かるように、2値のビットマップデータと異なり、アナログ値の強度を持ち、山脈のような起伏を持った3次元形状データとなっている。
【0185】
よって、この3次元データを何らかの定めた軸で切断し、N枚の2次元ビットマップデータに変換すれば、先の実施の形態で説明したビットマップデータの分類木作成方法で分類木が作成でき、また、入力音声についても同様のフーリエ変換と軸での切断によりビットマップデータで表せ、よって認識が可能となる。
【0186】
図24は強度と周波数を軸にして図23のデータを切断した図であり、図25は周波数と時間を軸にして図23のデータを切断した図である。
【0187】
尚、図23のような3次元形状全体の認識結果としては、上記のようなN枚の2次元ビットマップの認識結果の相加平均等の平均操作を施すことによって得られる。
【0188】
【発明の効果】
以上説明したように、本発明によれば、少量の学習パターンでも高認識率が実現できる。
【0189】
以上説明したように、本発明によれば、高速で高い認識率の認識処理を可能とする。
【0190】
以上説明したように、本発明によれば、認識能率の良い分類木(辞書データ)を作成することができる。
【0191】
以上説明したように、本発明によれば、サブパターンを容易に抽出できる。
【0192】
以上説明したように、本発明によれば、スキャナ等で入力される画像データや、ペン等により入力される軌跡データ、マイクロフォン等により入力される音声データ、などについて、認識能率の良い分類木(辞書データ)を作成し、高速で高い認識率の認識処理を可能とする。
【図面の簡単な説明】
【図1】実施の形態1の分類木作成処理を示す図である。
【図2】本発明に係る情報処理装置のハード構成を示すブロック図である。
【図3】実施の形態1の情報処理装置の処理の流れを示すフローチャートである。
【図4】実施の形態1におけるサブパターン取り出しを説明する図である。
【図5】実施の形態1におけるピラミッドの構造図である。
【図6】作成途中の分類木の様子を示す図である。
【図7】実施の形態1における分類木作成過程を示すフローチャートである。
【図8】本発明に係る情報処理装置の構成図である。
【図9】選択されたニューロンから作成される下の階層パターンの例を示す図である。
【図10】実施の形態1により作成された分類木の例を示す図である。
【図11】実施の形態1の認識処理を示す図である。
【図12】実施の形態2の分類木作成処理を示す図である。
【図13】実施の形態2の情報処理装置の処理の流れを示すフローチャートである。
【図14】ストローク生成フェーズの動きを示す図である。
【図15】サブベクトル取り出し手段を示す図である。
【図16】ベクトル系列の階層化処理を示す図である。
【図17】ベクトル平均化を示す図である。
【図18】作成途中の分類木の様子を示す図である。
【図19】分類木作成過程を示すフローチャートである。
【図20】実施の形態2により作成された分類木の例である。
【図21】実施の形態2の認識処理を示す図である。
【図22】従来例を示す図である。
【図23】音声パターンをフーリエ変換した結果の包絡線の図である。
【図24】強度と周波数を軸にした音声パターンの図である。
【図25】周波数と時間を軸にした音声パターンの図である。
Claims (7)
- 記憶媒体に記憶されている制御プログラムを実行することによりパターン認識に用いるための分類木を作成するように情報処理装置を制御するための情報処理方法であって、
複数の学習用パターンそれぞれから学習用サブパターンを取り出す取り出しステップと、
前記取り出しステップで取り出した各学習用サブパターンについて、当該学習用サブパターンの特徴を所定の縮退ルールにしたがって段階的に縮退することにより、各学習用サブパターンの階層データ構造を作成する階層化処理ステップと、
前記階層化処理ステップで作成された各サブパターンの階層データ構造と各学習用サブパターンのカテゴリーとに基づいて、前記分類木のノードに対応付けされた前記縮退された特徴のうち最も分類効率が高くなる少なくとも1つの特徴を選択し、当該選択された特徴を複数の特徴に展開し、当該展開された複数の特徴それぞれに対応する学習用サブパターンのカテゴリーの数に基づき該ノードから下位のノードまたは葉へ伸びる枝を決定することによって、認識対象パターンから取り出した各サブパターンを分類するための前記分類木を上位のノードから順に作成する分類木作成ステップと
を有することを特徴とする情報処理方法。 - 前記学習用サブパターンは、前記学習用パターンを分割した部分パターンであることを特徴とする請求項1に記載の情報処理方法。
- 前記パターンはビットマップデータであることを特徴とする請求項1に記載の情報処理方法。
- 前記パターンはストロークデータであることを特徴とする請求項1に記載の情報処理方法。
- 前記パターンは音声データであることを特徴とする請求項1に記載の情報処理方法。
- 認識対象パターンについて、認識対象サブパターンを取り出し、当該取り出した認識対象サブパターンの特徴を前記所定の縮退ルールにしたがって段階的に縮退することにより各認識対象サブパターンの階層データ構造を作成し、当該作成された各認識対象サブパターンの階層データ構造と請求項1に記載の前記分類木作成ステップで作成した分類木とを用いて、各認識対象サブパターンを認識する認識ステップを有することを特徴とする情報処理方法。
- 複数の学習用パターンそれぞれからサブパターンを取り出す取り出し手段と、
前記取り出し手段で取り出した各学習用サブパターンについて、当該学習用サブパターンの特徴を所定の縮退ルールにしたがって段階的に縮退することにより、各学習用サブパターンの階層データ構造を作成する階層化処理手段と、
前記階層化処理手段で作成された各サブパターンの階層データ構造と各学習用サブパターンのカテゴリーとに基づいて、前記分類木のノードに対応付けされた前記縮退された特徴のうち最も分類効率が高くなる少なくとも1つの特徴を選択し、当該選択された特徴を複数の特徴に展開し、当該展開された複数の特徴それぞれに対応する学習用サブパターンのカテゴリの数に基づき該ノードから下位のノードまたは葉へ伸びる枝を決定することによって、認識対象パターンから取り出した各サブパターンを分類するための前記分類木を上位のノードから順に作成する分類木作成手段と
を有することを特徴とする情報処理装置。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP09109796A JP3630837B2 (ja) | 1996-04-12 | 1996-04-12 | 情報処理方法及び装置 |
US08/777,249 US5982933A (en) | 1996-01-12 | 1996-12-31 | Information processing method, information processing apparatus, and storage medium |
DE69720564T DE69720564T2 (de) | 1996-01-12 | 1997-01-10 | Verfahren, Gerät und Computerprogrammprodukt zur Erzeugung von einem Klassifikationsbaum |
EP97100342A EP0784285B1 (en) | 1996-01-12 | 1997-01-10 | Method, apparatus and computer program product for generating a classification tree |
CN97102205A CN1102270C (zh) | 1996-01-12 | 1997-01-10 | 信息处理方法和信息处理设备 |
KR1019970000595A KR100251068B1 (ko) | 1996-01-12 | 1997-01-11 | 정보 처리 방법,정보 처리 장치 및 저장 매체 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP09109796A JP3630837B2 (ja) | 1996-04-12 | 1996-04-12 | 情報処理方法及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09282419A JPH09282419A (ja) | 1997-10-31 |
JP3630837B2 true JP3630837B2 (ja) | 2005-03-23 |
Family
ID=14017024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP09109796A Expired - Fee Related JP3630837B2 (ja) | 1996-01-12 | 1996-04-12 | 情報処理方法及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3630837B2 (ja) |
-
1996
- 1996-04-12 JP JP09109796A patent/JP3630837B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH09282419A (ja) | 1997-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5982933A (en) | Information processing method, information processing apparatus, and storage medium | |
Kauffmann et al. | From clustering to cluster explanations via neural networks | |
US6052481A (en) | Automatic method for scoring and clustering prototypes of handwritten stroke-based data | |
US5459809A (en) | Character recognition system and method therefor accommodating on-line discrete and cursive handwritten | |
JP3630734B2 (ja) | 情報処理方法 | |
Behnke et al. | Competitive neural trees for pattern classification | |
Batista et al. | Improving performance of HMM-based off-line signature verification systems through a multi-hypothesis approach | |
US5757964A (en) | System and method for automatic subcharacter unit and lexicon generation for handwriting recognition | |
JP3896868B2 (ja) | パターンの特徴選択方法及び分類方法及び判定方法及びプログラム並びに装置 | |
JP3630837B2 (ja) | 情報処理方法及び装置 | |
JPH0944518A (ja) | 画像データベースの構築方法と、画像データベースの検索方法及び検索装置 | |
CN113673325B (zh) | 一种多特征人物情绪识别方法 | |
JP3636525B2 (ja) | 文字認識方法とその装置 | |
CN111354364B (zh) | 一种基于rnn聚合方式的声纹识别方法与系统 | |
Kang et al. | Handwritten hangul character recognition with hierarchical stochastic character representation | |
KR0126800B1 (ko) | 한글필기체 온라인 문자인식 장치 및 방법 | |
JP2007072718A (ja) | 手書き数式の認識装置及び認識方法 | |
Gilson et al. | An empirical comparison of neural techniques for edge linking of images | |
JPH09231321A (ja) | 情報処理方法および装置 | |
CN114826921B (zh) | 基于抽样子图的网络资源动态分配方法、系统及介质 | |
JPH09282415A (ja) | 情報処理方法 | |
CN106599895A (zh) | 一种提高英文在线手写草书识别速率的分割方法 | |
Malaviya et al. | Handwriting recognition with fuzzy linguistic rules | |
JP5224847B2 (ja) | パターン認識方法、文字認識方法、パターン認識プログラムおよび文字認識プログラム | |
Mehralian et al. | Self-Supervised Representation Learning for Online Handwriting Text Classification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040831 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041101 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041214 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041215 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |