(57)【特許請求の範囲】
【請求項１】
画像を、第１組の畳み込みウィンドウと第２組の畳み込みウィンドウとを含む複数組の畳み込みウィンドウに区画するステップと、
複数のデータ処理ユニットにより前記第１組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出するステップと、
前記第１組の畳み込みウィンドウ内の画像データの抽出が完了したことに応じて、前記複数のデータ処理ユニットにより前記第２組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出するステップと、
を含む複数の畳み込みウィンドウ内の画像データの並行抽出方法。
【請求項２】
前記複数のデータ処理ユニットは、第１のデータ処理ユニットと第２のデータ処理ユニットとを含み、前記第１組の畳み込みウィンドウは、第１の畳み込みウィンドウと第２の畳み込みウィンドウとを含み、且つ、
複数のデータ処理ユニットにより前記第１組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出するステップは、
前記第１のデータ処理ユニットにより前記第１の畳み込みウィンドウ内の画像データを抽出することと、
前記第２のデータ処理ユニットにより前記第２の畳み込みウィンドウ内の画像データを抽出することと、を含む請求項１に記載の方法。
【請求項３】
前記第１のデータ処理ユニットにより前記第１の畳み込みウィンドウ内の画像データを抽出することは、
前記第１の畳み込みウィンドウ内の第１のチャネルにおける第１行の画像データを抽出することと、
前記第１の畳み込みウィンドウ内の前記第１のチャネルにおける第２行の画像データを抽出することと、
前記第１の畳み込みウィンドウ内の前記第１のチャネルにおける第３行の画像データを抽出することと、を含む請求項２に記載の方法。
【請求項４】
前記第１のデータ処理ユニットにより前記第１の畳み込みウィンドウ内の画像データを抽出することは、
前記第１の畳み込みウィンドウ内の第１のチャネルにおける全ての画像データの抽出が完了したことに応じて、
前記第１の畳み込みウィンドウ内の第２のチャネルにおける第１行の画像データを抽出することと、
前記第１の畳み込みウィンドウ内の前記第２のチャネルにおける第２行の画像データを抽出することと、
前記第１の畳み込みウィンドウ内の前記第２のチャネルにおける第３行の画像データを抽出することと、をさらに含む請求項３に記載の方法。
【請求項５】
前記第１のデータ処理ユニットにより前記第１の畳み込みウィンドウ内の画像データを抽出することは、
前記第１の畳み込みウィンドウ内の全てのチャネルにおける全ての画像データの抽出が完了したことに応じて、前記第１の畳み込みウィンドウ内の全ての画像データを一次元ベクトルで表すことをさらに含み、
前記一次元ベクトルの長さが、前記画像のチャネル数と、各畳み込みウィンドウの行数と、各畳み込みウィンドウの列数との積である請求項４に記載の方法。
【請求項６】
前記複数組の畳み込みウィンドウ内の全ての画像データをターゲットメモリに二次元行列で格納するステップをさらに含み、
前記二次元行列の行数が前記複数組の畳み込みウィンドウ内の全ての畳み込みウィンドウの数であり、前記二次元行列の列数が前記画像のチャネル数と、各畳み込みウィンドウの行数と、各畳み込みウィンドウの列数との積である、請求項１に記載の方法。
【請求項７】
行列を列単位で第１のブロック及び第２のブロックを含む複数のブロックに区画するステップと、
前記複数のデータ処理ユニットにより前記第１のブロック内の複数列のデータを並行して転置するステップと、
前記第１のブロック内の複数列のデータの転置が完了したことに応じて、前記複数のデータ処理ユニットにより前記第２のブロック内の複数列のデータを並行して転置するステップと、をさらに含む請求項１に記載の方法。
【請求項８】
前記複数のデータ処理ユニットにより前記第１のブロック内の複数列のデータを並行して転置するステップは、
前記複数のデータ処理ユニットのうちの第１のデータ処理ユニットにより前記第１のブロック内の第１列のデータを転置することと、
前記複数のデータ処理ユニットのうちの第２のデータ処理ユニットにより前記第２のブロック内の第２列のデータを転置することと、を含む請求項７に記載の方法。
【請求項９】
行列を列単位で複数のブロックに区画するステップは、
前記複数のデータ処理ユニットの数に応じて、前記行列を前記複数のブロックに区画することを含む請求項７に記載の方法。
【請求項１０】
画像を、第１組の畳み込みウィンドウと第２組の畳み込みウィンドウとを含む複数組の畳み込みウィンドウに区画するように構成される畳み込みウィンドウ組区画モジュールと、
複数のデータ処理ユニットにより前記第１組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出するように構成される第１の並行抽出モジュールと、
前記第１組の畳み込みウィンドウ内の画像データの抽出が完了したことに応じて、前記複数のデータ処理ユニットにより前記第２組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出するように構成される第２の並行抽出モジュールと、
を備える複数の畳み込みウィンドウ内の画像データの並行抽出装置。
【請求項１１】
前記複数のデータ処理ユニットは、第１のデータ処理ユニットと第２のデータ処理ユニットとを含み、前記第１組の畳み込みウィンドウは、第１の畳み込みウィンドウと第２の畳み込みウィンドウとを含み、且つ、
前記第１の並行抽出モジュールは、
前記第１のデータ処理ユニットにより前記第１の畳み込みウィンドウ内の画像データを抽出するように構成される第１のデータ抽出モジュールと、
前記第２のデータ処理ユニットにより前記第２の畳み込みウィンドウ内の画像データを抽出するように構成される第２のデータ抽出モジュールと、
を備える請求項１０に記載の装置。
【請求項１２】
前記第１のデータ抽出モジュールは、
前記第１の畳み込みウィンドウ内の第１のチャネルにおける第１行の画像データを抽出するように構成される第１の抽出モジュールと、
前記第１の畳み込みウィンドウ内の前記第１のチャネルにおける第２行の画像データを抽出するように構成される第２の抽出モジュールと、
前記第１の畳み込みウィンドウ内の前記第１のチャネルにおける第３行の画像データを抽出するように構成される第３の抽出モジュールと、
を備える請求項１１に記載の装置。
【請求項１３】
前記第１のデータ抽出モジュールは、
前記第１の畳み込みウィンドウ内の第１のチャネルにおける全ての画像データの抽出が完了したことに応じて、
前記第１の畳み込みウィンドウ内の第２のチャネルにおける第１行の画像データを抽出し、
前記第１の畳み込みウィンドウ内の前記第２のチャネルにおける第２行の画像データを抽出し、
前記第１の畳み込みウィンドウ内の前記第２のチャネルにおける第３行の画像データを抽出するように構成される第２のチャネル抽出モジュールをさらに備える請求項１２に記載の装置。
【請求項１４】
前記第１のデータ抽出モジュールは、
前記第１の畳み込みウィンドウ内の全てのチャネルにおける全ての画像データの抽出が完了したことに応じて、前記第１の畳み込みウィンドウ内の全ての画像データを一次元ベクトルで表すように構成されるデータ表示モジュールをさらに備え、
前記一次元ベクトルの長さが、前記画像のチャネル数と、各畳み込みウィンドウの行数と、各畳み込みウィンドウの列数との積である請求項１３に記載の装置。
【請求項１５】
前記複数組の畳み込みウィンドウ内の全ての画像データをターゲットメモリに二次元行列で格納するように構成されるデータ格納モジュールをさらに備え、
前記二次元行列の行数が前記複数組の畳み込みウィンドウ内の全ての畳み込みウィンドウの数であり、前記二次元行列の列数が前記画像のチャネル数と、各畳み込みウィンドウの行数と、各畳み込みウィンドウの列数との積である、請求項１０に記載の装置。
【請求項１６】
行列を列単位で第１のブロック及び第２のブロックを含む複数のブロックに区画するように構成されるブロック区画モジュールと、
前記複数のデータ処理ユニットにより前記第１のブロック内の複数列のデータを並行して転置するように構成される第１の並行転置モジュールと、
前記第１のブロック内の複数列のデータの転置が完了したことに応じて、前記複数のデータ処理ユニットにより前記第２のブロック内の複数列のデータを並行して転置するように構成される第２の並行転置モジュールと、
をさらに備える請求項１０に記載の装置。
【請求項１７】
第１の並行転置モジュールは、
前記複数のデータ処理ユニットのうちの第１のデータ処理ユニットにより前記第１のブロック内の第１列のデータを転置するように構成される第１の行列転置モジュールと、
前記複数のデータ処理ユニットのうちの第２のデータ処理ユニットにより前記第２のブロック内の第２列のデータを転置するように構成される第２の行列転置モジュールと、
を備える請求項１６に記載の装置。
【請求項１８】
前記ブロック区画モジュールは、
前記複数のデータ処理ユニットの数に応じて、前記行列を前記複数のブロックに区画するように構成される第２のブロック区画モジュールを備える請求項１６に記載の装置。
【請求項１９】
電子機器であって、
１つまたは複数のプロセッサと、
１つまたは複数のプログラムを格納するための記憶装置であって、前記１つまたは複数のプログラムが前記１つまたは複数のプロセッサによって実行されると、前記電子機器は請求項１〜９のいずれか１項に記載の方法を実現する記憶装置と、
を備える電子機器。
【請求項２０】
コンピュータプログラムが格納されるコンピュータ可読記憶媒体であって、
前記プログラムがプロセッサによって実行されると、請求項１〜９のいずれか１項に記載の方法を実現する、コンピュータ可読記憶媒体。
【請求項２１】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項１〜９のいずれか一項に記載の方法を実現させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、主に画像データ処理技術分野に属し、特に、複数の畳み込みウィンドウ内の画像データの並行抽出方法、装置、機器及びコンピュータ可読記憶媒体に関する。
【背景技術】
【０００２】
機械学習とは、人間のように大量のデータから機械が規則性を学習できるようにすることで、いくつかの特定のタスクを遂行することができる機械学習モデルを生成することである。人工ニューラルネットワークは、人間の脳をモデルとして人工ニューラルネットワークを作成し、様々な機械学習アルゴリズムを用いることで、大量のデータを通じてコンピュータを学習させる一般的な機械学習技術である。一般的な人工ニューラルネットワークは、畳み込みニューラルネットワーク（ＣＮＮ）、回帰型ニューラルネットワーク（ＲＮＮ）などを含む。深層学習も機械学習の一種であるが、深層学習は深層ニューラルネットワーク（ＤＮＮ）を利用し、モデルをより複雑に処理させ、それによりモデルがデータに対する理解をより深くさせる。
【０００３】
ＣＮＮは、畳み込み計算を含み且つ深層構造を有するフィードフォワードニューラルネットワークであり、コンピュータビジョン、特に画像処理分野において非常に幅広く応用されている。コンピュータの観点から見ると、画像は実際には一つの二次元又は三次元行列であり、ＣＮＮが行う作業は、畳み込み、プール化等の操作を用いて二次元又は三次元配列から特徴を抽出して、画像を識別することである。ＣＮＮは、通常に入力層、畳み込み層、活性化関数、プール層、全結合層で構成される。
【０００４】
ニューラルネットワークモデルの多様化及び演算力に対する需要の向上に伴い、従来の深層学習ハードウェアプラットフォーム（例えば、汎用プロセッサ、グラフィックプロセッサＧＰＵ）のパフォーマンスとコストなどの要因を考慮して、業界は深層学習アクセラレータの開発を開始した。深層学習アクセラレータのハードウェアコアの一つは行列演算であり、行列演算モジュールの動作は上位階層のデータ供給に依存し、行列演算モジュールの演算力を十分に利用するために、効率的で柔軟なデータ供給方式はハードウェア設計の重点である。
【発明の概要】
【０００５】
本開示の実施形態により、複数の畳み込みウィンドウ内の画像データを並行して抽出する方法、装置、機器及びコンピュータ可読記憶媒体が提供される。
【０００６】
本開示の第１態様において、複数の畳み込みウィンドウ内の画像データを並行して抽出する方法が提供される。該方法は、画像を、第１組の畳み込みウィンドウと第２組の畳み込みウィンドウとを含む複数組の畳み込みウィンドウに区画するステップと、複数のデータ処理ユニットにより第１組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出するステップと、第１組の畳み込みウィンドウ内の画像データの抽出が完了したことに応じて、複数のデータ処理ユニットにより第２組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出するステップと、を含む。
【０００７】
本開示の第２態様において、複数の畳み込みウィンドウ内の画像データを並行して抽出する装置が提供される。該装置は、画像を、第１組の畳み込みウィンドウと第２組の畳み込みウィンドウとを含む複数組の畳み込みウィンドウに区画するように構成される畳み込みウィンド組区画モジュールと、複数のデータ処理ユニットにより第１組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出するように構成される第１の並行抽出モジュールと、第１組の畳み込みウィンドウ内の画像データの抽出が完了したことに応じて、複数のデータ処理ユニットにより第２組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出するように構成される第２の並行抽出モジュールと、を備える。
【０００８】
本開示の第３態様において、１つまたは複数のプロセッサと、１つまたは複数のプログラムを格納するための記憶装置と、を備える電子機器が提供される。１つまたは複数のプログラムが１つまたは複数のプロセッサによって実行されると、電子機器は本開示の実施形態に係る様々な方法および／またはプロセスを実現する。
【０００９】
本開示の第４態様において、コンピュータプログラムが格納されるコンピュータ可読記憶媒体であって、該プログラムがプロセッサによって実行されると、本開示の実施形態に係る様々な方法および／またはプロセスを実現するコンピュータ可読記憶媒体が提供される。
【００１０】
発明の概要に記載された内容は、本開示の実施形態のかなめとなる特徴又は重要な特徴を限定することを意図するものではなく、本開示の範囲を限定するものでもない。本開示の他の特徴は、以下の説明によって容易に理解されるであろう。
【図面の簡単な説明】
【００１１】
図面を踏まえて以下の詳細な説明を参照すれば、本開示の各実施形態の上述したもの並びに他の特徴、利点及び態様は、より明らかになるであろう。添付図面において、同一又は類似の参照番号は、同一又は類似の要素を表す。
【図１】畳み込みニューラルネットワークにおける畳み込みプロセスを示す概略図である。
【図２】本開示の実施形態に係る複数の畳み込みウィンドウ内の画像データを並行して抽出する方法を示すフローチャートである。
【図３】本開示の実施形態に係る複数の畳み込みウィンドウ内の画像データを並行して抽出するプロセスを示す概略図である。
【図４】本開示の実施形態に係るデータを並行して処理するためのアクセラレータデバイスの例示的なアーキテクチャを示す概略図である。
【図５】本開示の実施形態に係る畳み込みデータを抽出するための例示的なプロセスを示す概略図である。
【図６】本開示の実施形態に係る行列転置を並行して行うための例示的なプロセスを示す概略図である。
【図７】本開示の実施形態に係る複数の畳み込みウィンドウ内の画像データを並行して抽出する装置を示すブロック図である。
【図８】本開示の複数の実施形態を実施することができる電子機器を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照しながら本開示の実施形態を更に詳しく説明する。本開示のいくつかの実施形態が図面に示されているが、本開示は様々な形態で具現化されてもよく、本明細書に記載の実施形態に限定されると解釈されるべきではなく、逆に、これらの実施形態は、本開示をより明確かつ完全に理解するために提供されるものであることを理解されたい。なお、本開示の図面及び実施形態は例示的なものにすぎず、本開示の保護範囲を限定するものではない。
【００１３】
本開示の実施形態の説明では、用語「…を含む」およびそれに類似する用語は、「…を含むがそれらに限定されない」という非限定の表現として理解されるべきである。用語「…に基づいて」は、「少なくとも部分的に…に基づいて」と理解されるべきである。用語「１つの実施形態」または「該実施形態」は、「少なくとも１つの実施形態」と理解されるべきである。用語「いくつかの実施形態」は、「少なくともいくつかの実施形態」と理解されるべきである。以下では、他の明確か暗黙的な定義がさらに含まれ得る。
【００１４】
従来、画像畳み込み処理では、畳み込みカーネルを画像上でスライドさせ、畳み込みウィンドウの画素点を１つずつ抽出して出力していた。しかしながら、従来の方法では、異なる畳み込みウィンドウ内の画像データを直列に抽出するため、効率的にデータ変換を行うことができず、処理性能に影響を与えていた。また、従来の方法では、行列転置時にも直列に転置を行っていた。したがって、従来技術の不足は主に柔軟性が確保されると同時にハードウェアの並行性が十分に発揮されず、毎回１つ又は１組の数のみを対象として操作することができ、データの変換を効率的に行うことができないので、後続の計算の性能が制限される。
【００１５】
そこで、本開示の実施態様において、複数の畳み込みウィンドウ内の画像データを並行して抽出する技術案が提供される。本開示の実施形態によれば、畳み込みデータを抽出するプロセス中に、複数のデータ処理ユニットにより、複数の畳み込みウィンドウ内の画像データを並行して抽出することで、データ抽出の速度が高まれ、それにより画像畳み込みの処理効率が向上される。また、本開示のいくつかの実施形態は、さらに行列転置を並行して行う方法を提供し、複数のデータ処理ユニットによって１つの行列における複数の列を並行して抽出することで、行列転置の速度が向上される。以下、本開示の実施例のいくつかの実施形態を図１〜図８を参照しながら詳細に説明する。
【００１６】
図１は、畳み込みニューラルネットワークにおける畳み込みプロセス１００の概略図を示している。畳み込みニューラルネットワークは、画像畳み込みにより、画像内の物体のエッジを探したり、像ぶれ、鮮鋭化、エンボス効果など、画像に何らかの効果を強めたり、弱めたりするなど、画像の一部の特徴を発見する。
【００１７】
図１は、畳み込みカーネル１２０により画像１１０を畳み込む例示的なプロセスを示している。ここで、畳み込みカーネル１２０は、３×３の二次元行列であり得る。なお、複数の畳み込みカーネルを用いて画像を畳み込むようにしてもよい。画像畳み込みの思想は、入力画像（例えば、画像１１０）の１画素に対して、その値を周囲の近傍の画素値で重み付けし、このように重み付けにより生成された新たな画素値は順次に、新たな出力画像（例えば、画像１３０）を生成することができる。
【００１８】
畳み込みカーネル１２０は、画像１１０の各畳み込みウィンドウをスライドさせることにより畳み込みデータを得る。図１に示すように、まず、畳み込みカーネルを画像１１０における第１の畳み込みウィンドウ１１１にスライドさせ、畳み込みウィンドウ１１１における画素点と畳み込みカーネル１２０との積和演算により（１２１に示すように）、畳み込みウィンドウ１１１に対する畳み込み出力１３１を生成し、画像１３０に記憶する。例えば、画素ごとに積和演算した値を、出力画像行列の第１の要素の位置に配置する。
【００１９】
畳み込みウィンドウ１１１の畳み込みが完了した後、畳み込みカーネルを右に１距離分だけスライドし、当然に右へより多くの距離分スライドすることを選択してもよく、このような距離がストライド（ｓｔｒｉｄｅ）と呼ばれ、予め設定されることができる。次に、図１の矢印１４０に示すように、画像１１０の第２の畳み込みウィンドウ１１２について、畳み込みウィンドウ１１２内の画素点と畳み込みカーネル１２０との積和演算により（１２２に示すように）、畳み込みウィンドウ１１１に対する畳み込み出力１３２を生成して、画像１３０に記憶する。そして、畳み込みカーネル１２０が画像１１０内の全ての畳み込みウィンドウをスライドするまで、上述した畳み込み処理を繰り返すことで、畳み込み済み画像１３０を生成する。しかしながら、図１で説明した畳み込み処理では、データが直列に抽出され、その後演算が行われたため、畳み込み処理の速度が遅くなってしまう。
【００２０】
図２は、本開示の実施形態に係る複数の畳み込みウィンドウ内の画像データを並行して抽出する方法２００のフローチャートを示している。なお、方法２００は専用のアクセラレータデバイス（例えば、ＡＩチップ）で実行されてもよく、又は汎用コンピュータ又は他の専用のコンピューティングデバイスで実行されてもよい。
【００２１】
ブロック２０２では、画像を、第１組の畳み込みウィンドウと第２組の畳み込みウィンドウとを含む複数組の畳み込みウィンドウに区画する。例えば、使用可能なデータ処理ユニットの数（例えば、Ｐ個）に応じて、画像をそれぞれＰ個の畳み込みウィンドウを含む複数組の畳み込みウィンドウに区画してもよく、それにより複数組の畳み込みウィンドウそれぞれは複数のデータ処理ユニットで並行して処理され得る。
【００２２】
ブロック２０４では、複数のデータ処理ユニットにより第１組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出する。例えば、第１組の畳み込みウィンドウはＰ個の畳み込みウィンドウを含むようにしてもよい。アクセラレータデバイス（例えば、ＡＩチップ）におけるＰ個のデータ処理ユニットを用いて、Ｐ個の畳み込みウィンドウ内の画像データを並行して抽出し、すなわち、処理ユニットそれぞれが対応する畳み込みウィンドウ内の画像データを抽出する。これにより、畳み込みウィンドウ内の画像データの抽出速度が高まれる。
【００２３】
ブロック２０６では、第１組の畳み込みウィンドウ内の画像データの抽出が完了したことに応じて、複数のデータ処理ユニットにより第２組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出する。一般的に、画像内の畳み込みウィンドウの数は、データ処理ユニットの数よりもはるかに多くしてもよく、それゆえに、データを段階的に並行して抽出する必要がある。例えば、Ｐ個のデータ処理ユニットによりＰ個の畳み込みウィンドウ内の画像データを並行して抽出し終えた後、次のＰ個の畳み込みウィンドウを抽出し、画像内の全ての畳み込みウィンドウ内の画像データの抽出が終了するまで、順次、上述したステップを繰り返す。
【００２４】
従って、本開示の実施形態によれば、畳み込みデータを抽出するプロセス中に、複数のデータ処理ユニットにより、複数の畳み込みウィンドウ内の画像データを並行して抽出することで、データ抽出の速度が高まれ、それにより画像畳み込みの処理効率が向上される。
【００２５】
図３は、本開示の実施形態に係る複数の畳み込みウィンドウ内の画像データを並行して抽出するプロセス３００の概略図を示している。図３に示すように、画像３１０における畳み込みウィンドウ３１１、３１２、３１３はデータ処理ユニット３２１、３２２、３２３によってそれぞれ並行して処理することができ、さらに畳み込みウィンドウ３１１、３１２、３１３における対応するデータ３３１、３３２、３３３（それぞれ一次元ベクトルであってもよい）が並行して抽出される。なお、図示の明確化のため、図３の畳み込みウィンドウのストライドを３とし、畳み込みウィンドウ３１１、３１２、３１３の３つが重複しないようにしているが、ストライドを１または他の値に設定して、異なる畳み込みウィンドウ間で重複する画素点を持たせるようにしてもよい。なお、説明の便宜上、図３では、１つのカラーチャネルの画像３１０のみを図示しているが、画像３１０は、複数のカラーチャネルを含んでいてもよい。
【００２６】
図４は、本開示の実施形態に係るデータを並行して処理するためのアクセラレータデバイスの例示的なアーキテクチャ４００の概略図を示している。図４に示すように、例示的なアーキテクチャ４００は、プロセッサ４１０、ソースメモリ４２０、ターゲットメモリ４２５、データ変換モジュール４３１、及びスケジューラ４７０等を含むことができる。データ変換モジュール４３１は、命令記憶ユニット４３０と、命令復号化ユニット４４０と、制御ユニット４５０と、同期化ユニット４６０と、データ読み取りユニット４８０と、複数のデータ処理ユニット４９０とを含むコプロセッサとして機能することができる。ここで、複数のデータ処理ユニット４９０は、例えば、Ｐ個のデータ処理ユニット４９１、４９２、４９３、４９４、４９９等を含んでいてもよい。
【００２７】
ソースメモリ４２０及びターゲットメモリ４２５は、それぞれ入力メモリ及び出力メモリであり、オフチップメモリ（例えば、倍速同期ダイナミックランダムアクセスメモリＤＤＲ）であってもよく、オンチップメモリ（例えば、スタティックランダムアクセスメモリＳＲＡＭ）であってもよく、そのうちソースメモリ４２０とターゲットメモリ４２５は異なるメモリ又は同じメモリであってもよい。
【００２８】
命令記憶ユニット４３０はプロセッサ４１０から受信した、データ変換のための命令を記憶し、命令の種類は、パラメータコンフィギュレーション命令、転置命令、畳み込みデータ抽出命令、同期命令などを含むことができるが、これらに限定されない。パラメータコンフィギュレーション命令は、パラメータをコンフィギュレートするために用いられ、パラメータは、データの種類、転置行列の規模、畳み込み画像の規模、畳み込みカーネルの規模、畳み込みストライド、エッジパディング画素数（ｐａｄ）などを含むがこれらに限定されない。転置命令は、ソースメモリ４２０の先頭アドレス、ターゲットメモリ４２５の先頭アドレス、転置データ長等をコンフィギュレートするための命令である。畳み込みデータ抽出命令は、ソースメモリ４２０の先頭アドレス、ターゲットメモリ４２５の先頭アドレス、抽出データ長等をコンフィギュレートするための命令である。スケジューラ４７０による各モジュールの同期化のために、同期命令は該命令の前の全ての命令の実行が完了し且つデータが記憶媒体に書き込まれたことを確保するために用いられる。
【００２９】
命令復号化ユニット４４０は、命令記憶ユニット４３０が空ではなく現在命令実行可能であると検出すると、命令記憶ユニット４３０から命令を読み出して解析し、解析した内容を制御ユニット４５０に送信するために用いられる。制御ユニット４５０はコンフィギュレーションパラメータに基づき、対応する制御信号を生成し、制御内容は、データ読み取りユニット４８０の読み取りリクエストの挙動、データ処理ユニット４９０の挙動、同期化ユニット４６０の挙動を含むが、これらに限定されない。
【００３０】
データ読み取りユニット４８０は、制御ユニット４５０の制御信号に基づいて、ソースメモリ４２０に読み取りリクエストを送信し、読み出されたデータを複数のデータ処理ユニット４９０に送出する。複数のデータ処理ユニット４９０は、制御ユニット４５０の制御信号に基づいて、データ読み取りユニット４８０からデータ中の特定の部分を抽出して、ターゲットメモリ４２５に書き込む。本開示の実施形態によれば、複数のデータ処理ユニット４９０は、複数の畳み込みウィンドウ内の画像データを並行して抽出してもよいし、行列内の複数の列を並行して転置してもよい。これにより、データ変換の速度が向上される。
【００３１】
同期化ユニット４６０は、同期リクエストを受信すると、現在の命令の実行が完了し且つデータが記憶媒体に書き込まれたことを検知すると、同期完了信号を外部のスケジューラ４７０に出力する。なお、アクセラレータデバイスの一例であるアーキテクチャ４００は、あくまでも複数のデータ処理ユニット４９０を備えた例示的なアーキテクチャに過ぎなく、複数のデータ処理ユニットを備えた他のアクセラレータデバイスも本開示の実施形態と組み合わせて使用され得る。
【００３２】
図５は、本開示の実施形態に係る畳み込みデータを抽出するための例示的なプロセス５００の概略図を示している。図５に示すように、与えられた画像５１０の幅がＷであり、高さがＨであり、チャネルの深さがＣであり、各畳み込みウィンドウの幅がＳであり、高さがＲである（図５の例では畳み込みウィンドウのサイズが３×３である）。画像の畳み込みを実行するためのアクセラレータデバイスは、複数のデータ処理ユニット５２０を備え、例えば、Ｐ個のデータ処理ユニット５２１、５２２、５２３、５２９等を含む。本開示の実施形態によれば、複数のデータ処理ユニットは、複数の畳み込みウィンドウ内の画像データを並行して抽出してもよい。
【００３３】
図５を参照し、データ処理ユニット５２１は、畳み込みウィンドウ５１１内の画像データを抽出するためのものである。データ処理ユニット５２１は、まず、第１チャネルの第１行データを抽出し（各データ処理ユニットは、対応する畳み込みウィンドウ内の第１行データを並行して抽出する）、次いで、第１チャネルの第２行データを抽出し、次いで、第１チャネルの第３行データを抽出する。これで、図５に例示された畳み込みウィンドウ５１１内の第１チャネルにおけるデータ抽出が完了する。次に、データ処理ユニット５２１は、同様に、畳み込みウィンドウ５１１の第２チャネルにおける画像データを全て抽出し、畳み込みウィンドウ５１１の第３チャネルにおける画像データを全て抽出し、畳み込みウィンドウ５１１の第４チャネルにおける画像データを全て抽出し、これにより畳み込みウィンドウ５１１に対するデータ抽出処理を終了する。図５に示すように、抽出されたデータ５３０は第１チャネルのデータ５３１（第１チャネルの３つの行の合計で９つの値を含む）、第２チャネルのデータ、第３チャネルのデータ、第４チャネルのデータ５３４を含む。本開示の実施形態によれば、Ｐ個のデータ処理ユニットがデータを並行して抽出するので、Ｐ個のデータ処理ユニットは、前のＰ個の畳み込みウィンドウ内の全ての画像データの抽出を並行して完成することができる。
【００３４】
次に、複数のデータ読み取りユニット５２０は、同様に後続するＰ個のウィンドウのデータを並行して読み取る。最後に、画像５１０内の全ての畳み込みウィンドウに対応するデータの抽出が完了する。そのうち、Ｐ個のデータ処理ユニットが畳み込みデータを並行して抽出するため、各データ処理ユニットは、ストライドパラメータに基づいてそれに対応する畳み込みウィンドウのデータを取得する必要があり、この部分の制御挙動は制御ユニットによって完了することができる。
【００３５】
いくつかの実施形態において、抽出された１つの畳み込みウィンドウデータがターゲットメモリに連続的に格納されるため、１つの規模がＣ×Ｒ×Ｓである３次元畳み込みウィンドウ内の画像データは、データ処理ユニットにより抽出された後に、ターゲットメモリにおいて長さがＣ×Ｒ×Ｓである一次元ベクトルとみなすことができ、画像５１０において合計でＮ個の畳み込みウィンドウデータが抽出されたと仮定すると、最終的にターゲットメモリに格納されるのは、規模がＮ行、Ｃ×Ｒ×Ｓ列である二次元行列である。畳み込みカーネルが同様にＦ行、Ｃ×Ｒ×Ｓ列の二次元行列とみなすことができ、畳み込みカーネルが転置された後にＣ×Ｒ×Ｓ行、Ｆ列の二次元行列となり、こうすると、複雑な画像畳み込み操作は２つの二次元行列の乗算に変換される。以下の式（１）に示すように、Ｄは画像データ行列を表し、Ｗは重みデータ行列を表し、１つの畳み込みウィンドウに含まれる画像データは、例えば、左側の破線枠（すなわち、長さがＣ×Ｒ×Ｓの一次元ベクトル）で示され、１つの畳み込みカーネルに含まれる重みデータは、例えば、右側の破線枠で示される。これにより、畳み込み演算における行列演算効率がさらに向上されることができる。
【００３６】
【数１】
0006955598.tif 000002
【００３７】
図６は、本開示の実施形態に係る行列転置を並行して行うための例示的なプロセス６００の概略図を示している。図６に示すように、１つのＭ×Ｎ規模の行列６１０を転置する必要があると仮定し、上記図４に記述したデータ変換モジュールにおいてＰ個の並行動作するデータ処理ユニットが備えられ得ることを参照し、行列６１０をＰ列を粒度としてブロック化する。すなわち、第１ブロックは先頭のＰ列を含み、第２ブロックは後続のＰ列を含むなどである。
【００３８】
図６に示すように、複数のデータ処理ユニット６２０は、Ｐ個のデータ処理ユニット（例えば、データ処理ユニット６２１、６２２、６２３、６２９等）を含む。データ読み取りユニットは、行列のデータを毎回１行読み取り、各データ処理ユニットは、該行データの対応する列を並行して処理することができる。例えば、データ処理ユニット６２１は第１列（列０）のデータを処理し、データ処理ユニット６２２は第２列（列１）のデータを処理し、データ処理ユニット６２３は第３列（列２）のデータを処理し、データ処理ユニット６２９は第Ｐ列（列Ｐ−１）のデータを処理する。
【００３９】
複数のデータ処理ユニット６２０は、第１のブロックのＰ列を並行して処理した後、行列６２１全体の転置を完成するまで次のブロックにおけるＰ列データを処理し、転置後の行列６３０を生成する。図６に示すように、データ処理ユニット６２１は、行列６１０の第１列を行列６３０の第１行に転置し、データ処理ユニット６２２は、行列６１０の第２列を行列６３０の第２行に転置し、データ処理ユニット６２９は、行列６１０の第Ｐ列を行列６３０の第Ｐ行に転置する。いくつかの実施形態において、制御ユニットは命令コンフィギュレーションパラメータ及びターゲットメモリの先頭アドレスに基づき、Ｐ個のデータ処理ユニットそれぞれのターゲットメモリの書き込みアドレスを維持する必要がある。
【００４０】
従って、本開示の実施形態によれば、畳み込みデータの抽出中に、複数のデータ処理ユニットにより、複数の畳み込みウィンドウ内の画像データを並行して抽出することで、データ抽出の速度を高めることができ、それにより画像畳み込みの処理効率が向上される。また、本開示のいくつかの実施形態は、複数のデータ処理ユニットにより行列中の複数の列を並行して抽出することにより、行列転置の速度を高めることができる。
【００４１】
図７は、本開示の実施形態に係る複数の畳み込みウィンドウ内の画像データを並行して抽出する装置７００のブロック図を示している。図７に示すように、装置７００は、畳み込みウィンドウ組区画モジュール７１０、第１の並行抽出モジュール７２０及び第２の並行抽出モジュール７３０を含む。畳み込みウィンドウ組区画モジュール７１０は、画像を、第１組の畳み込みウィンドウと第２組の畳み込みウィンドウとを含む複数組の畳み込みウィンドウに区画するように構成される。第１の並行抽出モジュール７２０は、複数のデータ処理ユニットにより第１組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出するように構成される。第２の並行抽出モジュール７３０は、第１組の畳み込みウィンドウ内の画像データの抽出が完了したことに応じて、複数のデータ処理ユニットにより第２組の畳み込みウィンドウにおける複数の畳み込みウィンドウ内の画像データを並行して抽出するように構成される。
【００４２】
いくつかの実施形態において、第１組の畳み込みウィンドウは、第１の畳み込みウィンドウと第２の畳み込みウィンドウとを含み、第１の並行抽出モジュール７２０は、第１のデータ処理ユニットにより第１の畳み込みウィンドウ内の画像データを抽出するように構成される第１のデータ抽出モジュールと、第２のデータ処理ユニットにより第２の畳み込みウィンドウ内の画像データを抽出するように構成される第２のデータ抽出モジュールと、を備える。
【００４３】
いくつかの実施形態において、第１のデータ抽出モジュールは、第１の畳み込みウィンドウ内の第１のチャネルにおける第１行の画像データを抽出するように構成される第１の抽出モジュールと、第１の畳み込みウィンドウ内の第１のチャネルにおける第２行の画像データを抽出するように構成される第２の抽出モジュールと、第１の畳み込みウィンドウ内の第１のチャネルにおける第３行の画像データを抽出するように構成される第３の抽出モジュールと、を備える。
【００４４】
いくつかの実施形態において、第１のデータ抽出モジュールは、第１の畳み込みウィンドウ内の第１のチャネルにおける全ての画像データの抽出が完了したことに応じて、第１の畳み込みウィンドウ内の第２のチャネルにおける第１行の画像データを抽出し、第１の畳み込みウィンドウ内の第２のチャネルにおける第２行の画像データを抽出し、第１の畳み込みウィンドウ内の第２のチャネルにおける第３行の画像データを抽出するように構成される第２のチャネル抽出モジュールをさらに備える。
【００４５】
いくつかの実施形態において、第１のデータ抽出モジュールは、第１の畳み込みウィンドウ内の全てのチャネルにおける全ての画像データの抽出が完了したことに応じて、第１の畳み込みウィンドウ内の全ての画像データを一次元ベクトルで表すように構成されるデータ表示モジュールをさらに備え、前記一次元ベクトルの長さは、画像のチャネル数と、各畳み込みウィンドウの行数と、各畳み込みウィンドウの列数との積である。
【００４６】
いくつかの実施形態において、装置７００は、複数組の畳み込みウィンドウ内の全ての画像データをターゲットメモリに二次元行列で格納するように構成されるデータ格納モジュールをさらに備え、二次元行列の行数は複数組の畳み込みウィンドウ内の全ての畳み込みウィンドウの数であり、二次元行列の列数は画像のチャネル数と、各畳み込みウィンドウの行数と、各畳み込みウィンドウの列数との積である。
【００４７】
いくつかの実施形態において、装置７００は、行列を列単位で、第１のブロック及び第２のブロックを含む複数のブロックに区画するように構成されるブロック区画モジュールと、複数のデータ処理ユニットにより第１のブロック内の複数列のデータを並行して転置するように構成される第１の並行転置モジュールと、第１のブロック内の複数列のデータの転置が完了したことに応じて、複数のデータ処理ユニットにより第２のブロック内の複数列のデータを並行して転置するように構成される第２の並行転置モジュールと、をさらに備える。
【００４８】
いくつかの実施形態において、第１の並行転置モジュールは、前記複数のデータ処理ユニットのうちの第１のデータ処理ユニットにより第１のブロック内の第１列のデータを転置するように構成される第１の行列転置モジュールと、前記複数のデータ処理ユニットのうちの第２のデータ処理ユニットにより第２のブロック内の第２列のデータを転置するように構成される第２の行列転置モジュールと、を備える。
【００４９】
いくつかの実施形態において、ブロック区画モジュールは、複数のデータ処理ユニットの数に基づいて、行列を複数のブロックに区画するように構成される第２のブロック区画モジュールを備える。
【００５０】
図７に示した畳み込みウィンドウ組区画モジュール７１０、第１の並行抽出モジュール７２０及び第２の並行抽出モジュール７３０は、単一または複数の電子機器に含まれていてもよいことを理解されたい。また、図７に示したモジュールは本開示の実施形態を参照する方法及び／又はプロセスにおけるステップ及び／又は動作を実行することができることを理解されたい。
【００５１】
したがって、本開示の実施形態は、深層学習アクセラレータに適用するプログラマブルデータ変換方法及び装置を提供し、様々な規模の行列転置と画像の畳み込みウィンドウ抽出を柔軟にサポートすることができ、同時にハードウェアの並行性特徴を十分に利用することができ、データを高効率に提供し、行列演算モジュールの性能を発揮できる。本開示の実施形態により、プログラマブル性を備えることによりデータ変換の柔軟性が確保され、さらに複数の処理ユニットが並行動作する方式により、データの変換が効率的に行われる。また、転置や畳み込みには、本開示の実施形態により同一セットのハードウェア構造を多重化することができ、最終的に実現されるハードウェアのオーバーヘッドを低減することができる。
【００５２】
したがって、本開示のいくつかの実施形態の利点は、複数のデータ処理ユニットが並行して動作し、データ変換動作が高効率で完成されることと、プロセッサによりパラメータコンフィギュレーション命令を送信することでパラメータコンフィギュレーションが柔軟に行われ、複数の規模のデータ変換に適応することができることと、畳み込みデータ抽出のデータ変換方式により、複雑な畳み込み操作を簡単な行列乗算に変換することができることと、転置と畳み込みデータ抽出は同一セットのハードウェア構造を多重化して完成されることができ、ハードウェアリソースが節約されることと、を含むことができるが、これらに限定されない。
【００５３】
図８は、本開示の実施形態を実施するために使用できる例示的な装置８００の概略ブロック図を示している。装置８００は、本開示に記載された複数の畳み込みウィンドウ内の画像データを並行して抽出するための装置７００であり得ることを理解されたい。図に示すように、装置８００は、読み出し専用メモリ（ＲＯＭ）８０２に記憶されているコンピュータプログラム命令又は記憶ユニット８０８からランダムアクセスメモリ（ＲＡＭ）８０３にロードされたコンピュータプログラム命令によって様々な適当な動作及び処理を実行することができる中央処理装置（ＣＰＵ）８０１を備える。ＲＡＭ８０３には、装置８００の動作に必要な様々なプログラム及びデータが更に記憶されることが可能である。ＣＰＵ８０１、ＲＯＭ８０２及びＲＡＭ８０３は、バス８０４を介して互いに接続されている。図８に示すように、入力／出力（Ｉ／Ｏ）インターフェース８０５もバス８０４に接続されている。
【００５４】
装置８００において、キーボード、マウスなどの入力ユニット８０６と、様々なタイプのディスプレイ、スピーカなどの出力ユニット８０７と、磁気ディスク、光ディスクなどの記憶ユニット８０８と、ネットワークカード、モデム、無線通信送受信機などの通信ユニット８０９とを含む複数のコンポーネントは、Ｉ／Ｏインターフェース８０５に接続されている。通信ユニット８０９は、装置８００がインターネットなどのコンピュータネットワーク及び／又は様々な電気通信ネットワークを介して他の装置と情報又はデータの交換を可能にする。
【００５５】
処理ユニット８０１は、上述した方法２００のような様々な方法およびプロセスを実行する。例えば、いくつかの実施形態では、方法は、記憶ユニット８０８などの機械可読媒体に有形に含まれるコンピュータソフトウェアプログラムとして実現されてもよい。いくつかの実施形態では、コンピュータプログラムの一部又は全部は、ＲＯＭ８０２及び／又は通信ユニット８０９を介して装置８００にロード及び／又はインストールされてもよい。コンピュータプログラムがＲＡＭ８０３にロードされ、ＣＰＵ８０１によって実行されると、上述した方法における１つまたは複数の動作またはステップが実行され得る。あるいは、他の実施形態では、ＣＰＵ８０１は、他の任意の適切な形態によって（例えば、ファームウェアによって）方法を実行するように構成されていてもよい。
【００５６】
本明細書で説明した機能は、少なくとも部分的に１つまたは複数のハードウェアロジックコンポーネントによって実行されることができる。例えば、非限定的に、採用できる汎用型のハードウェアロジックコンポーネントには、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準製品（ＡＳＳＰ）、システムオンチップ（ＳＯＣ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）などが含まれる。
【００５７】
本開示の方法を実施するためのプログラムコードは、１つまたは複数のプログラミング言語のあらゆる組み合わせで作成することができる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサまたはコントローラに提供されることができ、これらのプログラムコードがプロセッサまたはコントローラによって実行されると、フローチャートおよび／またはブロック図に規定された機能または動作が実施される。プログラムコードは、完全にデバイス上で実行されることも、部分的にデバイス上で実行されることも、スタンドアロンソフトウェアパッケージとして部分的にデバイス上で実行されながら部分的にリモートデバイス上で実行されることも、または完全にリモートデバイスもしくはサーバ上で実行されることも可能である。
【００５８】
本開示のコンテキストでは、機械可読媒体は、有形の媒体であってもよく、命令実行システム、装置またはデバイスが使用するため、または命令実行システム、装置またはデバイスと組み合わせて使用するためのプログラムを含むか、または格納することができる。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であり得る。機械可読媒体は、電子、磁気、光学、電磁気、赤外線、または半導体システム、装置またはデバイス、またはこれらのあらゆる適切な組み合わせを含むことができるが、これらに限定されない。機械可読記憶媒体のより具体的な例には、１本または複数本のケーブルに基づく電気的接続、携帯型コンピュータディスク、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光学記憶装置、磁気記憶装置、またはこれらのあらゆる適切な組み合わせが含まれ得る。
【００５９】
また、各動作またはステップは、特定の順序で示されているが、所望の結果を得られるために、このような動作またはステップは示された特定の順序にてまたは順を追って実行されることを要求するか、または、図に示されたすべての動作またはステップが実行されることを要求するものと理解されるべきである。特定の環境では、マルチタスクと並列処理が有利である可能性がある。同様に、上記ではいくつかの具体的な実施詳細を説明したが、これらは本開示の範囲への制限と解釈されるべきではない。個別の実施形態のコンテキストで説明された、いくつかの特徴は、単一の実施において組み合わせて実施されることもできる。逆に、単一の実施のコンテキストで説明された様々な特徴は、複数の実施において、個別にまたは任意の適切なサブセットで実施されることもできる。
【００６０】
本開示の実施形態は、構造特徴および／または方法のロジック動作に特定された言語で記述されたが、特許請求の範囲内に限定される主題が、必ずしも上記に記載された特定の特徴または動作に限定されるものではないことを理解されたい。逆に、上述した特定の特徴および動作は、特許請求の範囲を実施するための例示的な形態にすぎない。
【図１】
0006955598.tif 000003
【図２】
0006955598.tif 000004
【図３】
0006955598.tif 000005
【図４】
0006955598.tif 000006
【図５】
0006955598.tif 000007
【図６】
0006955598.tif 000008
【図７】
0006955598.tif 000009
【図８】
0006955598.tif 000010