(57)【要約】【課題】  複数の特徴面を単純に複数の演算回路に割当てて並列演算させると、各演算回路のメモリに重複して保持するデータが多い可能性がある。【解決手段】  演算処理装置は、階層的な演算処理における複数の特徴データのうち、参照側の複数の特徴データを保持する第１保持手段と、それぞれが前記参照側の複数の特徴データのうちの一部の特徴データを参照して、出力側の複数の特徴データを並列に算出する複数の演算回路と、それぞれが前記複数の演算回路の一つに対応し、該演算回路が複数の特徴データを算出するために参照する複数の特徴データを保持する複数の第２保持手段と、それぞれの前記演算回路に割当てる特徴データの複数の候補のうち、前記複数の第２保持手段のそれぞれによって保持される前記特徴データに重複して保持される特徴データの数が少なくなる一つの候補を選択する割当て手段と、を有することを特徴とする。【選択図】  図１
2018055570.tif 000002
【特許請求の範囲】
【請求項１】
階層的な演算処理における複数の特徴データのうち、参照側の複数の特徴データを保持する第１保持手段と、
それぞれが前記参照側の複数の特徴データのうちの一部の特徴データを参照して、出力側の複数の特徴データを並列に算出する複数の演算回路と、
それぞれが前記複数の演算回路の一つに対応し、該演算回路が複数の特徴データを算出するために参照する複数の特徴データを保持する複数の第２保持手段と、
前記複数の演算回路の並列処理のために、前記出力側の複数の特徴データのうち、それぞれの前記演算回路に割当てる特徴データの複数の候補のうち、前記複数の第２保持手段のそれぞれによって保持される前記特徴データに重複して保持される特徴データの数が少なくなる一つの候補を選択して、それぞれの前記演算回路に割当てる特徴データを決定する割当て手段と、
を有することを特徴とする演算処理装置。
【請求項２】
前記割当て手段は、参照される複数の特徴データと、算出される複数の特徴データとに基づいて、それぞれの演算回路の演算量の差が少なくなるように、前記候補を選択して、それぞれの前記演算回路に割当てる特徴データを決定することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記割当て手段は、一つの演算回路に割当てられる複数の特徴データの一部と、他の演算回路に割当てられる複数の特徴データの一部とを交換することによって、前記複数の候補を生成することを特徴とする請求項１又は２の何れか１項に記載の演算処理装置。
【請求項４】
前記分割手段は、前記第２保持手段に保持されるデータの量が所定値を超えないように、前記複数の演算回路のそれぞれに、該演算回路が算出する複数の特徴面を割り当てることを特徴とする請求項１乃至３の何れか１項に記載の演算処理装置。
【請求項５】
前記割当て手段は、前記複数の第２保持手段のそれぞれによって保持される前記特徴データに重複して保持される特徴データの数が所定値より少なくなる一つの候補を選択して、それぞれの前記演算回路に割当てる特徴データを決定することを特徴とする請求項１又は４の何れか１項に記載の演算処理装置。
【請求項６】
前記複数の演算回路の稼働状態を確認する第１確認手段をさらに有し、前記割当て手段は、前記第１確認手段によって確認された前記稼働状態に基づいて、前記出力側の複数の特徴データのうち、それぞれの前記複数の演算回路に割当てる特徴データを改めて決定することを特徴とする請求項１乃至５の何れか１項に記載の演算処理装置。
【請求項７】
前記参照側の特徴データの変更を確認する第２確認手段をさらに有し、前記割当て手段は、参照側の前記特徴データの変更が前記第２確認手段によって確認された場合、前記出力側の複数の特徴データのうち、それぞれの前記複数の演算回路に割当てる特徴データを改めて決定することを特徴とする請求項１乃至５の何れか１項に記載の演算処理装置。
【請求項８】
前記演算回路は、前記参照側の特徴データとフィルタカーネルとの畳込み演算を行うことによって前記出力側の特徴データを算出し、
前記第２保持手段は、前記演算回路によって参照される前記参照側の特徴データと前記フィルタカーネルとを保持することを特徴とする請求項１乃至７の何れか１項に記載の演算処理装置。
【請求項９】
階層的な演算処理における複数の特徴データのうち、参照側の複数の特徴データを第１保持手段に保持させる第１保持工程と、
複数の演算回路のそれぞれに、前記参照側の複数の特徴データのうちの一部の特徴データを参照して、出力側の複数の特徴データを並列に算出させる算出工程と、
それぞれの演算回路が複数の特徴データを算出するために参照する複数の特徴データを、該演算回路に対応する第２保持手段に保持させる第２保持工程と、
前記複数の演算回路の並列処理のために、前記出力側の複数の特徴データのうち、それぞれの前記演算回路に割当てる特徴データの複数の候補のうち、前記複数の第２保持手段のそれぞれによって保持される前記特徴データに重複して保持される特徴データの数が少なくなる一つの候補を選択して、それぞれの前記演算回路に割当てる特徴データを決定する割当て工程と、
を有することを特徴とする演算処理方法。
【請求項１０】
階層的な演算処理における複数の特徴データのうち、参照側の複数の特徴データを第１保持手段に保持させる第１保持ステップと、
複数の演算回路のそれぞれに、前記参照側の複数の特徴データのうちの一部の特徴データを参照して、出力側の複数の特徴データを並列に算出させる算出ステップと、
それぞれの演算回路が複数の特徴データを算出するために参照する複数の特徴データを、該演算回路に対応する第２保持手段に保持させる第２保持ステップと、
前記複数の演算回路の並列処理のために、前記出力側の複数の特徴データのうち、それぞれの前記演算回路に割当てる特徴データの複数の候補のうち、前記複数の第２保持手段のそれぞれによって保持される前記特徴データに重複して保持される特徴データの数が少なくなる一つの候補を選択して、それぞれの前記演算回路に割当てる特徴データを決定する割当てステップと、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パターン認識等に使用される演算処理装置、演算処理方法及びプログラムに関するものである。
【背景技術】
【０００２】
ディープネット（或いはディープニューラルネット、ディープラーニングとも称される）と呼ばれる多階層のニューラルネットワークが、近年非常に大きな注目を集めている。ディープネットは、特定の演算手法を指すものではないが、一般的には、入力データ（例えば、画像データ）に対して、ある階層の処理結果を、その後段の階層の処理の入力とする階層的な演算処理を行うものを指す。特に画像識別の分野では、畳込みフィルタ演算を行う畳込み層と、結合演算を行う結合層とから構成されるディープネットが主流になりつつある。Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ（以下ＣＮＮと略記する）はそのディープネットの実現方法として代表的な手法であり、以下ＣＮＮに基づく手法について説明する。
【０００３】
図３は、畳込みフィルタ演算の例を示す図である。図３では、処理対象画像３０１に対して、フィルタカーネル３０２のカーネルサイズが３×３のフィルタ演算を行う場合を示している。このような場合、次式に示す積和演算処理により、畳込みフィルタ演算結果が算出される。
【０００４】
【数１】
2018055570.tif 000003
ここで、「ｄｉ，ｊ」は座標（ｉ，ｊ）での処理対象画像画素値を示し、「ｆｉ，ｊ」は座標（ｉ，ｊ）でのフィルタ演算結果を示す。また、「ｗｓ，ｔ」は座標（ｉ＋ｓ−１，ｊ＋ｔ−１）の処理対象画像画素値に適用するフィルタカーネルの値（フィルタ係数パラメータ）を示し、「ｃｏｌｕｍｎＳｉｚｅ」及び「ｒｏｗＳｉｚｅ」はフィルタカーネルサイズを示す。フィルタカーネル３０２を処理対象画像中でスキャンさせつつ、上記の演算を行うことで、畳込みフィルタ演算の出力結果を得ることができる。
【０００５】
この畳込みフィルタ演算及びシグモイド変換に代表される非線形変換処理から、特徴量が生成される。入力画像に対してこの特徴量を生成する演算を階層的に繰り返し行うことで、画像の特徴を表現する特徴面が得られる。つまり、入力画像全体に対して畳込みフィルタ演算を繰り返して生成された二次元特徴量が特徴面になる。
【０００６】
画像からの特徴量抽出処理に畳込みフィルタ演算を用い、抽出した特徴量を用いた識別処理に、パーセプトロンに代表される行列積演算を用いる構成になっているものを典型的なディープネットとしている。この特徴量抽出処理は畳込みフィルタ演算を何度も繰り返す多階層処理であることが多く、また識別処理も全結合の多階層のパーセプトロンが用いられることがある。この構成は、近年盛んに研究されているディープネットとしては非常に一般的な構成である。
【０００７】
ここで、図４を用いてディープネットの演算例について説明する。図４は、入力層となる入力画像４０１に対して、畳込みフィルタ演算により特徴データ抽出を行い、特徴面４０７の特徴量が得られた後、特徴面４０７の特徴量に対して、識別処理を行い、識別結果４１４を得るような処理を示している。入力画像４０１から特徴面４０７を得るまでに畳込みフィルタ演算を何度も繰り返している。また、特徴面４０７の特徴量に対して全結合のパーセプトロン処理を複数回行い、最終的な識別結果４１４を得ている。
【０００８】
まず、前半の畳込みフィルタ演算を説明する。図４において、入力画像４０１は、画像データに対してラスタスキャンされた所定サイズの画像データを示す。特徴面４０３ａ〜４０３ｃは第１段目の階層４０８の特徴面を示す。前述のとおり、特徴面とは、所定の特徴抽出フィルタ（畳込みフィルタ演算及び非線形処理）の演算結果を示すデータ面である。ラスタスキャンされた画像データに対する演算結果であるため、演算結果も面で表される。特徴面４０３ａ〜４０３ｃは、入力画像４０１に対する畳込みフィルタ演算及び非線形処理により生成される。例えば、特徴面４０３ａは、フィルタカーネル４０２１ａを用いた畳込みフィルタ演算及び演算結果の非線形変換により得られる。なお、図４中のフィルタカーネル４０２１ｂ及びフィルタカーネル４０２１ｃは、各々特徴面４０３ｂ及び特徴面４０３ｃを生成する際に使用されるフィルタカーネルである。上述の各特徴面生成のための畳込みフィルタ演算関係にある構造を、階層的な結合関係と呼ぶ。
【０００９】
次に、第２段目の階層４０９の特徴面４０５ａを生成する演算について説明する。
【００１０】
特徴面４０５ａは前段の階層４０８の一部の特徴面である３つの特徴面４０３ａ〜４０３ｃと結合している。従って、特徴面４０５ａのデータを算出する場合、特徴面４０３ａに対してはフィルタカーネル４０４１ａで示すカーネルを用いた畳込みフィルタ演算を行い、この結果を保持する。同様に、特徴面４０３ｂ及び４０３ｃに対しては、各々フィルタカーネル４０４２ａ及び４０４３ａの畳込みフィルタ演算を行い、これらの結果を保持する。これらの３種類のフィルタ演算の終了後、保持された結果を加算し、非線形変換処理を行う。以上の処理を画像全体に対して処理することにより、特徴面４０５ａを生成する。
【００１１】
同様に、特徴面４０５ｂの生成の際には、前段の階層４０８の特徴面４０３ａ〜４０３ｃに対するフィルタカーネル４０４１ｂ、４０４２ｂ及び４０４３ｂによる３つの畳込みフィルタ演算を行う。また、第３段目の階層４１０の特徴面４０７の生成の際には、前段の階層４０９の特徴面４０５ａ〜４０５ｂに対するフィルタカーネル４０６１及び４０６２による２つの畳込みフィルタ演算を行う。
【００１２】
続いて後半のパーセプトロン処理を説明する。図４では２階層のパーセプトロンになっている。パーセプトロンは、入力特徴量のそれぞれの要素に対する重み付き和を非線形変換したものである。従って、特徴面４０７の特徴量に対して、行列積演算を行い、その結果に非線形変換を行えば、中間処理結果４１３を得ることができる。さらに同様の処理を繰り返せば、最終的な識別結果４１４を得ることができる。
【００１３】
畳込み層における階層的な畳込みフィルタ演算は、参照側の多数の特徴面を参照して、出力側の多数の特徴面を算出するという結合関係に基づく演算であるので、演算の処理量が多く、処理時間が長い。非特許文献１で示されているように、階層間の結合を粗密化することで畳込みフィルタ演算数やフィルタカーネルを削減することは可能である。
【００１４】
ディープネットの階層構造が大規模化するにあたって、性能を向上・維持しつつ処理するために、複数の演算回路を用いて並列に複数の特徴面を算出する並列化処理を含めた効率的な処理を行っていく必要がある。
【００１５】
しかし、各階層間の特徴面にはたくさんの結合関係があるので、複数の演算回路が並列して算出する複数の特徴面を単純に分割して、複数の演算回路に割当てると、各演算回路のメモリでは、重複して保持する参照側の特徴面やカーネルフィルタが多い。重複して保持するデータに起因して、メモリへのアクセス時間が長くなり、複数の演算回路の並列化処理による高速な演算処理が妨げられる。
【００１６】
この問題を解決するために、特許文献１では、複数の階層間で予め結合関係を分割しておいて、分割した結合関係で独立に学習した後に、結合関係の独立した特徴面の算出を複数の演算回路に割当てて並列化処理を行う構造を提案している。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】ＷＯ２０１４１０５８６５Ａ
【非特許文献】
【００１８】
【非特許文献１】Ｙａｎｎ  ＬｅＣｕｎ，  Ｌｅｏｎ  Ｂｏｔｔｏｕ，Ｙｏｓｈｕａ  Ｂｅｎｇｉｏ，ａｎｄ  Ｐａｔｒｉｃｋ  Ｈａｆｆｎｅｒ．“Ｇｒａｄｉｅｎｔ−Ｂａｓｅｄ  Ｌｅａｒｎｉｎｇ  Ａｐｐｌｉｅｄ  ｔｏ  Ｄｏｃｕｍｅｎｔ  Ｒｅｃｏｇｎｉｔｉｏｎ，”ｉｎ  ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＩＥＥＥ，８６（１１）：２２７８−２３２４，Ｎｏｖｅｍｂｅｒ  １９９８
【発明の概要】
【発明が解決しようとする課題】
【００１９】
しかしながら、特許文献１の手法は予め階層的結合関係の構造を決めた後に学習する前提があるので、機械学習の制限があり、非特許文献１の従来手法で学習した結合関係に対して特許文献１の手法を適用することはできない。そのために、特許文献１の手法では、学習の自由度が少ないことによる画像識別や物体検出の精度への影響はある。つまり、特許文献１の手法の予め並列化を見越した構造は、非特許文献１で示したよう粗密な階層的結合関係のような結合関係の構成に対して適用できないので、複数の演算回路による並列化処理を高速に実行することができない。
【００２０】
本発明は、上記の課題に鑑みてなされたものであり、予め階層的結合関係の構造を決めていない場合でも、算出する複数の特徴面を、複数の演算回路に適切に割り当てることによって、並列化処理を高速に行う演算処理装置を提供することを目的とする。また、その演算処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２１】
上記課題を解決するために、本発明に係る演算処理装置は、以下の構成を有する。すなわち、階層的な演算処理における複数の特徴データのうち、参照側の複数の特徴データを保持する第１保持手段と、それぞれが前記参照側の複数の特徴データのうちの一部の特徴データを参照して、出力側の複数の特徴データを並列に算出する複数の演算回路と、それぞれが前記複数の演算回路の一つに対応し、該演算回路が複数の特徴データを算出するために参照する複数の特徴データを保持する複数の第２保持手段と、前記複数の演算回路の並列処理のために、前記出力側の複数の特徴データのうち、それぞれの前記演算回路に割当てる特徴データの複数の候補のうち、前記複数の第２保持手段のそれぞれによって保持される前記特徴データに重複して保持される特徴データの数が少なくなる一つの候補を選択して、それぞれの前記演算回路に割当てる特徴データを決定する割当て手段と、を有することを特徴とする。
【発明の効果】
【００２２】
本発明によれば、算出する複数の特徴面を、複数の演算回路に適切に割り当てることによって、並列化処理を高速に行う演算処理装置を提供することができる。
【図面の簡単な説明】
【００２３】
【図１】第１の実施形態の演算処理装置のハード構成である。
【図２】（ａ）演算回路の概略構成を示す図である。（ｂ）演算回路の制御部の構成を示す図である。
【図３】畳込みフィルタ演算の模式図である。
【図４】連続するディープネット階層間の関係の模式図である。
【図５】階層的結合関係の一つの分割例である。
【図６】階層的結合関係のもう一つの分割例である。
【図７】第１の実施形態の演算処理装置の動作を説明するフローチャートである。
【図８】階層間の分割手法に基づく処理全体のフローチャートである。
【図９】階層間の分割手法を表すフローチャートである。
【図１０】階層間の特徴面割当ての交換を説明する図である。
【図１１】階層間の特徴面割当ての交換を説明する図である。
【図１２】第２の実施形態のグラフ生成を表す模式図である。
【図１３】第２の実施形態のグラフカットに基づく全体フローチャートである。
【図１４】第４の実施形態における階層的な結合の動的な変動を示す模式図である。
【図１５】第５の実施形態のクラウドサーバーシステムの構成を示す図である。
【発明を実施するための形態】
【００２４】
（第１の実施形態）
本実施形態の目的は、階層的な結合関係の構成に応じて特徴面を効率よく高速に並列処理するための階層的な結合関係の分割の最適化を行うことにある。以下、図を用いて本実施形態の詳細について説明する。
【００２５】
図１は本実施形態の演算処理装置の構成例を示すものである。この演算処理装置は、入力された画像データから特定の物体を検出し、認識するパターン認識の機能を有する。
【００２６】
演算処理装置は、画像入力モジュール１０００、演算回路１００２−１〜１００２−ｎ、ＲＡＭ１００１−１〜１００１−ｎ、Ｉ／Ｆ１０１１、ＲＡＭ１００９、ＤＭＡＣ１００６、ＣＰＵ１００７及びＲＯＭ１００８などによって構成される。画像入力モジュール１０００は、光学系、ＣＣＤ又はＣＭＯＳセンサー等の光電変換デバイス及びセンサーを制御するドライバー回路／ＡＤコンバーター／各種画像補正を司る信号処理回路／フレームバッファ等により構成される。
【００２７】
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１００１−１〜１００１−ｎは、それぞれ演算回路１００２−１〜１００２−ｎの演算作業バッファとして使用される。
【００２８】
また、本実施形態の並列演算処理装置は、並列処理を行うための演算回路１００２−１〜１００２−ｎおよびＲＡＭ１００１−１〜１００１−ｎは、複数ある。
【００２９】
図４の階層的な結合関係に示すように、出力側の複数の特徴面を算出するための参照側の複数の特徴面やそれぞれのフィルタカーネルは、演算処理装置の外部からＩ／Ｆ１０１１を通じて一旦、ＲＡＭ１００９に記憶される。ＲＡＭ１００９に保持してある階層的な結合関係に係る各種データを分けて、各演算回路１００２−１〜１００２−ｎのメモリであるＲＡＭ１００１−１〜１００１−ｎに記憶させるための割当てモジュール１０１２が、階層的な結合関係の分割情報を作成する。ここで、階層的な結合関係は、階層的な特徴面の結合関係の構造および各結合関係に対する畳込みフィルタ演算に必要な畳込みフィルタ係数、複数の特徴面に関する情報を含む。
【００３０】
演算回路１００２−１〜１００２−ｎは、本実施形態に関する階層的なの結合関係の分割情報に基づいて割り当てられた畳込みフィルタ演算を処理するＣＮＮ処理部である。
【００３１】
ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１００６は、画像バス１００３上の各処理モジュールとＣＰＵバス１０１０間のデータ転送を司る。ブリッジ１００４は、画像バス１００３とＣＰＵバス１０１０のブリッジ機能を提供する。前処理モジュール１００５は、ＣＮＮ処理によるパターン認識処理を効果的に行うための各種前処理を行う。具体的には色変換処理／コントラスト補正処理等の画像データ変換処理をハードウェアで処理する。なお、前処理モジュール１００５は本実施形態の演算処理装置に含まれなくてもよい。ＣＰＵ１００７は、装置全体の動作を制御するものである。ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１００８は、ＣＰＵ１００７の動作を規定する命令やパラメータデータを格納する。ＲＡＭ１００９はＣＰＵ１００７の動作に必要なメモリである。ＣＰＵ１００７はブリッジ１００４を介して画像バス１００３上のＲＡＭ１００１にアクセスする事も可能である。なお、階層的な結合関係の分割情報は、割当てモジュール１０１２によって生成されることに限らず、Ｉ／Ｆ１０１１を通じて外部の装置から取得してもよい。例えば、外部のＰＣにおいて、階層的な結合関係の分割情報が生成され、Ｉ／Ｆ１０１１を通じてＲＡＭ１００９に保持された場合は、ＲＡＭ１００９に保持され分割情報を用いて、並列処理を行うことができる。
【００３２】
本実施形態の演算処理装置の各演算回路１００２−１〜１００２−ｎの構成及び動作は同じであるので、図２（ａ）を用いて代表的な演算回路１００２の内部構成及び動作を説明する。制御部６０１は分割情報に基づき、必要な参照側の特徴面のデータ・畳込みフィルタ係数をＲＡＭ１００１に格納する。なお、本実施形態の演算処理装置の各演算回路１００２−１〜１００２−ｎに対応するメモリであるＲＡＭ１００１−１〜１００１−ｎも同じであるので、ＲＡＭ１００１はそのうちの一つを示す。制御部６０１は、ＲＡＭ１００１に保持した参照側の特徴面のデータ・畳込みフィルタ係数の読み出し、畳込み演算部６０２への供給を行う。畳込み演算部６０２は式（１）で示した演算に基づいて、参照側の特徴面、畳込みフィルタ係数に対し畳込み演算を行い、演算結果を出力する。制御部６０１は前記演算結果をＲＡＭ１００９に出力する。
【００３３】
図２（ｂ）は、図２（ａ）の制御部６０１の詳細な構成を説明する図である。シーケンス制御部１２０１は、レジスタ群１２０２に設定された情報に従って、演算回路の動作を制御する各種制御信号１２０４を入出力する。同様に、シーケンス制御部１２０１はメモリ制御部１２０５を制御するための制御信号１２０６を算出する。シーケンス制御部１２０１はバイナリカウンタやジョンソンカウンタ等からなるシーケンサにより構成される。レジスタ群１２０２は複数のレジスタセットからなり、例えば、参照側の特徴面や算出する特徴面に関する情報、カーネルに関する情報、階層を分割されて保持される特徴面の等に関する情報等が記録される。レジスタ群１２０２は、ブリッジ１００４及び画像バス１００３を介してＣＰＵ１００７から予め所定の値が書き込まれる。
【００３４】
メモリ制御部１２０５は、シーケンス制御部１２０１からの制御信号１２０６に基づいてＲＡＭから参照側の特徴面のデータ１２０７および畳込みフィルタ係数データ１２０８を畳込み演算部６０２に供給する。演算結果１２０９は畳込み演算部６０２より取得する。ここで、供給される参照側の特徴面のデータおよび畳込みフィルタ係数データは階層的な結合関係の分割情報に基づくものである。
【００３５】
図５は、参照側の階層１２３および出力側の階層１２４の結合関係の初期分割例を示している。異なるフィルタカーネルによる特徴面間の畳込みフィルタ演算の結合関係を矢印１１３〜１２２で表しており、階層１２３内の特徴面１０１〜１０６を参照側の特徴面として、階層１２４内の特徴面１０７〜１１２に上記矢印１１３〜１２２で接続されている。ここで、矢印１１３〜１２２はフィルタカーネルによる結合関係を示すと共に、フィルタカーネルによる畳込みフィルタ演算を行うことを示している。例えば、矢印１１３は、参照側の特徴面１０１から出力側の特徴面１０７が畳込みフィルタ演算によって生成されることを示すと共に、フィルタカーネル１１３を用いて畳込みフィルタ演算を行うことを示す。
【００３６】
出力側の階層である階層１２４の視点から見ると、特徴面１０７はフィルタカーネル１１３によって特徴面１０１を参照側の特徴面として生成され、特徴面１０８はフィルタカーネル１１５によって特徴面１０２を参照側の特徴面として生成される。特徴面１０９はフィルタカーネル１１６、１１９によって、それぞれ特徴面１０３、１０５を参照側の特徴面として生成され、特徴面１１０はフィルタカーネル１１４、１２１によって、それぞれ特徴面１０１、１０６を参照側の特徴面として生成される。特徴面１１１はフィルタカーネル１１７、１１８によって、それぞれ特徴面１０２、１０４を参照側の特徴面として生成され、特徴面１１２はフィルタカーネル１２０、１２２によって、それぞれ特徴面１０３、１０６を参照側の特徴面データとして生成される。一つの演算回路が、特徴面１０７、特徴面１０８及び特徴面１０９を順次に算出するために、その演算回路のメモリから特徴面１０１、特徴面１０２、特徴面１０３及び特徴面１０５とそれぞれの特徴面に対応するフィルタカーネルを順次に読み出す必要がある。
【００３７】
次に、図５を用いて、並列化のための階層的な結合関係の初期分割の概要および初期分割の結果について説明する。初期分割は、割当てモジュール１０１２が分割条件に基づいて実行される。分割条件は、使用可能な演算回路の個数に基づく分割数の指定や演算回路のメモリで保持する最大なデータ量などである。また、処理負荷を分散するために、割当てモジュール１０１２は、算出される特徴面の数と参照される特徴面の数などに基づいて、それぞれの演算回路の演算量の差が小さくなるように、初期分割の処理を行う。割当てモジュール１０１２の初期分割の処理によって、それぞれの演算回路が算出する出力側の特徴面として、それぞれの演算回路に割当てられる特徴面の一つの候補が得られる。
【００３８】
図５は、階層間の結合関係の初期分割の結果を示し、演算によって生成される特徴面を分割１２５および分割１２６に分割した様子を示す。分割１２５では特徴面１０７、１０８、１０９を一つの単位として、特徴面１０７、１０８、１０９を算出するための畳込みフィルタ演算を演算回路１００２−１に割当てている。分割１２６では特徴面１１０、１１１、１１２を一つの単位として、特徴面１１０、１１１、１１２を算出するための畳込みフィルタ演算を演算回路１００２−２に割当てている。
【００３９】
ここで、それぞれの特徴面を生成するために必要な参照側の特徴面およびフィルタ係数は、割当てられた演算回路１００２のＲＡＭ１００１で保持して動作することを想定している。例えば、図５の分割１２５で示す特徴面１０７、１０８、１０９を生成するための参照側の特徴面１０１、１０２、１０３、１０５と、矢印１１３、１１５、１１６、１１９のそれぞれで示す畳込みフィルタ係数はＲＡＭ１００１−１に保持されている。また、分割１２６で示す特徴面１１０、１１１、１１２を生成するための参照側の特徴面１０１、１０２、１０３、１０６と、矢印１１４、１１７、１２０、１１８、１２２のそれぞれで示す畳込みフィルタ係数はＲＡＭ１００１−２に保持されている。
【００４０】
ここで、保持されている保持データについて注目すると、参照側の特徴面１０１、１０２、１０３はそれぞれの割当て先の演算回路のＲＡＭ１００１で重複して保持する必要があるため、並列演算に必要なメモリ領域及びデータの転送量が増大する。
【００４１】
次に、図５と同じ階層的な結合関係に対して、図５と異なる分割結果の一例を図６に示す。図６に示す分割結果は、本実施形態の割当てモジュール１０１２の処理によって、それぞれの演算回路が算出する出力側の特徴面として、それぞれの演算回路に割当てられる特徴面のもう一つの候補である。割当てモジュール１０１２は、図５に示す候補と図６に示す候補から、割当てを選択する。割当ての選択については後に述べるが、ここでは、まず、図６に示す分割結果について説明する。
【００４２】
図６に示す分割結果は、分割２０１と分割２０２である。分割２０１に示す特徴面１０７、１０８、１１１を生成するための演算処理を演算回路１００２−１に割当てており、分割２０２で示す特徴面１０９、１１０、１１２を生成するための演算処理を演算回路１００２−２に割当てている。
【００４３】
分割２０１で示す特徴面１０７、１０８、１１１を生成するための参照側の特徴面１０１、１０２、１０４と、矢印１１３、１１５、１１７、１１８のそれぞれで示す畳込みフィルタ係数のそれぞれをＲＡＭ１００１−１で保持する。また、分割２０２に示す特徴面１０９、１１０、１１２を生成するための参照側の特徴面１０１、１０３、１０５、１０６と、矢印１１４、１１６、１１９〜１２２のそれぞれで示す畳込みフィルタ係数のそれぞれをＲＡＭ１００１−２で保持する。
【００４４】
ここで、ＲＡＭ１００１−１及びＲＡＭ１００１−２の保持データについて注目すると、参照側の特徴面１０１のみ、重複して保持する必要がある。
【００４５】
図５の分割１２５、１２６と図６の分割２０１、２０２とを比べると、出力側の階層１２４の特徴面を算出するための処理内容・演算量は同じにもかかわらず、ＲＡＭ１００１−１及びＲＡＭ１００１−２で重複して保持する特徴面の数が異なってくる。このように、並列処理を行うための割り当て単位次第で、メモリに保持すべきデータの重複量が変わってくるので、並列処理の効率が大きく左右される。
【００４６】
図７は、本実施形態の並列演算装置がパターン認識を行うための動作を説明するフローチャートである。以下、フローチャートは、ＣＰＵ１００７が制御プログラムを実行することにより実現されるものとする。
【００４７】
ステップＳ１１０１では、認識処理の開始に先立ち、ＣＰＵ１００７が各種初期化処理を実行する。ＣＰＵ１００７は、演算回路のＣＮＮ処理動作に必要なフィルタ係数をＲＯＭ１００８からＲＡＭ１００１に転送すると共に、演算回路１００２の動作、即ち階層的な結合関係を定義する為の各種レジスタ設定を行う。具体的には演算回路１００２の制御部６０１に存在する複数のレジスタに所定の値を設定する。同様に、ＣＰＵ１００７は、前処理モジュール１００５等のレジスタに対しても動作に必要な値を書き込む。
【００４８】
次に、ステップＳ１１０２で割当てモジュール１０１２は、各特徴面を算出する際の階層構造の分割を決定し、階層的な結合関係の分割情報を生成する。ここでは、並列に動作する演算回路の数等の条件に従って階層構造の分割を決定するが、具体的な分割手法は後述する。
【００４９】
初期化処理を行うステップＳ１１０１及び階層構造の分割を行うステップＳ１１０２の後に、一連の物体認識動作を開始する。まず、ステップＳ１１０３では画像入力モジュール１０００が、画像センサーの出力する信号を画像データに変換し、フレーム単位で図示しないが、画像入力モジュール１０００に内蔵するフレームバッファに格納する。フレームバッファへの画像データの格納が完了すると、所定の信号に基づいて、前処理モジュール１００５が画像変換処理を開始する。ステップＳ１１０４では、前処理モジュール１００５は前記フレームバッファ上の画像データから輝度データを抽出し、コントラスト補正処理を行う。
【００５０】
輝度データの抽出は一般的な線形変換処理によりＲＧＢ画像データから輝度データを生成する。コントラスト補正の手法も一般的に知られているコントラスト補正処理を適用してコントラストを強調する。前処理モジュール１００５は階層的な結合関係の分割情報に基づき、コントラスト補正処理後の輝度データを検出用画像として、並列処理が振り分けられた演算回路１００２に対応するＲＡＭ１００１に格納する。１フレームの画像データに対して前処理が完了すると、前処理モジュール１００５は図示しない完了信号を有効にする。
【００５１】
ステップＳ１１０５では、演算回路１００２は前処理モジュール１００５が有効にした完了信号に基づいて起動し、ＣＮＮ処理に基づく物体の検出処理を開始する。ステップＳ１１０５での処理はステップＳ１１０２で生成された階層な結合関係の分割情報に基づいて動作である。ステップＳ１１０６では、最終層の特徴面の算出を終了すると演算回路１００２はＣＰＵ１００７に対して完了割り込みを発生する。
【００５２】
ステップＳ１１０７では、ＣＰＵ１００７は演算回路１００２の処理終了を示す完了割り込みを受信すると、最終層の特徴面を解析し、画像中の物体の位置や属性を判定する。ステップＳ１１０７の解析処理を完了すると、ステップＳ１１０８に進み、次のフレームの画像に対する処理が継続する各特徴面を算出する際の階層構造の分割を決定し、階層的な結合関係の分割情報を生成する。
【００５３】
次に、図８を用いて、ステップＳ１１０２で割当てモジュール１０１２が、ＣＮＮ処理の階層構造を分割して、複数の特徴面の算出を複数の演算回路に並列処理させるために、階層的な結合関係の分割情報を生成する方法について述べる。本実施形態では焼きなまし法（シミュレーテッドアニーリング法）に基づく算出手法について説明する。まず、ステップＳ８０１で分割条件を取得する。ここでいう分割条件とは、使用可能な演算回路の個数に基づく分割数の指定や演算回路当たりで保持ないしは転送する必要のあるデータ量に基づく条件などである。次に、ステップＳ８０２で階層的な結合関係から任意の階層間を選択する。つまり直接結合されている入力層と出力層の組を選択する。選択した階層間の結合関係の分割をステップＳ８０３で決定する。そして、ステップＳ８０４では、すべての階層間で終了するまでステップＳ８０３までの処理を繰り返し行う。
【００５４】
図９は、ステップ８０３での選択した階層間の具体的な分割決定のプロセスを示すフローチャートである。
【００５５】
まず、ステップＳ９０１では、ＣＮＮ処理における複数の畳込みフィルタ演算を割り当てることが可能な演算回路の数に基づいて、図５に示すように、割当てモジュール１０１２が初期の階層間の結合分割を決定する。次に、初期の階層的な結合関係の分割を解析する。その結果、図５に示す階層間の結合関係１２７に対して、図１０に示すように、割当てモジュール１０１２が出力側の特徴面１０７〜１１２の算出を、演算回路１への割当て１３０６および演算回路２への割り当て１３１５のように割り当てていることが分かった。この際、割当て１３０６に関して出力側の特徴面１０７〜１０９を算出するために必要なデータ１３０１は、演算回路１に対応する非図示のＲＡＭに保持する必要がある。具体的に、出力側の特徴面１０７を算出するために、参照側の特徴面１０１と畳込みフィルタカーネル１３０２、出力側の特徴面１０８を算出するために、参照側の特徴面１０２と畳込みフィルタカーネル１３０３が演算回路１のＲＡＭに保持される。また、出力側の特徴面１０９を算出するために、参照側の特徴面１０３と畳込みフィルタカーネル１３０４、参照側の特徴面１０５と畳込みフィルタカーネル１３０５が演算回路１のＲＡＭに保持される。
【００５６】
また、演算回路２への割当て１３１５に関しては、出力側の特徴面１１０〜１１２を算出するために必要なデータ１３０８は、演算回路２に対応する非図示のＲＡＭに保持する必要がある。具体的に、出力側の特徴面１１０を算出するために、参照側の特徴面１０１と畳込みフィルタカーネル１３０９、参照側の特徴面１０６と畳込みフィルタカーネル１３１３が演算回路２のＲＡＭに保持される。同様に、出力側の特徴面１１１を算出するために、参照側の特徴面１０２と畳込みフィルタカーネル１３１０、参照側の特徴面１０４と畳込みフィルタカーネル１３１２が演算回路２のＲＡＭに保持される。また、出力側の特徴面１１２を算出するために、参照側の特徴面１０３と畳込みフィルタカーネル１３１１、参照側の特徴面１０６と畳込みフィルタカーネル１３１４が演算回路２のＲＡＭに保持される。
【００５７】
ここで、演算回路１への割当て１３０６と演算回路２への割当て１３１５によって、それぞれのＲＡＭで保持する必要のあるデータを見てみると、参照側の特徴面１０１、１０２、１０３のデータが重複して保持するデータとなっている。なお、図５の例では、各演算回路への割当てられた特徴面の個数がバランスよくなるようにするために同じであるが、これに限ったものではなく、各演算回路へ割当てた特徴面の個数が異なってもよい。
【００５８】
次に、ステップＳ９０２で、階層処理間の異なる演算回路に割り当てられている出力側の特徴面を二つピックアップする。例えば、図１０の演算回路１への割当て１３０６と、演算回路２への割当て１３１５とから、それぞれ出力側の特徴面１０９および特徴面１１１をピックアップし、ステップＳ９０３にて、ピックアップした特徴面割当てを交換する。特徴面割当ての交換は、演算回路１に割当てられた特徴面１０９の算出を演算回路２に割当て、演算回路２に割当てられた特徴面１１１の算出を演算回路１に割当てるように結合関係の分割情報を変更する処理である。
【００５９】
二つの演算回路に割当てられた出力側の特徴面を交換した後のそれぞれの演算回路のＲＡＭに保持するデータについて図１１を用いて説明する。交換後の演算回路１及び演算回路２への算出する出力側の特徴面の割当ては割当て１４０２及び割当て１４０５のようになる。交換後の結合関係を解析すると、割当て１４０２に関して、出力側の特徴面１０７、１０８、１１１を作成するために必要なデータはデータ１４０１である。即ち、出力側の特徴面１０７を算出するために、参照側の特徴面１０１と畳込みフィルタカーネル１３０２、出力側の特徴面１０８を算出するために、参照側の特徴面１０２と畳込みフィルタカーネル１３０３を演算回路１のＲＡＭに保持する必要がある。また、出力側の特徴面１１１を算出するために、参照側の特徴面１０２と畳込みフィルタカーネル１３１０、参照側の特徴面１０４と畳込みフィルタカーネル１３１２を演算回路１のＲＡＭに保持する必要がある。
【００６０】
また、割当て１４０５に関しては、出力側の特徴面１１０、１０９、１１２を生成するために必要なデータはデータ１４０４である。即ち、出力側の特徴面１１０を算出するために、参照側の特徴面１０１とフィルタカーネル１３０９、参照側の特徴面１０６とフィルタカーネル１３１３を演算回路２のＲＡＭに保持する必要がある。また、出力側の特徴面１０９を算出するために、参照側の特徴面１０３とフィルタカーネル１３０４、参照側の特徴面１０５とフィルタカーネル１３０５を演算回路２のＲＡＭに保持する必要がある。また、出力側の特徴面１１２を算出するために、参照側の特徴面１０３とフィルタカーネル１３１１、参照側の特徴面１０６とフィルタカーネル１３１４を演算回路２のＲＡＭに保持する必要がある。
【００６１】
ここで、割当て１４０２と割当て１４０５でそれぞれの演算回路のＲＡＭで保持する必要のあるデータを見てみると、参照側の特徴面１０１のみが重複して保持するデータとなっている。図１０で示した割当て１３０６と割当て１３１５と比べると、ＲＡＭに保持する必要なデータ数を特徴面の数で比較すると、９面から７面へと少なくさせることが可能である。
【００６２】
次に、ステップＳ９０４にて評価値を算出する。ここで、評価値は、それぞれの演算回路のＲＡＭで重複して保持するデータのデータ量および、ペナルティ値で構成される。ペナルティ値は、ステップＳ８０１で取得した分割条件に基づき決定する。分割条件は、例えば、演算回路の個数や演算回路一つあたりで割当て（分割）可能な演算処理量である。演算回路の演算処理量は、参照側の特徴面、フィルタカーネルのサイズや演算サイクル数などの条件によって算出される。また、それぞれの演算回路のＲＡＭで重複して保持する特徴面の許容数、各演算回路の処理負荷分散条件などを考慮して分割条件を決定してもよい。本実施形態では、説明の簡単化のために、演算回路一つあたりで処理可能な演算処理量として参照側の特徴面サイズとフィルタカーネルのサイズの合計値を用いて分割条件例を説明する。
【００６３】
まず、評価値算出にあたり、分割数がａ個の時、割当てｌと割当てｋ間で重複して保持すべきデータ量をｎ（ｌ，ｋ）とすると、全割当てにおいて重複して保持すべきデータ量の合計ｓは
【００６４】
【数２】
2018055570.tif 000004
と表すことができる。
【００６５】
次に、ペナルティ値について説明する。割当てｉを処理するために必要な参照側の特徴面総サイズをｘｉと、フィルタカーネルの総サイズをｗｉとすると、演算回路一つあたりでの必要データサイズの合計ｔｉはｔｉ＝ｘｉ＋ｗｉと表すことができる。前述のとおり、本実施形態では演算回路一つあたりで処理可能な参照側の特徴面サイズとフィルタカーネルのサイズの合計値を分割条件として扱うため、その条件値をｔｈとすると、各ｔｉがｔｈ以下か否かを比較し、ｔｈを超えた場合は各割当て毎のペナルティ値ｐｉにＣを与える。
【００６６】
【数３】
2018055570.tif 000005
つまり、全割当てでのペナルティ値の合計は
【００６７】
【数４】
2018055570.tif 000006
以上より評価値ｆは以下のように表すことができる。
【００６８】
ｆ＝ｓ＋Ｐ
ステップＳ９０５では、ステップＳ９０４で算出した評価値に基づいて、評価値が割当て前より良い場合、割当ての変更を採用し、そうでない場合は交換前の割当てに戻す。ここで、割当て変更の基準は、変更前後で評価値が良悪だけではなく、ｎ％以上良い場合なら変更するなどの幅を持った閾値で採用選択を行ってもよい。
【００６９】
ステップＳ９０６で事前に設定した繰り返し回数や時間、それぞれの演算回路のＲＡＭで重複して保持する特徴面の数、特徴面の交換による重複データ量削減率などの制約条件を満たすまでステップＳ９０２からステップＳ９０５までの処理を繰り返し行う。例えば、それぞれの演算回路のＲＡＭで重複して保持する特徴面の数が所定数以下になるまで、ステップＳ９０２からステップＳ９０５までの処理を繰り返す。また、焼きなまし法に基づく場合は、その収束条件に従うことも可能である。また、本実施形態は、焼きなまし方に限らず、遺伝的アルゴリズムなどに代表される進化的アルゴリズムを持ちしても良い。
【００７０】
本実施形態の方法によって、既存の階層的な結合関係に応じて、各演算回路への複数の畳込みフィルタ演算の最適な分割（割当て）を行うことができる。最適な分割を行うことで、各演算回路のメモリで重複して保持するデータの量が少なくなり、データ転送やデータ読み取りの時間が短縮されて、効率よい並列処理が可能となる。また、本実施形態は、学習済みの階層的な結合関係に対して適用することが可能であるため柔軟性が高いといえる。
【００７１】
本実施形態ではＣＮＮ処理の場合について説明したが、本実施形態の方法は、Ｒｅｓｔｒｉｃｔｅｄ  Ｂｏｌｔｚｍａｎｎ  ＭａｃｈｉｎｅｓやＲｅｃｕｒｓｉｖｅ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ等の他の階層的な処理にも適用可能である。
【００７２】
また、本実施形態では２次元の特徴データである特徴面に対する階層的な演算処理の例について説明したが、音声データ等の１次元の特徴データや時間の変化を含めた３次元の特徴データに対するＣＮＮ処理等の階層的な演算処理に適用することも可能である。
【００７３】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。本実施形態のハード構成は、第１の実施形態と同じであるので、その説明を省略する。
【００７４】
本実施形態では、割当てモジュール１０１２が階層間の結合関係を分割する際に、階層間の結合関係をグラフと見立て、最大フロー最小カット定理に基づいてグラフをカットすることで階層間での結合の分割を決定する。本実施形態の分割方法を図１２および図１３を用いて説明する。図１３は図８のフローチャート上の階層間分割決定ステップＳ８０３の別の実施形態を表している。本実施形態でいうグラフとは階層的な結合関係を表している。また、以下では階層的な結合関係をグラフとして扱うに当たり、特徴面をグラフの結合点として、特徴面の結合関係を入力層から出力層に向けて有効グラフとする。
【００７５】
ステップＳ１６０２では、分割対象である階層的な結合関係を選択する。本処理は分割統治的に繰り返しグラフを分割していくことを想定した説明となるため、すべての条件を満たすグラフになるまでグラフを繰り返し処理していく。つまり、条件を満たしていないグラフをこのステップで選択する。
【００７６】
次に、ステップＳ１６０３では選択したグラフに対して、グラフカットを行うための整形を行う。本ステップを説明するにあたり、図５に示すような階層的な結合関係を例に説明する。図１２は図５の階層関係に対して、各特徴面１０１−１１２を結合点と見立て、ｓ点１５０１およびｔ点１５１４をそれぞれ送信点、受信点として追加する。また、ｓ点と全結合点を結合点方向に接続、ｔ点と結合点をｔ点方向に接続してある。ここで矢印１１３−１２２は参照側の特徴面の階層１２３および出力側の特徴面の階層１２４間での結合関係を表しているが、それぞれの矢印に対して参照側の特徴面のサイズおよびカーネルフィルタの係数の合計値を重みとして与える。ここで矢印の重みを特徴面のサイズおよびカーネルフィルタの係数の合計値として説明したが、これに限るものではない。矢印１５０２−１５１３および矢印１５１５−１５２６に対しては、矢印１１３−１２２の重みに対して十分大きな値とする。
【００７７】
ステップＳ１６０４では、前ステップで作成した階層間の関係をグラフ化したものに対して、最大フロー最小カットのような、古典的なグラフカット手法を用いてグラフを切断する。グラフカットによって、十分に大きい重みの矢印１５０２−１５１３や矢印１５１５−１５２６間は切断されずに矢印１１３−１２２間で、最も重みが小さい結合関係で入力層及び出力層が切断されることとなる。
【００７８】
ステップＳ１６０５では、カットしたグラフが分割条件を満たすかを確認し、条件を満たすまで、ステップＳ１６０２−Ｓ１６０４を繰り返し実行する。以下で説明している分割条件は図８のステップＳ８０１で取得することが可能である。ここで分割条件とは、実施形態１と同様、カットされた全ての分割内で処理に必要なデータ量の所定値などである。通常、処理に必要なデータは、演算回路のＲＡＭで保持するので、ＲＡＭで保持するデータのデータ量が、所定値を超えていないかどうかを確認し、所定値に収まらない場合は該グラフに対して再度カットする処理を行う。また、カットされたグラフの個数を規定する場合は、カット済みのグラフをランダムに複数選択、マージし、マージしたグラフに対して再度グラフカットを行う。これを繰り返すことで、規定数になるように繰り返し行うことも可能である。本実施形態の処理によって、第１の実施形態と同様に図６に示す分割結果が得られることができる。本実施形態の分割方法は、各演算回路のＲＡＭで重複して保持するデータのデータ量を最も小さくすることができる。また、演算回路のＲＡＭで保持するデータのデータ量が所定値を超えないようにすることができる。
【００７９】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。本実施形態では、所定の条件に基づいて機器内で、階層的な結合関係を動的に分割して畳込みフィルタ演算を行う手法について説明する。本実施形態のハード構成は、第１の実施形態と同じであるので、その説明を省略する。本実施形態では、割当てモジュール１０１２が、所定のタイミングで演算回路１００２−１〜１００２−ｎの稼働状態を確認する。
【００８０】
割当てモジュール１０１２は、それぞれの演算回路１００２−１〜１００２−ｎの稼働状態に応じて、動的に分割する。割当てモジュール１０１２は、結合関係の分割結果を出力し、ＣＰＵ１００７はそれに基づいて、それぞれの演算回路１００２−１〜１００２−ｎのＲＡＭに参照側の特徴面やフィルタカーネルを随時転送する。
【００８１】
これにより、例えば、あるタイミングで演算回路の稼働状態を確認した結果、Ｎ個ある演算回路のうち、Ｍ個の演算回路が処理を終了している場合、このＭ個の演算回路に未処理のＣＮＮ演算を割り当てることができる。その結果、演算回路の稼働状態は変動するような場合でも、適宜最適な分割によって効率よく並列処理することが可能となる。
【００８２】
（第４の実施形態）
次に、本発明の第４の実施形態について説明する。本実施形態では、階層的な結合関係が動的に変更される場合にも有効である。図１４は、階層的な結合関係が動的に変更している様子を示している。
【００８３】
通常時のＣＮＮ処理は、図４の階層的な結合に対して行う。しかし、撮像状況や特徴抽出の途中結果などの内的要因や機器内の演算リソースや消費電力などの物理要因に応じて、図１４の破線５０１、５０２、５０３で示す結合関係の構造や畳込みフィルタ係数の変更、特徴面に関する動的な変更にも、適応可能である。
【００８４】
撮像状況や特徴抽出の途中結果によって変動が生じる場合として、認識処理の途中結果から、識別対象が人物である確率が所定値より高くなった時に、破線５０１〜５０３で示す部分が動物に関する特徴量がメインであれば、破線で示す部分の処理を行わない。
【００８５】
また、機器内の演算リソースや消費電力などの優先度に応じて、認識処理の結果に対して大きく影響を及ぼさない範囲で、破線５０１〜５０３で示す部分を処理しない場合がある。
【００８６】
この場合、ＣＰＵ１００７が、変更後の階層的な結合関係を割当てモジュール１０１２に通知し、割当てモジュール１０１２が変更された結合関係を分割する。ＣＰＵ１００７は、割当てモジュール１０１２の動的に分割した結合関係に基づいて各演算回路のメモリであるＲＡＭにデータを供給することで、動的に並列処理を実行する。
【００８７】
（第５の実施形態）
次に、本発明の第５の実施形態について説明する。これまでに説明してきた実施形態では、組込み向け機器についての実施形態であったが、本実施形態ではクラウドサーバーシステムでの実施について説明する。図１５は、クラウドサーバーシステムを表した図である。
【００８８】
制御ＰＣ１７０１が、全てのＣＮＮ処理ＰＣ１７０５〜１７１３の制御を、通信ネットワーク１７０２〜１７０４を介して行う。ここでいう制御とは、階層の分割情報に基づく、並列処理をするために、参照側の特徴面データ・重みカーネルのＣＮＮ処理ＰＣ１７０５〜１７１３への割当て、およびこの割当てに基づく分散データ処理制御である。
【００８９】
具体的には、制御ＰＣ１７０１は、図７や図８などで説明した方法により、階層構造の分割を実施し、各ＣＮＮ処理ＰＣへの特徴面などの割当てを決定する。第１の実施形態と同様に、各ＣＮＮ処理ＰＣで重複して保持する必要があるデータを少なくなるように階層構造の分割方法が決定されるので、ＣＮＮ処理ＰＣ１７０５−１７１３へのデータ供給量が少なく、並列演算が効率的に行われる。
【００９０】
制御ＰＣ１７０１の決定した分割情報に基づき、それぞれのＣＮＮ処理ＰＣ１７０５−１７１３が畳込み演算を行い、演算結果を制御ＰＣへと出力する。これにより、組込み機器内のみならずクラウドサーバーシステムにおける並列化処理も効率的に施行することができる。
【００９１】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００９２】
１０００  画像入力モジュール
１００１−１〜１００１−ｎ  ＲＡＭ
１００２−１〜１００２−ｎ  演算回路
１０１２  割当てモジュール
１００７  ＣＰＵ
１００８  ＲＯＭ
１００９  ＲＡＭ
【図１】
2018055570.tif 000007
【図２】
2018055570.tif 000008
【図３】
2018055570.tif 000009
【図４】
2018055570.tif 000010
【図５】
2018055570.tif 000011
【図６】
2018055570.tif 000012
【図７】
2018055570.tif 000013
【図８】
2018055570.tif 000014
【図９】
2018055570.tif 000015
【図１０】
2018055570.tif 000016
【図１１】
2018055570.tif 000017
【図１２】
2018055570.tif 000018
【図１３】
2018055570.tif 000019
【図１４】
2018055570.tif 000020
【図１５】
2018055570.tif 000021