次に、本発明の複数の実施形態について、図面を参照しながら説明する。
[第1実施形態]
図1は、本実施形態による変換装置の概略機能構成を示すブロック図である。図示するように、変換装置1は、入力部10と、画像縮小部711と、エンコーダー部21と、デコーダー部31と、出力部40と、ロス算出部501と、画像切出し部721と、画像縮小部712と、第2エンコーダー部22と、第2ロス算出部701と、学習データ供給部801と、制御部901とを含んで構成される。これらの各機能部は、例えば、コンピューターと、プログラムとで実現することが可能である。また、各機能部は、必要に応じて、記憶手段を有する。記憶手段は、例えば、プログラム上の変数や、プログラムの実行によりアロケーションされるメモリーである。また、必要に応じて、磁気ハードディスク装置やソリッドステートドライブ(SSD)といった不揮発性の記憶手段を用いるようにしてもよい。また、各機能部の少なくとも一部の機能を、プログラムではなく専用の電子回路として実現してもよい。
変換装置1は、画像の系列を入力し、その画像の系列に基づく変換処理を行い、記号の系列を出力する。変換装置1は、内部に、機械学習可能なエンコーダー部およびデコーダー部を備え、それらエンコーダー部およびデコーダー部の入出力の関係を機械学習することができる。エンコーダー部およびデコーダー部のそれぞれは、例えば、ニューラルネットワークを用いて実現される。特に、エンコーダー部およびデコーダー部のそれぞれは、例えば、再帰型ニューラルネットワーク(RNN)を用いて実現され得る。なお、変換装置1が学習済みのエンコーダー部およびデコーダー部を備えるようにしてもよく、この場合には、変換装置1は、必ずしも機械学習処理を行わなくてもよい。なお、上記の画像の系列は、映像である。例えば、上記の画像の系列は、手話による視覚表現を含む映像である。また、変換装置1が出力する記号の系列は、例えば、言語表現である。出力される記号の系列は、例えば、手話映像に対応する、グロス表記と呼ばれる中間表現である。グロス表記は、文字を持たない手話言語において、手話のフレーズまたは文章を構成する一連の動作を、手話の単語に相当する短い区間で区切り、文字によって書き起こした記号列である。日本手話のグロス表記では、手話の単語の意味に近い日本語の単語をラベルとして用いる。つまり、本実施形態による変換装置1は、手話の映像を入力し、映像の自動認識処理を行い、その映像に対応するラベル列(記号列あるいは語列)を出力するものであってよい。
なお、変換装置1に入力される手話映像は、単語等の単位に予め区切られているものではない。また、その手話映像には、区切り位置を示すメタ情報も、付与されていない。
入力部10は、外部から変換対象の画像系列を取得する。画像系列は、例えば、手話を表す映像である。
画像縮小部711は、入力部10または学習データ供給部801から渡される画像を縮小する。縮小する際には、例えば、サンプリング等の手法を用いる。
エンコーダー部21は、入力される画像系列を基に状態ベクトル(状態データ)を生成する。状態ベクトルは、抽象的な特徴を表すデータである。つまり、エンコーダー部21は、画像系列を基に、エンコーディング処理を行い、当該画像系列の特徴を表す状態ベクトルを生成する。画像系列は、例えば、手話を表す画像である。
デコーダー部31は、エンコーダー部21が出力する状態ベクトル(状態データ)を基に記号列を生成する。つまり、デコーダー部31は、抽象的な状態を基に、デコーディング処理を行い、記号の列を生成する。ここで、デコーダー部31が生成する記号列は、例えば、何らかの言語表現である。デコーダー部31が生成する記号列の具体例は、手話に対応するグロス表記である。
出力部40は、デコーダー部31が生成した記号列を、外部に出力する。つまり、出力部40は、入力される画像系列が表す手話に対応するグロス表記(記号列)を外部に出力する。なお、出力部40が記号列を外部に出力するのは、後述する推定処理モードの時だけであってもよい。
ロス算出部501は、学習データ供給部801が供給する学習用画像系列に基づいてエンコーダー部21が生成する状態ベクトル(状態データ)、に基づいてデコーダー部31が生成する記号列である学習用推定記号列と、上記の学習用画像系列に対応して学習データ供給部801が供給する正解記号列と、の差を表すロス(損失)を算出する。ロス算出部501は、ロスとして、例えば、交差エントロピー誤差を算出する。
画像切出し部721は、入力部10または学習データ供給部801から渡される画像に含まれる所定の部分画像を切出して出力する。例えば元の画像系列が手話の映像である場合、画像切出し部721は、手話の話者の手指を含む領域のみを上記部分画像として切出して出力する。なお、画像切出し部721が、話者の左手の手指を含む部分画像の系列と、話者の右手の手指を含む部分画像の系列とを、それぞれ別に切出して別系列として出力してもよい。つまり、画像切出し部721が切出すのは、元の画像系列を翻訳したり理解したりするときに、画像内において相対的に重要性が高い領域を含む部分画像である。ここで「重要性が高い領域」とは、出力される記号列の特徴をよく表す領域である。
なお、画像切出し部721は、画像認識等の既存技術を用いて、切出すべき部分(例えば、左手の手指を含む領域、あるいは右手の手指を含む領域等)を自動的に特定する。画像切出し部721は、与えられる元の画像において切出すべき特定の領域の座標(部分画像が四角形の場合、部分画像の左上の始点の座標と、右下の終点の座標によって、その領域を特定可能)を決定し、決定された画像を切出す。画像切出し部721が部分画像を切出すことにより、画像の特徴をよく表す部分をクローズアップした画像を得るのと同等の効果がある。ただし、画像認識等の技術を用いて所望の特定領域を切出すためには、それなりの計算量を要する。例えば推定処理においてリアルタイムに画像を切出す処理を行うためには大きな計算資源を必要とし、高コストである。
画像縮小部712は、画像切出し部721によって切出された画像を、所定のサイズに縮小する。
第2エンコーダー部22は、画像系列に含まれるそれぞれの画像から切出した所定の部分画像に少なくとも基づいて、状態ベクトル(状態データ)を生成する。つまり、画像系列が手話を表す映像である場合に、第2エンコーダー部は、画像内の手指を含む領域の部分画像に少なくとも基づいて状態データを生成する。
第2ロス算出部701は、学習用画像系列に基づいてエンコーダー部21が生成する状態ベクトル(状態データ)と、同じ学習用画像系列に基づいて第2エンコーダー部22が生成する状態ベクトル(状態データ)と、の差を表す第2ロスを算出する。第2ロス算出部701は、ロスとして、例えば、交差エントロピー誤差を算出する。
学習データ供給部801は、エンコーダー部21および第2エンコーダー部22への入力の基となる学習用の画像系列(学習用画像系列)と、その学習用画像系列に対応する記号列の正解である正解記号列との対を供給する。
制御部901は、変換装置1の全体の動作を制御する。具体的には、制御部901は、第1学習処理モードと、第2学習処理モードと、推定処理モードとを適宜切り替えて実行するように、変換装置1内の各部を制御する。具体的には、制御部901は、各モードにおいて各部が次のように動作するよう制御を行う。
第1学習処理モードにおいては、学習データ供給部801が供給する学習用画像系列と正解記号列とに基づいてロス算出部501が算出したロスを算出する。算出されたロスに基づき、デコーダー部31は、その内部パラメーターを調整する。また、上記のロスに基づいて、さらに、エンコーダー部21は、その内部パラメーターを調整する。なお、本実施形態におけるエンコーダー部21は、ロス算出部501がロスを算出する際の基となった状態ベクトル(状態データ)を生成した側である。
第2学習処理モードにおいては、学習データ供給部801が供給する学習用画像系列に基づいて第2ロス算出部701が算出した第2ロス、に基づいて、エンコーダー部21および第2エンコーダー部22のそれぞれが、内部パラメーターを調整する。
推定処理モードにおいては、エンコーダー部21が推定対象の画像系列(入力部10が供給する画像系列)を基に状態ベクトル(状態データ)を生成する。デコーダー部31は、エンコーダー部21が生成した状態ベクトル(状態データ)を基に、記号列を生成する。ここでデコーダー部31が生成する記号列は、推定記号列である。
つまり、変換装置1は、3種類のモードで動作する。それらは、上記の通り、第1学習処理モードと、第2学習処理モードと、推定処理モードである。つまり、変換装置1は、第1学習処理モードと第2学習処理モードとの2種類の学習を行う。これら3種類のモードについて、次にそれぞれ説明する。
[第1学習処理モード]
第1学習処理モードでは、変換装置1は、学習データ供給部801が供給する学習データを用いて、エンコーダー部21およびデコーダー部31の学習を行う。第1学習処理モードにおいて学習データ供給部801が供給する学習データは、入力画像列と正解語列との対の集合である。つまり、第1学習処理モードにおいて、画像縮小部711は、学習データ供給部801が供給する入力画像列を縮小する。エンコーダー部21は、画像縮小部711によって縮小された入力画像列を基に、エンコーディング処理を行う。エンコーダー部21は、エンコーディング処理の結果として、状態ベクトルを出力する。デコーダー部31は、エンコーダー部21が出力した状態ベクトルを基に、デコーディング処理を行う。デコーダー部31は、デコーディング処理の結果として、推定語列を出力する。デコーダー部31は、出力した推定語列を、ロス算出部501に渡す。一方、学習データ供給部801は、画像縮小部711に渡した入力画像列に対応する正解語列を、ロス算出部501に渡す。ロス算出部501は、デコーダー部31から渡された推定語列と、学習データ供給部801から渡された正解語列との、ロスを算出する。そして、エンコーダー部21およびデコーダー部31の系列は、ロス算出部501によって算出されたロスに基づいて、誤差逆伝播法により、それぞれの内部パラメーターの更新を行う。この一連の処理を繰り返すことにより、エンコーダー部21とデコーダー部31のそれぞれの学習が行われる。
[第2学習処理モード]
第2学習処理モードでは、変換装置1は、学習データ供給部801が供給する学習データを用いて、エンコーダー部21および第2エンコーダー部22の学習を行う。第2学習処理モードにおいて学習データ供給部801が供給する学習データは、入力画像列である。つまり、第2学習処理モードにおいて、画像縮小部711は、学習データ供給部801が供給する入力画像列を縮小する。エンコーダー部21は、画像縮小部711によって縮小された入力画像列を基に、エンコーディング処理を行う。エンコーダー部21は、エンコーディング処理の結果として、状態ベクトルを出力する。エンコーダー部21は、画像縮小部711から出力された画像列に基づく状態ベクトルを、第2ロス算出部701に渡す。一方、学習データ供給部801が供給する学習データ(入力画像列)は、画像切出し部721にも渡される。画像切出し部721は、入力画像列が含む各画像から特定の範囲の画像のみを切出して出力する。つまり、画像切出し部721は、切出された画像の列を出力する。画像縮小部712は、画像切出し部721から出力された画像列を縮小する。第2エンコーダー部22は、画像縮小部712によって縮小された画像列を基に、エンコーディング処理を行う。第2エンコーダー部22は、エンコーディング処理の結果として状態ベクトルを出力する。第2エンコーダー部22は、画像切出し部721によって切出された画像列に基づく状態ベクトルを、第2ロス算出部701に渡す。第2ロス算出部701は、エンコーダー部21から渡された状態ベクトルと、第2エンコーダー部22から渡された状態ベクトルとの、ロスを算出する。そして、エンコーダー部21および第2エンコーダー部22のそれぞれは、第2ロス算出部701によって算出されたロスに基づいて、誤差逆伝播法により、それぞれの内部パラメーターの更新を行う。この一連の処理を繰り返すことにより、エンコーダー部21と第2エンコーダー部22のそれぞれの学習が行われる。
第2学習処理モードにおいて、エンコーダー部21は切出し処理を行わない画像列に基づく状態ベクトルを出力するものであり、第2エンコーダー部22は切出し処理が行われた画像列に基づいて状態ベクトルを出力するものである。つまり、両者は、互いに異なる情報に基づいてそれぞれ状態ベクトルを出力するものである。しかし、上述した第2学習処理モードでの学習処理は、エンコーダー部21および第2エンコーダー部22が、同一の、または近い、状態ベクトルを出力する方向に、作用する。言い換えれば、第2学習処理モードでは、エンコーダー部21は、画像切出し部721によって切出されなかった画像(上半身全体を含む画像であり、手指に関しては弱い特徴量を持つ画像)と、画像切出し部721によって切出された画像(特に手指に関して強い特徴量を持つ画像)との対応関係を学習する。その結果、エンコーダー部21は、手指に関しては弱い特徴量を持つ上半身全体を含む画像が入力されるにも関わらず、手指の特徴の変化に対して感度の良い状態ベクトルを出力できるようになる。
実際には、変換装置1は、例えば、第1学習処理モードの処理と第2学習処理モードの処理を、交互に実行することができる。
[推定処理モード]
推定処理モードは、エンコーダー部21やデコーダー部31の学習が十分に完了した状態で、未知の入力画像列に基づく変換処理を行うものである。つまり、入力部10は、入力画像系列を取得し、画像縮小部711に渡す。画像縮小部711は、入力画像を縮小し、縮小された画像の系列を出力する。エンコーダー部21は、画像縮小部711から渡された画像の系列に基づき、エンコーディング処理を行い、その結果として状態ベクトルを出力する。デコーダー部31は、エンコーダー部21から出力された状態ベクトルに基づき、デコーディング処理を行い、その結果として推定語列を出力する。出力部40は、デコーダー部31が出力した推定語列を、入力画像列に対応する語列(変換結果)として出力する。
前述の学習方法により、変換装置1のエンコーダー部21やデコーダー部31は良好な学習結果を持っている。よって、推定処理モードで出力される変換結果は、入力画像列に対応した精度の高いものとなる。
図2は、変換装置1のさらに詳細な構成を示すブロック図である。具体的には、図2は、第1学習処理モードおよび推定処理モードにおいて、エンコーダー部21が出力する状態ベクトルをデコーダー部31が取得して処理する部分の構成を示す。
エンコーダー部21は、内部にニューラルネットワーク2001を有している。ニューラルネットワーク2001には、画像縮小部711から渡されるフレーム画像の系列frame1,frame2,・・・,framerが入力される。第1学習処理モードにおいては、これらのフレーム画像は、学習データ供給部801が供給した入力データに基づくものである。推定処理モードにおいては、これらのフレーム画像は、入力部10が取得した入力画像系列に基づくものである。ニューラルネットワーク2001は、フレーム画像の系列frame1,frame2,・・・,framerに基づいて算出される状態ベクトルを出力する。エンコーダー部21は、入力されるフレーム画像の系列に基づいて生成した状態ベクトルを、デコーダー部31に渡す。
デコーダー部31は、内部にニューラルネットワーク3001を有している。ニューラルネットワーク3001には、エンコーダー部21のニューラルネットワーク2001で生成された状態ベクトルが入力される。ニューラルネットワーク3001は、入力される状態ベクトルに基づいて算出される語の列word1,word2,・・・,wordu-1,worduを出力する。これらの語は、いずれも、前述のグロス表記における記号である。また、ニューラルネットワーク3001は、語列の最後に、特殊記号である<eos>を出力する。<eos>は、シーケンスの終わり(end of sequence)を表す記号である。ニューラルネットワーク3001が出力する語の列は、推定語列とも呼ばれる。
ニューラルネットワーク2001および3001の各々は、学習モード(第1学習処理モード)で動作する際に、学習データに基づく機械学習処理を行うことによって、内部のパラメーターを調整する。ニューラルネットワーク2001および3001の各々は、推定処理モードで動作する際には、機械学習処理において調整済みの内部パラメーターを用いて、出力を算出する。エンコーダー部21とデコーダー部31とが推定処理モードで動作する際には、ニューラルネットワーク3001が出力する推定語列が、入力映像に対応する変換結果である。
機械学習処理についてさらに詳しく書く。ニューラルネットワーク3001が出力する推定語列は、正解データである正解語列と比較することができる。正解語列は、入力映像に対応する形で、学習データ供給部801によって供給される。ロス算出部501は、ニューラルネットワーク3001が出力する推定語列と、学習データ供給部801から供給される正解語列とから、ロスを算出する。ロス算出部501によって算出されたロスに基づき、ニューラルネットワーク2001および3001は、誤差逆伝播を行い、内部のパラメーターを更新する。
図3は、変換装置1のさらに詳細な構成を示すブロック図である。具体的には、図3は、第2学習処理モードにおいて、エンコーダー部21が出力する状態ベクトルと、第2エンコーダー部22が出力する状態ベクトルとに基づいて、第2ロス算出部701がロスを算出する処理の部分の構成を示す。
エンコーダー部21は、図2を参照して説明したように、内部にニューラルネットワーク2001を有している。ニューラルネットワーク2001には、画像縮小部711から渡されるフレーム画像の系列frame1,frame2,・・・,framerが入力される。これらのフレーム画像は、学習データ供給部801が供給した入力データに基づくものである。エンコーダー部21は、入力されるフレーム画像の系列に基づいて生成した状態ベクトルを、第2ロス算出部701に渡す。
第2エンコーダー部22は、内部にニューラルネットワーク2002を有している。ニューラルネットワーク2002には、画像縮小部712から渡されるフレーム画像の系列が入力される。これらの画像は、画像切出し部721によって切出された後に、画像縮小部712によって縮小されたものである。ニューラルネットワーク2002に入力されるフレーム画像の系列は、エンコーダー部21のニューラルネットワーク2001に入力されるフレーム画像の系列に対応するものである。ニューラルネットワーク2002に入力されるフレーム画像の系列は、画像切出し部721によって、例えば、手話の話者の右手を含んで切出された画像の系列と、左手を含んで切出された画像の系列との、2つの系列から成る。ニューラルネットワーク2002は、切出された画像の系列frame1,frame2,・・・,framer(右手の画像の系列および左手の画像の系列)に基づいて算出される状態ベクトルを出力する。第2エンコーダー部22は、画像の系列に基づいて生成した状態ベクトルを、第2ロス算出部701に渡す。
ニューラルネットワーク2001および2002の各々は、第2学習処理モードで動作する際に、学習データに基づく機械学習処理を行うことによって、内部のパラメーターを調整する。第2ロス算出部701は、ニューラルネットワーク2001が出力する状態ベクトルと、ニューラルネットワーク2002が出力する状態ベクトルとから、ロスを算出する。第2ロス算出部701によって算出されたロスに基づき、ニューラルネットワーク2001および2002は、誤差逆伝播を行い、内部のパラメーターを更新する。
図4は、エンコーダー部21のより詳細な構成例を示すブロック図である。図示するように、エンコーダー部21は、内部に再帰型ニューラルネットワーク(RNN,recurrent neural network)を含むように構成される。この図ではRNNの時間的な再帰構造を左から右方向に展開して表現している。図示する構成例では、エンコーダー部21は、入力されるフレーム画像列frame1,frame2,・・・,framerの各フレームに対応して、第1層から第N層までのRNNを持つ。Nは、正整数である。例えば、Nを2以上且つ6以下程度の値としてよい。しかし、Nは、ここに例示した範囲に限定されるものではない。エンコーダー部21を構成するため、時間の進行につれて(フレーム画像の進行につれて)、N層のRNNの回路を順次再利用する。第1層のRNNには、フレーム画像が入力される。第1層のRNNには直接フレーム画像を入力するのではなく、事前にフレーム画像を不図示のCNN(Convolutional Neural Network,畳み込みニューラルネットワーク)などの特徴を抽出する回路に入力し、その出力である特徴ベクトルを第1層のRNNに入力しても良い。第1層のRNNからの出力は、同じフレーム画像に対応する第2層のRNNと、次のフレーム画像に対応する第1層のRNNとに、渡される。また、第i層(1<i<N)のRNNは、同じフレーム画像に対応する第(i-1)層のRNNからの出力と、前のフレーム画像に対応する第i層のRNNからの出力とを受け取る。そして、その第i層のRNNからの出力は、同じフレーム画像に対応する第(i+1)層のRNNと、次のフレーム画像に対応する第i層のRNNとに、渡される。また、第N層のRNNは、同じフレーム画像に対応する第(N-1)層のRNNからの出力と、前のフレーム画像に対応する第N層のRNNからの出力とを受け取る。そして、その第N層のRNNからの出力は、次のフレーム画像に対応する第N層のRNNに渡される。最後のフレーム画像(図4においては、framer)に対応するRNNからの出力は、状態ベクトルである。エンコーダー部21は、生成した状態ベクトルを、デコーダー部31や第2ロス算出部701に渡す。
図4を参照して説明したように、エンコーダー部21は、論理的には、N行r列のマトリクス状に配置されたRNNを用いて構成される。ただし、Nは層の数であり、rは入力される画像の系列の長さである。
図5は、デコーダー部31のより詳細な構成例を示すブロック図である。図示するように、デコーダー部31は、内部にRNNを含んで構成される。この図ではRNNの時間的な再帰構造を左から右方向に展開して表現している。図示する構成例では、デコーダー部31は、出力する語列(推定語列)word1,word2,・・・,wordu-1,wordu,および<eos>の各記号に対応して、第1層から第N層までのRNNを持つ。ここでのNの値は、エンコーダー部21(図4参照)のNの値に合わせる。つまり、デコーダー部31は、論理的には、エンコーダー部21の内部構成と同様の、N行(u+1)列のマトリクス状に配置されたRNNを用いて構成される。デコーダー部31におけるRNNのマトリクス内での、データの受け渡しの流れも、エンコーダー部21のRNNのマトリクス内におけるそれと同様である。ここで、(u+1)は、出力系列の長さである。ただし、この出力系列の長さは、<eos>等の特殊記号を含む長さであってもよい。
デコーダー部31は、エンコーダー部21が生成した状態ベクトルを、入力データとして取得する。また、デコーダー部31の第N層のRNNは、順次、推定語列(word1,word2,・・・,wordu-1,wordu,および<eos>)を出力する。デコーダー部31は、生成した推定語列を、出力部40やロス算出部501に渡す。
図6は、第2エンコーダー部22のより詳細な構成例を示すブロック図である。図示するように、第2エンコーダー部22は、内部にRNNを含んで構成される。この図ではRNNの時間的な再帰構造を左から右方向に展開して表現している。図示する構成例では、第2エンコーダー部22は、画像の系列frame1,frame2,frame3,・・・,frameuに対応して、第1層から第N層までのRNNを持つ。図3に示す例では、第2エンコーダー部22に入力される画像は、第1の画像の系列と、第2の画像の系列との、2系列から成る。ここでのNの値は、エンコーダー部21(図4参照)のNの値に合わせる。つまり、第2エンコーダー部22は、論理的には、エンコーダー部21の内部構成と同様の、N行r列のマトリクス状に配置されたRNNを用いて構成される。第2エンコーダー部22におけるRNNのマトリクス内での、データの受け渡しの流れも、エンコーダー部21のRNNのマトリクス内におけるそれと同様である。
上で説明した通り、第2エンコーダー部22の入力系列の長さは、エンコーダー部21の入力系列の長さに等しい。
第2エンコーダー部22は、画像縮小部712から渡される画像の系列のデータを入力として取得する。第2エンコーダー部22の第1層のRNNは、順次、frame1,frame2,・・・,framerを入力する。第2エンコーダー部22は、この画像の系列を基に生成した状態ベクトルを、第2ロス算出部701に渡す。
エンコーダー部21(図4)および第2エンコーダー部22(図6)に入力される画像について、次に説明する。
図4においてエンコーダー部21への入力の基となる画像系列は、例えば縦1024画素×横1024画素程度の解像度(ただし、この解像度には限定されない)を有する映像である。入力部10あるいは学習データ供給部801が、この映像を供給する。画像縮小部711は、上記の映像を構成する各フレーム画像を、例えば縦256画素×横256画素程度の解像度(ただし、この解像度には限定されない)の画像に縮小する。エンコーダー部21のニューラルネットワーク2001は、この縮小後の画像を入力とする。
図6において第2エンコーダー部22への入力の基となる画像系列は、エンコーダー部21への入力と同じ、例えば縦1024画素×横1024画素程度の解像度を有する映像である。学習データ供給部801が、この映像を供給する。画像切出し部721は、上記の画像の一部を切出し、1つまたは複数の切出し画像の系列を出力する。図示する例では、画像切出し部721は、左手を含む手指画像の系列と、右手を含む手指画像の系列とを出力する。画像縮小部712は、画像切出し部721が出力する画像の各々を、例えば縦256画素×横256画素程度の解像度(ただし、この解像度には限定されない)の画像に縮小する。第2エンコーダー部22のニューラルネットワーク2002は、この縮小後の画像を入力とする。
図7は、変換装置1が機械学習処理を行う際の手順の一例を示すフローチャートである。以下では、このフローチャートを参照しながら、学習処理の手順について説明する。
ステップS101において、学習データ供給部801は、学習用データとして、1個の入力データを供給する。入力データは、映像データである。学習データ供給部801は、入力データを、フレーム画像データの系列として、画像縮小部711および画像切出し部721にそれぞれ渡す。出力データは、上記の入力データに対応する正解語列のデータである。学習データ供給部801は、また、上記の入力データに対応する出力データ(正解語列データ)を、ロス算出部501に渡す。
画像縮小部711は、学習データ供給部801から渡されたフレーム画像データの系列を縮小する。画像縮小部711は、縮小後の画像の系列を、エンコーダー部21に渡す。
画像切出し部721は、学習データ供給部801から渡されたフレーム画像データの系列を基に、画像の切出しを行う。対象が手話の画像である場合、例えば、画像切出し部721は、渡された画像内の、左手を含む領域の部分画像と、右手を含む領域の部分画像とを、それぞれ切出す。画像切出し部721は、切出した後の画像の系列を、画像縮小部712に渡す。画像縮小部712は、画像切出し部721から渡された画像の系列を縮小する。画像縮小部712は、縮小後の画像の系列を、第2エンコーダー部22に渡す。
次に、ステップS102において、エンコーダー部21は、ステップS101で渡された画像の系列を基に、順伝播を行う。即ち、エンコーダー部21は、エンコーディング処理を行う。エンコーダー部21は、順伝播の結果として、状態ベクトルを出力する。
次に、ステップS103において、第2エンコーダー部22は、ステップS101で渡された画像の系列を基に、順伝播を行う。即ち、第2エンコーダー部22は、エンコーディング処理を行う。第2エンコーダー部22は、順伝播の結果として、状態ベクトルを出力する。
次に、ステップS104において、第2ロス算出部701は、エンコーダー部21から出力された状態ベクトル(ステップS102)と、第2エンコーダー部22から出力された状態ベクトル(ステップS103)とを基に、ロスを算出する。
次に、ステップS105において、エンコーダー部21は、ステップS104において第2ロス算出部701が算出したロスに基づいて、誤差逆伝播を行う。この誤差逆伝播により、エンコーダー部21は、内部のニューラルネットワークの各ノードにおける演算パラメーターの値を更新する。
次に、ステップS106において、第2エンコーダー部22は、ステップS104において第2ロス算出部701が算出したロスに基づいて、誤差逆伝播を行う。この誤差逆伝播により、第2エンコーダー部22は、内部のニューラルネットワークの各ノードにおける演算パラメーターの値を更新する。
以上、ステップS102からS106までの一連の処理は、エンコーダー部21の出力と第2エンコーダー部22の出力との差分に基づき、エンコーダー部21および第2エンコーダー部22の各々が内部に持つパラメーターの値を調整する処理である。つまり、前述の、第2学習処理モードの処理である。
次に、ステップS107において、エンコーダー部21は、ステップS101で渡された画像の系列(既に縮小済の画像の系列)を基に、順伝播を行う。エンコーダー部21は、順伝播の結果として、状態ベクトルを出力する。本ステップで生成した状態ベクトルを、エンコーダー部21は、デコーダー部31に渡す。
次に、ステップS108において、デコーダー部31は、ステップS107においてエンコーダー部21が出力した状態ベクトルに基づいて、順伝播を行う 。つまり、デコーダー部31は、デコーディングの処理を行う。その結果として、デコーダー部31は、語の列(推定語列)を出力する。この推定語列は、<eos>(エンド・オブ・シーケンス)等の特殊記号を含んでもよい。
次に、ステップS109において、ロス算出部501は、ステップS101で学習データ供給部801から渡された正解語列のデータと、ステップS108においてデコーダー部31が求めた推定語列のデータとを基に、ロスを算出する。
次に、ステップS110において、デコーダー部31は、ステップS109において算出されたロスに基づいて、誤差逆伝播を行う。この誤差逆伝播により、デコーダー部31は、内部のニューラルネットワークの各ノードにおける演算パラメーターの値を更新する。この誤差逆伝播は、さらに、エンコーダー部21にも波及する。
次に、ステップS111において、エンコーダー部21は、ステップS110におけるデコーダー部31の誤差逆伝播の処理の延長として、エンコーダー部21が持つニューラルネットワークの誤差逆伝播を行う。この誤差逆伝播により、エンコーダー部21は、内部のニューラルネットワークの各ノードにおける演算パラメーターの値を更新する。
以上、ステップS107からS111までの一連の処理は、エンコーダー部21およびデコーダー部31の順伝播処理によって得られた推定語列と、学習データ供給部801から与えられた正解語列との差分に基づき、エンコーダー部21およびデコーダー部31の各々が内部に持つニューラルネットワークのパラメーターを調整する処理である。つまり、前述の、第1学習処理モードの処理である。
ステップS112において、制御部901は、全ての学習データを用いた機械学習処理を完了したか否かを判定する。全ての学習データを処理済みである場合(ステップS112:YES)には、次のステップS113に進む。まだ学習データ(入出力データ対)が残っている場合(ステップS112:NO)には、次のデータを処理するためにステップS101に戻る。
ステップS113に進んだ場合には、制御部901は、現在の学習データの集合を用いた学習処理の所定回数の繰り返しが完了したか否かを判定する。なお、この回数は、例えば、予め定めておくものとする。所定回数の処理が完了した場合(ステップS113:YES)には、本フローチャート全体の処理を終了する。所定回数の処理が完了していない場合(ステップS113:NO)には、次の回の処理を行うためにステップS101に戻る。なお、本ステップにおいて、予め定めておいた回数に基づいて全体の処理を終了するか否かの判断を行う代わりに、他の判断基準に基づいた判断を行うようにしてもよい。一例として、更新対象であるニューラルネットワークのパラメーター集合の値の収束状況(十分に収束しているか否か)に基づいて、全体の処理を終了するか否かの判断を行うようにしてもよい。
以上の処理の手順により、エンコーダー部21およびデコーダー部31の学習が進む。学習により、エンコーダー部21およびデコーダー部31のそれぞれの内部のパラメーターが調整されるため、エンコーダー部21およびデコーダー部31は、より精度良く、入力データ(具体例としては、画像の系列。さらに具体的な例としては、手話を表す映像。
)に対応する出力データ(具体例としては、記号の列。さらに具体的な例としては、手話に対応するグロス表記の単語列。)を生成するようになる。
以上、説明した手順では、ロス算出部501が算出したロスに基づいてエンコーダー部21のパラメーターを更新するだけでなく、第2ロス算出部701が算出したロスにも基づいてエンコーダー部21のパラメーターを更新する。第2ロス算出部701は、エンコーダー部21と第2エンコーダー部22とがそれぞれ算出する状態ベクトルの差をロスとして算出する。この手法により、エンコーダー部21は、切出された画像の特徴(例えば、手指の状態や動作)をより良好に反映した状態ベクトルを出力する。したがって、変換装置1は、入力映像に対応して、精度の高い推定語列を生成することが期待される。
図7に示した手順では、第2ロス算出部701が算出したロスに基づく学習(ステップS102からS106までの、エンコーダー部21および第2エンコーダー部22の学習、第2学習処理モード)と、ロス算出部501が算出したロスに基づく学習(ステップS107からS111までの、エンコーダー部21およびデコーダー部31の学習、第1学習処理モード)とを、個別且つ交互に実施している。これは、前述の制御部901によるモードの切り替えの例である。つまり、制御部901は、学習処理の際に、学習データ供給部801が供給する学習用入力データと正解データとの対ごとに、第1学習処理モードと第2学習処理モードとを繰り返して実行するよう制御する。しかしながら、これら両者の学習を計算グラフ上で同時に行うようにしてもよい。言い換えれば、データの依存関係に応じて同時に実行できる学習処理を同時変更的に行うようにしても良い。
また、ある入出力データ対に関して、第1学習処理モードの学習を行った後で第2楽章処理モードの学習を行うようにしてもよい。
図8は、第1実施形態による変換装置1の評価結果を示すグラフである。このグラフの横軸は、学習データ数、つまり学習に用いた延べ文数である。横軸における「1M」は、百万を表す。このグラフの縦軸は、上記の学習データ数に対応する単語誤り率である。単語誤り率は、変換装置が出力する記号列と正解語列との編集距離をもとに算出した評価指標であり、良好な推定結果ほど低い値を示す。学習に用いた学習用データは、12,000対の、手話映像と正解グロス列(正解記号列)との対である。評価に用いたデータ数(手話映像とその正解グロス列)は、1,000個である。実線のグラフは、第1実施形態の変換装置による処理結果を示す。破線のグラフは、比較対象であり、従来技術による変換装置による処理結果を示す。両者のグラフを比較すると、すべての学習データ数において、ほぼ、第1実施形態の処理結果の方が、従来技術の処理結果よりも良好、即ち単語誤り率が低い。ただし、一部の延べ学習データ数においては、第1実施形態の処理結果は、従来技術の処理結果と、同等である。また、従来技術を用いる場合の単語誤り率の最小値が0.52であるのに対して、第1実施形態を用いる場合の単語誤り率の最小値は0.50である。つまり、第1実施形態が実現する単語誤り率の最小値は、従来技術が実現する単語誤り率の最小値よりも、2ポイント分、良好である。
以上説明したように、本実施形態によれば、学習時には画像切出し部721による画像切出しの処理を必要とするが、推定処理モードの時には、画像切出し部721による処理を必要としない。一方で、エンコーダー部21は、切出されていない画像を基に、第2エンコーダー部22に近い状態ベクトルを出力できるように学習可能である。つまり、本実施形態によれば、学習時には、画像切出し部721による処理を必要とし、それなりに大きな計算資源を必要とする。しかしながら、推定時には、そのように大きな計算資源を必要としない。本実施形態による変換装置1を画像認識装置等として用いる場合、推定時には大きな計算資源を必要とせず、比較的低コストで、リアルタイムの処理を行うことが可能となる。
[第2実施形態]
次に、本発明の第2実施形態について説明する。なお、前実施形態において既に説明した事項については以下において説明を省略する場合がある。ここでは、本実施形態に特有の事項を中心に説明する。
図9は、本実施形態による変換装置2の概略機能構成を示すブロック図である。図示するように、変換装置2は、入力部10と、画像縮小部713と、エンコーダー部23と、デコーダー部31と、出力部40と、ロス算出部502と、画像切出し部722と、画像縮小部714と、第2エンコーダー部24と、第2ロス算出部702と、学習データ供給部802と、制御部902とを含んで構成される。
入力部10は、第1実施形態における入力部10と同様の機能を持つ。
画像縮小部713は、第1実施形態における画像縮小部711と同様の機能を持つ。
エンコーダー部23は、第1実施形態におけるエンコーダー部21と同様の機能を持つ。
デコーダー部31は、第1実施形態におけるデコーダー部31と同様の機能を持つ。
出力部40は、第1実施形態における出力部40と同様の機能を持つ。
ロス算出部502は、第1実施形態におけるロス算出部501と類似の機能を持つ。
ただし、ロス算出部502は、学習データ供給部802が供給する学習用画像系列に基づいて第2エンコーダー部24が生成する状態ベクトル(状態データ)、に基づいてデコーダー部31が生成する記号列である学習用推定記号列と、上記の学習用画像系列に対応して学習データ供給部802が供給する正解記号列と、の差を表すロス(損失)を算出する。ロス算出部502は、ロスとして、例えば、交差エントロピー誤差を算出する。
つまり、ロス算出部502が算出するロスは、エンコーダー部23ではなく、第2エンコーダー部24の学習のために用いられる。
画像切出し部722は、第1実施形態における画像切出し部721と同様の機能を持つ。つまり、元の画像系列が手話の映像である場合、画像切出し部722は、手話の話者の手指を含む領域のみを上記部分画像として切出して出力する。なお、画像切出し部722が、話者の左手の手指を含む部分画像の系列と、話者の右手の手指を含む部分画像の系列とを、それぞれ別々に切出して別系列として出力してもよい。
画像縮小部714は、渡された画像を所定のサイズに縮小して出力する。本実施形態において、画像縮小部714は、学習データ供給部802から渡された元の画像系列の画像(画像切出し部722によって切出されなかった全体の画像)と、画像切出し部722によって切出された部分画像との、両方をそれぞれ出力する。
第2エンコーダー部24は、第1実施形態における第2エンコーダー部22と類似の機能を持つ。但し、本実施形態における第2エンコーダー部24は、画像切出し部722によって切出された後の画像だけではなく、画像系列に含まれる切出される前の元の画像にも基づいて、状態ベクトル(状態データ)を生成する。
第2ロス算出部702は、学習用画像系列に基づいてエンコーダー部23が生成する状態ベクトル(状態データ)と、同じ学習用画像系列に基づいて第2エンコーダー部24が生成する状態ベクトル(状態データ)と、の差を表す第2ロスを算出する。第2ロス算出部702は、ロスとして、例えば、交差エントロピー誤差を算出する。
学習データ供給部802は、エンコーダー部23および第2エンコーダー部24への入力の基となる学習用の画像系列(学習用画像系列)と、その学習用画像系列に対応する記号列の正解である正解記号列との対を供給する。
制御部902は、変換装置2の全体の動作を制御する。具体的には、制御部902は、第3学習処理モードと、第4学習処理モードと、推定処理モードとを適宜切り替えて実行するように、変換装置2内の各部を制御する。なお、第3学習処理モードを、「第2実施形態における第1学習処理モード」と呼んでもよい。同様に、第4学習処理モードを、「第2実施形態における第2学習処理モード」と呼んでもよい。具体的には、制御部902は、各モードにおいて各部が次のように動作するよう制御を行う。
第3学習処理モードにおいては、学習データ供給部802が供給する学習用画像系列と正解記号列とに基づいてロス算出部502が算出したロスを算出する。算出されたロスに基づき、デコーダー部31は、その内部パラメーターを調整する。また、上記のロスに基づいて、さらに、第2エンコーダー部24は、その内部パラメーターを調整する。なお、本実施形態における第2エンコーダー部24は、ロス算出部502がロスを算出する際の基となった状態ベクトル(状態データ)を生成した側である。
第4学習処理モードにおいては、学習データ供給部802が供給する学習用画像系列に基づいて第2ロス算出部702が算出した第2ロス、に基づいて、エンコーダー部23が、内部パラメーターを調整する。
推定処理モードにおいては、エンコーダー部23が推定対象の画像系列(入力部10が供給する画像系列)を基に状態ベクトル(状態データ)を生成する。デコーダー部31は、エンコーダー部23が生成した状態ベクトル(状態データ)を基に、記号列を生成する。ここでデコーダー部31が生成する記号列は、推定記号列である。
変換装置2は、3種類のモードで動作する。それらは、第3学習処理モードと、第4学習処理モードと、推定処理モードである。つまり、変換装置2は、第3学習処理モードと第4学習処理モードとの2種類の学習を行う。これら3種類のモードについて、次にそれぞれ説明する。
[第3学習処理モード]
第3学習処理モードでは、変換装置2は、学習データ供給部802が供給する学習データを用いて、第2エンコーダー部24およびデコーダー部31の学習を行う。第3学習処理モードにおいて学習データ供給部802が供給する学習データは、入力画像系列と正解語列との対の集合である。つまり、第3学習処理モードにおいて、画像切出し部722は、学習データ供給部802が供給する入力画像系列から、所定の切出し処理を行い、切出された画像の系列を出力する。例えば、入力画像系列が手話映像である場合、画像切出し部722は、手話の話者の特定の部位(例えば、左手と右手)を含むクローズアップ画像を切出す。画像切出し部722は、例えば、左手を含むように切出された画像の系列と、右手を含むように切出された画像の系列とを、出力する。画像縮小部714は、供給される画像系列に含まれる各画像を縮小する。画像縮小部714は、例えば、学習データ供給部802が供給する入力画像系列と、画像切出し部722が出力した上記の左手のクローズアップ画像の系列と、画像切出し部722が出力した上記の右手のクローズアップ画像の系列とを、それぞれ縮小する。この場合、画像縮小部714は、手話の話者の上半身全体の縮小された画像の系列と、左手の縮小された画像の系列と、右手の縮小された画像の系列とを出力する。第2エンコーダー部24は、画像縮小部714によって縮小された上記3つの縮小された画像の系列を基に、エンコーディング処理を行う。第2エンコーダー部24は、エンコーディング処理の結果として、状態ベクトルを出力する。デコーダー部31は、第2エンコーダー部24が出力した状態ベクトルを基に、デコーディング処理を行う。デコーダー部31は、デコーディング処理の結果として、推定語列を出力する。デコーダー部31は、出力した推定語列を、ロス算出部502に渡す。一方、学習データ供給部802は、供給した入力画像系列に対応する正解語列を、ロス算出部502に渡す。ロス算出部502は、デコーダー部31から渡された推定語列と、学習データ供給部802から渡された正解語列との、ロスを算出する。そして、第2エンコーダー部24およびデコーダー部31から成る系列は、ロス算出部502によって算出されたロスに基づいて、誤差逆伝播法により、それぞれのニューラルネットワークの内部パラメーターの更新を行う。この一連の処理を繰り返すことにより、第2エンコーダー部24とデコーダー部31のそれぞれの学習が行われる。つまり、デコーダー部31は、正解語列に近い推定語列を出力するように、学習を行う。また、第2エンコーダー部24は、デコーダー部31が正解語列に近い推定語列を出力しやすくなるような状態ベクトルを出力するように、学習を行う。
[第4学習処理モード]
第4学習処理モードでは、変換装置1は、学習データ供給部802が供給する学習データを用いて、エンコーダー部23の学習を行う。具体的には、学習データ供給部802が供給する画像系列を基に、エンコーダー部23が、第2エンコーダー部24が出力するのと同様の状態ベクトル、あるいは第2エンコーダー部24が出力する状態ベクトルに近い状態ベクトルを出力するように、学習を行う。第4学習処理モードにおいて学習データ供給部802が供給する学習データは、入力画像系列である。つまり、第4学習処理モードにおいて、画像切出し部722は、学習データ供給部802が供給する入力画像系列から、第3学習処理モードにおける場合と同様の切出し処理を行い、切出された画像の系列を出力する。また、画像縮小部714は、第3学習処理モードにおける場合と同様に、供給される画像系列に含まれる各画像を縮小する。つまり、画像縮小部714は、学習データ供給部802が供給する入力画像系列と、画像切出し部722が出力した上記の左手のクローズアップ画像の系列と、画像切出し部722が出力した上記の右手のクローズアップ画像の系列とを、それぞれ縮小する。第2エンコーダー部24は、画像縮小部714によって縮小された画像列を基に、エンコーディング処理を行う。第2エンコーダー部24は、そのエンコーディング処理の結果として状態ベクトルを出力する。第2エンコーダー部24は、生成した状態ベクトルを、第2ロス算出部702に渡す。一方、画像縮小部713は、学習データ供給部802が供給する入力画像系列に含まれる各画像を縮小する。エンコーダー部23は、画像縮小部713によって縮小された画像系列を基に、エンコーディング処理を行う。エンコーダー部23は、エンコーディング処理の結果として、状態ベクトルを出力する。エンコーダー部23は、画像縮小部713から出力された画像列に基づく状態ベクトルを、第2ロス算出部702に渡す。第2ロス算出部702は、エンコーダー部23から渡された状態ベクトルと、第2エンコーダー部24から渡された状態ベクトルとの、ロスを算出する。そして、エンコーダー部23は、第2ロス算出部702によって算出されたロスに基づいて、誤差逆伝播法により、内部パラメーターの更新を行う。この一連の処理を繰り返すことにより、エンコーダー部23の学習が行われる。
なお、第4学習モードにおいて、エンコーダー部23のみが、第2ロス算出部702が算出したロスに基づく、誤差逆伝播法によるパラメーターの更新を行う。第4学習モードにおいては、第2エンコーダー部24のパラメーターの更新は行わない。第2エンコーダー部24の学習は、第3学習モードにおいて行われるものである。第4学習モードにおいては、第2エンコーダー部24が出力する状態ベクトルは、正解として扱われる。
第4学習処理モードでは、エンコーダー部23は、画像切出し部722によって切出されなかった画像(上半身全体を含む画像であり、手指に関しては弱い特徴量を持つ画像)と、画像切出し部722によって切出された画像(特に手指に関して強い特徴量を持つ画像)との対応関係を学習する。そのような学習の結果、エンコーダー部23は、手指に関しては弱い特徴量を持つ上半身全体を含む画像が入力されるにも関わらず、手指の特徴の変化に対して感度の良い状態ベクトルを出力できるようになる。
変換装置2は、例えば、第3学習処理モードの処理と第4学習処理モードの処理を、交互に実行することができる。あるいは、変換装置2は、第3学習処理モードの処理を十分に行った後で、つまり第2エンコーダー部24の学習が完了した後で、第4学習処理モードの処理を行うようにしてもよい。
[推定処理モード]
推定処理モードは、エンコーダー部23やデコーダー部31の学習が十分に完了した状態で、未知の入力画像列に基づく変換処理を行うものである。つまり、入力部10は、入力画像系列を取得し、画像縮小部713に渡す。画像縮小部713は、入力画像を縮小し、縮小された画像の系列を出力する。エンコーダー部23は、画像縮小部713から渡された画像の系列に基づき、エンコーディング処理を行い、その結果として状態ベクトルを出力する。デコーダー部31は、エンコーダー部21から出力された状態ベクトルに基づき、デコーディング処理を行い、その結果として推定語列を出力する。出力部40は、デコーダー部31が出力した推定語列を、入力画像列に対応する語列(変換結果)として出力する。
前述の学習方法により、変換装置2のエンコーダー部23やデコーダー部31は良好な学習結果を持っている。よって、推定処理モードで出力される変換結果は、入力画像列に対応した精度の高いものとなる。
図10は、変換装置2のさらに詳細な構成を示すブロック図である。具体的には、図10は、第3学習処理モードで変換装置2が動作する場合の、第2エンコーダー部24が出力する状態ベクトルをデコーダー部31が取得して処理する部分の構成を示す。
第2エンコーダー部24は、内部にニューラルネットワーク2004を有している。ニューラルネットワーク2004には、画像縮小部714から渡される、縮小後の画像の系列frame1,frame2,・・・,framerが入力される。第3学習処理モードにおいては、これらの画像の系列は、学習データ供給部802が供給した入力データに基づくものである。図示する例では、第2エンコーダー部24のニューラルネットワーク2004には、画像切出し部722による切出し処理が行われなかった画像の系列(例えば、手話の話者の上半身全体の映像)と、画像切出し部722による切出し処理が行われた結果である複数の画像の系列(例えば、手話の話者の、左手を含む部分画像の系列と、右手を含む部分画像の系列)と、が入力される。第2エンコーダー部24は、これらの画像の系列に基づいて生成した状態ベクトルを、デコーダー部31に渡す。
デコーダー部31は、第1実施形態の場合と同様に、内部にニューラルネットワーク3001を有している。ニューラルネットワーク3001には、第2エンコーダー部24のニューラルネットワーク2004で生成された状態ベクトルが入力される。ニューラルネットワーク3001は、入力される状態ベクトルに基づいて算出される語の列word1,word2,・・・,wordu-1,worduを出力する。これらの語は、いずれも、前述のグロス表記における記号である。また、ニューラルネットワーク3001は、語列の最後に、特殊記号である<eos>を出力する。ニューラルネットワーク3001が出力する語の列は、推定語列とも呼ばれる。
ニューラルネットワーク2004および3001の各々は、学習モード(第3学習処理モード)で動作する際に、学習データに基づく機械学習処理を行うことによって、内部のパラメーターを調整する。
機械学習処理についてさらに詳しく書く。ニューラルネットワーク3001が出力する推定語列は、正解データである正解語列と比較することができる。正解語列は、入力映像に対応する形で、学習データ供給部802によって供給される。ロス算出部502は、ニューラルネットワーク3001が出力する推定語列と、学習データ供給部802によって供給される正解語列とから、ロスを算出する。ロス算出部502によって算出されたロスに基づき、ニューラルネットワーク2004および3001は、誤差逆伝播を行い、内部のパラメーターを更新する。
図11は、変換装置2のさらに詳細な構成を示すブロック図である。具体的には、図11は、第4学習処理モードで変換装置2が動作する場合の、エンコーダー部23および第2エンコーダー部24のそれぞれが状態ベクトルを生成する処理の部分の構成を示す。
第2エンコーダー部24は、図10を参照して説明したように、内部にニューラルネットワーク2004を有している。ニューラルネットワーク2004には、画像縮小部714から渡される画像の系列frame1,frame2,・・・,framerが入力される。前述の通り、ニューラルネットワーク2004に入力される画像の系列は、画像切出し部722による切出し処理が行われなかった画像の系列(例えば、手話の話者の上半身全体の映像)と、画像切出し部722による切出し処理が行われた結果である複数の画像の系列(例えば、手話の話者の、左手を含む部分画像の系列と、右手を含む部分画像の系列)と、である。これらの画像は、学習データ供給部802が供給した入力データに基づくものである。第2エンコーダー部24は、入力される画像の系列に基づいて生成した状態ベクトルを、第2ロス算出部702に渡す。
エンコーダー部23は、内部にニューラルネットワーク2003を有している。ニューラルネットワーク2003には、画像縮小部713から渡されるフレーム画像の系列が入力される。これらの画像は、切出し処理を行った画像ではなく、学習データ供給部802が供給した映像に含まれる各画像を画像縮小部713が単に縮小したものである。つまり、図示する例では、手話の話者の上半身全体を含む画像である。ニューラルネットワーク2003に入力される画像の系列は、上記のニューラルネットワーク2004に入力されるフレーム画像の系列に対応するものである。ニューラルネットワーク2003は、入力される画像の系列に基づいて状態ベクトルを算出する。エンコーダー部23は、入力される画像の系列に基づいて生成した状態ベクトルを、第2ロス算出部702に渡す。
ニューラルネットワーク2003は、第4学習処理モードで動作する際に、学習データに基づく機械学習処理を行うことによって、内部のパラメーターを調整する。第2ロス算出部702は、ニューラルネットワーク2003が出力する状態ベクトルと、ニューラルネットワーク2004が出力する状態ベクトルとから、ロスを算出する。第2ロス算出部702によって算出されたロスに基づき、ニューラルネットワーク2003は、誤差逆伝播を行い、内部のパラメーターを更新する。
図12は、変換装置2のさらに詳細な構成を示すブロック図である。具体的には、図12は、推定処理モードで変換装置2が動作する場合の、エンコーダー部23およびデコーダー部31からなる系列が推定語列を算出するための構成を示す。推定処理モードで動作する前に、エンコーダー部23およびデコーダー部31の学習は完了している。
エンコーダー部23のニューラルネットワーク2003は、画像縮小部713から渡される画像の系列を基に、状態ベクトルを生成する。ニューラルネットワーク2003に入力される画像の系列は、図示する例では、手話の話者の上半身全体の画像の系列である。エンコーダー部23は、算出した状態ベクトルを、デコーダー部31に渡す。
デコーダー部31のニューラルネットワーク3001は、エンコーダー部23から渡される状態ベクトルに基づいて、推定語列を出力する。ニューラルネットワーク3001が出力する推定語列は、word1,word2,・・・,wordu-1,worduである。ニューラルネットワーク3001は、worduの後に、<eos>を出力する。
推定処理モードにおいて、デコーダー部31が出力した推定語列は、入力された映像(画像の系列)に基づく変換結果として、出力部40によって外部に出力される。
なお、ニューラルネットワーク2003および2004の構成は、第1実施形態において図4を参照しながら説明したものと同様である。つまり、ニューラルネットワーク2003および2004は、論理的には、N行r列のマトリクス状に配置されたRNNを用いて構成される。ただし、Nは層の数であり、rは入力される画像の系列の長さである。また、ニューラルネットワーク3001の構成は、第1実施形態において図5を参照しながら説明した通りである。つまり、デコーダー部31は、論理的には、N行(u+1)列のマトリクス状に配置されたRNNを用いて構成される。ただし、(u+1)は、出力される記号系列の長さである。
入力部10や学習データ供給部802が供給する画像の系列は、例えば、縦1024画素×横1024画素の解像度を持つ画像から成る。画像縮小部713や714は、入力されるそのような画像を、サンプリング等により、縦256画素×横256画素のサイズに縮小する。
図13は、変換装置2が機械学習処理を行う際の手順の一例を示すフローチャートである。以下では、このフローチャートを参照しながら、学習処理の手順について説明する。なお、第1実施形態と同様の点については説明を省略する場合がある。
ステップS201において、学習データ供給部802は、学習用データとして、1個の入力データを供給する。入力データは、映像データである。学習データ供給部802は、入力データを、画像縮小部713および画像切出し部722にそれぞれ渡す。学習データ供給部802が供給する出力データは、上記の入力データに対応する正解語列のデータである。学習データ供給部802は、正解語列データを、ロス算出部502に渡す。
画像縮小部713は、学習データ供給部802から渡された画像データを縮小する。画像縮小部713は、縮小後の画像の系列を、エンコーダー部23に渡す。
画像切出し部722は、学習データ供給部802から渡された画像データの系列を基に、画像の部分の切出しを行う。画像切出し部722は、切出した後の画像の系列を、画像縮小部714に渡す。
画像縮小部714は、学習データ供給部802から渡された元の画像の系列と、画像切出し部722から渡された切出し後の画像の系列を、それぞれ縮小する。画像縮小部714は、縮小後の画像の系列を、第2エンコーダー部24に渡す。
次に、ステップS202において、エンコーダー部23は、ステップS201で渡された画像の系列を基に、順伝播を行う。つまり、エンコーダー部21は、エンコーディング処理を行い、その順伝播の結果として、状態ベクトルを出力する。
次に、ステップS203において、第2エンコーダー部24は、ステップS201で渡された画像の系列を基に、順伝播を行う。つまり、第2エンコーダー部24は、エンコーディング処理を行い、その順伝播の結果として、状態ベクトルを出力する。
次に、ステップS204において、第2ロス算出部702は、エンコーダー部23から出力された状態ベクトルと、第2エンコーダー部24から出力された状態ベクトルとを基に、ロスを算出する。
次に、ステップS205において、エンコーダー部23は、ステップS204において第2ロス算出部702が算出したロスに基づいて、誤差逆伝播を行う。これにより、エンコーダー部23は、内部のニューラルネットワークの各ノードにおける演算パラメーターの値を更新する。
以上の、ステップS202からS205までの一連の処理は、エンコーダー部23の出力と第2エンコーダー部24の出力との差分に基づき、エンコーダー部23および第2エンコーダー部24の各々が内部に持つパラメーターの値を調整する処理である。つまり、前述の、第4学習処理モードの処理である。
次に、ステップS206において、第2エンコーダー部24は、ステップS201で渡された画像の系列を基に、順伝播を行う。第2エンコーダー部24は、順伝播の結果として生成した状態ベクトルを、デコーダー部31に渡す。
次に、ステップS207において、デコーダー部31は、ステップS206において第2エンコーダー部24が出力した状態ベクトルに基づいて、順伝播を行う。つまり、デコーダー部31は、デコーディングの処理を行う。その結果として、デコーダー部31は、推定語列を出力する。この推定語列は、<eos>(エンド・オブ・シーケンス)等の特殊記号を含んでもよい。
次に、ステップS208において、ロス算出部502は、ステップS201で学習データ供給部802から渡された正解語列のデータと、ステップS207においてデコーダー部31が出力した推定語列のデータとを基に、ロスを算出する。
次に、ステップS209において、デコーダー部31は、ステップS208において算出されたロスに基づいて、誤差逆伝播を行う。これにより、デコーダー部31は、内部のニューラルネットワークの各ノードにおける演算パラメーターの値を更新する。この誤差逆伝播は、さらに、第2エンコーダー部24にも波及する。
次に、ステップS210において、第2エンコーダー部24は、ステップS209におけるデコーダー部31の誤差逆伝播の処理の延長として、第2エンコーダー部24が持つニューラルネットワークの誤差逆伝播を行う。これにより、第2エンコーダー部24は、内部のニューラルネットワークの各ノードにおける演算パラメーターの値を更新する。
以上、ステップS206からS210までの一連の処理は、第2エンコーダー部24およびデコーダー部31の順伝播処理によって得られた推定語列と、学習データ供給部802が与える正解語列との差分に基づき、第2エンコーダー部24およびデコーダー部31の各々が内部に持つニューラルネットワークのパラメーターを調整する処理である。つまり、前述の、第3学習処理モードの処理である。
ステップS211において、制御部901は、全ての学習データを用いた機械学習処理を完了したか否かを判定する。全ての学習データを処理済みである場合(ステップS211:YES)には、次のステップS212に進む。まだ学習データ(入出力データ対)が残っている場合(ステップS211:NO)には、次のデータを処理するためにステップS201に戻る。
ステップS212に進んだ場合には、制御部902は、現在の学習データの集合を用いた学習処理の所定回数の繰り返しが完了したか否かを判定する。なお、この回数は、例えば、予め定めておくものとする。所定回数の処理が完了した場合(ステップS212:YES)には、本フローチャート全体の処理を終了する。所定回数の処理が完了していない場合(ステップS212:NO)には、次の回の処理を行うためにステップS201に戻る。なお、本ステップにおいて、予め定めておいた回数に基づいて全体の処理を終了するか否かの判断を行う代わりに、他の判断基準に基づいた判断を行うようにしてもよい。一例として、更新対象であるニューラルネットワークのパラメーター集合の値の収束状況(十分に収束しているか否か)に基づいて、全体の処理を終了するか否かの判断を行うようにしてもよい。
以上、説明した手順では、ロス算出部502が算出したロスに基づいて第2エンコーダー部24のパラメーターを更新する。また、第2ロス算出部702が算出したロスに基づいて、エンコーダー部23が第2エンコーダー部24と同じ(あるいは近い)状態ベクトルを出力するようになる方向に、エンコーダー部23のパラメーターを更新する。言い換えれば、エンコーダー部23は、画像切出し部721による入力画像の切出しを行わない場合にも、切出しを行った場合の画像の特徴(例えば、手指の状態や動作)をより良好に反映した状態ベクトルを出力する。したがって、変換装置2は、入力映像に対応して、精度の高い推定語列を生成することが期待される。
図13に示した手順では、第2ロス算出部702が算出したロスに基づく学習(ステップS202からS205までの学習、第4学習処理モード)と、ロス算出部502が算出したロスに基づく学習(ステップS206からS210までの学習、第3学習処理モード)とを、個別且つ交互に実施している。これは、前述の制御部902によるモードの切り替えの例である。つまり、制御部901は、学習処理の際に、学習データ供給部801が供給する学習用入力データと正解データとの対ごとに、第1学習処理モードと第2学習処理モードとを繰り返して実行するよう制御する。
しかしながら、これら第3学習処理モードの学習と第4学習処理モードの学習とを計算グラフ上で同時に行うようにしてもよい。言い換えれば、データの依存関係に応じて同時に実行できる学習処理を同時変更的に行うようにしても良い。
また、ある入出力データ対に関して、第3学習処理モードの学習を行った後で第4学習処理モードの学習を行うようにしてもよい。
また、第3学習処理モードと第4学習処理モードとを交互に実行する代わりに、第3学習処理モードによる第2エンコーダー部24の学習が完了した後で第4学習処理モードを実行するようにしてもよい。
図14は、第2実施形態の評価結果を示すグラフである。このグラフの横軸は、学習のエポック数である。エポック数とは、「一つの訓練データを何回繰り返して学習させるか」を表す回数である。このグラフの縦軸は、上記のエポック数に対応する単語誤り率である。単語誤り率は、変換装置が出力する記号列と正解語列との編集距離をもとに算出した評価指標であり、良好な推定結果ほど低い値を示す。学習に用いた学習用データは、10,000対の、手話映像と正解グロス列(正解記号列)との対である。評価に用いたデータ数(手話映像とその正解グロス列)は、1,000個である。実線のグラフは、第2実施形態の変換装置による処理結果を示す。破線のグラフは、比較対象であり、従来技術による変換装置による処理結果を示す。第2実施形態の変換装置の単語誤り率と従来技術による単語誤り率とを比較すると、エポック数に応じて、第2実施形態の変換装置の単語誤り率の方が低い場合と、従来技術による単語誤り率の方が低い場合とがある。第2実施形態の変換装置の単語誤り率も、従来技術による単語誤り率も、エポック数が進むにつれて、単語誤り率は、概ね低下していく。第2実施形態の変換装置の単語誤り率の最低値は、0.49である。一方、従来技術による変換装置の単語誤り率の最低値は、0.52である。つまり、十分な回数の学習を行った場合には、第2実施形態の変換装置の単語誤り率は、従来技術による変換装置の単語誤り率よりも、3ポイント分、良好な値を示す。
以上説明したように、本実施形態によれば、学習時には画像切出し部722による画像切出しの処理を必要とするが、推定処理モードの時には、画像切出し部722による処理を必要としない。一方で、エンコーダー部23は、切出されていない画像を基に、第2エンコーダー部24に近い状態ベクトルを出力できるように学習可能である。つまり、本実施形態によれば、学習時には、画像切出し部722による処理を必要とし、それなりに大きな計算資源を必要とするものの、推定時には、そのように大きな計算資源を必要としない。本実施形態による変換装置2を画像認識装置等として用いる場合、推定時には大きな計算資源を必要とせず、比較的低コストで、リアルタイムの処理(変換処理、認識処理等)を行うことが可能となる。
なお、上述した各実施形態における変換装置1、2の少なくとも一部の機能をコンピューターで実現することができる。その場合、この機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD-ROM、DVD-ROM、USBメモリー等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、一時的に、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上説明したいずれかの実施形態によれば、切出された画像(クローズアップ画像)が持つ特徴を利用した変換を行うことができ、且つ、推定処理モードの際には切出された画像を得るための計算を節約することができる。
以上、複数の実施形態を説明したが、本発明はさらに次のような変形例でも実施することが可能である。複数の実施形態および変形例を、組み合わせることが可能な限りにおいて、組み合わせて実施してもよい。
[変形例1]
エンコーダー部やデコーダー部は、予め機械学習済みであってもよい。つまり、変換装置は、機械学習済み(即ち、ニューラルネットワークの内部パラメーターは調整済み)の状態で、入力される画像系列を基に、記号列を生成する。変形例1の具体的な構成は、次の通りである。即ち、エンコーダー部は、入力される画像系列を基に状態データを生成する。デコーダー部は、上記の状態データを基に記号列を生成する。上記のエンコーダー部は、機械学習により定まる内部パラメーターを有する。エンコーダー部は、定められた内部パラメーターに基づいて、画像系列を基に状態データを生成するものである。そのエンコーダー部の内部パラメーターは、エンコーダー部が学習用画像系列に基づいて生成した状態データと、エンコーダー部とは異なる第2エンコーダー部が画像系列に含まれる画像から切出した所定の部分画像に少なくとも基づいて生成した状態データと、の差を表すロスに基づいて調整済みである。
[変形例2]
第1実施形態や第2実施形態で説明した変換装置の構成を用いて、学習装置として構成してもよい。学習装置は、エンコーダー部やデコーダー部の学習を行わせる。変換装置1あるいは2の構成を持つ学習装置は、機械学習の手法を用いて、エンコーダー部21あるいは23、第2エンコーダー部22あるいは24、デコーダー部31の学習処理を行う。このような変換装置1あるいは2を、単に学習装置と呼んでもよい。このような学習装置は、前述の推定処理モードでは動作しない。学習装置は、適宜、制御部の制御に基づいて、第1学習処理モード、第2学習処理モード、第3学習処理モード、第4学習処理モードのいずれかで動作する。
[変形例3]
変換装置1あるいは2が、画像縮小部(711、712、713、714)を持たなくてもよい。エンコーダー部(21、23)や第2エンコーダー部(22、24)が、所定のサイズ(固定サイズ)の画像を入力できれば十分である。
[変形例4]
上記の各実施形態では、入力される画像系列が手話の映像である場合について説明した。しかしながら、入力される画像系列が、他のものを映した映像であってもよい。この場合、画像切出し部(721,722)は、目的に応じて適切な部分画像を切出すようにする。画像切出し部が切出す部分画像は、必ずしも手指を含むクローズアップでなくてもよい。画像切出し部が切出す部分画像は、出力しようとする記号列の特徴によく整合する特徴を表す部分画像であることが望ましい。本実施形態は、手話の翻訳に限らず、映像理解一般、あるいは映像から記号列への翻訳(変換)一般に適用することができる。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。