(57)【要約】      （修正有）【課題】セルラーニューラルネットワーク（ＣＮＮ）により大量のデータを処理することができる人工知能推論演算装置を提供する。【解決手段】人工知能推論演算装置は、プリント基板とプリント基板に実装されている幾つかの電子部品とを備える。電子部品は、無線通信モジュールと、制御装置モジュールと、メモリモジュールと、ストレージモジュールと、深層学習モデルにおいて畳み込み演算を行い入力データから特徴を抽出するよう構成されているＣＮＮベース集積回路とを有する。各ＣＮＮベース集積回路は、入力／出力データバスに動作可能に連結されている幾つかのＣＮＮ処理エンジン３０２を含む。ＣＮＮ処理エンジンは、クロックスキュー回路によりループ状に接続される。無線通信モジュールは、深層学習モデルの訓練済みフィルタ係数、入力データ、及び分類結果を送信する。【選択図】図３
2020042774.tif 000002
【特許請求の範囲】
【請求項１】
複数の電子部品が実装されているプリント基板（ＰＣＢ）を備え、
前記複数の電子部品は、
無線通信インタフェースモジュールと、
制御装置モジュールと、
深層学習モデルにおいて畳み込み演算を行って入力データの特徴を抽出するよう構成されている少なくとも一つのセルラーニューラルネットワーク（ＣＮＮ）ベース集積回路（ＩＣ）と、
を有し、
各ＣＮＮベースＩＣは、少なくとも一つの入力／出力データバスに動作可能に連結されている複数のＣＮＮ処理エンジンを含み、前記複数のＣＮＮ処理エンジンは、クロックスキュー回路によりループ状に接続されており、
各前記ＣＮＮ処理エンジンは、
対応する入力データと訓練済みのフィルタ係数とを用いて畳み込み演算結果を同時に得るよう構成されているＣＮＮ処理ブロックと、
前記ＣＮＮ処理ブロックに動作可能に連結されている、前記対応する入力データを保存するための第一メモリバッファセットと、
前記ＣＮＮ処理ブロックに動作可能に連結されている、前記訓練済みのフィルタ係数を保存するための第二メモリバッファセットと、
を含む、
人工知能推論演算装置。
【請求項２】
前記無線通信インタフェースモジュールは、前記深層学習モデルの訓練済みフィルタ係数をスマートクライアントデバイスから受信するよう構成されている、
請求項１に記載の人工知能推論演算装置。
【請求項３】
前記無線通信インタフェースモジュールは、前記スマートクライアントデバイスから入力データを受信するよう構成されている、
請求項２に記載の人工知能推論演算装置。
【請求項４】
前記無線通信インタフェースモジュールは、分類結果を前記スマートクライアントデバイスに送信するよう構成されている、
請求項３に記載の人工知能推論演算装置。
【請求項５】
前記無線通信インタフェースモジュールは、ブルートゥース（商標登録）に基づく、
請求項４に記載の人工知能推論演算装置。
【請求項６】
前記無線通信インタフェースモジュールは、ＷｉＦｉに基づく、
請求項４に記載の人工知能推論演算装置。
【請求項７】
前記スマートデバイスは、スマートフォンを含む、
請求項４に記載の人工知能推論演算装置。
【請求項８】
前記制御装置モジュールは、前記深層学習モデルの前記訓練済みフィルタ係数を前記各ＣＮＮベースＩＣ内にロードするよう構成される、
請求項１に記載の人工知能推論演算装置。
【請求項９】
前記制御装置モジュールは、受信した前記入力データに関して各前記ＣＮＮベースＩＣで前記深層学習モデルを実行するよう構成されている、
請求項８に記載の人工知能推論演算装置。
【請求項１０】
前記制御装置モジュールは、各前記ＣＮＮベースＩＣから抽出した特徴により全結合層を実行するよう構成されている、
請求項８に記載の人工知能推論演算装置。
【請求項１１】
各前記ＣＮＮ処理エンジンは、活性化及びプーリング演算を更に行う、
請求項１に記載の人工知能推論演算装置。
【請求項１２】
前記画像データは、特殊な浮動小数点形式で実装される、
請求項１に記載の人工知能推論演算装置。
【請求項１３】
前記特殊な浮動小数点形式は、５ビットの仮数と４ビットの指数とを含む、
請求項１２に記載の人工知能推論演算装置。
【請求項１４】
前記訓練済みのフィルタ係数は、特殊な浮動小数点形式で実装される、
請求項１に記載の人工知能推論演算装置。
【請求項１５】
前記特殊な浮動小数点形式は、１２ビットの仮数と２ビットの指数とを含む、
請求項１４に記載の人工知能推論演算装置。
【請求項１６】
前記複数の電子部品は、メモリモジュールとストレージとを更に有する、
請求項１に記載の人工知能推論演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習の分野に関し、特に、セルラーニューラルネットワーク（ＣＮＮ）ベースデジタル集積回路（ＩＣ）を用いた人工知能（ＡＩ）推論演算装置に関する。
【背景技術】
【０００２】
セルラーニューラルネットワーク又はセルラー非線形ネットワーク（ＣＮＮ）は、１９８８年以降、限定するものではないが画像処理を含む多くの様々な分野や課題に応用されてきた。しかしながら、従来のＣＮＮアプローチの大半は、ソフトウェアを用いた解決策（例えば、畳み込みニューラルネットワーク、再帰型ニューラルネットワーク等）か、他の用途用（図形処理、汎用計算（ｇｅｎｅｒａｌ  ｃｏｍｐｕｔａｔｉｏｎ）等）に設計されたハードウェアによるものかのいずれか、であった。結果として、従来のＣＮＮアプローチは、計算速度が遅すぎる及び／又は高価すぎるものであって、大量の画像データを処理するには実用性に欠いていた。画像データは、任意の二次元データ（例えば、静止写真、画像、ビデオストリームの一フレーム、音声データを変形したもの等）であり得る。
【０００３】
従来技術の装置による推論は、長距離クラウド接続によって機械学習モデルにデータを供給したり、そのようなデータ及び深層学習モデルを単一の演算システム内に保持したりすることによって行われてきた。但し、単一演算システムの場合には、その要件によって機械学習の商業的利用がごく限られた人に限られてしまう。なぜなら、信頼できる推論に必要な十分訓練されたモデルや、大量のデータを処理するための膨大な計算能力を所有する人がわずかしかいないからである。従来技術のクラウドによる解決策の場合は、このようなデータ処理を行えるサイトにデータを送ることで計算能力の問題を解決可能である。但し、クラウドによる解決策は、クライアントに２つの異なる問題を引き起こす。第一に、データは中央倉庫へと移動するので、そこで作業する人々にデータが晒されることとなり、クラウドを介するとデータを非公開で処理することができない。第二に、クラウドとクライアントとは遠く離れているため、データの処理速度がかなり遅いものとなってしまう。従って、このような問題、欠点、及び不具合を克服する、改良された人工知能推論演算装置とすることが望ましい。
【発明の概要】
【０００４】
この節は、本発明の幾つかの態様を要約し、幾つかの好適な実施形態を簡潔に紹介することを目的とする。この節や更には要約や発明の名称において、その目的が不明瞭にならないようにするために、単純化または省略が行われることがある。このような単純化または省略は、本発明の範囲を限定することを意図しない。
【０００５】
人工知能推論演算装置を開示する。本発明の一態様によれば、人工知能推論演算装置は、プリント基板（ＰＣＢ）とこのプリント基板に実装されている幾つかの電子部品とを備える。電子部品は、無線通信モジュールと、制御装置モジュールと、メモリモジュールと、ストレージモジュールと、深層学習モデルにおいて畳み込み演算を行い入力データから特徴を抽出するよう構成されている少なくとも一つのセルラーニューラルネットワーク（ＣＮＮ）ベース集積回路（ＩＣ）とを備える。各ＣＮＮベースＩＣは、少なくとも一つの入力／出力データバスに動作可能に連結される幾つかのＣＮＮ処理エンジンを含む。各ＣＮＮ処理エンジンは、クロックスキュー回路によりループ状に接続される。無線通信モジュールは、深層学習モデルの訓練済みフィルタ係数、入力データ、及び分類結果を送信するよう構成される。
【０００６】
本発明の目的、特徴及び利点については、添付の図面を共に参照しながら、本発明の実施形態についての以下の詳細な説明によって明らかとなるであろう。
【図面の簡単な説明】
【０００７】
本発明の特徴、態様、及び利点は、以下の説明、添付の特許請求の範囲並びに次のような添付の図面によってより良く理解されるであろう。
【図１Ａ】本発明の一実施形態に係る、入力画像データから特徴を抽出するよう設計されている集積回路の例を示すブロック図である。
【図１Ｂ】本発明の一実施形態に係る、入力画像データから特徴を抽出するよう設計されている集積回路の例を示すブロック図である。
【図２】本発明の一実施形態に係る、一以上のＣＮＮ処理エンジンの動作を制御するよう構成されている制御装置の例を示す機能ブロック図である。
【図３】本発明の一実施形態に係る、ＣＮＮ処理エンジンの例を示す図である。
【図４】本発明の一実施形態に係る、（Ｍ＋２）−画素×（Ｍ＋２）−画素領域内のＭ×Ｍ画素位置を示す図である。
【図５Ａ】本発明の一実施形態に係る、画素位置の例を示す図である。
【図５Ｂ】本発明の一実施形態に係る、画素位置の例を示す図である。
【図５Ｃ】本発明の一実施形態に係る、画素位置の例を示す図である。
【図６】本発明の一実施形態に係る、ある画素位置で３×３畳み込みを行うためのデータ配列の例を示す図である。
【図７】本発明の一実施形態に係る、ある画素位置で３×３畳み込みを行うための回路の例を示す機能ブロック図である。
【図８】本発明の一実施形態に係る、修正（ｒｅｃｔｉｆｉｃａｔｉｏｎ）の例を示す図である。
【図９Ａ】本発明の一実施形態に係る、２×２プーリング演算の例を示す図である。
【図９Ｂ】本発明の一実施形態に係る、２×２プーリング演算の例を示す図である。
【図１０】本発明の一実施形態に係る、Ｍ−画素×Ｍ−画素ブロックを（Ｍ／２）−画素×（Ｍ／２）−画素ブロックに縮小する２×２プーリング演算の例を示す図である。
【図１１Ａ】本発明の一実施形態に係る、入力画像内のＭ−画素×Ｍ−画素ブロックと対応する（Ｍ＋２）−画素×（Ｍ＋２）−画素領域の例を示す図である。
【図１１Ｂ】本発明の一実施形態に係る、入力画像内のＭ−画素×Ｍ−画素ブロックと対応する（Ｍ＋２）−画素×（Ｍ＋２）−画素領域の例を示す図である。
【図１１Ｃ】本発明の一実施形態に係る、入力画像内のＭ−画素×Ｍ−画素ブロックと対応する（Ｍ＋２）−画素×（Ｍ＋２）−画素領域の例を示す図である。
【図１２】本発明の一実施形態に係る、受け取った画像データを保存するための第一メモリバッファセットの例を示す図である。
【図１３Ａ】本発明の一実施形態に係る、フィルタ係数を保存するための第二メモリバッファセットの例について２つの動作モードを示す図である。
【図１３Ｂ】本発明の一実施形態に係る、第二メモリバッファセット内でのフィルタ係数の保存スキームの例を示す図である。
【図１４】本発明の一実施形態に係る、例示的なクロックスキュー回路を介してループ状に接続されている複数のＣＮＮ処理エンジンの例を示す図である。
【図１５】本発明の一実施形態に係る、畳み込みニューラルネットワークに基づく画像処理技術の例を示す概略図である。
【図１６】本発明の一実施形態に係る、二値化３×３フィルタカーネルを有する訓練済みの畳み込みニューラルネットワークモデルを実現するための処理の例を示すフローチャートである。
【図１７】本発明に係る、フィルタカーネル変換スキームの例を示す図である。
【図１８】データ変換スキームの例を示す図である。
【図１９】本発明の一実施形態に係る、例示的な人工知能推論演算装置の重要な部品（ｓａｌｉｅｎｔ  ｃｏｍｐｏｎｅｎｔｓ）を示す機能図である。
【図２０Ａ】本発明の一実施形態に係る、４つのＣＮＮ処理エンジンと２つのＩ／Ｏデータバスを備えたＣＮＮベースデジタルＩＣについて、画像データのデータパターンとフィルタ係数の第一の例を示す図である。
【図２０Ｂ】本発明の一実施形態に係る、４つのＣＮＮ処理エンジンと２つのＩ／Ｏデータバスを備えたＣＮＮベースデジタルＩＣについて、画像データのデータパターンとフィルタ係数の第二の例を示す図である。
【発明を実施するための形態】
【０００８】
以下の記載では、本発明を詳しく理解するための細部にわたる詳細な説明を多数行っている。しかし、それらの細部をその通りに用いなくとも発明の実施が可能であることは当業者にとって明らかであろう。本明細書での記載及び表現は、当該技術で経験のある者すなわち当業者が最も効果的にその作業の本質を他の当業者に伝えるために用いる通常の手段である。他の例では、本発明の態様を不必要に曖昧にすることを回避するため、周知の、方法、手順及び部品類について詳細には説明していない。
【０００９】
本明細書における、「一実施形態」、「ある実施形態」という表現は、その実施形態に関連して記載した特定の特徴、構造又は特性が、本発明の少なくとも一つの実施形態において含まれ得ることを示している。本明細書において「一実施形態において」という表現が様々な箇所で使われているが、これは必ずしも同じ一つの実施形態を指すというわけではなく、別々の実施形態の相互に排他的な異なる即ち代替的な実施形態でもない。更に、本発明の一以上の実施形態を表すプロセスフローチャート、図、回路においてブロックの順番は、本質的に特定の順番を何ら示すものではなく、本発明における限定を示唆するものでもない。本明細書で使用する「上」、「下」、「右」及び「左」という用語は、記載上の目的で相対的な位置を示すためのものであって、絶対的な座標系を示すものではない。
【００１０】
本発明の実施形態について、図１Ａ〜図２０Ｂを参照して以下に述べる。但し、これらの図面に関して以下に述べる詳細な記載が説明を目的とするものであり、本発明がこれらの限定された実施形態を超えた範囲に及ぶことを、当業者は容易に理解するであろう。
【００１１】
まず、デジタル集積回路（ＩＣ）１００の例を示すブロック図である図１Ａを参照すると、このデジタル集積回路１００は、本発明の一実施形態に従って入力画像から特徴を抽出するためのものである。
【００１２】
集積回路１００は、デジタル半導体チップとして実現され、ＣＮＮ処理エンジン制御装置１１０と、少なくとも一つの入力／出力（Ｉ／Ｏ）データバス１２０と動作可能に連結される一以上のニューラルネットワーク（ＣＮＮ）処理エンジン１０２とを備える。制御装置１１０は、ＣＮＮ処理エンジン１０２の様々な演算を制御するよう構成され、修正（ｒｅｃｔｉｆｉｃａｔｉｏｎｓ）等の非線形演算（例えば、シグモイド関数）による多層構造の３×３畳み込み演算及び２×２プーリング演算を行うことによって、画像処理技術を用いて入力画像から特徴を抽出する。３×３畳み込みを行うには、デジタル形式の画像データと対応するフィルタ係数とが必要であり、これらは入力／出力データバス１２０を介してＣＮＮ処理エンジン１０２に供給される。デジタル半導体チップは、論理ゲート、マルチプレクサ、レジスタファイル、メモリ、状態機械（ｓｔａｔｅ  ｍａｃｈｉｎｅ）等を備えることが知られている。
【００１３】
一実施形態によれば、デジタル集積回路１００は、拡張可能であってスケーラブルである。例えば、一つの半導体チップ上でデジタル集積回路１００を複数コピーすることができる。
【００１４】
ＣＮＮ処理エンジンは全て同じものである。説明を簡略化するために、図１Ｂには少数のＣＮＮ処理エンジンのみ（即ち、ＣＮＮ処理エンジン１２２ａ−１２２ｈ、１３２ａ−１３２ｈ）を示している。本発明において、デジタル半導体チップ上のＣＮＮ処理エンジンの数に制限はない。
【００１５】
各ＣＮＮ処理エンジン１２２ａ−１２２ｈ、１３２ａ−１３２ｈは、ＣＮＮ処理ブロック１２４と、第一メモリバッファセット１２６と、第二メモリバッファセット１２８とを備える。第一メモリバッファセット１２６は、画像データを受け取って、受取済みの画像データをＣＮＮ処理ブロック１２４に供給するよう構成される。第二メモリバッファセット１２８は、フィルタ係数を保存して、受取済みのフィルタ係数をＣＮＮ処理ブロック１２４に供給するよう構成される。一般に、一つのチップ上のＣＮＮ処理エンジンの数は、２ｎである（ｎは整数（即ち、０、１、２、３，．．．））。図１Ｂに示すように、ＣＮＮ処理エンジン１２２ａ〜１２２ｈは、第一入力／出力データバス１３０ａに動作可能に連結されており、一方ＣＮＮ処理エンジン１３２ａ〜１３２ｈは、第二入力／出力データバス１３０ｂに動作可能に連結されている。各入力／出力データバス１３０ａ〜１３０ｂは、独立してデータ（即ち、画像データとフィルタ係数と）を送信するよう構成される。一実施形態において、第一及び第二メモリバッファセットは、ランダムアクセスメモリ（ＲＡＭ）を備える。第一及び第二セットはそれぞれ論理的に定義される。言い換えると、第一及び第二セットのそれぞれの大きさは、それぞれの画像データとフィルタ係数の量を収容するよう再構成可能である。
【００１６】
ここで示した第一及び第二Ｉ／Ｏデータバス１３０ａ〜１３０ｂは、ＣＮＮ処理エンジン１２２ａ〜１２２ｈ、１３２ａ〜１３２ｈを逐次スキームで接続している。別の実施形態では、性能向上のためにデータを並列入力及び出力するという同じ目的を達成するために、少なくとも一つのＩ／ＯデータバスはＣＮＮ処理エンジンに対する他の接続スキームを有してもよい。
【００１７】
図２は、集積回路上に構成される少なくとも一つのＣＮＮ処理エンジンの様々な演算を制御するための制御装置２００の例を示す図である。制御装置２００は、画像データ読み込み制御部２１２、フィルタ係数読み込み制御部２１４、画像データ出力制御部２１６及び画像処理演算制御部２１８を制御する回路を備える。制御装置２００は更に、集積回路内の特定の構成（例えば、ＣＮＮ処理エンジンの数、入力／出力データバスの数等）を保存するためのレジスタファイル２２０を備える。
【００１８】
画像データ読み込み制御部２１２は、対応するＩ／Ｏデータバスを介した各ＣＮＮ処理エンジンへの画像データの読み込みを制御する。フィルタ係数読み込み制御部２１４は、対応するＩ／Ｏデータバスを介した各ＣＮＮ処理エンジンへのフィルタ係数の読み込みを制御する。画像データ出力制御部２１６は、対応するＩ／Ｏデータバスを介した各ＣＮＮ処理エンジンからの画像データの出力を制御する。画像処理演算制御部２１８は、畳み込み、修正（ｒｅｃｔｉｆｉｃａｔｉｏｎ）、プーリング演算等の様々な演算を制御する。これらの演算は、集積回路のユーザが定義する指示セット（例えば、畳み込み、修正、プーリング等の一連の演算を含むファイル）によってユーザが定義可能である。
【００１９】
図３は、ＣＮＮ処理エンジン３０２をより詳細に示す図である。ＣＮＮ処理ブロック３０４は、それぞれのメモリバッファからの（Ｍ＋２）−画素×（Ｍ＋２）−画素領域の画像データと対応するフィルタ係数とを用いてＭ×Ｍ画素位置で３×３畳み込みを行うことによって、Ｍ×Ｍ畳み込み演算結果を同時に得るデジタル回路を備える。この（Ｍ＋２）−画素×（Ｍ＋２）−画素領域は、Ｍ−画素×Ｍ−画素の中央部分であるＭ×Ｍ画素位置と、この中央部分を囲む一画素境界部とで形成される。Ｍは正の整数である。一実施形態において、Ｍは１４であって、従って（Ｍ＋２）は１６となり、Ｍ×Ｍは１４×１４＝１９６となって、Ｍ／２は７となる。
【００２０】
図４は、ＣＮＮ処理エンジン３０２で使用する、Ｍ×Ｍ画素位置４１０の中央部分を備える（Ｍ＋２）−画素×（Ｍ＋２）−画素領域４２０を表す図である。
【００２１】
画像データは、入力画像における画素の特性（例えば、画素の色（例えば、ＲＧＢ（赤、緑、青））値のうちの一つ、画素と観測位置との距離）を表す。一般に、ＲＧＢの値は、０と２５５との間の整数である。フィルタ係数の値は、浮動小数点整数であって、正又は負のいずれかであり得る。
【００２２】
より速く演算するために、ＣＮＮ処理ブロック３０４では、少ない数の計算性能向上技術が用いられ実施されてきた。一実施形態において、画像データの表現は、できる限り少ないビット数を用いる（例えば、５ビット表現）。別の実施形態において、各フィルタ係数は、基数点を有する整数として表される。同様に、フィルタ係数を表す整数として、できる限り少ないビット数を用いる。結果として、より速い演算とするために固定小数点数演算を用いて３×３畳み込みが行える。
【００２３】
各３×３畳み込み手続きによって、以下の式に基づく一つの畳み込み演算結果、Ｏｕｔ（ｍ，ｎ）が得られる。
2020042774.tif 000003
【００２４】
ここで、ｍ、ｎは、（Ｍ＋２）−画素×（Ｍ＋２）−画素領域の内部でどの画像データ（画素）で畳み込み演算が行われたかを同定するための対応する行及び列番号である。
【００２５】
Ｉｎ（ｍ，ｎ，ｉ，ｊ）はこの領域内の画素位置（ｍ，ｎ）に中心がある３−画素×３−画素エリアである。
【００２６】
Ｃ（ｉ，ｊ）は、９つの重み係数（ｗｅｉｇｈｔ  ｃｏｅｆｆｉｃｉｅｎｔ）Ｃ（３×３）のうちの一つを表しており、各重み係数は３−画素×３−画素エリアのうちの一つに対応する。
【００２７】
ｂはオフセット係数を表す。
【００２８】
ｉ，ｊは、重み係数Ｃ（ｉ，ｊ）の添え字（ｉｎｄｉｃｅｓ）である。
【００２９】
各ＣＮＮ処理ブロック３０４は、Ｍ×Ｍの畳み込み演算結果を同時に生成し、全てのＣＮＮ処理エンジンが同時処理を行う。
【００３０】
図５Ａ〜図５Ｃは、Ｍ×Ｍ画素位置の３つの異なる例を示す図である。図５Ａに示す第一画素位置５３１は、（Ｍ＋２）−画素×（Ｍ＋２）−画素領域内の左上角部の３−画素×３−画素エリアの中心にある。図５Ｂに示す第二画素位置５３２は、第一画素位置５３１の右側に一画素分シフトさせたものである。図５Ｃに示す第三画素位置５３３は、典型的な画素位置の例である。Ｍ×Ｍ画素位置として、この（Ｍ＋２）−画素×（Ｍ＋２）−画素領域内部の複数の重複する３−画素×３−画素エリアが含まれる。
【００３１】
各サンプリング位置で３×３の畳み込み演算を行うための、データ配列の例を図６に示す。画像データ（即ち、Ｉｎ（３×３））とフィルタ係数（即ち、重み係数Ｃ（３×３）とオフセット係数ｂ）とが例示的なＣＮＮ３×３回路６００に供給される。式（１）に従って３×３畳み込み演算を行った後、一つの出力結果（即ち、Ｏｕｔ（１×１））が生成される。各サンプリング位置において、画像データＩｎ（３×３）は、画素座標（ｍ，ｎ）６０５を中心として８つの直接隣接画素６０１〜６０４、６０６〜６０９を有する。
【００３２】
図７は、各画素位置において３×３畳み込みを行うためのＣＮＮ３×３回路７００の例を示す機能図である。回路７００は、加算器７２１、乗算器７２２、シフタ７２３、修正器（ｒｅｃｔｉｆｉｅｒ）７２４、及びプーリング演算装置７２５を少なくとも備える。デジタル半導体を実装する際、これらの全てを論理ゲート及びマルチプレクサを用いて実現可能であって、周知の方法（例えば、ヴェリログ（Ｖｅｒｉｌｏｇ）等のハードウェア記述言語）を用いて生成される。加算器７２１と乗算器７２２は、加法演算及び乗法演算に使用される。シフタ７２３は、３×３畳み込みに含まれる固定小数点数演算に応じて出力結果をシフトさせるためのものである。修正器７２４は、負の出力結果をゼロに設定するためのものである。プーリング演算装置７２５は、２×２プーリング演算を行うためのものである。
【００３３】
画像データは第一メモリバッファセット３０６に保存され、フィルタ係数は第二メモリバッファセット３０８に保存される。画像データとフィルタ係数とは共に、デジタル集積回路の各クロックで、ＣＮＮ処理ブロック３０４に供給される。フィルタ係数（即ち、Ｃ（３×３）とｂ）は、第二メモリバッファセット３０８からＣＮＮ処理ブロック３０４へと直接供給される。但し、画像データは、第一メモリバッファセット３０６からマルチプレクサＭＵＸ３０５を介してＣＮＮ処理ブロック３０４へと供給される。マルチプレクサ３０５は、クロック信号（例えば、パルス３１２）に基づいて第一メモリバッファセットから画像データを選択する。
【００３４】
または、マルチプレクサＭＵＸ３０５は、クロックスキュー回路３２０を介して第一隣接ＣＮＮ処理エンジンから（図示しない図３の左側から）画像データを選択する。
【００３５】
同時に、ＣＮＮ処理ブロック３０４に供給した画像データのコピーが、クロックスキュー回路３２０を介して第二隣接ＣＮＮ処理エンジンに（図示しない図３の右側に）送られる。クロックスキュー回路３２０は、公知の技術（例えば、Ｄフリップフロップ３２２）によって実現可能である。
【００３６】
第一隣接ＣＮＮ処理エンジンを、クロックスキュー回路３２０により形成されるループ内の上流隣接ＣＮＮ処理エンジンと呼ぶ場合がある。第二隣接ＣＮＮ処理エンジンを、下流ＣＮＮ処理エンジンと呼ぶ場合がある。別の実施形態において、クロックスキュー回路のデータフロー方向が逆の場合には、第一及び第二ＣＮＮ処理エンジンもそれぞれ逆に下流、上流隣接処理エンジンとなる。
【００３７】
各画像データグループの３×３畳み込みを事前に定義したフィルタ係数の数について行った後、畳み込み演算結果Ｏｕｔ（ｍ，ｎ）が別のクロック信号（例えば、パルス３１１）に基づいて別のマルチプレクサＭＵＸ３０７を介して第一メモリバッファセットに送られる。パルス３１１とパルス３１２との時間関係を明示するためにクロック周期３１０の例を示す。図示するようにパルス３１１はパルス３１２の一つ前のクロックであり、結果として、特定の画像データブロックがクロックスキュー回路３２０を介して全てのＣＮＮ処理エンジンによって処理された後に、３×３畳み込み演算結果が第一メモリバッファセット内に保存される。
【００３８】
畳み込み演算結果Ｏｕｔ（ｍ，ｎ）が式（１）より得られた後に、画像処理演算制御部２１８の指示によって修正手続きを行ってもよい。畳み込み演算結果Ｏｕｔ（ｍ，ｎ）がゼロ未満（即ち負の値）であればゼロと設定される。言い換えると、正の値の出力結果のみが維持される。図８に、修正結果の二つの例を示す。正の出力値１０．５は１０．５のままとし、一方−２．３は０になる。修正によって、集積回路に非線形性が生じる。
【００３９】
２×２プーリング演算が必要ならば、Ｍ×Ｍ出力結果が（Ｍ／２）×（Ｍ／２）に縮小される。（Ｍ／２）×（Ｍ／２）出力結果を第一メモリバッファセットの対応する位置に保存するために、適切なメモリアドレスをたどって４つの（Ｍ／２）×（Ｍ／２）出力結果を一つのＣＮＮ処理エンジン内で処理できるようにするような追加的なブックキーピング（ｂｏｏｋｋｅｅｐｉｎｇ）技術が必要である。
【００４０】
２×２プーリング演算について説明するために、２−画素×２−画素のブロックを、４つの出力結果のうちの最も大きい値である単一の値１０．５に減じる出力結果の第一の例を図９Ａに図示する。図９Ａに示す技術を「最大プーリング（ｍａｘ  ｐｏｏｌｉｎｇ）」と呼ぶ。図９Ｂに示す、４つの出力結果の平均値４．６を単一値として使用する場合、これを「平均プーリング（ａｖｅｒａｇｅ  ｐｏｏｌｉｎｇ）」と呼ぶ。プーリング演算には他の例もあり、例えば、「最大プーリング」と「平均プーリング」とを組み合わせた「最大平均混合プーリング（ｍｉｘｅｄ  ｍａｘ  ａｖｅｒａｇｅ  ｐｏｏｌｉｎｇ）」がある。プーリング演算の主な目的は、処理する画像データのサイズを縮小することである。図１０に、Ｍ×Ｍ画素位置を、２×２プーリング演算によって、（Ｍ／２）×（Ｍ／２）位置に縮小する例を示すが、これによって元のサイズの１／４になっている。
【００４１】
入力画像は、通常、大量の画像データを含む。画像処理作業を行うために、図１１Ａに示すように、入力画像１１００をＭ−画素×Ｍ−画素ブロック１１１１〜１１１２に区分する。次に、このような各Ｍ−画素×Ｍ−画素ブロックと関連づけられた画像データが、対応する各ＣＮＮ処理エンジンに供給される。特定のＭ−画素×Ｍ−画素ブロック内の各Ｍ×Ｍ画素位置において、対応するＣＮＮ処理ブロック内で３×３畳み込みが同時に行われる。
【００４２】
本発明において、入力画像が特定の特徴寸法を有する必要はないが、所定の画像処理手順に関して事前に定義した特徴寸法に合うように入力画像のサイズを変更する必要があるかもしれない。ある実施形態では、（２Ｋ×Ｍ）−画素×（２Ｋ×Ｍ）−画素の正方形が必要となる。Ｋは正の整数（１、２、３、４等）である。Ｍが１４でＫが４であれば、特徴寸法は２２４である。別の実施形態において、入力画像は（２Ｉ×Ｍ）−画素及び（２Ｊ×Ｍ）−画素の寸法の矩形であって、ＩとＪとは正の整数である。
【００４３】
Ｍ−画素×Ｍ−画素ブロックの境界部周辺の画素位置において３×３畳み込みを適切に行うには、隣接ブロックからの追加の画像データが必要である。図１１Ｂに、（Ｍ＋２）−画素×（Ｍ＋２）−画素領域１１３０内の（破線で囲んだ）典型的なＭ−画素×Ｍ−画素ブロック１１２０を示す。この（Ｍ＋２）−画素×（Ｍ＋２）−画素領域は、現在のブロックからのＭ−画素×Ｍ−画素ブロックの中央部と、対応する隣接ブロックからの４つの端部（即ち、上、右、下及び左）と４つの角部（即ち、左上、右上、右下及び左下）とによって形成される。更なる詳細については、図１２及び第一メモリバッファセットの対応する記述にて示す。
【００４４】
図１１Ｃは、Ｍ−画素×Ｍ−画素ブロック１１２２〜１１２４及びこれらに関連付けた（Ｍ＋２）−画素×（Ｍ＋２）−画素領域１１３２〜１１３４の２つの例を示す図である。これら２つの例示的なブロック１１２２〜１１２４は、入力画像の周辺に沿って位置している。第一の例であるＭ−画素×Ｍ−画素ブロック１１２２は、左上角部に位置しているので、この第一例のブロック１１２２は、２つの端部と１つの角部とに隣接部を有する。画像データを形成するために関連付けた（Ｍ＋２）−画素×（Ｍ＋２）−画素領域１１３２において、（斜線部で示す）隣接部がない２つの端部と３つの角部には、値「０」を用いる。同様に、第二例であるブロック１１２４の関連付けた（Ｍ＋２）−画素×（Ｍ＋２）−画素領域１１３４では、上側端部と二つの上側角部に「０」を使用する必要がある。入力画像の周辺に沿った他のブロックも同様に処理される。言い換えると、入力画像の各画素において３×３畳み込みを行うために、入力画像の周辺の外側にゼロ（０）の層が追加される。多くの周知の技術を用いてこれを実現可能である。例えば、第一メモリバッファセットのデフォルト値をゼロに設定する。隣接ブロックによって画像データが埋められない場合には、そのような端部や角部の値はゼロとなる。
【００４５】
更に、入力画像は大量の画像データを含み得るので、入力画像全体を各ＣＮＮ処理ブロックに供給することができない場合がある。従って、第一メモリバッファセットを各ＣＮＮ処理エンジン上に構成して、入力画像の画像データの一部を保存する。図１２に示すように、第一メモリバッファセットは、９つの異なるデータバッファを備える。９つのバッファは、以下に示すように（Ｍ＋２）−画素×（Ｍ＋２）−画素領域に合うように設計される。
１）中央部を表す、画像データのＭ×Ｍ画素を保存するバッファ−０
２）上側端部を表す、画像データの１×Ｍ画素を保存するバッファ−１
３）右側端部を表す、画像データのＭ×１画素を保存するバッファ−２
４）下側端部を表す、画像データの１×Ｍ画素を保存するバッファ−３
５）左側端部を表す、画像データのＭ×１画素を保存するバッファ−４
６）左上角部を表す、画像データの１×１画素を保存するバッファ−５
７）右上角部を表す、画像データの１×１画素を保存するバッファ−６
８）右下角部を表す、画像データの１×１画素を保存するバッファ−７
９）左下角部を表す、画像データの１×１画素を保存するバッファ−８
【００４６】
Ｉ／Ｏデータバスから受け取った画像データは、連続するブロック内のＭ×Ｍ画素の画像データの形式である。画像データの各Ｍ×Ｍ画素は、現在のブロックのバッファ−０に保存される。受け取ったＭ×Ｍ画素の画像データの左側の列は、前のブロックのバッファ−２に保存され、受け取ったＭ×Ｍ画素の画像データの右側の列は、次のブロックのバッファ−４に保存される。受け取ったＭ×Ｍ画素の画像データの上側と下側の行と４つの角部は、入力画像（例えば、図１１Ａ〜図１１Ｃ）の配置に基づいて対応するブロックの各バッファに保存される。
【００４７】
フィルタ係数を保存する第二メモリバッファセットの例について図１３Ａに示す。一実施形態において、一対の独立バッファＢｕｆｆｅｒ０  １３０１とＢｕｆｆｅｒ１  １３０２とが提供される。この一対の独立バッファによって、バッファ１３０１〜１３０２のうちの一つがＩ／Ｏデータバス１３３０からデータを受け取り、もう一方が（図示しない）ＣＮＮ処理ブロックにデータを供給することができる。ここでは２つの動作モードについて示す。
【００４８】
フィルタ係数の保存スキームの例について図１３Ｂに示す。一対のバッファのそれぞれ（即ち、Ｂｕｆｆｅｒ０  １３０１又はＢｕｆｆｅｒ１  １３０２）は幅（即ち、ワード長（ｗｏｒｄ  ｓｉｚｅ）１３１０）を有する。一実施形態において、ワード長は１２０ビットである。従って、各フィルタ係数（即ち、Ｃ（３×３）及びｂ）は、第一の例示的な保存スキーム１３１１において１２ビットを占める。第二の例示的な保存スキーム１３１２において、各フィルタ係数は６ビットを占めるので、各ワードに２０個の係数を保存する。第三の例示的なスキーム１３１３において、３ビットが各係数に用いられ、従って、４セットのフィルタ係数（４０個の係数）が保存される。最後に、第四の例示的な保存スキーム１３１４において、各ワードに８０個の係数が保存される。各係数は１．５ビットを占める。即ち、データアーキテクチャは、用途に応じて柔軟である。
【００４９】
別の実施形態において、Ｉ／Ｏ遅延を避けるために、フィルタ係数全体を保存する第三メモリバッファを設けることができる。一般に、入力画像は、全てのフィルタ係数を収容可能とするような特定のサイズであることが求められる。これについては、このような第三メモリバッファを収容するために第一メモリバッファセット内の使用されていない容量を割り当てることによって行える。全てのメモリバッファはＲＡＭ（ランダムアクセスメモリ）内で論理的に定義されるので、このような第三メモリバッファを作成するために周知の技術を使用可能である。言い換えると、第一及び第二メモリバッファセットは、様々な量の画像データ及び／又はフィルタ係数に合うように調整可能である。更に、ＲＡＭの総量は、画像処理作業に何が必要かによって決まる。
【００５０】
集積回路上で１以上のＣＮＮ処理エンジンを構成する場合、ＣＮＮ処理エンジンは、クロックスキュー回路を介して第一及び第二隣接ＣＮＮ処理エンジンと接続される。説明を簡略化するために、画像データ用のＣＮＮ処理ブロックとメモリバッファのみを示す。図１４にＣＮＮ処理エンジングループ用のクロックスキュー回路１４４０の例を示す。ＣＮＮ処理エンジンは、第二の例示的なクロックスキュー回路１４４０を介して接続され、ループを形成する。言い換えると、各ＣＮＮ処理エンジンは、自身の画像データを第一隣接部に送ると同時に、第二隣接部の画像データを受け取る。クロックスキュー回路１４４０は、周知の方法で実現可能である。例えば、各ＣＮＮ処理エンジンはＤフリップフロップ１４４２で接続される。
【００５１】
二つのＣＮＮ処理エンジンのみをループ状に接続するという特別な場合は、第一隣接部と第二隣接部とが同一である。
【００５２】
次に、本発明の一実施形態に係る、畳み込みニューラルネットワークに基づく画像処理技術の例を示す概略図である図１５を参照する。畳み込みニューラルネットワークに基づいて、第一のフィルタ又は重みセット１５２０を用いて畳み込みにより、多層構造の入力画像データ１５１１ａ〜１５１１ｃが処理される。画像データ１５１１ａ〜１５１１ｃは、フィルタ１５２０より大きいので、画像データの対応する重複サブ領域１５１５のそれぞれが処理される。畳み込み結果が得られたのちに、第一プーリング演算１５３０の前に活性化（ａｃｔｉｖａｔｉｏｎ）が行われてもよい。一実施形態において、活性化は正規化線形関数（ｒｅｃｔｉｆｉｅｄ  ｌｉｎｅａｒ  ｕｎｉｔ  （ＲｅＬＵ））で行われる修正で達成される。第一プーリング演算１５３０の結果、画像データが縮小され、縮小された画像データのセット１５３１ａ〜１５３１ｃ（ｒｅｄｕｃｅｄ  ｓｅｔ  ｏｆ  ｉａｇｅｒｙ  ｄａｔａ）となる。２×２プーリングの場合、縮小された画像データセットは、以前のセットの４分の１に縮小される。
【００５３】
この畳み込み−プーリング手続きが繰り返される。縮小された画像データセット１５３１ａ〜１５３１ｃは、次に、第二フィルタセット１５４０を用いて畳み込みにより処理される。同様に、各重複サブ領域１５３５が処理される。第二プーリング演算１５４０の前に別の活性化を行うことができる。幾つかの層について畳み込み−プーリング手続きが繰り返され、最終的に全結合（ＦＣ）層１５６０に接続される。画像分類において、予め定義したカテゴリについてそれぞれの確率をＦＣ層１５６０にて演算することができる。
【００５４】
このように繰り返した畳み込み−プーリング手続きを、既知のデータセット又はデータベースを用いて訓練（ｔｒａｉｎ）する。画像分類に関して、データセットには予め定義したカテゴリが含まれる。画像データを分類するための使用前に、フィルタ、活性化、及びプーリングの特定のセット、例えば、特定のフィルタ種類の組み合わせ、フィルタの数、フィルタの順序、プーリングの種類、及び／又はいつ活性化を行うか等を調整して取得可能である。一実施形態において、畳み込みニューラルネットワークは、ビジュアルジオメトリーグループ（Ｖｉｓｕａｌ  Ｇｅｏｍｅｔｒｙ  Ｇｒｏｕｐ）（ＶＧＧ１６）アーキテクチャニューラルネットに基づいており、１３の畳み込み層と３つの全結合ネットワーク層を含む。
【００５５】
訓練済みの畳み込みニューラルネットワークモデルは、図１６に示す例示的な複数の工程１６００により実現される。アクション１６０２において、まず、十分に多くの入力データ（例えば、画像データ、変換後の音声データ、光学式文字認識（ＯＣＲ）データ等）を含むラベル付きのデータセットの画像分類を基に、畳み込みニューラルネットワークモデルを訓練することによって、畳み込みニューラルネットワークモデルを得る。例えば、各カテゴリについて少なくとも４０００データがある。言い換えると、ラベル付きのデータセット内の各データは、分類すべきカテゴリと関連付けられている。畳み込みニューラルネットワークモデルは、複数の順序付けられたフィルタグループを備える（例えば、各フィルタグループは畳み込みニューラルネットワークモデル内の一つの畳み込み層に対応する）。複数の順序付けられたフィルタグループにおいて、各フィルタは、標準３×３フィルタカーネル（即ち、浮動小数点数形式の９つの係数（例えば、図１７の標準３×３フィルタカーネル１７１０）を含む。この９つのフィルタはそれぞれ、負又は正の実数（即ち、小数部（ｆｒａｃｔｉｏｎ）を備えた数）であり得る。初期の畳み込みニューラルネットワークモデルは、限定するものではないが、Ｍ×ｎｅｔ、ｃａｆｆｅ、ｔｅｎｓｏｒｆｌｏｗ等の多くの異なるフレームワークから得てもよい。
【００５６】
次に、アクション１６０４において、それぞれの標準３×３フィルタカーネル１７１０を、カーネル変換スキームセットにより、複数の順序付けられたフィルタグループ内の現在処理されているフィルタグループの対応する２値（ｂｉ−ｖａｌｕｅｄ）３×３フィルタカーネル１７２０へと変換することで、畳み込みニューラルネットワークモデルが修正される。一実施形態において、対応する２値３×３フィルタカーネル１７２０内の９つの係数Ｃ（ｉ，ｊ）にはそれぞれ、値「Ａ」が割り当てられ、この値は、以下の式で示すように、標準３×３フィルタカーネル１７１０内の係数の絶対値の平均に対応する係数の符号（ｓｉｇｎ）を掛けたものに等しい。
2020042774.tif 000004
【００５７】
フィルタグループは、複数の順序付けられたフィルタグループに定義した順序で一度に一つずつ変換される。場合によっては、２つの連続するフィルタグループが、畳み込みニューラルネットワークモデルの訓練がより効率的となるようにオプションで組み合わせられる。
【００５８】
次に、アクション１６０６において、修正した畳み込みニューラルネットワークモデルが、所望の収束基準が満たされる即ち所望の収束基準に到達するまで再訓練される。周知の収束基準が数多くあり、予め定義した再訓練工程の回数を終了すること、フィルタカーネル変換による精度低下（ａｃｃｕｒａｃｙ  ｌｏｓｓ）が収束すること等の収束基準があるがこれらに限定されない。一実施形態において、以前の再訓練工程で既に変換済みのものを含む全てのフィルタグループを微調整のために変更又は一部変更可能である。別の実施形態において、現在処理中のフィルタグループの再訓練工程の間には、既に変更済みのフィルタグループは凍結（ｆｒｏｚｅｎ）又は一部を変更しないようにする。
【００５９】
処理１６００は次に決定１６０８へと移り、未変換のフィルタグループがあるかどうかが判断される。「Ｙｅｓ」の場合には、処理１６００を戻して、全てのフィルタグループが変換されるまで１６０４から１６０６のアクションを繰り返す。その後、決定１６０８が「Ｎｏ」になる。アクション１６１０では、全てのフィルタグループ内の２値３×３フィルタカーネルの係数は、浮動小数点数形式から固定小数点数形式に変換され、ＣＮＮベース集積回路で要求されるデータ構造を収容するようにする。更に、固定小数点をＣＮＮベース集積回路内の再構成可能回路（ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  ｃｉｒｃｕｉｔ）として実装する。一実施形態において、１２ビット固定小数点数形式を用いてフィルタ係数が実装される。別の実施形態において、１２ビットの仮数と２ビットの指数を備えた特殊な浮動小数点形式を用いてフィルタ係数が実装される。更に別の実施形態において、活性化の画像データが５ビットの仮数と４ビットの指数で実装される。
【００６０】
図１８は、画素ごとに８ビット（０〜２５５）から５ビット（０〜３１）へと変換するためのデータ変換スキームの一例を示す図である。例えば、ビット０〜７は０になり、ビット８〜１５は１になる。
【００６１】
図１６の処理１６００において述べたように、畳み込みニューラルネットワークモデルはＣＮＮベース集積回路用に訓練される。訓練済みの係数や重みの集合全体を、（画像データ、音声スペクトル、指紋、掌紋、光学式文字認識（ＯＣＲ）等の）特定のデータ形式の特徴抽出器（ｆｅａｔｕｒｅ  ｅｘｔｒａｃｔｏｒ）としてＣＮＮベース集積回路に対して予め構成しておく。一般に、多くの畳み込み層は、各層内に多くのフィルタを有する。一実施形態において、ＶＧＧ１６モデルは、１３の畳み込み層を含む。ソフトウェアベースの画像分類作業では、従来、畳み込み層の演算が演算作業の大部分（例えば、９０％）を占める。この演算作業が、ＣＮＮベースＩＣ１００等の専用ハードウェアにより大幅に減少する。
【００６２】
会話、顔認識、ジェスチャー認識等の異なるドメインの特徴をより良く抽出するために、そのようなドメインに対して異なる畳み込み層係数セットを構成し設ける。そして、そのようなドメインの特定のタスクについては一般的な特徴抽出器として畳み込み層の特定のセットが使用される。例えば、顔認識ドメインにおける家族の顔認識という特定のタスク、及び、更に同じ顔認識のドメインにおける会社の従業員の顔認識という特定のタスク等である。更にこのような２つの特定タスクは、顔検出に使用される同じ畳み込み層係数のセットを共有可能である。
【００６３】
人工知能（ＡＩ）推論演算装置１９００の例について図１９に示す。このＡＩ演算装置１９００の例は、幾つかの電子部品を実装したプリント基板（ＰＣＢ）１９２０を備える。電子部品は、無線通信インタフェース１９０２、ＣＮＮベース集積回路（ＩＣ）１９０４（例えば、図１ＡのＣＮＮベースＩＣ１００）、制御装置１９０６、メモリ１９０８、及びストレージ１９１０を含む。無線通信インタフェース１９０２の例には、ＷｉＦｉ、ブルートゥース（登録商標）等を含むが、これらに限定されない。制御装置１９０６の例には、ＭＩＰＳ、ＡＲＭ等の中央処理装置を含むが、これらに限定されない。メモリ１９０８の例には、ダイナミックＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、スタティックＲＡＭ等を含むが、これらに限定されない。ストレージ１９１０の例には、不揮発性メモリ等を含むがこれに限定されない。
【００６４】
ＣＮＮベースＩＣ１９０４は、深層学習モデルにおいて畳み込み演算を行い、入力データから特徴を抽出するよう構成される。深層学習モデルの例には、ＶＧＧ１６、ＲｅｓＮｅｔ、ＭｏｂｉｌｅＮｅｔ等を含むがこれらに限定されない。無線通信インタフェースモジュール１９０２は、深層学習モデルの訓練済みフィルタ係数１９４１と入力データ１９４２とをスマートクライアントデバイス（ｓｍａｒｔ  ｃｌｉｅｎｔ  ｄｅｖｉｃｅ）１９３０から受信し、分類結果１９５１をスマートクライアントデバイス１９３０に送るよう構成される。スマートクライアントデバイス１９３０は、入力データを取得しフィルタ係数を送信することができる。スマートクライアントデバイスの例には、スマートフォン、タブレット等を含むが、これらに限定されない。深層学習モデルは更に、活性化層とプーリング層とを備える。
【００６５】
制御装置１９０６は、深層学習モデルの訓練済みのフィルタ係数１９４１を各ＣＮＮベースＩＣ１９０４内にロードするよう構成される。更に、制御装置１９０６は、受信した入力データ１９４２について各ＣＮＮベースＩＣ上で深層学習モデルを実行するよう構成される。最後に、制御装置１９０６は、各ＣＮＮベースＩＣ１９０４から抽出された特徴から全結合層（例えば、図１５のＦＣ層１５６０）を実行し（ｐｅｒｆｏｒｍｉｎｇ）、分類結果１９５１を得るよう構成される。
【００６６】
各ＣＮＮベースＩＣ１９０４は、特定のデータ構造（即ち、入力データの順序やフィルタ係数の順序）が必要である。図２０Ａ及び図２０Ｂに、データ構造の２つの例を示す。
【００６７】
まず図２０Ａを参照すると、第一の例のＣＮＮベースデジタルＩＣにおいて、入力画像データから特徴を抽出するために行われる畳み込み演算の順番が示される。この例示的なＣＮＮベースデジタルＩＣは、クロックスキュー回路（例えば、図１４のクロックスキュー回路１４４０）で接続された４つのＣＮＮ処理エンジンと２つのＩ／Ｏデータバスとを備える。Ｉ／Ｏデータバス＃１がＣＮＮ処理エンジン１及び２用であって、Ｉ／Ｏデータバス＃２がＣＮＮ処理エンジン３及び４用である。クロックスキュー回路においてデータアクセスの方向は、エンジン＃１→エンジン＃２→エンジン＃３→エンジン＃４→エンジン＃１の方向である。第一の例において、ＣＮＮ処理エンジン＃１の上流隣接ＣＮＮ処理エンジンは、ＣＮＮ処理エンジン＃４である。
【００６８】
図２０Ａの第一の例では、１２のフィルタを含む８つの画像データセットが使用される。８つの画像データセットは、２つの画像データグループに分割され、各画像データグループに４つの画像データセットが含まれる。１２のフィルタのフィルタ係数は、３つのフィルタグループに分割され、各フィルタグループに４セットのフィルタ係数が含まれる。各フィルタグループは、２つの画像データグループに対応する２つのサブグループに更に分割される。各サブグループは、２つの画像データグループのうちの対応する一つと関連する４セットのフィルタ係数の一部を備える。
【００６９】
入力画像の各ブロック（例えば、図１１Ａの入力画像１１００のうちのブロック１１１１）の畳み込み演算の順番は、画像データの第一画像データグループ（即ち、Ｉｍ（１）、Ｉｍ（２）、Ｉｍ（３）及びＩｍ（４））で始まり、各ＣＮＮ処理エンジン（即ち、エンジン＃１〜４）にロードされる（ロード−１）。クロックスキュー回路（例えば、図１４のクロックスキュー回路１４４０）の接続性に応じて周期的に畳み込み演算を行うために、第一フィルタグループの第一部分のフィルタ係数（則ち、Ｉｍ（１）〜Ｉｍ（４）に関連するフィルタ１〜４用のＦ（ｉ，ｊ））がロードされる。第一部分の順番は、上流隣接ＣＮＮ処理エンジンからの画像データの周期的なアクセスによって決定される。畳み込み演算を４回行った後、第二画像データグループ（即ち、Ｉｍ（５）、Ｉｍ（６）、Ｉｍ（７）、Ｉｍ（８））がロードされる（ロード−２）。第一フィルタグループの第二部分のフィルタ係数（則ち、Ｉｍ（５）〜Ｉｍ（８）に関連するフィルタ１〜４用のＦ（ｉ，ｊ））がロードされ使用される。畳み込み演算を４回行った後、フィルタ１〜４に関する畳み込み演算結果が出力され（出力−１）、各ＣＮＮ処理エンジンの第一メモリバッファセットの指定領域に保存される。
【００７０】
その後、残りのフィルタグループに関する畳み込み演算が継続される。第一画像データグループ（即ち、Ｉｍ（１）〜Ｉｍ（４））が各ＣＮＮ処理エンジンに再びロードされる（ロード−３）。第二フィルタグループの第一部分のフィルタ係数（則ち、Ｉｍ（１）〜Ｉｍ（４）に関連するフィルタ５〜８用のＦ（ｉ，ｊ））がロードされる。畳み込み演算が４回行われる。第二画像データグループ（即ち、Ｉｍ（５）〜Ｉｍ（８））がロードされる（ロード−４）。第二フィルタグループの第二部分のフィルタ係数（則ち、Ｉｍ（５）〜Ｉｍ（８）に関連するフィルタ５〜８用のＦ（ｉ，ｊ））が、畳み込み演算を更に４回行うためにロードされる。その後フィルタ５〜８に関する畳み込み演算結果が出力される（出力−２）。第一及び第二部分を用いて第三フィルタグループ（即ち、フィルタ９〜１２）のフィルタ係数についてこのプロセスを継続する。そしてフィルタ９〜１２に関する畳み込み演算結果が出力される（出力−３）。
【００７１】
第二の例のＣＮＮベースデジタルＩＣの畳み込み演算の順番について図２０Ｂに示す。この第二の例のＩＣは、クロックスキュー回路でのデータアクセスの方向が逆であること（即ち、エンジン＃１→エンジン＃４→エンジン＃３→エンジン＃２→エンジン＃１）を除いて、第一の例のＩＣと同じである。即ち、ＣＮＮ処理エンジン＃１の上流隣接ＣＮＮ処理エンジンは、ＣＮＮ処理エンジン＃２である。結果として、フィルタ係数の順番が異なる。但し、最終的な畳み込み演算結果は同じである。
【００７２】
他の接続スキームによりループを形成することも可能である。図２０Ａ〜図２０Ｂに示した二つの例と同様に、当業者であれば、フィルタ係数の対応する順番を導出可能である。
【００７３】
出力（即ち、出力−１、出力−２、出力−３）後に、任意のセットのフィルタ係数を破棄可能であることが、図２０Ａ〜図２０Ｂに示す例から明らかである。結果として、フィルタ係数は、先入れ先出し形式で保存される。但し、各画像データグループは、次のフィルタセット用に再ロードされる可能性があるので保存しておく必要がある。画像データはＲＡＭ（即ち、第一のメモリバッファセット）に保存されるので、再ロード動作は周知の技術により行うことができる。
【００７４】
フィルタ係数と画像データとの間での畳み込み演算は、以下の式により表される。
2020042774.tif 000005
【００７５】
尚、
Ｆ（ｉ，ｊ）：ｊ番目の画像データに関連するｉ番目のフィルタのフィルタ係数
Ｉｍ（ｊ）：ｊ番目の画像データ
Ｏｕｔ（ｉ）：ｉ番目の畳み込み演算結果
図２０Ａ〜図２０Ｂに示す例において、ｉ＝１，１２であってｊ＝１，８であるので、１２個のＯｕｔ（ｉ）、８個のＩｍ（ｊ）、１２×８＝９６個のＦ（ｉ，ｊ）フィルタ係数がある。当業者であれば、異なる数の画像データ、フィルタ、ＣＮＮ処理エンジン、及びＩ／Ｏデータバスを含む他の組み合わせを同様に導出可能であろう。画像データの数がＣＮＮ処理エンジンの数の倍数でない場合には、いずれかの空白部分をゼロとする。
【００７６】
更に、ＣＮＮ処理エンジンへと順次接続する例において２つのＩ／Ｏデータバスを示した（即ち、第一Ｉ／ＯデータバスにはＣＮＮ処理エンジンの前半、第二Ｉ／ＯデータバスにはＣＮＮ処理エンジンの後半）。しかしながら、Ｉ／Ｏデータバスを別の態様、例えば交互に、ＣＮＮ処理エンジンへと接続してもよい（即ち、第一Ｉ／Ｏデータバスには奇数のＣＮＮ処理エンジン、第二Ｉ／Ｏデータバスには他のＣＮＮ処理エンジン）。
【００７７】
本発明についてその具体的な実施形態を参照して記載してきたが、これらの実施形態は単に例示的なものであって本発明を限定するものではない。このように具体的に開示した例示的な実施形態についての様々な修正や変更が当業者には示唆されるであろう。例えば、現在の技術を基に、無線通信インタフェースモジュールについて示したが、同じことを実現するのに任意のローカル接続の近距離データ送信を用いてもよい。更に、ＡＩ演算装置の応用として画像分類を示しこれについて説明したが、画像検出等の他の種類のＡＩタスクを使用して同じことを実現してもよい。つまり、本発明の範囲は、本明細書で記載した具体的な例としての実施形態に限定されず、当業者にとって容易に示唆される全ての修正が、本出願の精神及び範囲及び添付の特許請求の範囲内に含まれるものである。
【図１Ａ】
2020042774.tif 000006
【図１Ｂ】
2020042774.tif 000007
【図２】
2020042774.tif 000008
【図３】
2020042774.tif 000009
【図４】
2020042774.tif 000010
【図５Ａ】
2020042774.tif 000011
【図５Ｂ】
2020042774.tif 000012
【図５Ｃ】
2020042774.tif 000013
【図６】
2020042774.tif 000014
【図７】
2020042774.tif 000015
【図８】
2020042774.tif 000016
【図９Ａ】
2020042774.tif 000017
【図９Ｂ】
2020042774.tif 000018
【図１０】
2020042774.tif 000019
【図１１Ａ】
2020042774.tif 000020
【図１１Ｂ】
2020042774.tif 000021
【図１１Ｃ】
2020042774.tif 000022
【図１２】
2020042774.tif 000023
【図１３Ａ】
2020042774.tif 000024
【図１３Ｂ】
2020042774.tif 000025
【図１４】
2020042774.tif 000026
【図１５】
2020042774.tif 000027
【図１６】
2020042774.tif 000028
【図１７】
2020042774.tif 000029
【図１８】
2020042774.tif 000030
【図１９】
2020042774.tif 000031
【図２０Ａ】
2020042774.tif 000032
【図２０Ｂ】
2020042774.tif 000033
【手続補正書】
【提出日】令和2年1月16日(2020.1.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の電子部品が実装されているプリント基板（ＰＣＢ）を備え、
前記複数の電子部品は、
無線通信インタフェースモジュールと、
制御装置モジュールと、
深層学習モデルにおいて畳み込み演算を行って入力データの特徴を抽出するよう構成されている少なくとも一つのセルラーニューラルネットワーク（ＣＮＮ）ベース集積回路（ＩＣ）と、
を有し、
各ＣＮＮベースＩＣは、少なくとも一つの入力／出力データバスに動作可能に連結されている複数のＣＮＮ処理エンジンを含み、前記複数のＣＮＮ処理エンジンは、クロックスキュー回路によりループ状に接続されており、
各前記ＣＮＮ処理エンジンは、
対応する入力データと訓練済みのフィルタ係数とを用いて畳み込み演算結果を同時に得るよう構成されているＣＮＮ処理ブロックと、
前記ＣＮＮ処理ブロックに動作可能に連結されている、前記対応する入力データを保存するための第一メモリバッファセットと、
前記ＣＮＮ処理ブロックに動作可能に連結されている、前記訓練済みのフィルタ係数を保存するための第二メモリバッファセットと、
を含み、
前記無線通信インタフェースモジュールは、前記深層学習モデルの訓練済みフィルタ係数をスマートクライアントデバイスから受信するよう構成され、
前記制御装置モジュールは、前記深層学習モデルの前記訓練済みフィルタ係数を前記各ＣＮＮベースＩＣ内にロードするよう構成される、
人工知能推論演算装置。
【請求項２】
前記無線通信インタフェースモジュールは、前記スマートクライアントデバイスから入力データを受信するよう構成されている、
請求項１に記載の人工知能推論演算装置。
【請求項３】
前記無線通信インタフェースモジュールは、分類結果を前記スマートクライアントデバイスに送信するよう構成されている、
請求項２に記載の人工知能推論演算装置。
【請求項４】
前記無線通信インタフェースモジュールは、ブルートゥース（登録商標）に基づく、
請求項３に記載の人工知能推論演算装置。
【請求項５】
前記無線通信インタフェースモジュールは、ＷｉＦｉに基づく、
請求項３に記載の人工知能推論演算装置。
【請求項６】
前記スマートクライアントデバイスは、スマートフォンを含む、
請求項３に記載の人工知能推論演算装置。
【請求項７】
前記制御装置モジュールは、受信した前記入力データに関して各前記ＣＮＮベースＩＣで前記深層学習モデルを実行するよう構成されている、
請求項１に記載の人工知能推論演算装置。
【請求項８】
前記制御装置モジュールは、各前記ＣＮＮベースＩＣから抽出した特徴により全結合層を実行するよう構成されている、
請求項１に記載の人工知能推論演算装置。
【請求項９】
各前記ＣＮＮ処理エンジンは、活性化及びプーリング演算を更に行う、
請求項１に記載の人工知能推論演算装置。
【請求項１０】
前記入力データは、５ビットの仮数と４ビットの指数とを含む浮動小数点形式で実装される、
請求項１に記載の人工知能推論演算装置。
【請求項１１】
前記訓練済みのフィルタ係数は、１２ビットの仮数と２ビットの指数とを含む浮動小数点形式で実装される、
請求項１に記載の人工知能推論演算装置。
【請求項１２】
前記複数の電子部品は、メモリモジュールとストレージとを更に有する、
請求項１に記載の人工知能推論演算装置。