Certains contenus de cette application ne sont pas disponibles pour le moment.
Si cette situation persiste, veuillez nous contacter àObservations et contact
1. (WO2019031282) DISPOSITIF DE CALCUL D'ÉVALUATION, PROCÉDÉ DE CALCUL D'ÉVALUATION ET PROGRAMME
Document

明 細 書

発明の名称 判別演算装置、判別演算方法及びプログラム

技術分野

0001  

背景技術

0002  

発明の概要

発明が解決しようとする課題

0003   0004  

課題を解決するための手段

0005  

発明の効果

0006  

図面の簡単な説明

0007  

発明を実施するための形態

0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067  

請求の範囲

1   2   3   4   5   6   7   8   9   10   11   12   13   14  

図面

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15  

明 細 書

発明の名称 : 判別演算装置、判別演算方法及びプログラム

技術分野

[0001]
 本発明は、データに対して判別演算を行う判別演算装置、判別演算方法及びプログラムに関する。

背景技術

[0002]
 特許第4217664号公報は、顔を含む画像から、顔を個人認識する処理を行う画像処理装置を開示している。検出手段は、画像に含まれている顔領域を検出するために、顔領域における各特徴として、顔の局所特徴のエッジと、エッジを統合した顔の局所特徴の端部と、端部を統合した顔の局所特徴と、局所特徴を統合した顔領域とを検出する。設定手段は、検出手段が検出したそれぞれの特徴のうち、顔を構成する部分の形状に関わる特徴である局所特徴のエッジを含む第1の局所領域を顔領域に対して設定する。また、設定手段は、顔を構成する部分間の位置関係に関わる特徴である局所特徴の端部を含む第2の局所領域を顔領域に対して設定する。特定手段は、顔領域について設定手段が設定した第1及び第2の局所領域内の特徴群に基づいて、顔領域の顔が、それぞれ異なる個人の何れの顔であるかの特定を行う。

発明の概要

発明が解決しようとする課題

[0003]
 特許第4217664号公報では、検出手段は、画像に含まれている顔の特徴を検出する為の階層型ニューラルネットワークを用いて、画像に含まれている顔領域における各特徴を検出する。特許文献1は、検出手段により検出された特徴を格納するために大容量のメモリを必要とする。特に、近年の大規模な階層型ニューラルネットワークに対応した画像処理装置を実現する場合、メモリのコストの増加が課題となる。
[0004]
 本発明の目的は、小容量の記憶部を用いて判別演算を行うことができる判別演算装置、判別演算方法及びプログラムを提供することである。

課題を解決するための手段

[0005]
 本発明の一態様によれば、判別演算装置に、判別対象データに対して、階層毎に特徴を順次演算する特徴演算手段と、前記特徴演算手段により順次演算される特徴を用いて、前記判別対象データの判別演算を部分的に順次行い、部分的な判別演算結果を判別結果記憶部に格納する判別演算手段と、前記判別演算手段に、前記特徴演算手段により順次演算される特徴と前記判別結果記憶部に格納されている前記部分的な判別演算結果とを用いて、次の部分的な判別演算を行わせ、次の部分的な判別演算結果を前記判別結果記憶部に格納させる制御手段とを備える。

発明の効果

[0006]
 本発明によれば、小容量の記憶部を用いて判別演算を行うことができる。

図面の簡単な説明

[0007]
[図1] 第1の実施形態による画像処理システムの構成例を示す図である。
[図2] 判別処理の例を示す図である。
[図3] 第1の実施形態による判別演算装置の構成例を示す図である。
[図4] パターン認識処理のアルゴリズムの例を示す図である。
[図5] CNN演算処理部の構成例を示す図である。
[図6] 第1の実施形態による判別演算方法を示すフローチャートである。
[図7] 判別演算部分処理部の構成例を示す図である。
[図8] 他の判別演算方法を示すフローチャートである。
[図9] 基本技術による判別演算装置の構成例を示す図である。
[図10] 基本技術による判別演算方法を示すフローチャートである。
[図11] 第2の実施形態による判別演算装置の構成例を示す図である。
[図12] 第2の実施形態による判別演算方法を示すフローチャートである。
[図13] 桁数の削減例を示す図である。
[図14] 第3の実施形態による判別演算装置の構成例を示す図である。
[図15] 第3の実施形態による判別演算方法を示すフローチャートである。

発明を実施するための形態

[0008]
 (第1の実施形態)
 図1は、本発明の第1の実施形態による画像処理システム220の構成例を示す図である。画像処理システム220は、画像入力部200、判別演算装置211、画像バス203、ブリッジ204、前処理部205、DMAC206、CPU207、ROM208、RAM209及びCPUバス210を有する。判別演算装置211は、RAM201及びパターン認識処理部202を有する。画像処理システム220は、画像データから特定の物体の領域を検出する機能を有する。
[0009]
 画像入力部200は、光学系と、光電変換デバイスと、光電変換デバイスを制御するドライバ回路と、アナログデジタルコンバータと、画像補正を行う信号処理回路と、フレームバッファ等を有する。光電変換デバイスは、光電変換により画像信号を生成するCCD(Charge-Coupled Devices)又はCMOS(Complimentary Metal Oxide Semiconductor)センサ等である。画像入力部200は、デジタルの画像データを画像バス203に出力する。RAM(Random Access Memory)201は、パターン認識処理部202の演算作業バッファである。パターン認識処理部202は、RAM201を使用し、画像から特定のパターンを認識する。
[0010]
 DMAC(Direct Memory Access Controller)206は、画像バス203上の各処理部とCPUバス210間のデータ転送を行う。ブリッジ204は、画像バス203とCPUバス210のブリッジ機能を有する。前処理部205は、パターン認識処理部202がパターン認識処理を効果的に行うための各種前処理を行う。具体的には、前処理部205は、色変換処理及びコントラスト補正処理等の画像データ変換処理をハードウェアで処理する。ROM(Read Only Memory)208は、CPU207の動作を規定するプログラムやパラメータデータを格納する。CPU207は、ROM208に格納されているプログラムを実行することにより、画像処理システム220の動作を制御する。RAM209は、CPU207の動作に必要なメモリである。CPU207は、ブリッジ204を介して、画像バス203上のRAM201にアクセスすることも可能である。
[0011]
 画像入力部200は、画像データを前処理部205に出力する。前処理部205は、画像データに対して前処理を行い、前処理後の画像データをパターン認識処理部202に出力する。パターン認識処理部202は、入力された前処理後の画像データに対して画素単位で所定の判別処理を行い、入力画像中の所定の物体の領域を判定し、判定結果を画像形式の判別マップとしてRAM201に格納する。
[0012]
 図2は、パターン認識処理部202の判別対象の画像に対する判定結果例を模式的に示す図である。画像31中の人物の領域32は、画素単位で判定(黒が人物領域)された結果を示している。パターン認識処理部202は、図2の判定結果をRAM201に格納する。DMAC206は、RAM201に格納された判定結果をRAM209に転送する。CPU207は、RAM209に格納された判定結果を利用して、各種応用処理を実行する。例えば、CPU207は、対象物の領域に応じた最適な画像処理を施す等の処理を実行する。
[0013]
 図3は、図1の判別演算装置211の構成例を示す図である。判別演算装置211は、CNN演算処理部11、階層データ保持部12、判別演算部分処理部13、判別結果保持部14、及び制御部15を有する。CNN(Convolutional NeuralNetworks)は、畳み込みニューラルネットワークである。
[0014]
 CNN演算処理部11は、階層データ保持部12に保持されている前階層のデータに対して複数種類の畳み込み演算を行い、その演算結果を階層データ保持部12に格納する。判別演算部分処理部13は、CNN演算処理部11の結果である中間階層の演算結果を利用して判別処理の演算を部分的に行い、判別処理の部分的な演算結果を判別結果保持部14に書き込む。ここでの判別処理は、サポートベクトルマシン、ロジスティック回帰等の学習手法により生成された線形判別処理である。階層データ保持部12及び判別結果保持部14は、図1のRAM201に対応する。制御部15は、CNN演算処理部11及び判別演算部分処理部13の処理シーケンスを制御する処理部であり、小規模なCPUやハードウェアシーケンサにより構成される。
[0015]
 図4は、図3のCNN演算処理部11及び判別演算部分処理部13の処理のアルゴリズムの例を示す図である。以下、CNNと特徴面データを用いた判別処理について説明する。ここでは、小型の3階層408~410のCNNを利用した場合ついて説明する。実際には、更に多数の特徴面データ及び多段の階層により構成することが多い。
[0016]
 入力層401は、画像データに対してCNN演算処理を行う場合、ラスタスキャンされた所定サイズの画像データに相当する。入力層401の画像データは、判別対象データである。特徴面データ403a~403cは、第1階層408の特徴面データを示す。特徴面データとは、所定の特徴抽出演算(畳み込み演算及び非線形処理)の処理結果に相当する。特徴面データは、ラスタスキャンされた画像データに対する処理結果であるため、処理結果も面で表現される。パターン認識処理部202は、この特徴面データ403a~403cのデータを中間階層のデータとして判別に利用する。特徴面データ403a~403cは、入力層401に対応する畳み込み演算と非線形処理により算出される。CNN演算処理部11の処理部4021aは、入力層401に対して、2次元の畳み込みカーネルを用いた畳み込み演算とその演算結果の非線形変換により、特徴面データ403aを演算する。CNN演算処理部11の処理部4021bは、入力層401に対して、2次元の畳み込みカーネルを用いた畳み込み演算とその演算結果の非線形変換により、特徴面データ403bを演算する。CNN演算処理部11の処理部4021cは、入力層401に対して、2次元の畳み込みカーネルを用いた畳み込み演算とその演算結果の非線形変換により、特徴面データ403cを演算する。処理部4021a~4021cは、それぞれ、異なる特徴面データ403a~403cを演算する。
[0017]
 例えば、処理部4021a~4021cは、それぞれ、カーネル(係数マトリクス)サイズがcolumnSize×rowSizeの畳み込み演算を、式(1)に示すような積和演算により処理する。
[0018]
[数1]


[0019]
 ここで、input(x,y)は、入力層401の2次元座標(x,y)での参照画素値である。output(x,y)は、2次元座標(x,y)での演算結果である。weight(column,row)は、座標(x+column,y+row)での重み係数である。columnSize及びrowSizeは、2次元畳み込みカーネルの水平及び垂直方向サイズである。
[0020]
 CNN演算処理部11は、入力層401に対して、複数の畳み込みカーネルを画素単位で走査しながら積和演算を繰り返し、最終的な積和結果を非線形変換することで特徴面データ403a~403cを算出する。なお、特徴面データ403aを算出する場合は、前階層との結合数が1であるため、畳み込みカーネルは1つである。
[0021]
 図5は、図3のCNN演算処理部11の主要な演算ユニットを示す図であり、図4の特徴面データ405aを演算する場合を例としてその基本動作を説明する。特徴面データ405aは、前階層408の3つの特徴面データ403a~403cに対する畳み込み演算により算出される。CNN演算処理部11は、畳み込み演算処理部501、累積加算器502、及び非線形変換処理部503を有する。畳み込み演算処理部501は、特徴面データ403aに対して、カーネルを用いた畳み込み演算4041aを行い、その演算結果を累積加算器502に格納する。同様に、畳み込み演算処理部501は、特徴面データ403b及び403cに対して、それぞれ、カーネルを用いた畳み込み演算4041a及び4041cを行い、その演算結果を累積加算器502に格納する。なお、畳み込み演算処理部501は、3種類のカーネルを順番に処理しても良いし、並列に処理してもよい。累積加算器502は、演算結果を累積加算し、累積加算結果を非線形変換処理部503に出力する。非線形変換処理部503は、累積加算結果に対して、ReLU(Rectified Linear Unit)関数やロジスティック関数を利用した非線形変換処理を行い、特徴面データ405aを出力する。CNN演算処理部11は、以上の処理を特徴面データ403a~403c全体に対して1画素ずつ走査しながら処理することで、特徴面データ405aを算出する。
[0022]
 同様に、CNN演算処理部11は、図4に示すように、前階層408内の複数の特徴面データ403a~403cに対して、それぞれ3つの畳み込み演算4041b、4042b、4043bを行い、特徴面データ405bを算出する。更に、CNN演算処理部11は、第2階層409の特徴面データ405a及び405bに対して、2つの畳み込み演算4061及び4062を行い、第3階層410の特徴面データ407を算出する。以上のように、CNN演算処理部11は、特徴演算手段であり、階層毎に、特徴面データを順次演算する。なお、各畳み込み演算の係数は、バックプロパゲーション学習等の一般的な手法を用いて予め学習により決定されている。
[0023]
 判別演算部分処理部13は、各特徴面データ403a~403c、405a~405b、407のそれぞれの画素位置に対応するデータを連結したベクトルを特徴ベクトルとしてそれぞれ線形判別演算処理し、判別マップ411を出力する。特徴ベクトルは、画素位置に対応する特徴面データを連結したデータであるため、図4に示すネットワークの場合、6種類の特徴面データ403a~403c、405a~405b、407に対応して、6次元の特徴ベクトルとなる。判別演算部分処理部13は、式(2)に従って、画素位置毎に線形判別演算を行う。
[0024]
[数2]


[0025]
 ここで、featuremap(n,f,x,y)は、第n階層のf番目の特徴面データの座標(x,y)の値である。result(x,y)は、座標(x,y)での判別結果である。weight(n,f)は、第n階層のf番目の特徴面データに対する係数である。LayerNumberは、階層数である。FeaturemapNumberは、第n階層に含まれる特徴面データの数である。
[0026]
 weight(n,f)は、ロジスティック回帰やサポートベクターマシン等により予め学習された係数である。判別演算部分処理部13は、式(2)の演算により特徴面データの画素位置毎に処理した結果を判別マップ411として出力する。判別演算部分処理部13は、画素位置毎に判別処理を行うため、判定結果も画像形式の判別マップ411として生成する。判別マップ411は、画素位置に対応する値が対象物体領域の確からしさを示す。
[0027]
 図6は、図3の判別演算装置211による判別演算方法を示すフローチャートである。ステップS601において、制御部15は、CNN演算処理部11及び判別演算部分処理部13の動作を指定するパラメータを設定する。次に、ステップS602において、CNN演算処理部11は、一つの階層のCNN演算を行い、一つの階層の特徴面データを算出する。例えば、CNN演算処理部11は、図4の階層408の特徴面データの演算を行い、特徴面データ405a及び405bを算出する。次に、ステップS603において、CNN演算処理部11は、ステップS602で算出した特徴面データを中間階層データとして、階層データ保持部12に格納する。CNN演算処理部11は、ステップS602でCNN演算を順次処理し、ステップS603で特徴面データを階層データ保持部12に格納する。
[0028]
 次に、ステップS604において、判別演算部分処理部13は、判別結果保持部14に格納されている、前階層の特徴抽出処理結果に基づく判別処理の部分的な演算結果を読み出す。次に、ステップS605において、判別演算部分処理部13は、ステップS604で読み出した演算結果と、CNN演算処理部11が出力する処理対象の階層で得られた特徴面データを参照して、式(3)により、判別処理を部分的に演算する。
[0029]
[数3]


[0030]
 ここで、featuremap(n,f,x,y)は、第n階層のf番目の特徴面データの座標(x,y)の値である。weight(n,f)は、第n階層のf番目の特徴面データに対する係数である。featuremap_numberは、第n階層の特徴面データの数である。part_result(n-1,x,y)は、第n-1階層までの特徴面データに対する部分的な判別演算結果である。part_result(n,x,y)は、第n階層までの特徴面データに対する部分的な判別演算結果である。
[0031]
 判別演算部分処理部13は、式(3)の第n-1階層までの部分的な判別演算処理結果part_result(n-1,x,y)と、特徴面データfeaturemap(n,f,x,y)と重み係数weight(n,f)の内積演算結果の和を演算する。これにより、判別演算部分処理部13は、第n階層の部分的な判別演算処理結果part_result(n,x,y)を得る。
[0032]
 線形判別全体の演算処理結果result(x,y)は、式(2)で示すように、全ての特徴面データfeaturemap(n,f,x,y)と対応する重み係数weight(n,f)の内積和によって算出される。本実施形態では、ステップS604において、判別演算部分処理部13は、判別結果保持部14に格納されている、前階層までの部分的な判別演算処理結果part_result(n-1,x,y)を読み出す。次に、ステップS605において、判別演算部分処理部13は、式(3)の右辺第二項を演算し、ステップS604で読み出した演算結果part_result(n-1,x,y)と式(3)の右辺第二項を加算する。これにより、判別演算部分処理部13は、現在の階層までの部分的な判別演算処理結果part_result(n,x,y)を得る。すなわち、判別演算部分処理部13は、判別処理演算の一部の階層の演算を実行する。このため、ステップS603において、CNN演算処理部11は、次のCNN演算に必要な階層の特徴面データだけを、階層データ保持部12に格納すればよい。
[0033]
 図7は、図3の判別演算部分処理部13の構成例を示す図である。判別演算部分処理部13は、乗算器71、累積加算器72、及び加算器73を有する。乗算器71は、第n階層のf番目の特徴面データfeaturemap(n,f,x,y)と重み係数weight(n,f)の乗算を行う。累積加算器72は、各特徴面データに対して、乗算器71の乗算結果を累積加算し、式(3)の右辺第二項のデータを出力する。
[0034]
 乗算器71は、処理中の第n階層の特徴面データを、CNN演算処理部11のCNN演算の画素単位処理終了毎に取り出して参照してもよいし、階層データ保持部12にバッファリングした特徴面データを所定の単位でまとめて取り出して処理してもよい。例えば、図8は、図6に示すフローチャートの変形例であり、図6に対して、ステップS603の位置が異なる。図8では、ステップS603は、ステップS604~S606に対して、並列に処理される。階層データ保持部12と判別結果保持部14が物理的に異なるメモリ等で構成されている場合、上記の並列処理による処理の高速化が期待できる。
[0035]
 図7の加算器73は、判別結果保持部14に記憶されている前階層までの部分的な判別演算処理結果part_result(n-1,x,y)と、累積加算器72が出力する式(3)の右辺第二項のデータを加算する。そして、加算器73は、式(3)の左辺の現階層までの部分的な判別演算処理結果part_result(n,x,y)を出力する。
[0036]
 以上のように、乗算器71及び累積加算器72は、現階層の特徴面データfeaturemap(n,f,x,y)と重み係数weight(n,f)の積和演算を行う。加算器73は、累積加算器72が出力する現階層の積和演算の結果と、判別結果保持部14に格納されている前階層までの積和演算の結果part_result(n-1,x,y)を加算して判別結果保持部14に格納する。
[0037]
 次に、図6のステップS606において、判別演算部分処理部13は、ステップS605で得られた現階層までの部分的な判別演算処理結果part_result(n,x,y)を判別結果保持部14に書き込む。この判別演算処理結果part_result(n,x,y)は、次の階層の処理において、前階層までの部分的な判別演算処理結果part_result(n-1,x,y)として使用される。次に、ステップS607において、制御部15は、全階層の処理が終了したか否かを判定する。制御部15は、全階層の処理が終了していないと判定した場合には、ステップS602に処理を戻し、次の階層についての処理を繰り返す。制御部15は、全階層の処理が終了したと判定した場合には、処理を終了する。上記の処理により、判別演算装置211は、全階層の判別演算処理結果を判別マップ411として得る。
[0038]
 以上のように、CNN演算処理部11は、特徴演算手段であり、入力層401の判別対象データに対して、階層毎に特徴面データを順次演算する。具体的には、CNN演算処理部11は、入力層401の判別対象データを基に第1階層408の特徴面データ403a~403cを演算し、第1階層の特徴面データ403a~403cを階層データ保持部(特徴記憶部)12に格納する。次に、CNN演算処理部11は、階層データ保持部12に格納されている第1階層408の特徴面データ403a~403cを基に第2階層409の特徴面データ405a及び405bを演算して階層データ保持部12に格納する。次に、CNN演算処理部11は、階層データ保持部12に格納されている第2階層409の特徴面データ405a及び405bを基に第3階層410の特徴面データ407を演算して階層データ保持部12に格納する。
[0039]
 判別演算部分処理部13は、CNN演算処理部11により順次演算される特徴面データを用いて、入力層401の判別対象データの判別演算を部分的に順次行い、部分的な判別演算結果を判別結果保持部(判別結果記憶部)14に格納する。判別演算部分処理部13は、CNN演算処理部11により順次演算される特徴面データと判別結果保持部14に格納されている部分的な判別演算結果を用いて、次の部分的な判別演算を行い、次の部分的な判別演算結果を判別結果保持部14に格納する。
[0040]
 次に、図3及び図6の本実施形態による判別演算装置211の特徴を、図9及び図10の基本技術による判別演算装置80と比較して説明する。図9は、基本技術による判別演算装置80の構成例を示す図である。判別演算装置80は、CNN演算処理部81、特徴面データ保持部82、判別演算処理部83、判別結果保持部84、及び制御部85を有する。CNN演算処理部81は、特徴面データ保持部82に保持されている特徴面データに対して畳み込み演算を行い、その演算結果を特徴面データ保持部82に記録する。CNN演算処理部81は、特徴面データ保持部82に全ての階層の特徴面データを記録する。判別演算処理部83は、特徴面データ保持部82に記録された特徴面データを参照して判別演算処理を実行し、その結果を判別結果保持部84に記録する。制御部85は、CNN演算処理部81及び判別演算処理部83の処理シーケンスを制御する処理部であり、小規模なCPUやハードウェアシーケンサにより構成される。
[0041]
 図10は、図9の判別演算装置80の判別演算方法を示すフローチャートである。ステップS901において、制御部85は、CNN演算処理部81及び判別演算処理部83の動作を指定するパラメータを設定する。次に、ステップS902において、CNN演算処理部81は、一つの階層のCNN演算により、特徴面データを算出する。次に、ステップS903において、CNN演算処理部81は、ステップS902で算出された特徴面データを特徴面データ保持部82に格納する。次に、ステップS904において、制御部85は、全階層の処理が終了していないと判定した場合には、ステップS902に処理を戻し、次の階層についての処理を繰り返す。この場合、ステップS903では、CNN演算処理部81は、特徴面データ保持部82の異なる領域に、各階層の特徴面データを格納する。制御部85は、全階層の処理が終了したと判定した場合には、ステップS905に処理を進める。ステップS905において、判別演算処理部83は、特徴面データ保持部82に格納された各階層の特徴面データを参照して式(2)に従う判別演算を行い、判別結果を得る。次に、ステップS906において、判別演算処理部83は、判別結果を判別結果保持部84に書き込む。
[0042]
 基本技術による判別演算装置80では、CNN演算処理部81は、特徴面データ保持部82に全ての階層の特徴面データを格納する。例えば、図4に示すネットワークを処理する場合、特徴面データ保持部82には、5×特徴面データサイズ(各階層の特徴面データのサイズが同じとする)の特徴面データを保持する必要がある。
[0043]
 これに対し、本実施形態による判別演算装置211では、階層データ保持部12は、CNN演算処理部11の次のCNN演算を処理するために必要な2階層分の特徴面データを保持できればよい。図4のネットワークでは、階層データ保持部12は、階層409の特徴面データを演算する場合が最大の特徴面データを保持する場合である。その場合、階層データ保持部12は、4×特徴面データサイズの特徴面データを保持する。すなわち、本実施形態の場合、判別演算装置211は、特徴面データを保持する階層データ保持部12の容量を小さくすることができる。
[0044]
 図4は、説明の簡単のための小さなCNNの例であるが、実際には多数の階層からなるCNNで構成するため、階層データ保持部12の容量削減の効果は極めて大きい。例えば、1つの階層の特徴面が64個(全ての階層で同じ特徴面データの数とする)、階層数が10の場合を説明する。その場合、基本技術による判別演算装置80は、64×10個の特徴面データを格納する特徴面データ格納保持部82を必要とする。これに対し、本実施形態による判別演算装置211は、64×2個の特徴面データを格納する階層データ保持部12を必要とする。また、特許第5184824号公報に開示されているような少ない容量のメモリでCNNを演算する手法に適用した場合、更にその効果が高くなる。
[0045]
 以上、本実施形態によれば、判別演算装置211は、階層データ保持部12にCNNの中間階層データ(特徴面データ)を格納することにより、階層データ保持部12の容量を削減し、コストを低減することができる。
[0046]
 (第2の実施形態)
 図11は、本発明の第2の実施形態による判別演算装置211の構成例を示す図である。図11の判別演算装置211は、図3の判別演算装置211に対して、データ削減処理部126を追加したものである。データ削減処理部126は、判別演算部分処理部13と判別結果保持部14との間に設けられる。なお、データ削減処理部126は、判別演算部分処理部13内に設けてもよい。以下、本実施形態が第1の実施形態と異なる点を説明する。
[0047]
 第1の実施形態では、判別演算部分処理部13は、各階層の部分演算結果の累積加算結果を判別結果保持部14に格納する。その場合、判別演算部分処理部13は、累積加算に伴い、必要な演算桁数が増加する。したがって、判別演算部分処理部13は、整数型の固定小数点演算で処理する場合、判別結果保持部14のメモリデータ幅を増加させる必要がある。メモリデータ幅の増加は、判別結果保持部14の容量の増加に直結し、判別演算装置211のコスト上昇を招くため、できるだけ狭いメモリデータ幅で処理することが望まれる。本実施形態では、データ削減処理部126及び判別演算部分処理部13は、判別演算部分処理部13の判別演算処理結果の桁数を削減し、桁数を削減した判別演算処理結果を判別結果保持部14に格納する。
[0048]
 図12は、図11の判別演算装置211の判別演算方法を示すフローチャートである。図12のフローチャートは、図6のフローチャートに対して、ステップS606及びS607の代わりに、ステップS1106~S1108を設けたものである。
[0049]
 まず、判別演算装置211は、図6と同様に、ステップS601~S605の処理を行う。次に、ステップS1106において、データ削減処理部126及び判別演算部分処理部13は、ステップS605で演算された式(3)の判別処理の部分演算結果の桁数を削減する。具体的には、データ削減処理部126及び判別演算部分処理部13は、式(3)の右辺第二項の積和演算結果から所定の桁位置及び所定の桁数のデータを取り出し、取り出したデータに対して、式(3)の右辺第一項の値を加算し、加算結果を得る。すなわち、データ削減処理部126及び判別演算部分処理部13は、現階層の特徴面データと重み係数の積和演算の結果の桁数を削減し、桁数を削減した積和演算の結果と前階層までの積和演算の結果を加算し、加算の結果を判別結果保持部14に格納する。
[0050]
 図13は、データ削減処理部126の桁数削減処理の具体例を示す図である。バイナリデータビット列1301は、判別演算部分処理部13が出力する部分演算結果のデータビット列であり、32ビットデータDn(n:0~31)を有する。ビットデータDnは、バイナリデータビット列1301の要素であり、32ビットのデータ列を示している。ステップS1106において、データ削減処理部126は、バイナリデータビット列1301において、予め定めるデータ取り出し桁位置1302から必要な有効桁数分のデータ1303を取り出す。例えば、データ1303は、10ビットのデータである。データ取り出し桁位置1302は、ステップS1106で事前に与えられるパラメータである。データ取り出し桁位置1302は、ステップS602の特徴面データが有する小数点位置と、判別処理に必要な重み係数の小数点位置及び判別結果保持部14の保持するデータの小数点位置に基づいて定まる値である。すなわち、データ取り出し桁位置1302は、式(3)の右辺第一項と式(3)の右辺第二項の桁位置を合わせるために必要なパラメータである。
[0051]
 データ取り出し桁位置1302は、階層毎又は判別対象データのカテゴリ毎に異なっていてもよい。ステップS602の結果や対応する判別処理の重み係数のデータ分布は、階層やカテゴリによって異なる場合がある。その場合、それぞれの小数点位置が異なる。ステップS1106では、データ削減処理部126は、それぞれの小数点位置を考慮して、判別結果保持部14に保持するデータと桁を合わせた上で必要な桁数分のデータ1303を取り出す。各小数点位置は、事前にテストデータを用いて決定し、それに対応してデータ取り出し桁位置1302も事前に決定される。また、データ1303の桁数は、メモリコストと演算精度のトレードオフとなるが、これも、事前にテストデータを用いて決定する。
[0052]
 なお、本実施形態では、式(3)のように、階層内の全ての特徴面データと重み係数との内積演算結果と判別結果保持部14に保持される前階層の部分演算結果の和を算出した後に、桁数を削減する場合について説明したが、これに限定されない。実装上の制約等により、階層内の所定の特徴面データ数単位毎に桁数を削減して判別結果保持部14に累積保持する方法等でもよい。判別精度の観点からは、十分な桁数を有する累積加算器72(図7)でなるべく多くの特徴面データに対する内積演算を処理した後に桁数を削減することが望ましいが、そのような構成に限定するものではない。
[0053]
 次に、図12のステップS1107において、判別演算部分処理部13は、ステップS1106で桁数が削減された現階層までの部分的な判別演算処理結果を判別結果保持部14に書き込む。この判別演算処理結果は、次の階層の処理において、前階層までの部分的な判別演算処理結果として使用される。次に、ステップS1108において、制御部15は、全階層の処理が終了したか否かを判定する。制御部15は、全階層の処理が終了していないと判定した場合には、ステップS602に処理を戻し、次の階層についての処理を繰り返す。制御部15は、全階層の処理が終了したと判定した場合には、処理を終了する。上記の処理により、判別演算装置211は、全階層の判別演算処理結果を判別マップ411として得る。
[0054]
 以上、本実施形態によれば、少ない容量の階層データ保持部12を用いて、CNNの中間階層データを利用した判別処理を実現することができる。さらに、データ削減処理部126が部分的な判別演算処理結果の桁数を適切に削減することで、判別結果保持部14の容量を削減することができる。これにより、RAM201の一層の容量削減が期待される。
[0055]
 (第3の実施形態)
 図14は、本発明の第3の実施形態による判別演算装置211の構成例を示す図である。図14の判別演算装置211は、図11の判別演算装置211に対して、第1のデータ削減処理部147を追加したものである。図14の第2のデータ削減処理部126は、図11のデータ削減処理部126に対応する。第1のデータ削減処理部147は、CNN演算処理部11と階層データ保持部12の間に設けられる。なお、第1のデータ削減処理部147は、CNN演算処理部11内に設けてもよい。以下、本実施形態が第2の実施形態と異なる点を説明する。判別演算装置211が組み込み機器の場合、一般的に全ての処理が固定小数点型の整数演算で処理される。CNN演算処理部11は、CNN演算処理を整数型で演算処理し、特徴面データを生成する。第1のデータ削減処理部147及びCNN演算処理部11は、その特徴面データの桁数を削減し、桁数が削減された特徴面データを階層データ保持部12に書き込む。
[0056]
 図15は、図14の判別演算装置211の判別演算方法を示すフローチャートである。図15のフローチャートは、図12のフローチャートに対して、ステップS1509を追加したものである。ステップS1509は、ステップS602及びS603の間に設けられる。ステップS1106では、第2のデータ削減処理部126が、図12と同様の処理を行う。
[0057]
 ステップS1509において、第1のデータ削減処理部147は、ステップS602で算出された特徴面データの桁数を削減する。次に、ステップS603において、CNN演算処理部11は、桁数が削減された特徴面データを階層データ保持部12に格納する。ステップS1106では、第2のデータ削減処理部126は、第2の実施形態で示したように、10ビットのデータに桁数を削減する。これに対し、ステップS1509では、第1のデータ削減処理部147は、8ビットのデータ幅のデータに桁数を削減する。第1のデータ削減処理部147が削減する桁数と第2のデータ削減処理部126が削減する桁数は、相互に異なる。一般的に、CNN演算処理部11の特徴抽出処理では、桁数を削減した場合の判別精度の低下は少ない。これに対し、判別演算部分処理部13の判別処理演算では、演算桁数が判別精度に影響することが多い。
[0058]
 本実施形態では、判別結果保持部14に格納するデータ量は、階層データ保持部12に保持が必要なデータ量より少ない(図4の例では特徴面データの一面分に相当)ことに着目し、判別結果保持部14に格納するデータの桁数を他の処理部に比べて多めに取る。これにより、判別精度の劣化を抑えて、少ない容量のRAM201で、CNNの中間階層データを利用した判別処理を実現することができる。
[0059]
 なお、第1~第3の実施形態では、階層毎に判別処理の部分演算を実行する場合について説明したが、これに限定されない。階層ネットワーク内の特徴面データの数や大きさと階層データ保持部12のメモリサイズに応じて部分演算の実行単位を決定してもよい。例えば、複数層単位で判別処理の部分演算を実行する等の構成も可能である。第2の実施形態で説明したように、判別結果保持部14に格納するデータの桁数を削減する場合、できるだけ判別結果保持部14への部分演算結果の記録回数を少なくすることで、桁落ちに伴う性能への影響を軽減することができる。
[0060]
 また、第1~第3の実施形態では、2次元の画像データに対するCNN演算処理の例を説明したが、音声データ等の1次元データや時間方向の変化も含めた3次元データに対するCNN演算処理に適用することも可能である。
[0061]
 また、第1~第3の実施形態では、特徴抽出処理としてCNN演算処理の場合について説明したが、これに限定されない。Restricted Boltzmann MachinesやRecursive Neural Network等の他の様々な階層的な処理に適用可能である。
[0062]
 また、第1~第3の実施形態では、制御部15をCPUで構成した場合の処理を説明したが、制御部15は、全てハードウェアでシーケンスを制御する場合にも同様に適用可能である。
[0063]
 また、第1~第3の実施形態では、畳み込み演算や内積演算をハードウェアで構成する場合について説明したが、これに限定されない。パターン認識処理部202は、汎用のCPUでプログラムを実行することにより、全ての処理を行う場合にも適用可能である。その場合も、CPUが必要な作業メモリの容量を大幅に削減することが可能になる。また、汎用のコンピュータシステムやクラウドシステムで処理する場合にも有効である。
[0064]
 本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
[0065]
 なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
[0066]
 本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために以下の請求項を添付する。
[0067]
 本願は、2017年8月8日提出の日本国特許出願特願2017-153187を基礎として優先権を主張するものであり、その記載内容の全てをここに援用する。

請求の範囲

[請求項1]
 判別対象データに対して、階層毎に特徴を順次演算する特徴演算手段と、
 前記特徴演算手段により順次演算される特徴を用いて、前記判別対象データの判別演算を部分的に順次行い、部分的な判別演算結果を判別結果記憶部に格納する判別演算手段と、
 前記判別演算手段に、前記特徴演算手段により順次演算される特徴と前記判別結果記憶部に格納されている前記部分的な判別演算結果とを用いて、次の部分的な判別演算を行わせ、次の部分的な判別演算結果を前記判別結果記憶部に格納させる制御手段とを有することを特徴とする判別演算装置。
[請求項2]
 前記特徴演算手段は、前記判別対象データを基に第1階層の特徴を演算し、前記第1階層の特徴を特徴記憶部に格納し、前記特徴記憶部に格納されている前記第1階層の特徴を基に第2階層の特徴を演算することを特徴とする請求項1に記載の判別演算装置。
[請求項3]
 前記特徴演算手段は、畳み込みニューラルネットワークを用いた畳み込み演算を行うことを特徴とする請求項1又は2に記載の判別演算装置。
[請求項4]
 前記判別演算手段は、現階層の前記特徴と重み係数との積和演算を行い、前記現階層の積和演算の結果と前階層までの積和演算の結果とを加算することを特徴とする請求項1~3のいずれか1項に記載の判別演算装置。
[請求項5]
 前記判別演算手段は、前記次の部分的な判別演算結果の桁数を削減し、前記桁数を削減した次の部分的な判別演算結果を前記判別結果記憶部に格納することを特徴とする請求項1~4のいずれか1項に記載の判別演算装置。
[請求項6]
 前記判別演算手段は、前記現階層の前記特徴と重み係数の積和演算の結果の桁数を削減し、前記桁数を削減した積和演算の結果と前記前階層までの積和演算の結果とを加算し、前記加算の結果を前記判別結果記憶部に格納することを特徴とする請求項4に記載の判別演算装置。
[請求項7]
 前記判別演算手段は、前記現階層の前記特徴と重み係数の積和演算の結果から所定の桁位置及び所定の桁数のデータを取り出し、前記取り出したデータと前記前階層までの積和演算の結果とを加算し、前記加算の結果を前記判別結果記憶部に格納することを特徴とする請求項4又は6に記載の判別演算装置。
[請求項8]
 前記所定の桁位置は、前記階層毎に異なることを特徴とする請求項7に記載の判別演算装置。
[請求項9]
 前記所定の桁位置は、前記判別対象データのカテゴリ毎に異なることを特徴とする請求項7に記載の判別演算装置。
[請求項10]
 前記特徴演算手段は、前記特徴の桁数を削減し、前記桁数を削減した特徴を前記特徴記憶部に格納することを特徴とする請求項2に記載の判別演算装置。
[請求項11]
 前記特徴演算手段は、前記特徴の桁数を削減し、前記桁数を削減した特徴を特徴記憶部に格納し、
 前記判別演算手段は、前記判別結果の桁数を削減し、前記桁数を削減した判別結果を前記判別結果記憶部に格納することを特徴とする請求項1に記載の判別演算装置。
[請求項12]
 前記特徴演算手段が削減する桁数と前記判別演算手段が削減する桁数は、互いに異なることを特徴とする請求項11に記載の判別演算装置。
[請求項13]
 判別対象データに対して、階層毎に特徴を順次演算するステップと、
 前記順次演算される特徴を用いて、前記判別対象データの判別演算を部分的に順次行い、部分的な判別演算結果を判別結果記憶部に格納するステップと、
 前記順次演算される特徴と前記判別結果記憶部に格納されている前記部分的な判別演算結果とを用いて、次の部分的な判別演算を行い、次の部分的な判別演算結果を前記判別結果記憶部に格納するステップと
 を有することを特徴とする判別演算方法。
[請求項14]
 コンピュータを、請求項1~12のいずれか1項に記載された判別演算装置の各手段として機能させるためのプログラム。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]

[ 図 10]

[ 図 11]

[ 図 12]

[ 図 13]

[ 図 14]

[ 図 15]