(57)【要約】【課題】  解像度の異なる画像を処理するための演算器を、処理効率を落とさずに共通化する。【解決手段】  データ処理装置に、第１および第２の種類のデータをそれぞれ保持する第１および第２の保持手段と、前記第１の種類のデータに基づいて第１の積和演算を実行する第１の積和演算手段と、前記第１の積和演算の演算結果を並列に出力する分岐手段と、前記分岐手段により出力された前記第１の積和演算の演算結果をサンプリングし、サンプリング結果を出力するサンプリング手段と、前記第２の種類のデータと前記サンプリング結果とに基づいて第２の積和演算を実行する第２の積和演算手段とを備える。【選択図】  図３
2019192021.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２の種類のデータをそれぞれ保持する第１および第２の保持手段と、
前記第１の種類のデータに基づいて第１の積和演算を実行する第１の積和演算手段と、
前記第１の積和演算の演算結果を並列に出力する分岐手段と、
前記分岐手段により出力された前記第１の積和演算の演算結果をサンプリングし、サンプリング結果を出力するサンプリング手段と、
前記第２の種類のデータと前記サンプリング結果とに基づいて第２の積和演算を実行する第２の積和演算手段とを有することを特徴とするデータ処理装置。
【請求項２】
前記第１および第２の積和演算手段は、前記第１および第２の積和演算を並列に実行することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記第１および第２の積和演算手段は、前記第１および第２の積和演算の演算量に基づいて、それぞれの積和演算の並列度が決定されることを特徴とする請求項１に記載のデータ処理装置。
【請求項４】
前記第１の種類のデータと前記第２の種類のデータとはビット数が異なり、
前記第１の積和演算手段のビット数は前記第１の種類のデータのビット数に応じて決定され、前記第２の積和演算手段のビット数は前記第２の種類のデータのビット数に応じて決定され、
前記第１の保持手段のビット数は第１の種類のデータのビット数に応じて決定され、前記第２の保持手段のビット数は第２の種類のデータのビット数に応じて決定されることを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
第３の保持手段をさらに有し、
前記第３の保持手段は、前記分岐手段より出力された前記第１の積和演算の結果を一時的に保持し、
前記サンプリング手段は、前記第３の保持手段で保持された前記第１の積和演算の結果をサンプリングし、サンプリング結果を出力することを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
第３の保持手段をさらに有し、
前記第３の保持手段は、前記サンプリング手段により出力されたサンプリング結果を一時的に保存し、
前記第２の積和演算手段は、前記第２の種類のデータと前記第３の保持手段に保持された前記サンプリング結果とに基づいて、前記第２の積和演算を実行することを特徴とする請求項１に記載のデータ処理装置。
【請求項７】
活性化処理手段をさらに有し、
前記活性化処理手段は、前記第１の積和演算の結果に基づいて活性化処理の結果を計算し、
前記分岐手段は、前記活性化処理の結果を並列に出力することを特徴とする請求項１に記載のデータ処理装置。
【請求項８】
活性化処理手段をさらに有し、
前記活性化処理手段は、前記分岐手段より出力された前記第１の積和演算の結果に基づいて、活性化処理の結果を計算することを特徴とする請求項１に記載のデータ処理装置。
【請求項９】
前記第１の種類のデータと前記第２の種類のデータとは、解像度が異なる画像データであることを特徴とする請求項１に記載のデータ処理装置。
【請求項１０】
前記第１の種類のデータと前記第２の種類のデータとは、複数枚の画像データであることを特徴とする請求項１に記載のデータ処理装置。
【請求項１１】
前記第２の積和演算手段は、幅と高さとが１のフィルタを処理することを特徴とする請求項１に記載のデータ処理装置。
【請求項１２】
第１および第２の種類のデータをそれぞれ第１および第２の保持手段に保持する保持工程と、
前記第１の種類のデータに基づいて第１の積和演算を実行する第１の積和演算工程と、
前記第１の積和演算の演算結果を並列に出力する分岐工程と、
前記分岐手段により出力された前記第１の積和演算の演算結果をサンプリングし、サンプリング結果を出力するサンプリング工程と、
前記第２の種類のデータと前記サンプリング結果とに基づいて第２の積和演算を実行する第２の積和演算工程とを有することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークを用いたデータ処理に関するものである。
【背景技術】
【０００２】
近年、深層学習の進歩により、画像認識の精度が上がった。畳み込みニューラルネットワーク（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ，  ＣＮＮ）は深層学習に用いられる手法として知られている。ＣＮＮの中には複数のレイヤがカスケードで接続されている。各レイヤの中に複数枚の特徴画像があり、学習したフィルタ係数と特徴画像の画素を用いてフィルタ処理の結果を計算する。フィルタ処理は積和演算であり、複数の乗算と累積加算を含んでいる。
【０００３】
第２のレイヤの中の特徴画像（Ｏ（．））は第１のレイヤの中の特徴画像（Ｉ（．））と第１のレイヤに対応するフィルタ係数を用いて計算する。第２のレイヤの中の１枚の特徴画像を計算するためには、第１のレイヤの中の複数枚の特徴画像の情報が必要である。畳み込み演算の計算式（１）は以下の通りである。
【０００４】
【数１】
2019192021.tif 000003
【０００５】
第１のレイヤの中の特徴画像がＭ枚あり、第ｍ枚目の特徴画像はＩ（ｍ）である。フィルタ係数（Ｃ１，１（ｍ，ｎ）〜ＣＸ，Ｙ（ｍ，ｎ））がＸ×Ｙ個あり、特徴画像によって異なる。第２のレイヤの出力画素Ｏｉ，ｊ（ｎ）を算出するための積和演算回数はＭ×Ｘ×Ｙである。畳み込み演算をした後に、出力画素Ｏｉ，ｊ（ｎ）を用いて活性化処理やプーリング等の処理を行う。
【０００６】
ＣＮＮは積和演算の回数が多いため、携帯端末や車載機器等の組み込みシステムに適用した場合、効率的なデータ処理装置が求められている。特許文献１では、ＣＮＮの各レイヤの積和演算を共通の演算器で処理する構成が提案されている。
【０００７】
また、画像認識の精度を上げるため、ＣＮＮのネットワーク構成を変更する手法が提案されている。非特許文献１では、各レイヤの特徴画像を用いて、サイドアウトプット（Ｓｉｄｅ−Ｏｕｔｐｕｔ）レイヤを生成する。サイドアウトプットレイヤの中の特徴画像はレイヤによって解像度が異なることが多いので、最後の出力結果を生成するため、特徴画像のサイズを合わせるためのサンプリング処理が必要である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１６−９９７０７
【非特許文献】
【０００９】
【非特許文献１】Ｓａｉｎｉｎｇ  Ｘｉｅ，  Ｚｈｕｏｗｅｎ  Ｔｕ，  “Ｈｏｌｉｓｔｉｃａｌｌｙ−Ｎｅｓｔｅｄ  Ｅｄｇｅ  Ｄｅｔｅｃｔｉｏｎ，”  ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＩＣＣＶ  ２０１５．
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１に記載の手法を従来のＣＮＮに適用した場合、共通の演算器を使用することにより、データ処理装置のコストを抑えることができる。ただし、非特許文献２に記載のサイドアウト型のネットワークに適用した場合、サンプリングした後のサイドアウトレイヤの特徴画像の解像度が異なるため、演算器の処理効率が下がる可能性がある。
【００１１】
演算器の処理効率は以下の式（２）で計算する。
【００１２】
【数２】
2019192021.tif 000004
【００１３】
Ｓはレイヤの中の特徴画像の種類数である。Ｈｉ、Ｗｉ、Ｃｉはそれぞれ第ｉ種類の特徴画像の高さと、幅と、枚数であり、ｈｉ、ｗｉ、ｃｉはそれぞれ演算器が並列処理できる特徴画像の高さと、幅と、枚数である。
【００１４】
図１２（ａ）に、１つのレイヤの中の特徴画像の解像度が同じのネットワークの例（Ｓ＝１）を示す。レイヤ１の中に解像度が３０×３０の特徴画像１２０１が１２枚あり、（Ｈ１，Ｗ１，Ｃ１）は（３０，３０，１２）である。解像度が１５×１５の特徴画像を４枚並列で処理できる演算器を使用する場合、（ｈ，ｗ，ｃ）は（１５，１５，６）である。特徴画像の高さと、幅と、枚数が、それぞれ演算器の並列処理できる特徴画像の高さと、幅と、枚数の倍数になっているため、８回に分けて処理し、処理効率は１００％である。
【００１５】
図１２（ｂ）に、１つのレイヤの中の特徴画像の解像度が異なるネットワークの例（Ｓ＝２）を示す。レイヤ１の中に解像度が３０×３０の第１の種類の特徴画像１２０１が４枚あり、解像度が６０×６０の第２の種類の特徴画像１２０３が２枚あり、（Ｈ１，Ｗ１，Ｃ１）と（Ｈ２，Ｗ２，Ｃ２）はそれぞれ（３０，３０，４）と（６０，６０，２）である。解像度が１５×１５の特徴画像を４枚並列で処理できる演算器を使用する場合、（ｈ，ｗ，ｃ）は（１５，１５，６）である。第１の種類の特徴画像の高さと、幅が、それぞれ演算器の並列処理できる特徴画像の高さと、幅の倍数になっているが、枚数が演算器の並列処理できる特徴画像の枚数になっていない。第１の種類の特徴画像を４回に分けて処理する。
【００１６】
第１の種類の特徴画像と同じように、第２の種類の特徴画像の高さと、幅が、それぞれ演算器の並列処理できる特徴画像の高さと、幅の倍数になっているが、枚数が演算器の並列処理できる特徴画像の枚数になっていない。第２の種類の特徴画像を１６回に分けて処理する。第１の種類の特徴画像と第２の種類の特徴画像の処理回数は合わせて２０回であり、処理効率は４０％である。
【００１７】
上述したように、図１２の（ａ）と（ｂ）の例では、レイヤ１の中の特徴画像の総画素数が同じであるが、（ｂ）の例は特徴画像のサイズが演算器の処理できる特徴画像のサイズの倍数になっていないため、処理効率が下がり、処理時間が伸びてしまう。
【課題を解決するための手段】
【００１８】
本発明の１態様によれば、データ処理装置に、第１および第２の種類のデータをそれぞれ保持する第１および第２の保持手段と、前記第１の種類のデータに基づいて第１の積和演算を実行する第１の積和演算手段と、前記第１の積和演算の演算結果を並列に出力する分岐手段と、前記分岐手段により出力された前記第１の積和演算の演算結果をサンプリングし、サンプリング結果を出力するサンプリング手段と、前記第２の種類のデータと前記サンプリング結果とに基づいて第２の積和演算を実行する第２の積和演算手段とを備える。
【発明の効果】
【００１９】
本発明によれば、ニューラルネットワークを用いた処理において、ネットワークのレイヤの中に複数種類の特徴画像がある場合でも、効率的に処理することができる。
【図面の簡単な説明】
【００２０】
【図１】第１の実施形態におけるデータ処理のフローチャートである。
【図２】第１の実施形態におけるデータ処理装置の一構成例を示すブロック図である。
【図３】第１の実施形態におけるデータ処理部２０５のブロック図である。
【図４】第１の実施形態におけるネットワーク構成例を示す図である。
【図５】第１の実施形態における処理時間とデータの関係図である。
【図６】第２の実施形態におけるデータ処理部２０５のブロック図Ａである。
【図７】第２の実施形態における処理時間とデータの関係図Ａである。
【図８】第２の実施形態におけるデータ処理部２０５のブロック図Ｂである。
【図９】第２の実施形態における処理時間とデータの関係図Ｂである。
【図１０】第３の実施形態におけるデータ処理部２０５のブロック図Ａである。
【図１１】第３の実施形態におけるデータ処理部２０５のブロック図Ｂである。
【図１２】１つのレイヤの中の特徴画像の解像度が同じのネットワークと１つのレイヤの中の特徴画像の解像度が異なるネットワークの例である。
【発明を実施するための形態】
【００２１】
以下、図面を参照しながら本発明の好適な実施形態について詳細に説明する。
【００２２】
（第１の実施形態）
＜データ処理装置の構成例＞
図２は、本実施形態によるデータ処理装置の一構成例を示すブロック図である。
【００２３】
データ保存部２０２は、画像データを保存する部分である。データ保存部２０２は、通常はハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲやＤＶＤ、メモリーカード、ＣＦカード、スマートメディア、ＳＤカード、メモリスティック、ＸＤピクチャーカード、ＵＳＢメモリ等で構成される。データ保存部２０２には画像データの他にも、プログラムやその他のデータを保存することも可能である。あるいは、後述するＲＡＭ２０８の一部をデータ保存部２０２として用いるのであっても良い。またあるいは、後述する通信部２０３により接続した先の機器の記憶装置を、通信部２０３を介して利用するというように仮想的に構成するのであっても良い。
【００２４】
表示部２０４は、画像処理前、画像処理後の画像を表示、あるいはＧＵＩ等の画像を表示する装置で、一般的にはＣＲＴや液晶ディスプレイなどが用いられる。あるいは、ケーブル等で接続された装置外部のディスプレイ装置であっても構わない。
【００２５】
入力部２０１は、ユーザーからの指示や、データを入力する装置で、キーボードやポインティング装置やボタン等を含む。
【００２６】
また、あるいは公知のタッチスクリーン装置のように、表示部２０４と入力部２０１が同一装置であっても良い。その場合に、タッチスクリーンによる入力を入力部２０１の入力として扱う。
【００２７】
ＣＰＵ２０６は本装置全体の動作を制御する。ＲＯＭ２０７とＲＡＭ２０８は、その処理に必要なプログラム、データ、作業領域などをＣＰＵ２０６に提供する。後述する処理に必要なプログラムがデータ保存部２０２に格納されている場合や、ＲＯＭ２０７に格納されている場合には、一旦ＲＡＭ２０８に読み込まれてから実行される。またあるいは通信部２０３を経由して装置がプログラムを受信する場合には、一旦データ保存部２０２に記録した後にＲＡＭ２０８に読み込まれるか、直接通信部２０３からＲＡＭ２０８に直接読み込まれてから実行される。
【００２８】
画像処理部２０９は、ＣＰＵ２０６からのコマンドを受け、データ保存部２０２に書き込まれた画像データを読み出して画素値のレンジ調整を行い、その結果を再びＲＡＭ２０８に書き込む。
【００２９】
データ処理部２０５は、後述する図１のフローチャートに従ってＲＡＭ２０８に保存された画像処理の結果を用い、フィルタ処理（ステップＳ１０１−Ｓ１１３）を行い、フィルタ処理された結果をデータ保存部２０２（またはＲＡＭ２０８）に出力する。フィルタ処理された結果に基づき、動画像（複数フレーム）での画像処理または画像認識をＣＰＵ２０６で行う。ＣＰＵ２０６により処理された画像処理または画像認識の結果は、ＲＡＭ２０８に保存される。
【００３０】
なお、図２においては、ＣＰＵが１つ（ＣＰＵ２０６）だけである構成だが、これを複数設けるような構成にしても良い。またデータ処理部２０５をＣＰＵで構成しても良い。
【００３１】
通信部２０３は、機器間の通信を行うためのＩ／Ｆである。なお、図２では、入力部２０１、データ保存部２０２、表示部２０４が全て１つの装置内に含まれるような図を示しているが、これらの部分が公知の通信方式による通信路で接続されており、全体としてこのような構成となっているのであっても構わない。
【００３２】
装置のシステム構成については、上記以外にも様々な構成要素が存在するが、本発明の主眼ではないのでその説明は省略する。
【００３３】
図３にデータ処理部２０５の構成を示す。データ処理部２０５は第１のメモリ３０１、第１の積和演算部３０２、分岐処理部３０３、サンプリング処理部３０４、第２のメモリ３０５、第２の積和演算部３０６で構成されている。第１のメモリ３０１は第１の種類のデータを保持するためのメモリであり、第２のメモリ３０５は第２の種類のデータを保持するためのメモリである。第１の積和演算部３０２は第１の種類のデータに基づいて第１位の積和演算結果を計算し、第２の積和演算部３０６は第１の種類のデータに基づいて第１位の積和演算結果を計算する。分岐処理部３０３は第１の積和演算結果をコピーし、２つに分けて出力する。サンプリング処理部３０４は第１の積和演算結果をサンプリングし、サンプリング結果を出力する。
【００３４】
図４に、ネットワーク構成例を示す。（ａ）では、レイヤ１〜３のそれぞれの出力をサンプリングし、サンプリング結果を合わせて出力結果を生成する。（ｂ）では、レイヤ１〜３のそれぞれの出力をサンプリングし、複数レイヤのサンプリング結果を順次統合して出力結果を生成する。
【００３５】
＜フィルタ処理のフローチャート＞
図１に本実施形態におけるフィルタ処理のフローチャートを示す。図３に示したデータ処理部２０５の構成と図１２（ｂ）に示した１つのレイヤの中の特徴画像の解像度が異なるネットワークの例に基づき、図１に示したフローチャートの各ステップを説明する。
【００３６】
ステップＳ１０１では、第１と第２の種類のデータ（特徴画像）の初期値をそれぞれ第１のメモリ３０１と第２のメモリ３０５に保存する。ここでは、第１の種類のデータの解像度は３０×３０であり、第２の種類のデータの解像度は６０×６０である。ＲＡＭ２０８に保存した画像データを初期値として使用しても良い。
【００３７】
ステップＳ１０２では、レイヤのループを開始する。ステップＳ１０３では、第１のメモリから第１の種類のデータを読み出し、第１の積和演算部３０２に入力する。
【００３８】
ステップＳ１０４では、第１の種類のデータに基づいて第１の積和演算結果を第１の積和演算部３０２で計算し、分岐処理部３０３で並列に出力する。１つの第１の積和演算結果が２つに分岐される。
【００３９】
ステップＳ１０５は、第１の積和演算結果を第１の種類のデータとして第１のメモリ３０１に保存する。
【００４０】
ステップＳ１０６では、第１の積和演算結果をサンプリングし、解像度を変換する。第１の種類のデータの解像度が３０×３０であり、第２の種類のデータの解像度が６０×６０のため、サンプリングの倍率が２×２倍になり、サンプリングした後の第１の種類のデータの解像度が６０×６０になる。
【００４１】
ステップＳ１０７では、第１のメモリから第２の種類のデータを読み出し、第２の積和演算部３０６に入力する。
【００４２】
ステップＳ１０８では、サンプリングした後の第１の種類のデータと第２の種類のデータに基づいて第２の積和演算結果を計算する。
【００４３】
ステップＳ１０９では、第２の積和演算結果を第２の種類のデータとして第２のメモリ３０５に保存する。
【００４４】
ステップＳ１１０では、第１の種類のデータと第２の種類のデータを第１のメモリと第２のメモリから読み出す。
【００４５】
ステップＳ１１１では、ＣＰＵ２０６で活性化処理とプーリング処理を行う。
【００４６】
ステップＳ１１２では、第１と第２の種類のデータの処理結果をそれぞれ第１のメモリと第２のメモリに保存する。
【００４７】
ステップＳ１１３では、レイヤのループの終了判定をする。
【００４８】
本実施形態では、２つの積和演算部（第１積和演算部３０２と第２の積和演算部３０６）を用いて、２種類の積和演算結果を計算するため、演算器全体の処理効率は、前出の式（２）で計算する。Ｓは２である。
【００４９】
図１２の下側に１つのレイヤの中の特徴画像の解像度が異なるネットワークの例（Ｓ＝２）を示す。レイヤ１の中に解像度が３０×３０の第１の種類の特徴画像１２０１が４枚あり、解像度が６０×６０の第２の種類の特徴画像１２０３が２枚あり、（Ｈ１，Ｗ１，Ｃ１）と（Ｈ２，Ｗ２，Ｃ２）はそれぞれ（３０，３０，４）と（６０，６０，２）である。
【００５０】
第１積和演算部に解像度が１５×１５の特徴画像を２枚並列で処理できる演算器があり、（ｈ１，ｗ１，ｃ１）は（１５，１５，２）である。特徴画像の高さと、幅と、枚数が、それぞれ演算器の並列処理できる特徴画像の高さと、幅と、枚数の倍数になっており、８回に分けて処理する。第１の積和演算部に解像度が３０×３０の特徴画像を１枚並列で処理できる演算器があり、（ｈ２，ｗ２，ｃ２）は（３０，３０，１）である。特徴画像の高さと、幅と、枚数が、それぞれ演算器の並列処理できる特徴画像の高さと、幅と、枚数の倍数になっており、８回に分けて処理する。第１の積和演算部３０２は４５０個の特徴データを並列に処理することができ、演算器の処理効率が１００％である。第１の積和演算部３０２と同じように、第２の積和演算部３０６は９００個の特徴データを並列に処理することができ、演算器の処理効率が１００％である。
【００５１】
従来技術では、同じ演算器（１つの積和演算部）で積和演算を実行していた。演算器に解像度が１５×１５の特徴画像を６枚並列で処理できる演算器がある場合、演算器は本実施形態と同じように１３５０個の特徴データを並列に処理することができるが、演算器の処理効率が４０％である。このように、本実施形態では複数の演算器を用いて積和演算を実行するため、複数種類のデータを処理する場合、演算器の処理効率が良いというメリットがある。第１の積和演算部３０２および第２の積和演算部３０６については、各々の積和演算の演算量に基づいて、それぞれの積和演算の並列度が決定される。
【００５２】
＜ビット数＞
レイヤ１の中の第１の種類の特徴画像１２０１のデータのビット数と第２の種類の特徴画像１２０３のデータのビット数に合わせ、演算器のビット数を決定することにより、演算器のコストを抑えることが可能である。
【００５３】
レイヤ１の中の第１の種類の特徴画像１２０１のデータのビット数が１６ビットであり、第２の種類の特徴画像１２０３のデータのビット数が８ビットの例について説明する。
【００５４】
従来手法では１６ビットの演算器を用いてデータのビット数が１６ビットの特徴画像１２０１と、ビット数が８ビットの特徴画像１２０３を処理する。特徴画像１２０１を並列に処理する際に、全てのデータのビット数が１６ビットであるため、１３５０個の１６ビットの特徴データを並列に処理する演算器が必要である。
【００５５】
本実施形態は１６ビットの演算器（第１の積和演算部３０２）を用いてデータのビット数が１６ビットの特徴画像１２０１を処理し、８ビットの演算器（第２の積和演算部３０６）を用いてビット数が８ビットの特徴画像１２０３を処理する。特徴画像１２０１を並列に処理する際に、４５０個の１６ビットの特徴データを並列に処理する演算器が必要である特徴画像１２０３を並列に処理する際に、９００個の１６ビットの特徴データを並列に処理する演算器が必要である。従来手法と演算器の総数（１３５０個）が同じであるが、本実施形態では、一部の演算器のビット数が８ビットであり、ビット数が１６ビットの演算器よりコストが安い。
【００５６】
（第２の実施形態）
第１の実施形態では、処理効率を向上させる方法について説明したが、第１と第２の積和演算の処理時間が異なる場合、第１の積和演算の終了時間が第２の積和演算の終了時間より遅い可能性があるため、遅延が発生する。
【００５７】
図５に、第１の積和演算処理と第２の積和演算処理の時間の例を示す。データ１の積和演算結果を第１積和演算部で計算し、サンプリング処理部でサンプリングする。その後、データ１のサンプリング結果に基づいて第２の積和演算部で積和演算結果を計算する。第１の積和演算部と、サンプリング処理部と、第２の積和演算部とを順番に動作させ、データ１とデータ２の第２の積和演算を計算するのには４ｍｓを要する。
【００５８】
この実施形態では処理効率を上げるため、第２メモリ遅延を吸収する手法について紹介する。図６と図７に中間データを第３のメモリに保存する例を示す。
【００５９】
＜ＦＩＦＯ１＞
図６に第１の積和演算結果を第３のメモリに保存する例を示す。第１の実施形態と異なる処理について説明する。
【００６０】
第１の積和演算部より出力された第１の積和演算結果を第３のメモリに一時的に保存する。サンプリング処理部では、第３のメモリに保存された第１の積和演算結果をサンプリングし、サンプリング結果を計算する。
【００６１】
図７に第１の積和演算処理と第２の積和演算処理の時間の例を示す。データ１の第１の積和演算結果を第３のメモリに保存しているため、データ２の第１の積和演算結果とデータ１のサンプリング処理結果をパイプラインで処理することが可能になり、処理時間が短縮する。データ１とデータ２の第２の積和演算の処理時間は合計で４ｍｓ以下である。
【００６２】
＜ＦＩＦＯ２＞
図７にサンプリング結果を第３のメモリに保存する例を示す。実施形態１と異なる処理について説明する。
【００６３】
サンプリング処理部より出力されたサンプリング結果を第３のメモリに保存する。第２の積和演算部では、第２のメモリに保存された第２の種類のデータと第３メモリに保存されたサンプリング結果に基づいて、第２の積和演算結果を計算する。
【００６４】
図８に第１の積和演算処理と第２の積和演算処理の時間の例を示す。データ１のサンプリング結果を第３のメモリに保存しているため、データ２の第１の積和演算結果とデータ１の第１の積和演算結果をパイプラインで処理することが可能になり、処理時間が短縮する。データ１とデータ２の第２の積和演算の処理時間は合計で４ｍｓ以下である。
【００６５】
（第３の実施形態）
本実施形態では、ニューラルネットワークに欠かせない活性化処理を考慮した場合の例について説明する。第２の種類のデータの積和演算結果を計算する際に、活性化処理後の第１の積和演算結果を参照するかどうかによって、処理結果の精度が異なる可能性があるので、必要に応じて処理装置の構成を決めてもよい。
【００６６】
＜活性化処理後＞
図１０に活性化処理後の第１の積和演算結果を参照する例を示す。実施形態２と異なる処理について説明する。活性化処理部では、第１の積和演算部より出力された第１積和演算結果に基づいて、活性化処理の結果を以下の式（３）で計算する。
【００６７】
【数３】
2019192021.tif 000005
【００６８】
ｆ（・）は活性化関数であり、ｘは入力データである。この例ではＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）を用いて活性化関数を実現したが、ＲｅＬＵに限定するわけでなく、他の非線形の関数で実現してもよい。
【００６９】
分岐処理部では、活性化処理の結果を並列に出力する。１つの活性化処理の結果は次のレイヤの処理で参照される。もう１つの活性化処理の結果はサンプリング処理部でされ、第３のメモリに保存される。第２の積和演算結果は活性化処理の後の第１積和演算結果のサンプリング結果と第２の種類のデータに基づいて計算する。
【００７０】
＜活性化処理前＞
図１１に活性化処理前の第１の積和演算結果を参照する例を示す。実施形態２と異なる処理について説明する。活性化処理部では、分岐処理部より出力された第１積和演算結果に基づいて、活性化処理の結果を式２で計算する。
【００７１】
活性化処理の結果は次のレイヤの処理で参照されるが、サンプリング処理と第２の積和演算部には使用されない。第２の積和演算結果は活性化処理の前の第１積和演算結果のサンプリング結果と第２の種類のデータに基づいて計算する。
【００７２】
（他の実施形態）
第１―３の実施形態では、フィルタサイズについて特に説明をしなかったが、制限があるわけでなく、任意のフィルタサイズで良い。フィルタサイズが小さい場合、第２と第３の実施形態で説明したメモリ３のサイズを小さくすることができるというメリットがある。
【００７３】
第１の実施形態のステップＳ１０４では、第１の種類のデータに基づいて第１の積和演算結果を計算すると説明したが、第１の種類のデータに限定するわけでなく、第１の種類のデータと第２の種類のデータに基づいて第１の積和演算結果を計算しても良い。
【００７４】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７５】
３０１  第１のメモリ
３０２  第１の積和演算部
３０３  分岐処理部
３０４  サンプリング処理部
３０５  第２のメモリ
３０６  第２の積和演算部
【図１】
2019192021.tif 000006
【図２】
2019192021.tif 000007
【図３】
2019192021.tif 000008
【図４】
2019192021.tif 000009
【図５】
2019192021.tif 000010
【図６】
2019192021.tif 000011
【図７】
2019192021.tif 000012
【図８】
2019192021.tif 000013
【図９】
2019192021.tif 000014
【図１０】
2019192021.tif 000015
【図１１】
2019192021.tif 000016
【図１２】
2019192021.tif 000017