IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特表2024-538714グループ畳み込みを実装するためのニューラルネットワークアーキテクチャ
<>
  • 特表-グループ畳み込みを実装するためのニューラルネットワークアーキテクチャ 図1
  • 特表-グループ畳み込みを実装するためのニューラルネットワークアーキテクチャ 図2
  • 特表-グループ畳み込みを実装するためのニューラルネットワークアーキテクチャ 図3
  • 特表-グループ畳み込みを実装するためのニューラルネットワークアーキテクチャ 図4
  • 特表-グループ畳み込みを実装するためのニューラルネットワークアーキテクチャ 図5
  • 特表-グループ畳み込みを実装するためのニューラルネットワークアーキテクチャ 図6
  • 特表-グループ畳み込みを実装するためのニューラルネットワークアーキテクチャ 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-23
(54)【発明の名称】グループ畳み込みを実装するためのニューラルネットワークアーキテクチャ
(51)【国際特許分類】
   G06N 3/0464 20230101AFI20241016BHJP
【FI】
G06N3/0464
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024520986
(86)(22)【出願日】2021-10-08
(85)【翻訳文提出日】2024-05-31
(86)【国際出願番号】 US2021054160
(87)【国際公開番号】W WO2023059336
(87)【国際公開日】2023-04-13
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】アキン,バーキン
(72)【発明者】
【氏名】グプタ,スヨグ
(72)【発明者】
【氏名】ガオ,ツァオ
(72)【発明者】
【氏名】ジョウ,ピン
(72)【発明者】
【氏名】ベンダー,ガブリエル・ミンツァー
(72)【発明者】
【氏名】リウ,ハンシアオ
(57)【要約】
畳み込みニューラルネットワーク(CNN)を使用して入力画像を処理するための方法、システム、および装置(コンピュータ可読媒体を含む)について説明する。CNNには層ブロックのシーケンスが含まれる。シーケンス内の層ブロックの第1のサブセットの各々は、i)層ブロックの入力特徴マップを受信することと、ii)グループ畳み込みを使用して入力特徴マップから拡張特徴マップを生成することと、iii)拡張特徴マップから縮小特徴マップを生成することと、を含む演算を実行するように構成される。入力特徴マップは、c1チャネルを有するh×w特徴マップである。拡張特徴マップはc2チャネルを有するh×w特徴マップであるが、縮小特徴マップはc1チャネルを有するh×w特徴マップである。c2はc1より大きい。縮小特徴マップから層ブロックの出力特徴マップが生成される。
【特許請求の範囲】
【請求項1】
1つまたは複数のコンピュータによって実行される方法であって、前記方法は、
入力画像を取得することと、
畳み込みニューラルネットワークを使用して前記入力画像を処理することと、を含み、前記畳み込みニューラルネットワークは、層ブロックのシーケンスを含み、前記シーケンス内の前記層ブロックの第1のサブセットの各々は、
前記層ブロックの入力特徴マップを受信することを含み、前記層ブロックの前記入力特徴マップは、c1チャネルを有するh×w特徴マップであり、当該第1のサブセットはさらに、
グループ畳み込みを使用して前記入力特徴マップから拡張特徴マップを生成することを含み、前記拡張特徴マップはc2チャネルを有するh×w特徴マップであり、c2はc1より大きく、当該第1のサブセットはさらに、
前記拡張特徴マップから縮小特徴マップを生成することを含み、前記縮小特徴マップは、c1チャネルを有するh×w特徴マップであり、当該第1のサブセットはさらに、
前記縮小特徴マップから前記層ブロックの出力特徴マップを生成することを含む、演算を実行するように構成されている、方法。
【請求項2】
拡張特徴マップを生成することは、
前記入力特徴マップに1×1畳み込みを適用することにより、前記入力特徴マップから初期拡張特徴マップを生成することを含み、前記初期拡張特徴マップは、c2チャネルを有するh×w特徴マップであり、前記拡張特徴マップを生成することはさらに、
前記初期拡張特徴マップに前記グループ畳み込みを適用することにより、前記初期拡張特徴マップから前記拡張特徴マップを生成することを含む、請求項1に記載の方法。
【請求項3】
前記1×1畳み込みは、入力フィルタよりも多くの出力フィルタを有する、請求項2に記載の方法。
【請求項4】
前記グループ畳み込みは、入力フィルタと出力フィルタの合計数が同じである、請求項2に記載の方法。
【請求項5】
層ブロックの前記シーケンスは、
非グループ畳み込み層ブロックとインターリーブされるグループ畳み込み層ブロックを含み、前記グループ畳み込み層ブロックは、前記グループ畳み込みを実装するために使用される、請求項1に記載の方法。
【請求項6】
前記グループ畳み込みは、層ブロックの前記シーケンス内に含まれる融合グループ化逆ボトルネック(IBN)層を使用して実装される融合グループ畳み込みである、請求項1に記載の方法。
【請求項7】
拡張特徴マップを生成することは、
前記入力特徴マップに前記グループ畳み込みを適用することにより、前記入力特徴マップから前記拡張特徴マップを生成することを含む、請求項1に記載の方法。
【請求項8】
拡張特徴マップを生成することは、
前記入力特徴マップに1×1畳み込みを適用することにより、前記入力特徴マップから初期拡張特徴マップを生成することを含み、前記初期拡張特徴マップは、c3チャネルを有するh×w特徴マップであり、c3はc2より大きく、前記拡張特徴マップを生成することはさらに、
前記初期拡張特徴マップに前記グループ畳み込みを適用することにより、前記初期拡張特徴マップから前記拡張特徴マップを生成することを含む、請求項1に記載の方法。
【請求項9】
処理デバイスと、非一時的な機械可読記憶デバイスとを備え、前記非一時的な機械可読記憶デバイスは命令を記憶し、前記命令は、演算を実行させるために前記処理デバイスによって実行可能であり、前記演算は、
入力画像を取得することと、
畳み込みニューラルネットワークを使用して前記入力画像を処理することと、を含み、前記畳み込みニューラルネットワークは、層ブロックのシーケンスを含み、前記シーケンス内の前記層ブロックの第1のサブセットの各々は、
前記層ブロックの入力特徴マップを受信することを含み、前記層ブロックの前記入力特徴マップは、c1チャネルを有するh×w特徴マップであり、当該第1のサブセットはさらに、
グループ畳み込みを使用して前記入力特徴マップから拡張特徴マップを生成することを含み、前記拡張特徴マップはc2チャネルを有するh×w特徴マップであり、c2はc1より大きく、当該第1のサブセットはさらに、
前記拡張特徴マップから縮小特徴マップを生成することを含み、前記縮小特徴マップは、c1チャネルを有するh×w特徴マップであり、当該第1のサブセットはさらに、
前記縮小特徴マップから前記層ブロックの出力特徴マップを生成することを含む、システム。
【請求項10】
拡張特徴マップを生成することは、
前記入力特徴マップに1×1畳み込みを適用することにより、前記入力特徴マップから初期拡張特徴マップを生成することを含み、前記初期拡張特徴マップは、c2チャネルを有するh×w特徴マップであり、前記拡張特徴マップを生成することはさらに、
前記初期拡張特徴マップにグループ畳み込みを適用することにより、前記初期拡張特徴マップから前記拡張特徴マップを生成することを含む、請求項9に記載のシステム。
【請求項11】
前記1×1畳み込みは、入力フィルタよりも多くの出力フィルタを有する、請求項10に記載のシステム。
【請求項12】
前記グループ畳み込みは、入力フィルタと出力フィルタの合計数が同じである、請求項10に記載のシステム。
【請求項13】
層ブロックの前記シーケンスは、
非グループ畳み込み層ブロックとインターリーブされるグループ畳み込み層ブロックを含み、前記グループ畳み込み層ブロックは、前記グループ畳み込みを実装するために使用される、請求項9に記載のシステム。
【請求項14】
前記グループ畳み込みは、層ブロックの前記シーケンス内に含まれる融合グループ化逆ボトルネック(IBN)層を使用して実装される融合グループ畳み込みである、請求項9に記載のシステム。
【請求項15】
拡張特徴マップを生成することは、
前記入力特徴マップにグループ畳み込みを適用することにより、前記入力特徴マップから前記拡張特徴マップを生成することを含む、請求項9に記載のシステム。
【請求項16】
拡張特徴マップを生成することは、
前記入力特徴マップに1×1畳み込みを適用することにより、前記入力特徴マップから初期拡張特徴マップを生成することを含み、前記初期拡張特徴マップは、c3チャネルを有するh×w特徴マップであり、c3はc2より大きく、前記拡張特徴マップを生成することはさらに、
前記初期拡張特徴マップにグループ畳み込みを適用することにより、前記初期拡張特徴マップから前記拡張特徴マップを生成することを含む、請求項9に記載のシステム。
【請求項17】
命令を記憶する非一時的な機械可読記憶デバイスであって、前記命令は、演算を実行させるために処理デバイスによって実行可能であり、前記演算は、
入力画像を取得することと、
畳み込みニューラルネットワークを使用して前記入力画像を処理することと、を含み、前記畳み込みニューラルネットワークは、層ブロックのシーケンスを含み、前記シーケンス内の前記層ブロックの第1のサブセットの各々は、
前記層ブロックの入力特徴マップを受信することを含み、前記層ブロックの前記入力特徴マップは、c1チャネルを有するh×w特徴マップであり、当該第1のサブセットはさらに、
グループ畳み込みを使用して前記入力特徴マップから拡張特徴マップを生成することを含み、前記拡張特徴マップはc2チャネルを有するh×w特徴マップであり、c2はc1より大きく、当該第1のサブセットはさらに、
前記拡張特徴マップから縮小特徴マップを生成することを含み、前記縮小特徴マップは、c1チャネルを有するh×w特徴マップであり、当該第1のサブセットはさらに、
前記縮小特徴マップから前記層ブロックの出力特徴マップを生成することを含む、機械可読記憶デバイス。
【請求項18】
拡張特徴マップを生成することは、
前記入力特徴マップに1×1畳み込みを適用することにより、前記入力特徴マップから初期拡張特徴マップを生成することを含み、前記初期拡張特徴マップは、c2チャネルを有するh×w特徴マップであり、前記拡張特徴マップを生成することはさらに、
前記初期拡張特徴マップに前記グループ畳み込みを適用することにより、前記初期拡張特徴マップから前記拡張特徴マップを生成することを含む、請求項17に記載の機械可読記憶デバイス。
【請求項19】
層ブロックの前記シーケンスは、
非グループ畳み込み層ブロックとインターリーブされるグループ畳み込み層ブロックを含み、前記グループ畳み込み層ブロックは、前記グループ畳み込みを実装するために使用される、請求項17に記載の機械可読記憶デバイス。
【請求項20】
前記グループ畳み込みは、層ブロックの前記シーケンス内に含まれる融合グループ化逆ボトルネック(IBN)層を使用して実装される融合グループ畳み込みであり、
拡張特徴マップを生成することは、前記入力特徴マップに前記グループ畳み込みを適用することにより、前記入力特徴マップから前記拡張特徴マップを生成することを含む、請求項17に記載の機械可読記憶デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
背景
本明細書は、概して、畳み込みニューラルネットワークのグループ畳み込みを実行するために集積ハードウェア回路を使用することに関する。
【背景技術】
【0002】
ニューラルネットワークは、受信した入力に対して分類などの出力を生成するために1つまたは複数のノード層を使用する機械学習モデルである。一部のニューラルネットワークには、出力層に加えて1つまたは複数の隠し層が含まれる。一部のニューラルネットワークは、画像処理用に構成される畳み込みニューラルネットワーク、または音声および言語処理用に構成される再帰型ニューラルネットワーク(RNN)であり得る。さまざまなタイプのニューラルネットワークアーキテクチャを使用して、分類またはパターン認識、データモデリングを伴う予測、および情報のクラスタリングに関連するさまざまなタスクを実行できる。
【0003】
ニューラルネットワーク層は、対応するパラメータまたは重みのセットを持つことができる。重みは、ニューラルネットワーク層を介して入力(例えば、入力のバッチ)を処理し、ニューラルネットワーク推論を計算するための層の対応する出力を生成するために使用される。入力のバッチとカーネルのセットは、入力と重みのテンソル、つまり多次元アレイとして表すことができる。ハードウェアアクセラレータは、ニューラルネットワークを実装するための専用集積回路である。回路には、回路の制御論理を使用して横断またはアクセスできるテンソルの要素に対応する位置を持つメモリが含まれている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
概要
本明細書では、ハードウェアニューラルネットワークアクセラレータ上でグループ畳み込みを効率的に実装するための技術について説明する。グループ畳み込みは、入力特徴マップを入力行列のチャネル次元に沿ってグループ化することで畳み込み、グループ畳み込みを表す各入力グループは、対応する出力グループに関連付けられる。特に、これらの技術に基づいて、グループ畳み込みを活用して、タブレットまたはスマートフォンなどの例示的なコンピューティングデバイス上に実装される機械学習モデルの畳み込みニューラルネットワーク(CNN)を使用して入力画像を処理すると、あるハードウェアおよびコンピューティング効率を実現できる。
【課題を解決するための手段】
【0005】
例えば、CNNを用いて処理するための入力画像が取得される。CNNには層ブロックのシーケンスが含まれ、シーケンス内の層ブロックの第1のサブセットの各々は、i)層ブロックの入力特徴マップを受信することと、ii)グループ畳み込みを使用して入力特徴マップから拡張特徴マップを生成することと、iii)拡張特徴マップから縮小特徴マップを生成することと、を含む演算を実行するように構成されている。層ブロックの入力特徴マップは、c1チャネルを有するh×w特徴マップである。拡張特徴マップはc2チャネルを有するh×w特徴マップであるが、縮小特徴マップはc1チャネルを有するh×w特徴マップである。c2はc1より大きい。縮小特徴マップから層ブロックの出力特徴マップが生成される。
【0006】
本明細書に記載される主題の一態様は、1つまたは複数のコンピュータによって実行される方法で具体化することができる。この方法は、入力画像を取得し、畳み込みニューラルネットワークを使用して入力画像を処理することを含む。畳み込みニューラルネットワークには、層ブロックのシーケンスが含まれる。シーケンス内の層ブロックの第1のサブセットの各々は、層ブロックの入力特徴マップを受信することを含み、層ブロックの入力特徴マップは、c1チャネルを有するh×w特徴マップである。当該第1のサブセットはさらに、グループ畳み込みを使用して入力特徴マップから拡張特徴マップを生成することを含み、拡張特徴マップはc2チャネルを有するh×w特徴マップであり、c2はc1より大きい。当該第1のサブセットはさらに、拡張特徴マップから縮小特徴マップを生成することを含み、縮小特徴マップは、c1チャネルを有するh×w特徴マップである。当該第1のサブセットはさらに、縮小特徴マップから層ブロックの出力特徴マップを生成することを含む演算を実行するように構成されている。
【0007】
これらの実装および他の実装は、各々オプションで以下の特徴の1つまたは複数を含むことができる。例えば、いくつかの実装では、拡張特徴マップを生成することは、入力特徴マップに1×1畳み込みを適用することにより、入力特徴マップから初期拡張特徴マップを生成することを含み、初期拡張特徴マップは、c2チャネルを有するh×w特徴マップである。拡張特徴マップを生成することはさらに、初期拡張特徴マップにグループ畳み込みを適用することにより、初期拡張特徴マップから拡張特徴マップを生成することを含む。
【0008】
いくつかの実装では、1×1畳み込みは、入力フィルタよりも多くの出力フィルタを有する。グループ畳み込みでは、入力フィルタと出力フィルタの合計数を同じにすることができる。層ブロックのシーケンスは、非グループ畳み込み層ブロックとインターリーブされるグループ畳み込み層ブロックを含むことができ、グループ畳み込み層ブロックはグループ畳み込みを実装するために使用される。いくつかの実装では、グループ畳み込みは、層ブロックのシーケンス内に含まれる融合グループ化逆ボトルネック(IBN)層を使用して実装される融合グループ畳み込みである。
【0009】
拡張特徴マップを生成することは、入力特徴マップにグループ畳み込みを適用することにより、入力特徴マップから拡張特徴マップを生成することを含むことができる。いくつかの実装では、拡張特徴マップを生成することは、入力特徴マップに1×1畳み込みを適用することにより、入力特徴マップから初期拡張特徴マップを生成することを含む。初期拡張特徴マップは、c3チャネルを有するh×w特徴マップであり、c3はc2より大きい。拡張特徴マップを生成することはさらに、初期拡張特徴マップにグループ畳み込みを適用することにより、初期拡張特徴マップから拡張特徴マップを生成することを含む。
【0010】
この態様および他の態様の他の実装には、方法のアクションを実行するように構成され、コンピュータ記憶デバイスに符号化される、対応するシステム、装置、およびコンピュータプログラムが含まれる。1つまたは複数のコンピュータのシステムは、システムにインストールされるソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせによってそのように構成され得、演算中にシステムがアクションを実行する。1つまたは複数のコンピュータプログラムは、データ処理装置によって実行されると、装置にアクションを実行させる命令を持つことによって、そのように構成できる。
【発明の効果】
【0011】
本明細書に記載される主題は、特定の実施形態において実装することができ、以下の利点の1つまたは複数を実現することができる。本文書で説明するグループ畳み込み技術は、グループ畳み込みベースのニューラルブロックのさまざまな組み合わせを持つ新しい畳み込みアーキテクチャを提供する。グループ畳み込みの既存の使用と比較して、グループ畳み込みニューラルブロックは他のブロックタイプとインターリーブし、例示的なMLハードウェアアクセラレータのハードウェアリソースの使用率メトリックと計算効率をより細かく制御できる。
【0012】
このアーキテクチャのグループ畳み込みニューラルブロックは、逆ボトルネックスタイルのニューラルブロックのバリエーションであり、モバイルコンピューティングデバイスまたはエッジコンピューティングプラットフォームなどのさまざまなデバイスの専用プロセッサを使用して実装される。このアーキテクチャには、ベースライン逆ボトルネック(「IBN」)層の融合またはグループ化バリアントを含むさまざまなグループ畳み込み構成が組み込まれており、入力画像に対応する入力特徴マップのチャネル次元に沿ってグループ畳み込みを実装する。グループ畳み込み技術は、非グループ畳み込み層ブロックとインターリーブされるグループ畳み込み層ブロックを備えたニューラルアーキテクチャを提供できる。
【0013】
非グループ畳み込みとグループ畳み込みベースのニューラルブロックのインターリーブにより、畳み込みニューラルネットワークの計算を伴うコンピュータビジョンタスクを実行する場合など、入力画像をより効率的に処理するための改良されるニューラルアーキテクチャが提供される。例えば、K×Kの深さ単位の畳み込み(つまり、非グループ畳み込み)と比較して、K×Kグループ畳み込みを実装するニューラルブロックは、計算のより効率的なハードウェアマッピングを実現できる。マッピングは、畳み込みニューラルネットワークを実装する専用プロセッサ内の演算回路の所与のハードウェアレイアウトに固有のものである。これにより、ハードウェアの使用率、処理の待ち時間、または集積回路のオペランド(例えば、入力や重み)の容量に合わせて最適化される方法で、グループ畳み込み層の計算を配置できるようになる。
【0014】
このアーキテクチャは、入力テンソルのチャネル次元に沿った入力の異なるグループ化にグループ畳み込みを適用するために、異なるタイプのグループ畳み込みベースのニューラルブロックを使用することができる。例えば、入力チャネルと出力チャネルの1対1の関係ではなく、システムはブロックの概念を活用してグループ畳み込みを実行し、グループ内の入力チャネルに沿ったさまざまな入力のグループ化を使用して畳み込みを実行する。これにより、入力チャネルに沿ってより多くの情報を使用できるアルゴリズムの利点が得られ、コンピュータビジョンネットワークの1つまたは複数の層での表現能力が向上し得る。
【0015】
グループ畳み込み技術には、グループ畳み込みニューラルネットワークブロックの異なる構成の自動(または手動)評価が含まれ、異なるコンピュータビジョンタスク用のさまざまなタイプのニューラルアーキテクチャを実現することができる。これらの技術を実行する例示的なシステムは、待ち時間、パラメータサイズ、計算演算の数、およびモデルの精度などの制約に対してモデルの性能を最適化するニューラルアーキテクチャを決定できる。モデルの性能は、モデルを実行するために使用される機械学習アクセラレータの所与のハードウェア集積回路レイアウトに合わせて最適化することもできる。
【0016】
本明細書に記載される主題の1つまたは複数の実装の詳細は、添付の図面および以下の説明に記載されている。主題のその他の潜在的な特徴、態様、および利点は、説明、図面、および請求項から明らかになるであろう。
【図面の簡単な説明】
【0017】
図1】画像に対してグループ畳み込みを実行するための例示的なコンピューティングシステムのブロック図である。
図2】グループ畳み込みに使用される例示的なグループ化を示すブロック図である。
図3】異なる畳み込み演算に関する機械学習モデルの例示的な属性を示す図である。
図4】畳み込みニューラルネットワークの異なる層ブロックに対応する演算を示すブロック図である。
図5図1の例示的なコンピューティングシステムで使用できる畳み込みニューラルネットワークモデルの例示的なアーキテクチャの図である。
図6】完全畳み込みおよびグループ畳み込みの計算のための例示的なループネストを示す図である。
図7】グループ畳み込みを使用して画像を処理するために使用される例示的な方法のフロー図である。
【発明を実施するための形態】
【0018】
さまざまな図面における同様の参照番号および名称は、同様の要素を示す。
詳細な説明
図1は、入力画像に対してグループ畳み込みを実行するための例示的なコンピューティングシステム100のブロック図である。システム100は、一般的に、画像104を処理する、すなわち、画像のピクセルの強度値を処理するように構成される例示的な畳み込みニューラルネットワーク102を含む。畳み込みニューラルネットワーク102には、複数の畳み込みニューラルネットワーク層108に基づく例示的なニューラルネットワークアーキテクチャが含まれている。図1の例では、畳み込みニューラルネットワーク102には複数の畳み込みニューラルネットワーク層108が含まれている。例えば、畳み込みニューラルネットワーク102にはN個(またはNセット)の層が含まれる。ここで、Nは1より大きい整数である。
【0019】
さまざまなタイプのCNNアーキテクチャ106を使用して、さまざまな機械学習タスクを実行できる。例えば、機械学習タスクは、コンピュータビジョンタスク(「画像処理タスク」とも呼ばれる)であり得る。言い換えれば、ニューラルネットワークは、入力画像を受信し、入力画像を処理して入力画像のネットワーク出力を生成するように、つまり、何らかの画像処理タスクを実行するように構成できる。本明細書では、入力画像の処理とは、ニューラルネットワークを使用して画像のピクセルの強度値を処理することを指す。例えば、タスクは画像分類であり得、所与の画像に対してニューラルネットワークによって生成される出力は、対象カテゴリのセットの各々に対するスコアであり得、各スコアは、画像にそのカテゴリに属する対象の画像が含まれている可能性の推定値を表す。
【0020】
別の例として、タスクは画像埋め込み生成であり得、ニューラルネットワークによって生成される出力は入力画像の数値埋め込みであり得る。さらに別の例として、タスクは対象検出であり得、ニューラルネットワークによって生成される出力は、入力画像内の位置、例えば、特定のタイプの対象が描かれている画像内の境界ボックスまたはその他の幾何学的領域を識別できる。さらに別の例として、タスクは画像のセグメンテーションであり得、ニューラルネットワークによって生成される出力は、入力画像の各ピクセルについて、そのピクセルが複数のカテゴリのどれに属するかを定義できる。しかし、より一般的には、タスクは、画像以外の入力を処理するタスクを含む、さまざまなタスクのいずれかになり得る。
【0021】
画像処理タスクの中には、対象検出、データ分類、パターン認識、または画像認識、さらにはデータモデリングや情報クラスタリングを伴う計算予測に関連し得る。例えば、タスクに対象検出が含まれ得、CNNは画像を処理して特定の対象を検出し、対象の検出時にその対象を識別する出力を生成する。別のタスクには、データ/画像分類が含まれ得る。この場合、CNNは画像を処理して画像の分類を決定し、画像の内容に基づいて画像の特定の分類出力を生成する。別のタスクにはパターン認識が含まれ得る。パターン認識では、CNNが画像を処理して画像内の特定のパターンを識別または認識し、画像の内容に基づいて認識されるパターンを示す出力を生成する。別のタスクには、一般的な画像認識が含まれ得る。この場合、CNNは画像を処理して画像のさまざまな要素を識別または認識し、画像の内容に基づいて認識される要素を示す出力を生成する。
【0022】
いくつかの実装では、畳み込みニューラルネットワーク102は、例示的なモバイルデバイス110に実装されるか、または例示的なモバイルデバイス110によってアクセス可能である。モバイルデバイス110は、スマートフォン、タブレット、電子ノートブック、ラップトップ、ゲームコンソール、または関連するポータブルコンピューティングデバイスであり得る。他のいくつかの実装では、畳み込みニューラルネットワーク102は、サーババンク、サーバグループ、またはマルチプロセッサシステムなどの例示的なクラウドベースのシステムに統合されるか、または例示的なクラウドベースのシステムによってアクセス可能になる。
【0023】
畳み込みニューラルネットワーク102は、1つまたは複数の機械学習ハードウェアアクセラレータ112を使用して実装することができる。各ハードウェアアクセラレータ112は、1つまたは複数の専用ハードウェア集積回路114に対応する。一般に、回路114は、ニューラルネットワーク計算を実行するハードウェア回路(例えば、専用ハードウェア回路)である。例えば、回路114の一部(またはすべて)は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、単一コアニューラルネットワークプロセッサ、またはマルチコアニューラルネットワークプロセッサなどの専用ハードウェア回路であり得る。回路114は、専用グラフィックス処理装置(GPU)である場合もある。
【0024】
ハードウェア回路114は、ニューラルネットワークのワークロードの計算を加速するように演算可能である。いくつかの実装では、ハードウェア回路114には制御論理が含まれており、これはハードウェア、ソフトウェア、またはその両方で実装され得る。制御論理は、計算に使用されるデータの取得とルーティングを含む、ニューラルネットワーク計算の命令を発行するために使用される。回路114には、ニューラルネットワークの各層の入力、入力活性化、出力、出力活性化、およびパラメータを記憶するためのメモリを含めることができる。いくつかの実装では、回路114には専用メモリ、共有メモリ、またはその両方が含まれる。例えば、回路114には、入力、入力活性化、出力、または出力活性化を記憶するための入力/活性化メモリと、各ニューラルネットワーク層のそれぞれのパラメータセットを記憶するためのパラメータメモリを含めることができる。
【0025】
回路114は、ハードウェア行列装置、計算タイルの配置、またはこれらの組み合わせなどの計算装置を含むことができる。計算装置は、ニューラルネットワークの層を介して入力を処理するためのニューラルネットワーク計算を実行するために使用される。いくつかの実装では、各行列装置または個々の計算タイルには、乗算および累算演算を実行する乗算累算セルなどの計算セルのアレイが1つまたは複数含まれている。例えば、各セルは入力と重み値の乗算を実行して積を生成し、複数のクロックサイクルにわたって積の累算(例えば、加算演算)を実行できる。
【0026】
回路114は、入力行列のチャネル次元の所与の深さに対して、入力行列の対応する部分に対して異なる重みのフィルタを畳み込むために、完全畳み込み、深さ単位の畳み込み、およびグループ畳み込みを実装する。例えば、モバイルデバイス110は、畳み込みニューラルネットワーク102とモデルのCNN層108を使用して、受信した入力104に対する認識出力または検出出力などの画像処理出力120を生成する。例えば、入力104はラップトップ122の画像であり得、モバイルデバイス110は畳み込みニューラルネットワーク102を使用して画像を処理し、画像にラップトップの描写が含まれていることを検出または認識する。
【0027】
図2は、入力データセット202の表現と、入力データセットからの入力を使用してグループ畳み込みを実行するための例示的なグループ化203とを含むブロック図である。いくつかの実装では、入力データセット202は、入力の多次元行列構造であるか、またはそこから導出される。例えば、行列構造は、各々が空間次元X×Yを持つZinチャネルを含む入力テンソルであり得る。行列構造(またはテンソル)は、入力のセット、活性化入力のセット、または重み入力のセットのいずれかを表すことができる。場合によっては、本明細書では、活性化入力のセットの行列構造を入力特徴マップと呼び、重み入力のセットの行列構造をカーネル行列構造と呼ぶ。
【0028】
図2の例では、入力データセット202は、2つの(X、Y)空間次元と1つの(Z)チャネル次元の3次元を有する行列構造(またはテンソル)である。空間次元に関しては、いくつかの実装では、これらの次元は、活性化入力のセットの空間または位置に対応する。例えば、畳み込みニューラルネットワーク102が2次元の画像104を処理している場合、行列構造は、画像の空間座標、つまりX、Y座標に対応する2つの空間次元を持つことができる。チャネル次元に関しては、この次元は入力(例えば、活性化入力)からの特徴に対応する。チャネル次元は、Z、Zin、またはチャネル次元を参照して説明される。ここで、「チャネル」は画像のカラーチャネルに対応し得る。
【0029】
システム100は、例えば入力データセット202のチャネル次元の深さレベルを参照して、グループ畳み込みの分割を決定するように構成されている。各入力チャネルには対応する深さレベルがあり得る。例えば、図2の行列構造には、Zin次元に沿って拡張される深さレベルがある。例として、例示的な行列構造202が、畳み込みニューラルネットワーク層への活性化入力のセットとして送信される3×3×3の画像を表す場合、画像のX次元とY次元(3×3)は空間次元であり得、Z次元(3)はR、G、およびB値に対応するチャネル次元であり得る。
【0030】
上述のように、システム100は、例示的な入力特徴マップのチャネル次元に沿ってグループ畳み込みの分割を決定することができる。例えば、システム100は、チャネル次元に沿って入力グループ210-1の第1の分割と、チャネル次元に沿って入力グループ210-2の第2の分割を決定できる。いくつかの実装では、システム100は、チャネル次元に沿ってn個のグループ化210-nを決定する。ここで、nは1以上の整数である。入力特徴マップ202が、活性化入力のセットとして送信される3×3×3の画像を表す例では、グループ畳み込みの入力グループ210-1を定義する第1の分割は、9つの「1」活性化入力(例えば、赤の値)の特徴に対応し得、グループ畳み込みの入力グループ210-2を定義する第2の分割は、9つの「2」活性化入力(例えば、緑の値)の特徴に対応し得、グループ畳み込みの入力グループ210-3を定義する第3の分割は、9つの「3」活性化入力(例えば、青の値)の特徴に対応し得る。
【0031】
上で説明したように、グループ畳み込みは、入力特徴マップを入力行列のチャネル次元に沿ってグループ化することによって畳み込み、グループ畳み込みを表す各入力グループ210-nは、対応する出力グループ220-nに関連付けられる。畳み込みニューラルネットワーク102は、1つまたは複数の畳み込みニューラルネットワーク層108を使用して、受信した入力202に対する出力206(例えば、分類)を生成する。例えば、各畳み込みニューラルネットワーク層には、カーネル204のセットが関連付けられている。カーネル204は、グループ畳み込みの構成に従って分割され得るため、各入力グループ210-nが対応するカーネル/重み行列と畳み込まれて畳み込み出力220-nが生成される。図2の例では、入力グループ210-1は対応するカーネル行列212と畳み込まれて畳み込み出力220-1が生成され、一方、入力グループ210-2は対応するカーネル行列214と畳み込まれて畳み込み出力220-2が生成される。
【0032】
システム100は、制御パラメータgの値を動的に決定するように構成されており、gは1より大きい整数である。システム100は、Zin/gを計算することによってグループサイズを決定するようにも構成されている。ここで、Zinは入力テンソルのチャネル次元に沿った入力チャネルの数であり、gは制御パラメータによって定義されるグループの数である。制御パラメータgは、グループ畳み込みの数(例えば、分割)を定義するために使用される。場合によっては、gの値はシステム100で動的に決定されるか、または所与の演算に対してシステム100で事前定義され得る。例えば、グループ畳み込みの数を定義する制御パラメータgは、システム100のコンパイラによって事前定義(および/または埋め込み)することも、実行時に動的に決定することもできる。
【0033】
いくつかの実装では、システム100は、要求される特定のタイプの機械学習タスクに基づいて、グループ畳み込みの数(例えば、分割)を定義し、そのタスクに応じて制御パラメータgの値を設定する。他のいくつかの実装では、システム100は、i)処理される機械学習タスクのタイプ、ii)畳み込みニューラルネットワークのニューラルアーキテクチャ、iii)コンピューティング環境、iv)性能目標、またはv)これらの組み合わせに基づいて、グループ畳み込みの数(例えば、分割)を定義する。例示的なコンピューティング環境には、クラウドベースのコンピューティング環境やモバイルデバイスコンピューティング環境が含まれ得る。性能目標には、速度、待ち時間、ハードウェア使用率、モデルの精度、パラメータサイズ、またはこれらの組み合わせが含まれ得る。
【0034】
グループ畳み込みは、畳み込みの一般化される形式として記述することができる。いくつかの実装では、システム100は、制御パラメータに特定の値を割り当てることによって制御パラメータgを初期化する。制御パラメータgの初期化される値または割り当てられる値は、グループ畳み込みの分割を制御するために使用できる。例えば、システム100が、チャネル次元全体のデータを使用する畳み込み演算(例えば、完全畳み込み)が必要であると決定した場合、システム100は制御パラメータの値をg=1に設定し、行列構造202の関連データを使用して完全畳み込みをトリガーおよび/または実行する。
【0035】
関連して、システム100は、より大規模なニューラルネットワーク計算における所与のステップに必要な深さ単位に分離可能な畳み込みのグループ化を決定することができる。例えば、システム100が、チャネル次元の一部のデータを使用する2つ以上の深さ単位に分離可能な畳み込みが必要であると決定した場合、システム100は制御パラメータを所望の値(例えば、g=4)に設定し、行列構造202内の関連するデータ部分を使用して2つ以上(例えば、4つ)の深さ単位に分離可能な畳み込みをトリガーおよび/または実行する。いくつかの実装では、2つ以上のグループ畳み込みの計算が、順次、同時に、またはこれらの組み合わせで実行される。例えば、2つ以上の深さ単位に分離可能な畳み込みの各々に対するそれぞれの計算セットの一部(またはすべて)は、順次または並列に実行できる。
【0036】
上述のように、本文書で説明するグループ/グループ化畳み込み技術は、少なくとも、例示的なMLアクセラレータのハードウェアリソースの使用率メトリックおよび計算効率に対するより細かい制御を提供する。いくつかの実装では、これらのグループ畳み込み技術は、例示的な機械学習モデルのある属性または性能メトリックに影響を与え、制御するために使用される多目的ブロックまたは制御ノブを提供する。例えば、1からチャネル数(z)までの間の制御パラメータgの値を選択すると、完全畳み込みと深さ単位に分離可能な畳み込みの2つの例示的な制約間の連続体が提供される。これについては以下でさらに詳しく説明する。
【0037】
図3は機械学習モデルの例示的な属性を示す。一般に、属性は、上記の畳み込みニューラルネットワーク102を使用して実行されるさまざまな畳み込み演算に対応する。例えば、属性302は、完全畳み込みの演算を実行するために使用されるパラメータ数と乗算累算セル(MAC)を示し、属性304は、深さ単位の畳み込みの演算を実行するために使用されるパラメータ数と乗算累算セルを示し、属性306は、グループ畳み込みの演算を実行するために使用されるパラメータ数と乗算累算セルを示す。
【0038】
制御パラメータgおよびグループ畳み込みの構成は、所与のタスクに使用されるパラメータ(例えば、トレーニング可能なパラメータ)の数、ならびにタスクの演算を実行するために使用される乗算累算セルの数を制御するために決定および/または調整することができる。機械学習モデルのこれらの各例示的な属性302、304、306は、モデルのさまざまな性能メトリックに対応する影響を与える、または影響する可能性がある。例えば、トレーニング可能なパラメータの数および/または乗算累算セル(または演算)の数の増加または減少は、機械学習モデルの精度、速度、および/または待ち時間に対応する影響を与える。別の例では、完全畳み込みに比べて、深さ単位の畳み込みの使用は軽量で低コスト(つまり、リソースをあまり消費しない)のオプションになり得るが、MLアクセラレータの集積回路で深さ単位の畳み込みを実行すると、回路のハードウェアリソースの利用率が低下することがよくある。
【0039】
例えば、深さ単位(または深さ単位に分離可能)畳み込みを実行する場合、数十または数百のハードウェア乗算累算セルを含む回路114の標準ハードウェアアレイでは、所与の計算サイクルでそれらのハードウェアセルの使用率が3%になる可能性があり、一方、待ち時間は最小限または少なくなる。したがって、深さ単位の畳み込みを使用すると高速になる可能性があるが、ハードウェアの使用率が低いため非効率的でもある。逆に、完全畳み込みを実行する場合、回路114のハードウェアアレイは大幅に高い使用率(例えば、73%)になる可能性があり、その結果、アレイの乗算累算セルの大部分が所与の計算サイクルに使用される。深さ単位の畳み込みと比較すると、完全畳み込みを実行する際のこのより高い使用率は、多くの場合、計算待ち時間が大幅に長くなるという代償を伴う。
【0040】
上述のように、本文書で説明するグループ畳み込み技術は、例示的なMLハードウェアアクセラレータのハードウェアリソースの使用率メトリックおよび計算効率をより細かく制御する。制御パラメータgの値を1からチャネル数(z)までの間で選択すると、完全畳み込み(308)と深さ単位に分離可能な畳み込み(310)という2つの例示的な制約の間の連続体が実現される。システム100は、図2の例に示すように、チャネル次元の深さレベルを参照してグループ畳み込みの分割を決定できる。制御パラメータgは、グループ畳み込みの数(例えば、分割)を定義するために使用される。
【0041】
図3の例示的なグラフ312は、完全畳み込み(308)と深さ単位の畳み込み(310)との間の連続体に沿って、2からチャネル数(z)までの間のgの異なる値(324)の選択に対する例示的なパラメータ数320およびMAC数322を示している。この例では、zin次元は256である。グラフ312は、グループ畳み込みの値(g)の対応する増加に対する、トレーニング可能なパラメータの数と乗算累算セル(または演算)の数の減少の例を示している。
【0042】
上で説明したように、回路114には、グループ畳み込み層などの層の出力を計算するために回路の制御論理を使用して横断またはアクセスすることができるテンソルの要素に対応する位置を持つメモリを含めることができる。メモリから取得される要素(例えば、入力または活性化)は、層の複数の出力を計算するのに役立つ必要がある。重みの数(つまり、パラメータ)も、グループ化のサイズに応じて変化する。いくつかの実装では、メモリからのパラメータの転送がボトルネックとなり、計算の待ち時間が増加し得る。優先されるニューラルネットワークアーキテクチャを決定する際に、検索データまたはシミュレーションの例示的なセットから、パラメータ転送時間に関するボトルネックが示され得る。次に、開示されるグループ畳み込みの概念とグループ畳み込みベースのニューラルブロックを使用して、パラメータの数を減らし、機械学習タスクの計算時間を改善または加速するアーキテクチャを定義できる。
【0043】
図4は、プロセスブロック410、プロセスブロック420、およびプロセスブロック430の例を示すブロック図である。各プロセスブロック410、420、430には、1つまたは複数の層ブロックが含まれる。一般に、各プロセスブロック410、420、430は、畳み込みニューラルネットワークの異なる層ブロックによって表すことができる。図4の例では、プロセスブロック410、420、および430の各々は、所与の畳み込み演算に対して実行される演算のサブセットであり得る。畳み込み演算は、畳み込みニューラルネットワーク102を使用して実行され、畳み込みニューラルネットワーク102は、上記の例示的なハードウェア集積回路114上に実装できる。
【0044】
ニューラルネットワークブロックは、単一の層、または複数の層を含むニューラルネットワークの構成要素を記述することができる。モバイルビジョンモデルなどの例示的なコンピュータビジョンモデルで広く使用されている共通ブロックは、逆ボトルネック(IBN)層ブロック402(「IBN層402」)である。一般に、IBNブロックは、複数の畳み込み層をある方法で組み合わせた、より大きなニューラルアーキテクチャのマクロブロックであり得る。IBN層を含む複数のタイプの層(またはブロック)が、例示的な分類または対象検出ネットワークを形成するための構築ブロックとして使用される。
【0045】
IBN層402は、点単位の畳み込み(404)、K×Kの深さ単位の畳み込み(405)、および最終的な点単位の畳み込み(406)を含むことができる。点単位の畳み込みはチャネル次元を拡張し、この点単位畳み込みの例が図4に「1×1畳み込み(拡張)」として示されている。K×Kの深さ単位畳み込みカーネルは、点単位の畳み込みに続いて、チャネル次元の拡張される深さに適用される。最終的な点単位の畳み込み(406)は、拡張されるチャネル次元をより小さい値に投影する。この最終的な点単位の畳み込みの例は、図4に「1×1畳み込み(投影)」として示されている。
【0046】
IBN層ブロック402のようなK×Kの深さ単位の畳み込みの使用は非常に一般的である。これは、拡張後、大きなまたは拡張されるチャネル次元にわたる完全畳み込みを計算すると、処理および計算リソースの点で非常にコストがかかるためである。いくつかの実装では、点単位の畳み込み(404)とK×K深さ単位の畳み込み(405)は、融合IBN層407を表すK×K完全畳み込み(融合拡張)プロセスブロックに置き換えられる。一般に、融合IBN層407は、拡張および深さ単位の畳み込み演算を単一の完全畳み込みニューラルブロックに統合する。
【0047】
完全畳み込みには、多数のパラメータ/重みが関与する可能性があり、集積回路のハードウェア計算リソースのかなりの割合が必要になり得る。前述のように、このようなリソースの例としては、回路114のハードウェア計算アレイ(例えば、シストリックアレイ)の乗算累算セル、集積回路114のベクトル装置、またはその両方が挙げられ得る。対照的に、以下に説明するブロック414、416、422、432などの開示されるニューラルブロック代替手段を使用して実装される開示されるグループ畳み込み技術は、入力チャネルのセット(例えば、大きな入力チャネル)のトレーニング可能なパラメータの数を増やすための改善されるアプローチを提供し、それによってモデルの精度を向上させるが、非グループ畳み込み代替手段に比べて計算コストは低くなる。
【0048】
ここで、プロセスブロック410を参照すると、グループ化IBN漸進的投影(または漸進的拡張)ブロックが示されており、ここで、上述のK×K深さ単位の畳み込み(405)がK×Kグループ畳み込み(414)または(416)に置き換えられている。プロセスブロック410は、チャネル次元の漸進的投影を実行するためにK×Kグループ畳み込み(414)を実装する第1の例、またはチャネル次元の漸進的拡張を実行するためにK×Kグループ畳み込み(416)を実装する第2の例を有することができる。
【0049】
プロセスブロック410の第1の例では、システム100は、入力特徴マップ(例えば、入力438)に1×1畳み込み(拡張)(404)を適用することにより、入力特徴マップから拡張特徴マップを生成することができる。入力特徴マップは、c1チャネルを有するh×w特徴マップであり得る。この拡張特徴マップは、c2チャネルを有するh×w特徴マップであり得る。ここで、c2はc1より大きい。いくつかの実装では、1×1畳み込みには入力フィルタよりも多くの出力フィルタがある。K×Kグループ畳み込み(414)は、拡張特徴マップに適用され、チャネル次元の漸進的投影を実行する。例えば、畳み込みニューラルネットワーク102は、畳み込みニューラルネットワーク102のグループ畳み込み層で実装されるグループ畳み込みを使用して、拡張特徴マップに対して漸進的投影を実行できる。グループ化IBN漸進的投影は、投影専用のパラメータとメインのK×K畳み込み演算子をトレードオフする柔軟性を提供できる。
【0050】
プロセスブロック410のこの第1の例では、最終的な点単位の畳み込み(406)は、拡張されるチャネル次元をより小さい値に投影する。したがって、グループ畳み込みに関連付けられるK×Kカーネルは、1×1投影(406)がチャネルサイズを最終値まで下げる前に、チャネルサイズの初期縮小を実行できる。各加算ブロック418は、所与のプロセスブロック(例えば、410)に供給される入力438と例示的な畳み込み出力436を加算するために使用できるオプションの残差(またはスキップ)接続である。例示的な合計440は、対応するプロセスブロックで実行される演算の出力として渡される。
【0051】
プロセスブロック410の第2の例では、システム100は、入力特徴マップ(例えば、入力438)に1×1畳み込み(拡張)(404)を適用することにより、入力特徴マップから初期拡張特徴マップを生成することができる。この初期拡張特徴マップは、c2チャネルを有するh×w特徴マップであり得る。ここで、c2はc1より大きい。システム100は、初期拡張特徴マップに対してK×Kグループ畳み込み(416)を適用することにより、初期拡張特徴マップから拡張特徴マップを生成する。例えば、畳み込みニューラルネットワーク102は、畳み込みニューラルネットワーク102のグループ畳み込み層で実装されるグループ畳み込みを使用して、初期拡張特徴マップから拡張特徴マップを生成することができる。拡張特徴マップは、c3チャネルを有するh×w特徴マップであり得る。ここで、c3はc2より大きい。このグループ化IBN漸進的拡張演算は、拡張専用のパラメータとメインのK×K畳み込み演算子をトレードオフする柔軟性を提供できる。グループ化IBN漸進的拡張では、拡張層の一部を融合せずに維持し、メインのK×K畳み込みの前にグループ間でチャネル単位の畳み込みを可能にし得る。プロセスブロック410の最終的な点単位の畳み込み(406)は、拡張されるチャネル次元をより小さい値に投影する。
【0052】
ここで、プロセスブロック420を参照すると、このプロセスブロックは、上述の1×1畳み込み(拡張)(404)およびK×K深さ単位の畳み込み(405)がK×Kグループ畳み込み(422)に置き換えられる、融合グループ化IBNブロックである。このK×Kグループ畳み込み(422)には、少なくとも、点単位(404)+深さ単位(405)の対を置き換え、K×Kグループ畳み込み(422)を介してそれらの演算の態様を融合してチャネル次元を拡張できるため、「融合拡張」という指定が含まれている。したがって、プロセスブロック420では、システム100は、入力特徴マップにK×Kグループ畳み込み(422)を適用することにより、例示的な入力特徴マップ(例えば、入力438)から拡張特徴マップを生成することができる。例示的な入力特徴マップは、c1チャネルを有するh×w特徴マップであり得る。拡張特徴マップは、c2チャネルを有するh×w特徴マップであり得る。ここで、c2はc1より大きい。プロセスブロック420の最終的な点単位の畳み込み(406)は、拡張されるチャネル次元をより小さい値に投影する。前述のように、対応する合計440は、プロセスブロック420で実行される特定の演算の出力として渡される。
【0053】
いくつかの実装では、融合グループ畳み込みブロック422は、融合IBN層407の代替手段を提供し、チャネル次元に沿ったより効率的な処理を可能にする。例えば、これらの効率は、コンピュータビジョンモデルの後の段階で実現され得る。場合によっては、これらの後の段階は、チャネル次元に沿った畳み込みに関連付けられたデータ解像度が非常に大きい場合に対応する。融合グループ畳み込みによって得られる処理速度の向上は、グループ畳み込み演算を含むプロセスブロック420が特定のタイプの専用集積回路を使用して実行される場合に特に最適化され得る。例えば、専用集積回路は、メモリから回路の1つまたは複数の計算セルに層入力をブロードキャストするブロードキャスト入力バスを含むニューラルネットワークプロセッサであり得る。
【0054】
融合グループ畳み込みブロック422は、グループ化IBN層414に比べてわずかに高いパラメータ数を必要とし得る。完全畳み込みと深さ単位に分離可能な畳み込みの2つの制約間の連続体では、融合グループIBN422は連続体の上位にある。例えば、融合グループ化IBN層422は、深さ単位の畳み込みから完全な連続体までの連続体に沿った完全畳み込みにより近い可能性がある。
【0055】
ここで、プロセスブロック430を参照すると、このプロセスブロックは、上述のK×Kの深さ単位の畳み込み(405)がK×Kのグループ畳み込み(432)に置き換えられるグループ化IBNブロックである。上述のように、システム100は、入力438に1×1畳み込み(404)を適用して、拡張特徴マップを生成する。K×Kグループ畳み込み(432)は、畳み込みニューラルネットワーク102のグループ畳み込み層で適用される。K×Kグループ畳み込み(432)は、入力フィルタと出力フィルタの合計数を同じにすることができる。他のプロセスブロックと同様に、プロセスブロック430の最終的な点単位の畳み込み(406)は、拡張されるチャネル次元をより小さい値に投影し、対応する合計440がプロセスブロック430で実行される特定の演算の出力として渡される。
【0056】
プロセスブロック430で実行される畳み込み演算は、ベースラインIBN層に比べてより小さな拡張率を伴うことができる。これらのより小さな拡張率により、パラメータ数が減少し得る。パラメータ数を回復するために、プロセスブロック430(および他のプロセスブロック)の畳み込み演算では、チャネル間情報を活用するK×Kカーネルのグループ畳み込みを使用できる。K×Kグループ畳み込み(432)は、入力チャネル次元に沿った畳み込みを含む他のブロックタイプとインターリーブすることができる。このインターリーブパターンにより、グループ間の入力チャネル畳み込みの不足を軽減できる。
【0057】
一般に、プロセスブロック410、430のそれぞれのアーキテクチャは、K×Kの深さ単位の畳み込みをK×Kのグループ畳み込みに置き換える。K×Kの深さ単位の畳み込みをK×Kグループ畳み込みに置き換えることの少なくとも1つの利点は、K×Kグループ畳み込みでは、完全畳み込みに比べて待ち時間が短縮され、より多くのトレーニング可能なパラメータが生成されることである。K×Kグループ畳み込みの使用による追加のトレーニング可能なパラメータは、モデルの精度の向上に貢献する。この精度の向上は、深さ単位の畳み込みと比較すると、待ち時間がわずかまたは最小限に増加するだけで達成できる。
【0058】
深さ単位の畳み込みをグループ畳み込みに置き換えることは、モバイルデバイスまたはエッジコンピューティングアプリケーション用に構成されるテンソル処理装置(TPU)などの特定のタイプのハードウェアアクセラレータの畳み込み演算に固有のものであり得る。いくつかの実装では、K×Kの深さ単位の畳み込みに対して、K×Kグループ畳み込みは、集積回路114のハードウェアレイアウトに関してより効率的なハードウェアマッピングを実現するように構成され得る。例えば、入力チャネルと出力チャネルの1対1の関係ではなく、グループ畳み込みではブロックの概念を活用して、グループ内の入力チャネルに沿って畳み込みを実行できる。これにより、入力チャネルに沿ってより多くの情報を使用できるアルゴリズムの利点が得られ、コンピュータビジョンネットワークの1つまたは複数の層での表現能力が向上する。
【0059】
ある機械学習タスクの計算がCNNのより深い層に進むにつれて、チャネル次元が大きくなる可能性がある。出力精度や計算/処理速度などのある性能の向上を実現するために、従来のアプローチでは、上記の融合IBN層407などの融合IBN層ブロックの使用が検討された。しかし、入力チャネル(zin)のそれぞれの次元が大きいため、完全畳み込みを実行するコストがかかり、計算速度が低下するため、融合IBN層の使用は非現実的になる。
【0060】
従来のアプローチと比較して、プロセスブロック410、420、および430のそれぞれのグループ畳み込みは、ある処理ペナルティを最小限に抑えながら、モデルの性能を各々向上させることができるニューラルブロックの代替手段を提供する。例えば、融合グループ化IBNブロック422を使用して、従来のIBN層または融合IBN層に関連付けられる待ち時間や拡張/大規模データセット処理のペナルティなしに、性能の向上を実現できる。一般に、グループ畳み込みブロック414、416、422、432の各々は、1つまたは複数のグループ畳み込み層を含むことができるニューラルネットワークブロックである。さらに、各グループ畳み込みブロック414、416、422、432は、入力チャネル次元に沿って畳み込みを実装する他の層またはブロックタイプとインターリーブできる。インターリーブされるニューラルブロックの例を図5に示す。
【0061】
インターリーブパターンは、グループ間の入力チャネル畳み込みの不足を軽減することができる。例えば、グループ畳み込みではチャネル間情報が使用されるが、そのような情報はグループのみに限定されており、グループを使用する場合は、チャネル次元に沿って情報を混合するためにシャッフル演算が通常必要になる。インターリーブパターンでは、これらの追加のシャッフル演算子(例えば、ShuffleNet)の使用も回避される。ブロック410および430と同様に、例えばブロック422を介した融合グループ畳み込み演算では、ベースラインIBNに比べてより多くのトレーニング可能なパラメータを生成でき、あるタイプのテンソル形状に対して、ベースラインIBNおよび融合IBN層と比較して処理速度の向上が可能になる(例えば、実行速度が速くなる)。
【0062】
いくつかの実装では、深さ単位の畳み込みは入力チャネルと出力チャネルを同じサイズに制限するが、グループ畳み込みは異なるサイズを有効にすることができる。例えば、K×Kグループ畳み込み(414)カーネルは、1×1投影によってチャネルサイズが最終値まで下げられる前に、チャネルサイズの初期縮小を実行できる。ここでの1つの仮定は、グループ畳み込みによってチャネルが最終的なチャネル次元に縮小され、それにより、1×1投影が排除されると、グループあたりのチャネル深さ(zo)が小さいため、性能が最適よりも低くなる(例えば、低下する)可能性があるということである。しかし、これは、漸進的拡張の実装を可能にする集積回路構成によってグループ畳み込みがネイティブにサポートされている場合は、軽減できる。例えば、回路構成には、集積回路の個別のMACに入力を渡すことができる入力バスを含めることができる。
【0063】
システム100は、複数の異なるタイプのグループ畳み込みブロックから選択するように演算可能である。例えば、システム100は、上記のグループ畳み込みブロック414、416、422、432に加えて、K×Kグループ畳み込みを実装する融合投影グループ化畳み込みブロックを選択することもできる。融合投影グループ化畳み込みは、点単位の投影をK×Kメイン畳み込みに融合する(点単位の拡張を融合する代わりに)。テンソルの形状に応じて、融合投影グループ化IBNは、融合IBNと比較して同様の処理効率を達成しながら、より多くのトレーニング可能なパラメータを提供できる。融合投影グループ化IBNは、投影層の一部を融合せずに保持し、メインのK×K畳み込みの後にグループ間でチャネル単位の畳み込みを可能にする。
【0064】
図5は、図1の例示的なコンピューティングシステムで使用できる機械学習モデル102の畳み込みニューラルネットワークの例示的なアーキテクチャ500である。ニューラルアーキテクチャ500は、畳み込み演算の複数のそれぞれのセットを実装して、例示的な入力画像のさまざまな特性を取得できる。いくつかの実装では、システム100は、図4の例を参照して上で説明したグループ化IBNオプションとグループ化されていないIBNオプションから、さまざまなIBN層/ブロックオプションを戦略的に選択して配置するように演算可能である。いくつかの実装では、システム100は、スタックされる、接続される、または組み合わせられる構成で演算を選択して配置し(つまり、それらを一緒に配置して組み合わせる)、大規模なコンピュータビジョンネットワーク/モデルを実装するために使用できる例示的なアーキテクチャ500を形成するように演算可能である。
【0065】
図5の例では、アーキテクチャ500は、層ブロックのシーケンスを含み、シーケンス内の層ブロックの第1のサブセットの各々は、入力画像を処理するための演算を実行するように構成されている。より具体的には、アーキテクチャ500には、層ブロックの第1のサブセット502、層ブロックの第2のサブセット504、および層ブロックの第3のサブセット506が含まれる。いくつかの実装では、層ブロック502、504、506の少なくとも1つのサブセットに、2つ以上の異なるタイプのニューラルブロックの交互シーケンスを含めることができる。例えば、層ブロック502のサブセットは、融合IBN層と融合グループIBN層を含む交互のシーケンスを持つことができる。
【0066】
融合IBN層は、拡張および深さ単位畳み込み演算を単一の完全畳み込みニューラルブロックに統合する融合IBN層407(上記)などの第1の個別ニューラルブロック512を表すことができる一方、融合グループIBN層は、点単位(404)+深さ単位(405)の対を置き換え、K×Kグループ畳み込み(422)を介してそれらの演算の態様を融合してチャネル次元を拡張することを可能にする融合グループIBN422などの第2の個別ニューラルブロック514を表すことができる。上で説明したように、このブロックは、チャネル次元に沿ったより効率的な処理を可能にする、融合IBN層407の代替手段を提供できる。
【0067】
より具体的には、第1のニューラルブロック512はグループ化されていないIBNブロックであり得、第2のニューラルブロック514はグループ化IBNブロックであり得る。第1のニューラルブロック512と第2のニューラルブロック514の各々には、1つまたは複数の畳み込みニューラルネットワーク層が含まれる。したがって、層ブロック502には、グループ化IBN層とグループ化されていないIBN層の交互シーケンスを含めることができる。例えば、層ブロックの交互シーケンスには、非グループ畳み込み層ブロックとインターリーブされるグループ畳み込み層ブロックを含めることができる。
【0068】
図6は、例示的な計算ループネスト600を示す。第1の計算ループネスト602は完全畳み込み計算のループネストを表し、一方、第2の計算ループネスト604はgグループを使用したグループ畳み込み計算のループネストを表す。
【0069】
図7は、グループ畳み込みを使用して例示的な画像を処理するために使用される例示的な方法700のフロー図である。例示的な画像は、上述の画像102であってもよく、または他のさまざまなタイプのデジタル画像および関連するグラフィックデータであってもよい。いくつかの実装では、方法700は、ニューラルネットワーク計算を高速化するために使用される技術の一部であり、これにより、他のデータ処理技術と比較して、画像処理出力の精度も向上できる。
【0070】
方法700は、上述のシステム100を使用して実装または実行することができる。したがって、方法700の説明では、システム100の上記のコンピューティングリソースを参照し得る。方法700のステップまたはアクションは、本文書で説明されているデバイスおよびリソースの1つまたは複数のプロセッサによって実行可能なプログラムされるファームウェアまたはソフトウェア命令によって有効にすることができる。いくつかの実装では、方法700のステップは、ニューラルネットワークを実装するように構成される専用ニューラルネットワークプロセッサまたはハードウェア機械学習アクセラレータなどのハードウェア集積回路を使用して、ニューラルネットワーク層の出力を生成するための計算を実行するための方法に対応する。
【0071】
方法700を再度参照すると、システム100は入力画像を取得し(702)、例示的な畳み込みニューラルネットワークを使用して入力画像を処理する(704)。畳み込みニューラルネットワークには、画像102などのデジタル入力画像を処理するためのグループ畳み込みを実装するために使用される層ブロックのシーケンスが含まれている。個々の層ブロックは、畳み込みニューラルネットワーク108を実装するハードウェア集積回路114で実行されるグループ畳み込み演算に対応し得る。層ブロックのシーケンス内の層ブロックには、グループ畳み込み演算に対応しないブロックも含まれ得る。
【0072】
例えば、層ブロックのシーケンスは、グループ畳み込み層ブロックおよび非グループ畳み込み層ブロックを含むか、またはそれらから形成されることができる。いくつかの実装では、層ブロックのシーケンスには、非グループ畳み込み層ブロックとインターリーブされるグループ畳み込み層ブロックが含まれる。例えば、層ブロックの個々のシーケンスの一部(またはすべて)には、非グループ畳み込み層ブロックの間にインターリーブされるグループ畳み込み層ブロックを含めることができる。他のいくつかの実装では、層ブロックの個々のシーケンスは、グループ畳み込み層ブロックと非グループ畳み込み層ブロックの異なる配置を持つことができる。例えば、インターリーブされるのではなく、連続したグループ畳み込み層ブロックと連続した非グループ畳み込み層ブロックの個別のサブセットから層ブロックのシーケンスを形成できる。
【0073】
システム100は、コンピュータビジョンタスクまたはニューラルネットワークアーキテクチャの1つまたは複数の制約に基づいて畳み込みのグループ化を決定できる。次に、システム100は、決定されるグループ化に基づいて、グループ畳み込みに対応する入力グループを決定できる。例えば、システム100は、入力行列のチャネル次元に沿って入力行列の入力特徴マップをグループ化し、1つまたは複数の入力グループを形成できる。入力行列は入力画像から導出される。システム100は、対応するカーネル行列を各入力グループに関連付け、カーネル行列を対応する入力グループと畳み込んで、出力行列の対応する出力グループを生成することができる。
【0074】
層ブロックのシーケンス内の層ブロックの第1のサブセットの各々は、画像処理に関連するさまざまなタイプの演算を実行するように構成されている。例えば、CNNに含まれるシーケンスの層ブロックのサブセットは、層ブロックの入力特徴マップを受信するように構成される(706)。いくつかの実装では、層ブロックの入力特徴マップは、c1チャネルを有するh×w特徴マップである。層ブロックのサブセットは、グループ畳み込みを使用して入力特徴マップから拡張特徴マップを生成するように構成される(708)。いくつかの実装では、拡張特徴マップはc2チャネルを有するh×w特徴マップであり、c2はc1より大きい。層ブロックのサブセットは、拡張特徴マップから縮小特徴マップを生成するように構成される(710)。いくつかの実装では、縮小特徴マップはc1チャネルを有するh×w特徴マップである。
【0075】
層ブロックのサブセットは、縮小特徴マップから層ブロックの出力特徴マップを生成するように構成される(712)。いくつかの実装では、層ブロックのサブセットは、入力特徴マップを縮小特徴マップに加算することによって出力特徴マップを生成する。いくつかの他の実装では、層ブロックのサブセットによって、縮小特徴マップに直接対応する出力特徴マップが生成される。例えば、これらの実装では、出力特徴マップは縮小特徴マップと等しくなる。
【0076】
本明細書で説明する主題および機能演算の実施形態は、本明細書で開示される構造およびその構造的同等物を含む、デジタル電子回路、有形に具現化されるコンピュータソフトウェアまたはファームウェア、コンピュータハードウェア、またはそれらの1つもしくは複数の組み合わせで実装することができる。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置によって実行されるか、またはデータ処理装置の演算を制御するための、有形の非一時的なプログラムキャリア上に符号化されるコンピュータプログラム命令の1つもしくは複数のモジュールとして実装することができる。
【0077】
代替的にまたは追加的に、プログラム命令は、データ処理装置による実行のために適切な受信機装置に送信するために情報を符号化するために生成される、人工的に生成される伝播信号、例えば機械で生成される電気信号、光信号、または電磁信号上に符号化することができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらの1つもしくは複数の組み合わせとすることができる。
【0078】
「コンピューティングシステム」という用語には、例えば、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサやコンピュータなど、データを処理するためのあらゆる種類の装置、デバイス、および機械が包含される。装置には、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路を含めることができる。装置には、ハードウェアに加えて、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つもしくは複数の組み合わせを構成するコードなど、問題のコンピュータプログラムの実行環境を作成するコードも含まれ得る。
【0079】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれ得るまたはそれらとして説明され得る)は、コンパイル型もしくは解釈型言語または宣言型もしくは手続き型言語を含む任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、またはコンピューティング環境での使用に適したモジュール、構成要素、サブルーチン、もしくはその他の装置として、任意の形式で展開することができる。
【0080】
コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、対応する必要はない。プログラムは、他のプログラムもしくはデータを保持するファイルの一部(例えば、マークアップ言語文書に記憶される1つまたは複数のスクリプト)、問題のプログラム専用の単一のファイル、または複数の調整されるファイル(例えば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に記憶できる。コンピュータプログラムは、1台のコンピュータ、または1つのサイトにあるか複数のサイトに分散され通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開できる。
【0081】
本明細書で説明するプロセスおよび論理フローは、入力データに対して演算を行い、出力を生成することによって機能を実行する1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって実行することができる。プロセスおよび論理フローは、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPGPU(汎用グラフィックス処理装置)などの専用論理回路によって実行することもでき、装置を専用論理回路として実装することもできる。
【0082】
コンピュータプログラムの実行に適したコンピュータとしては、例えば、汎用マイクロプロセッサまたは専用マイクロプロセッサまたはその両方、あるいは任意の他の種類の中央処理装置に基づき得る。一般的に、中央処理装置は、読み取り専用メモリまたはランダムアクセスメモリまたはその両方から命令とデータを受信する。いくつかのコンピュータの要素には、命令を実行するための中央処理装置と、命令とデータを記憶するための1つまたは複数のメモリデバイスがある。一般に、コンピュータには、磁気ディスク、光磁気ディスク、または光ディスクなどのデータを記憶するための1つまたは複数の大容量記憶デバイスも含まれるか、または、それらの記憶デバイスからデータを受信したり、それらの記憶デバイスにデータを転送したり、あるいはその両方を行うように動作的に結合される。しかし、コンピュータにはそのようなデバイスは必要ない。さらに、コンピュータは、ほんの数例を挙げると、携帯電話、パーソナルデジタルアシスタント(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブルストレージデバイスなど、別のデバイスに組み込むことができる。
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体には、あらゆる形式の不揮発性メモリ、媒体、およびメモリデバイスが含まれ、例として、半導体メモリデバイス(例えば、EPROM、EEPROM、およびフラッシュメモリデバイス)、磁気ディスク(例えば、内蔵ハードディスクまたはリムーバブルディスク)、光磁気ディスク、CD ROMおよびDVD-ROMディスクなどが含まれる。プロセッサとメモリは、専用論理回路によって補完され得るか、または専用論理回路に組み込まれ得る。
【0083】
ユーザとの対話を可能にするために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するための表示デバイス(例えば、LCD(液晶ディスプレイ)モニタ)と、ユーザがコンピュータに入力を提供できるキーボードおよびポインティングデバイス(例えば、マウスまたはトラックボール)とを備えたコンピュータ上で実装することができる。他の種類のデバイスを使用して、ユーザとの対話を提供することもできる。例えば、ユーザに提供されるフィードバックは、視覚フィードバック、聴覚フィードバックまたは、触覚フィードバックなど、あらゆる形式の感覚フィードバックにすることができ、ユーザからの入力は、音響、音声、または触覚入力など、あらゆる形式で受信できる。さらに、コンピュータは、ユーザが使用するデバイスに文書を送受信することで、ユーザと対話できる。例えば、ウェブブラウザから受信した要求に応じて、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信する。
【0084】
本明細書で説明する主題の実施形態は、例えばデータサーバなどのバックエンド構成要素を含むコンピューティングシステム、または例えばアプリケーションサーバなどのミドルウェア構成要素を含むコンピューティングシステム、または例えばグラフィカルユーザインターフェイスもしくはウェブブラウザを備えたクライアントコンピュータなどのフロントエンド構成要素を含むコンピューティングシステムで実装することができ、ユーザはそれを介して本明細書で説明する主題の実装と対話することができ、あるいは、そのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の1つまたは複数の任意の組み合わせで実装することができる。システムの構成要素は、通信ネットワークなど、デジタルデータ通信のあらゆる形式または媒体によって相互接続できる。通信ネットワークの例には、ローカルエリアネットワーク(「LAN」)や、インターネットなどのワイドエリアネットワーク(「WAN」)などが含まれる。
【0085】
コンピューティングシステムには、クライアントとサーバが含まれ得る。一般に、クライアントとサーバは互いに離れており、通常は通信ネットワークを介して対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され、相互にクライアントとサーバの関係を持つコンピュータプログラムによって生じる。
【0086】
本明細書には多くの具体的な実装の詳細が含まれているが、これらは発明の範囲または請求され得るものの範囲を制限するものとして解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有であり得る特徴の説明として解釈されるべきである。本明細書において個別の実施形態の文脈で説明されているある特徴は、単一の実施形態で組み合わせて実装することもできる。逆に、単一の実施形態の文脈で説明されているさまざまな特徴は、複数の実施形態で個別に、または任意の適切なサブ組み合わせで実装することもできる。さらに、特徴はある組み合わせで機能すると上記で説明され得、当初はそのように請求されていたとしても、請求される組み合わせからの1つまたは複数の特徴が、場合によっては組み合わせから削除され得、請求される組み合わせは、サブ組み合わせまたはサブ組み合わせのバリエーションに向けられ得る。
【0087】
同様に、図面では演算が特定の順序で描かれているが、これは、望ましい結果を得るために、そのような演算が図示される特定の順序または連続した順序で実行されること、または図示されるすべての演算が実行されることを要求するものとして理解されるべきではない。ある状況では、マルチタスクと並列処理が有利になり得る。さらに、上記の実施形態におけるさまざまなシステムモジュールおよび構成要素の分離は、すべての実施形態でそのような分離が必要であると理解されるべきではなく、説明されているプログラム構成要素およびシステムは、一般に、単一のソフトウェア製品に統合することも、複数のソフトウェア製品にパッケージ化することもできると理解されるべきである。
【0088】
主題の特定の実施形態について説明した。他の実施形態は、以下の請求項の範囲内である。例えば、請求項に記載されているアクションは、異なる順序で実行されても、望ましい結果が得られ得る。一例として、添付の図に示されるプロセスでは、望ましい結果を得るために、必ずしも示される特定の順序、または連続した順序を必要としているわけではない。ある実装では、マルチタスクと並列処理が有利になり得る。
図1
図2
図3
図4
図5
図6
図7
【手続補正書】
【提出日】2024-09-27
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
1つまたは複数のコンピュータによって実行される方法であって、前記方法は、
入力画像を取得することと、
畳み込みニューラルネットワークを使用して前記入力画像を処理することと、を含み、前記畳み込みニューラルネットワークは、層ブロックのシーケンスを含み、前記シーケンス内の前記層ブロックの第1のサブセットの各々は、
前記層ブロックの入力特徴マップを受信することを含み、前記層ブロックの前記入力特徴マップは、c1チャネルを有するh×w特徴マップであり、当該第1のサブセットはさらに、
グループ畳み込みを使用して前記入力特徴マップから拡張特徴マップを生成することを含み、前記拡張特徴マップはc2チャネルを有するh×w特徴マップであり、c2はc1より大きく、当該第1のサブセットはさらに、
前記拡張特徴マップから縮小特徴マップを生成することを含み、前記縮小特徴マップは、c1チャネルを有するh×w特徴マップであり、当該第1のサブセットはさらに、
前記縮小特徴マップから前記層ブロックの出力特徴マップを生成することを含む、演算を実行するように構成されている、方法。
【請求項2】
拡張特徴マップを生成することは、
前記入力特徴マップに1×1畳み込みを適用することにより、前記入力特徴マップから初期拡張特徴マップを生成することを含み、前記初期拡張特徴マップは、c2チャネルを有するh×w特徴マップであり、前記拡張特徴マップを生成することはさらに、
前記初期拡張特徴マップに前記グループ畳み込みを適用することにより、前記初期拡張特徴マップから前記拡張特徴マップを生成することを含む、請求項1に記載の方法。
【請求項3】
前記1×1畳み込みは、入力フィルタよりも多くの出力フィルタを有する、請求項2に記載の方法。
【請求項4】
前記グループ畳み込みは、入力フィルタと出力フィルタの合計数が同じである、請求項2または3に記載の方法。
【請求項5】
層ブロックの前記シーケンスは、
非グループ畳み込み層ブロックとインターリーブされるグループ畳み込み層ブロックを含み、前記グループ畳み込み層ブロックは、前記グループ畳み込みを実装するために使用される、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記グループ畳み込みは、層ブロックの前記シーケンス内に含まれる融合グループ化逆ボトルネック(IBN)層を使用して実装される融合グループ畳み込みである、請求項1~5のいずれか1項に記載の方法。
【請求項7】
拡張特徴マップを生成することは、
前記入力特徴マップに前記グループ畳み込みを適用することにより、前記入力特徴マップから前記拡張特徴マップを生成することを含む、請求項1~6のいずれか1項に記載の方法。
【請求項8】
拡張特徴マップを生成することは、
前記入力特徴マップに1×1畳み込みを適用することにより、前記入力特徴マップから初期拡張特徴マップを生成することを含み、前記初期拡張特徴マップは、c3チャネルを有するh×w特徴マップであり、c3はc2より大きく、前記拡張特徴マップを生成することはさらに、
前記初期拡張特徴マップに前記グループ畳み込みを適用することにより、前記初期拡張特徴マップから前記拡張特徴マップを生成することを含む、請求項1~7のいずれか1項に記載の方法。
【請求項9】
処理デバイスと、非一時的な機械可読記憶デバイスとを備え、前記非一時的な機械可読記憶デバイスは命令を記憶し、前記命令は、演算を実行させるために前記処理デバイスによって実行可能であり、前記演算は、
入力画像を取得することと、
畳み込みニューラルネットワークを使用して前記入力画像を処理することと、を含み、前記畳み込みニューラルネットワークは、層ブロックのシーケンスを含み、前記シーケンス内の前記層ブロックの第1のサブセットの各々は、
前記層ブロックの入力特徴マップを受信することを含み、前記層ブロックの前記入力特徴マップは、c1チャネルを有するh×w特徴マップであり、当該第1のサブセットはさらに、
グループ畳み込みを使用して前記入力特徴マップから拡張特徴マップを生成することを含み、前記拡張特徴マップはc2チャネルを有するh×w特徴マップであり、c2はc1より大きく、当該第1のサブセットはさらに、
前記拡張特徴マップから縮小特徴マップを生成することを含み、前記縮小特徴マップは、c1チャネルを有するh×w特徴マップであり、当該第1のサブセットはさらに、
前記縮小特徴マップから前記層ブロックの出力特徴マップを生成することを含む、システム。
【請求項10】
拡張特徴マップを生成することは、
前記入力特徴マップに1×1畳み込みを適用することにより、前記入力特徴マップから初期拡張特徴マップを生成することを含み、前記初期拡張特徴マップは、c2チャネルを有するh×w特徴マップであり、前記拡張特徴マップを生成することはさらに、
前記初期拡張特徴マップにグループ畳み込みを適用することにより、前記初期拡張特徴マップから前記拡張特徴マップを生成することを含む、請求項9に記載のシステム。
【請求項11】
前記1×1畳み込みは、入力フィルタよりも多くの出力フィルタを有する、請求項10に記載のシステム。
【請求項12】
前記グループ畳み込みは、入力フィルタと出力フィルタの合計数が同じである、請求項10または11に記載のシステム。
【請求項13】
層ブロックの前記シーケンスは、
非グループ畳み込み層ブロックとインターリーブされるグループ畳み込み層ブロックを含み、前記グループ畳み込み層ブロックは、前記グループ畳み込みを実装するために使用される、請求項9~12のいずれか1項に記載のシステム。
【請求項14】
前記グループ畳み込みは、層ブロックの前記シーケンス内に含まれる融合グループ化逆ボトルネック(IBN)層を使用して実装される融合グループ畳み込みである、請求項9~13のいずれか1項に記載のシステム。
【請求項15】
拡張特徴マップを生成することは、
前記入力特徴マップにグループ畳み込みを適用することにより、前記入力特徴マップから前記拡張特徴マップを生成することを含む、請求項9~14のいずれか1項に記載のシステム。
【請求項16】
拡張特徴マップを生成することは、
前記入力特徴マップに1×1畳み込みを適用することにより、前記入力特徴マップから初期拡張特徴マップを生成することを含み、前記初期拡張特徴マップは、c3チャネルを有するh×w特徴マップであり、c3はc2より大きく、前記拡張特徴マップを生成することはさらに、
前記初期拡張特徴マップにグループ畳み込みを適用することにより、前記初期拡張特徴マップから前記拡張特徴マップを生成することを含む、請求項9~15のいずれか1項に記載のシステム。
【請求項17】
請求項1~8のいずれか1項に記載の方法を実行させるために処理デバイスによって実行可能であコンピュータプログラム
【国際調査報告】