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