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

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

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

特表2024-539287異なるサイズを有する入力のための完全畳み込みネットワークの推論計算の効率的な実行
<>
  • 特表-異なるサイズを有する入力のための完全畳み込みネットワークの推論計算の効率的な実行 図1
  • 特表-異なるサイズを有する入力のための完全畳み込みネットワークの推論計算の効率的な実行 図2A
  • 特表-異なるサイズを有する入力のための完全畳み込みネットワークの推論計算の効率的な実行 図2B
  • 特表-異なるサイズを有する入力のための完全畳み込みネットワークの推論計算の効率的な実行 図3A
  • 特表-異なるサイズを有する入力のための完全畳み込みネットワークの推論計算の効率的な実行 図3B
  • 特表-異なるサイズを有する入力のための完全畳み込みネットワークの推論計算の効率的な実行 図3C
  • 特表-異なるサイズを有する入力のための完全畳み込みネットワークの推論計算の効率的な実行 図3D
  • 特表-異なるサイズを有する入力のための完全畳み込みネットワークの推論計算の効率的な実行 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-28
(54)【発明の名称】異なるサイズを有する入力のための完全畳み込みネットワークの推論計算の効率的な実行
(51)【国際特許分類】
   G06N 3/0464 20230101AFI20241018BHJP
【FI】
G06N3/0464
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024524663
(86)(22)【出願日】2021-10-25
(85)【翻訳文提出日】2024-06-03
(86)【国際出願番号】 US2021056418
(87)【国際公開番号】W WO2023075742
(87)【国際公開日】2023-05-04
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】クマール,トゥーシャー
(72)【発明者】
【氏名】ハランビ,ソールゴリ・アショク
(72)【発明者】
【氏名】パーク,ジェイソン・ジョン・キュ
(72)【発明者】
【氏名】チャウハン,アルン
(72)【発明者】
【氏名】ウ,ドン・ヒョク
(57)【要約】
異なるサイズを有する入力を受信する完全畳み込みニューラルネットワークの推論計算を実行するための方法、システム、およびコンピュータ記憶媒体にエンコードされたコンピュータプログラムを含む装置。方法のうちの1つは、完全畳み込みニューラルネットワークによって処理される新たな入力を受信することを含み、新たな入力は、完全畳み込みニューラルネットワークが処理するように構成されている固定サイズとは異なる第1のサイズを有し、方法は、新たな入力から1つまたは複数の固定サイズ入力を決定することをさらに含み、各々の固定サイズ入力は固定サイズを有し、方法は、1つまたは複数の固定サイズ入力の各々について推論計算を実行する完全畳み込みニューラルネットワークによって生成されたそれぞれの固定サイズ出力を取得することと、1つまたは複数の無効ピクセル値を含むそれぞれの固定サイズ出力から、完全畳み込みニューラルネットワークを用いて新たな入力を処理することによって生成される出力と等価な最終出力を生成することと、をさらに含む。
【特許請求の範囲】
【請求項1】
1つまたは複数のコンピュータが実行する方法であって、
ハードウェアアクセラレータ上に展開された完全畳み込みニューラルネットワークによって処理される新たな入力を受信することを含み、前記新たな入力は、前記ハードウェアアクセラレータ上で展開されたときに前記完全畳み込みニューラルネットワークが処理するように構成されている固定サイズとは異なる第1のサイズを有し、
前記方法は、
前記新たな入力から1つまたは複数の固定サイズ入力を決定することをさらに含み、各々の固定サイズ入力は、固定サイズを有し、
前記方法は、
前記完全畳み込みニューラルネットワークを用いて推論計算を実行するために前記ハードウェアアクセラレータに前記1つまたは複数の固定サイズ入力の各々を提供することと、
前記ハードウェアアクセラレータから、前記1つまたは複数の固定サイズ入力の各々について前記完全畳み込みニューラルネットワークによって生成されたそれぞれの固定サイズ出力を取得することとをさらに含み、前記それぞれの固定サイズ出力は、1つまたは複数の不正確なピクセルごとの結果を含み、
前記方法は、
前記それぞれの固定サイズ出力から、前記完全畳み込みニューラルネットワークを用いて前記新たな入力を処理することによって生成される出力と等価な最終出力を生成することをさらに含む、方法。
【請求項2】
前記ハードウェアアクセラレータ上に前記完全畳み込みニューラルネットワークを展開する前に、少なくとも前記完全畳み込みニューラルネットワークの特性に基づいて、前記固定サイズを決定することをさらに含む、請求項1に記載の方法。
【請求項3】
前記固定サイズを決定することは、前記固定サイズとして複数の候補サイズのうちの1つの候補サイズを選択するために、ユーザに前記複数の候補サイズを提供することをさらに含む、請求項2に記載の方法。
【請求項4】
前記完全畳み込みニューラルネットワークの特性に基づいて、前記完全畳み込みニューラルネットワークのための複数の候補サイズを生成することと、
前記候補サイズの各々について、
前記候補サイズの入力を処理するためにそれぞれのハードウェアアクセラレータ上で前記完全畳み込みニューラルネットワークのコピーを展開することと、
前記それぞれのハードウェアアクセラレータ上で前記完全畳み込みニューラルネットワークの展開された前記コピーのための推論計算を実行する合計実行時間を測定することと、
前記固定サイズとして、少なくとも前記候補サイズについて測定された前記合計実行時間に基づいて、前記複数の候補サイズから候補サイズを選択することと
をさらに含む、請求項1に記載の方法。
【請求項5】
前記固定サイズを決定することは、
前記新たな入力の前記第1のサイズが前記固定サイズよりも小さいことを決定することと、
前記固定サイズまで前記新たな入力の周辺にゼロをパディングすることによって固定サイズ入力を生成することと
をさらに含む、請求項1または請求項2に記載の方法。
【請求項6】
それぞれの前記固定サイズ出力の各々は、中央有効領域と、第1の数のピクセルの幅における周辺ダミー領域とを含み、前記中央有効領域は、前記最終出力の少なくとも一部を含み、前記周辺ダミー領域は、1つまたは複数の不正確なピクセルごとの結果を含む、請求項1~請求項5のいずれか1項に記載の方法。
【請求項7】
前記第1の数のピクセルは、前記完全畳み込みニューラルネットワークの特性に基づいて決定される、請求項6に記載の方法。
【請求項8】
それぞれの前記固定サイズ出力から前記最終出力を生成することは、
それぞれの前記固定サイズ出力の座標と、それぞれの前記固定サイズ出力を生成するために使用されたそれぞれの対応する固定サイズ入力の座標との間の関係に基づいて、それぞれの前記固定サイズ出力の前記中央有効領域を組み合わせることを含む、請求項6に記載の方法。
【請求項9】
それぞれの前記固定サイズ出力を組み合わせることは、
それぞれの前記固定サイズ出力の各々についてそれぞれの座標シフトを表すデータを決定することと、
決定された前記データに基づいてそれぞれの前記固定サイズ出力の前記中央有効領域を組み合わせることと
をさらに含む、請求項8に記載の方法。
【請求項10】
それぞれの前記座標シフトを表すデータを決定することは、
ローカルサーチを用いてそれぞれの前記座標シフトを決定することを含み、前記ローカルサーチは、固定サイズ出力の座標と、前記固定サイズ出力を生成するために使用された対応する固定サイズ入力の座標との間の関係を決定することを含む、請求項9に記載の方法。
【請求項11】
それぞれの前記座標シフトを表すデータを決定することは、
前記完全畳み込みニューラルネットワークの特性に基づいて、全体アライメント情報を決定することと、
決定された前記全体アライメント情報に基づいて、それぞれの前記固定サイズ出力の各々についてそれぞれの前記座標シフトを決定することと
を含む、請求項9に記載の方法。
【請求項12】
前記完全畳み込みニューラルネットワークの前記特性は、前記完全畳み込みニューラルネットワークの各々のネットワーク層のためのそれぞれのフィルタサイズ、ゼロパディングサイズ、ストライドサイズ、およびスケールファクタを含む、請求項2、請求項4、請求項7、または請求項11のいずれか1項に記載の方法。
【請求項13】
1つまたは複数のコンピュータと、前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに請求項1~請求項12のいずれか1項に記載の方法のオペレーションを実行させる命令を記憶する1つまたは複数の記憶装置と、を含むシステム。
【請求項14】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに請求項1~請求項12のいずれか1項に記載の方法のオペレーションを実行させる命令を記憶する1つまたは複数のコンピュータ記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
背景
本明細書は、ニューラルネットワークに関する。特に、本明細書は、異なるサイズを有する入力を受信する完全畳み込みネットワークの推論計算の効率的な実行に関する。
【0002】
ニューラルネットワークは、受信された入力に対する出力を予測するために非線形ユニットの1つまたは複数の層を採用する機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて1つまたは複数の隠れ層を含む。各々の隠れ層の出力は、ネットワーク内の次の層、即ち、次の隠れ層または出力層への入力として使用される。ネットワークの各々の層は、ネットワークパラメータのそれぞれのセットの現在の値に従って、受信された入力から出力を生成する。
【0003】
完全畳み込みネットワークは、畳み込みニューラルネットワーク層および選択的に、ローカル入力領域においてのみ動作するコンポーネントのみから構成されたその他の層、例えば、プーリング層および要素ごとの層、例えば、要素ごとの非線形活性化関数を適用するもの、のみを含むニューラルネットワークである。特に、他のタイプの畳み込みニューラルネットワークとは異なる、完全畳み込みネットワークは、いかなる完全に接続された層も有さない。完全畳み込みネットワークは、入力(例えば、複数のピクセルを有する画像)のピクセルごとの予測を行うように構成され得る。言い換えれば、完全畳み込みネットワークは、入力の各々のピクセルのためのそれぞれの予測を行うために使用することができる。ピクセルごとの予測を行うことを必要とするタスクの一例は、画像セグメンテーションであり、その場合、ニューラルネットワークは、入力画像の各々のピクセルについて、多数のクラスの各々のためのそれぞれのスコアを生成するように構成されている。
【発明の概要】
【0004】
概要
本明細書は、概して、ニューラルネットワークの推論計算を実行するための技術を説明する。
【0005】
一態様によれば、説明される技術は、1つまたは複数のコンピュータによって実行される方法に関する。方法は、ハードウェアアクセラレータ上に展開された完全畳み込みニューラルネットワークによって処理される新たな入力を受信することと、新たな入力から1つまたは複数の固定サイズ入力を決定することと、完全畳み込みニューラルネットワークを用いて推論計算を実行するためにハードウェアアクセラレータに1つまたは複数の固定サイズ入力の各々を提供することと、ハードウェアアクセラレータから、1つまたは複数の固定サイズ入力の各々について完全畳み込みニューラルネットワークによって生成されたそれぞれの固定サイズ出力を取得することと、それぞれの固定サイズ出力から、完全畳み込みニューラルネットワークを用いて新たな入力を処理することによって生成される出力と等価な最終出力を生成することと、を含む。新たな入力は、ハードウェアアクセラレータ上で展開されたときに完全畳み込みニューラルネットワークが処理するように構成されている固定サイズとは異なる第1のサイズを有する。1つまたは複数の固定サイズ入力の各々は、固定サイズを有する。それぞれの固定サイズ出力は、1つまたは複数の不正確なピクセルごとの結果を有する。
【0006】
本明細書に説明される主題は、特定の実施形態において以下の利点のうちの1つまたは複数を実現するために実装され得る。
【0007】
説明される技術は、ハードウェアアクセラレータ上で展開された静的にコンパイルされた完全畳み込みネットワークモデルが、未知のまたは様々なサイズを有する入力データを処理することを可能にする。一般に、完全畳み込みニューラルネットワークは、原則的にあらゆる任意のサイズの入力を処理することができるが、ハードウェアアクセラレータ上で既に展開された静的にコンパイルされたニューラルネットワークは、様々なサイズを有する入力を処理することができない。加えて、未知のまたは様々なサイズを有する入力データを動的に処理することができるハードウェアアクセラレータ上での展開のためのニューラルネットワークをコンパイルすることは困難である。しかしながら、説明される技術は、入力データを複数のより小さな固定サイズ入力に効率的にタイリングし、静的にコンパイルされた完全畳み込みネットワークの推論計算を実行するために入力を提供することができる。
【0008】
説明される技術は、生成された固定サイズ出力をステッチングし、ランダムサイズ入力を処理する完全畳み込みネットワークによって生成された出力と等価のランダムサイズの所与の入力のための最終出力を生成することもできる。したがって、説明される技術は、ハードウェアアクセラレータ上で展開されたときに固定サイズの入力を受信するためにのみコンパイルされた完全畳み込みネットワークが、コンパイルされたモデルまたはハードウェアアクセラレータの動作を修正することなく、異なるサイズの入力のための正確な出力を生成することを可能にする。
【0009】
加えて、説明される技術は、完全畳み込みネットワークの特性に基づいて、ネットワークのための入力および出力をタイリングおよびステッチングするための最適化されたパラメータを自動的に生成することができる。これらの最適化されたパラメータを使用して、説明される技術は、未知のまたは様々なサイズを有する入力データのための推論計算を実行する際の計算効率を高めることができる。
【0010】
説明される技術は、メモリ使用量を減じるために、隣接するアクセラレータの間のデータ共有特性を利用して、異なるタイル(例えば、固定サイズ入力)の推論演算を並列で実行することができる。例えば、説明される技術は、様々なサイズを有する入力または出力データに従って、隣接する固定サイズ入力の重なり合う領域を横切るデータ転送を最適化することができる。
【0011】
さらに、説明される技術は、異なる入力サイズおよびハードウェアアクセラレータアーキテクチャに対してロバストである。説明される技術は、システムメモリ帯域幅などの、ハードウェア制約または要求を自動的に識別することができる。説明される技術は、識別されたハードウェア制約または要求に基づいて、ハードウェアアクセラレータ上で展開された完全畳み込みネットワークに適合するように、任意の大きなサイズの入力を効率的にタイリングすることができる。システムは、固定サイズに達するように入力の周辺にゼロをパディングすることによって、完全畳み込みネットワークのための固定サイズよりも小さなサイズを有する入力をロバストに処理することもできる。
【0012】
例えば、最新のメモリアドレシング能力(例えば、ダイレクトメモリアクセス(DMA)エンジンを含むアクセラレータ)を有するアクセラレータの場合、説明される技術は、入力をタイリングしかつ固定サイズ出力をステッチングするためのデータ操作に関連したオーバーヘッド時間を減じるまたは排除することができる。別の例として、より単純なアーキテクチャまたはより小さいメモリ帯域幅を有するアクセラレータの場合、説明される技術は、一度に1つのモデルのための演算を実行することができる。いくつかの実装形態では、説明される技術は、計算システムにアクセラレータアレイが存在するかどうかを決定し、アクセラレータアレイが存在するという決定に応じて、説明される技術は、メモリ使用量を減じるために、隣接するアクセラレータの間のデータ共有特性を利用して、異なるタイルの推論演算を並列で実行することができる。
【0013】
さらに、本明細書に説明される技術は、特徴的であり、従来のデータ並列化技術よりも有利である。一般に、データ並列化技術は、入力データ(例えば、入力画像)を多数の互いに素の部分(例えば、入力画像のセグメント)に分割し、多数の部分を多数のハードウェアコンポーネント(例えば、ハードウェアアクセラレータ)に割り当て、それらの部分を独立してかつ並列で処理し、部分出力を生成することができる。全ての部分がハードウェアコンポーネントによって処理された後、データ並列化技術を実行するように構成されたシステムは、部分出力を集めることによって最終出力を生成することができる。演算が、それぞれに設計された部分のために各々のハードウェアコンポーネントによって正確に実行される限り、システムは、部分出力のあらゆる部分が最終出力を生成するために適していないまたは不正確であるかどうかを考慮する必要はない。
【0014】
しかしながら、一般に、完全畳み込みネットワークは、一般的に、データ並列化技術を利用しない。なぜならば、入力画像の一部(例えば、本明細書に説明されるような入力画像のタイル)を処理する完全畳み込みネットワークによって生成される出力は、1つまたは複数の誤ったまたは不正確なピクセルごとの値を含む可能性があるからである。これは、入力のタイルを処理するシステムの計算が、「隣接ピクセル」を含む可能性があり、これにより、出力ピクセルの一部が不正確である可能性があるからである。
【0015】
本明細書全体を通して「隣接ピクセル」という用語は、完全畳み込みネットワークモデルへの入力の境界を包囲するピクセルを表す。隣接ピクセルは、完全畳み込みネットワークモデルの1つまたは複数の層によって指定されたゼロパディングによって入力の境界に加えられたピクセルを含むことができる。完全畳み込みネットワークモデルへの固定サイズ入力(例えば、完全入力データから抽出されたタイル)の場合、隣接ピクセルは、完全入力データにおける固定サイズ入力をもともと包囲しているピクセルも含むことができる。
【0016】
完全畳み込みネットワークモデルへの入力または固定サイズ入力を包囲しかつ隣接ピクセルを含む領域は、明細書全体を通じて「隣接ピクセル領域」と呼ばれる。隣接ピクセル領域は、1つまたは複数のピクセルの幅を含むことができる。いくつかの実装形態では、隣接ピクセル領域の幅は、完全畳み込みネットワークモデルの特性に基づいて決定することができる。隣接ピクセルは、計算中にゼロピクセル値を有するまたはゼロピクセル値と置き換えられ得、完全畳み込みネットワークモデルを通じて隣接ピクセルを処理することからの出力を不正確にする。
【0017】
いくつかの実装形態では、隣接ピクセルは、最初、完全入力データに存在する。固定サイズ入力が完全入力データから抽出されるとき、システムは、固定サイズ入力を処理するために1つまたは複数の隣接ピクセルを必要とする場合がある。しかしながら、システムは、1つまたは複数の非ゼロ隣接ピクセルの値がゼロになるように変化させる場合があり、いくつかのピクセルロケーションにおける計算を不正確にする。
【0018】
例えば、システムは、2以上のフィルタサイズを有する1つまたは複数の畳み込み層を含むことができる。固定サイズ入力の境界ピクセルを処理するために、システムは、境界ピクセルの外側の1つまたは複数の隣接ピクセルを用いて、対応するピクセルごとの出力を計算することができる。非ゼロ隣接ピクセルは、計算中にゼロ値と置き換えられる場合がある。固定サイズ入力を処理するために、隣接ピクセルに関連した真のピクセル値ではなく、ゼロ値隣接ピクセルを使用することによって、固定サイズ出力における1つまたは複数のピクセル値は、不正確になる可能性がある。
【0019】
別の例として、システムは、2以上のフィルタサイズを有する1つまたは複数の転置畳み込み層を含むことができる。転置畳み込み層のうちの1つのための計算が、非ゼロ隣接ピクセルを置き換えるためにゼロ値を使用する場合、出力ピクセル値が不正確になる可能性がある。
【0020】
言い換えれば、ゼロ値隣接ピクセル(例えば、もともとゼロ値と置き換えられた非ゼロピクセル)は、出力タイルにおける1つまたは複数のピクセル値を不正確にする可能性がある。したがって、固定サイズ入力を処理するための完全畳み込みネットワークにおいて演算を実行するためのシステムが、不正確なデータを決定および破棄することなく固定サイズ出力を組み合わせることによって最終出力を生成することは問題がある。システムは、固定サイズ入力を処理するときの完全畳み込みネットワークにおけるネットワーク層の特性に基づいて正確なデータ(例えば、有効値)および不正確なデータ(例えば、ダミーピクセル値)の両方を決定する必要がある。
【0021】
本明細書に説明される技術は、完全畳み込みネットワークにおけるネットワーク層の特性を分析し、完全畳み込みネットワークモデルおよびタイル入力データをコンパイルするために層または全体的なアライメント情報および適切な固定サイズを決定することによって、固定サイズ出力におけるどのピクセルごとの値が不正確であるかを決定することができる。アライメント情報および適切な固定サイズは、完全畳み込みネットワークモデルを通じて最終出力における各々のピクセルのための正確な値を生成するために、説明される技術を採用するシステムのために使用され得る。各々のピクセルのための正確な値は、少なくとも1つの固定サイズ出力において少なくとも一回生成され、システムは、少なくとも1つの固定サイズ出力からピクセルのための正確な値を取得することができる。
【0022】
本明細書に説明される技術は、さらに、異なる固定サイズ出力の間の無効なまたはオーバーラップするピクセル値を計算することを減じ、さらには回避することによって、メモリトラフィックを減じることができる。固定サイズが決定されるいくつかの状況において、技術は、最小限にされたオーバーラップに基づいて有効な最終出力を生成することができるように異なる固定サイズ出力タイルの正確なピクセルのオーバーラップを最小限にすることによって、アクセラレータとホストとの間のメモリトラフィックを最適化することができる。固定サイズがまだ決定されないいくつかの状況において、説明される技術は、不正確なまたはオーバーラップするピクセル値を生成するための計算が最小限にまたはさらには排除されるように入力データおよびハードウェアの特性に基づいて、複数の候補固定サイズのうちの1つを固定サイズとして選択することができる。
【0023】
本明細書の主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に示されている。主題のその他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0024】
図1】異なるサイズの入力のための完全畳み込みネットワークの推論計算を実行するための例示的な推論システムを示す図である。
図2A】畳み込みシステムを用いる例示的な推論プロセスを示す図である。
図2B図1の例示的な推論システムを用いる例示的な推論プロセスを示す図である。
図3A】隣接ピクセル領域を有する例示的な固定サイズ入力およびダミー領域を有する例示的な固定サイズ出力を示す図である。
図3B図1の例示的な推論システムによって実行されるタイリングおよびステッチングプロセスの一例を示す図である。
図3C図1の例示的な推論システムによって実行されるタイリングおよびステッチングプロセスの別の例を示す図である。
図3D】FCNモデルにおける転置畳み込み層を用いて出力を生成する例示的なプロセスを示す図である。
図4】異なるサイズを有する入力のための完全畳み込みネットワークの推論計算を実行するための例示的なプロセスを示す図である。
【発明を実施するための形態】
【0025】
詳細な説明
完全畳み込みネットワーク(FCN)は、少なくとも1つまたは複数の畳み込みニューラルネットワーク層および選択的に、プーリング層、転置畳み込み層、および要素ごとの層(例えば、要素サイズの活性化機能を適用する層)を含むことができる。FCNは、入力(例えば、複数のピクセルを有する入力画像)のピクセルごとの予測を生成するためにハードウェアアクセラレータ上で展開され得る。特に、FCNは、入力画像の対応する1つまたは複数のピクセルに関連したピクセルを有する出力を生成し、入力画像の各々のピクセルについて予測を行うように構成されている。いくつかの実装形態において、FCNは、出力ピクセルを入力ピクセルおよび固定サイズの近傍における隣接ピクセルに関連させることもできる。FCNモデルは入力のピクセルを処理することができるので、FCNは、原則として、任意のサイズを有する入力を処理することができる。
【0026】
FCNは、異なるサイズで提供された入力データのためのピクセルごとの予測を生成することができるという点で典型的なニューラルネットワークと比較して有利であるが、いくつかのハードウェア制限が、FCNをハードウェアアクセラレータ上で動的に展開すること(即ち、様々なサイズの入力で入力を処理すること)を困難またはさらには不可能にする。
【0027】
異なるサイズの入力を連続的に処理することができるようにFCNを動的に展開することは、計算コストにおける問題を生じる可能性がある。まず、データ構造を含むネットワークパラメータ(例えば、計算のためのマトリクス次元、またはネットワーク層のためのパディング、ストライド、フィルタサイズおよびスケールファクタ)が、入力のサイズとスケールし、入力サイズの変化が、現在のネットワークパラメータのシャッフルを要求する場合があり、これは、多数のハードウェアアクセラレータを含むシステムのためのダウンタイム(例えば、オーバーヘッド)の増大につながる可能性がある。さらに、ダイナミック入力サイズを許すために、ホストは、より一般的な実行メカニズムを用いて推論計算を実行するための命令を送信する必要がある。例えば、ホストは、データ記憶のためのより大きなメモリを割り当て(より遅くなるという犠牲を払って、大きなメモリの一部が使用される場合がある)、ベクトルまたはテンソルサイズに対するより多くのチェックを実行するか、または並列計算中に計算を実行するために使用される計算ユニットの数をより頻繁にかつ動的に変化させる場合がある。したがって、実際、FCNは、通常、1つまたは複数のハードウェアアクセラレータ上で静的に展開され(例えば、固定ネットワークハイパーパラメータとコンパイルされる)、動的な展開によって生じる問題を回避するために、固定サイズの入力を受信するように構成されている。
【0028】
以下に説明される技術は、ハードウェアアクセラレータ上で既に展開された(または展開される)静的にコンパイルされたFCNが異なるサイズの入力を有効に処理することを可能にすることによって上述の問題を解決することができる。
【0029】
説明される技術は、特定のサイズを有する入力データを、各々が固定サイズを有する複数のより小さな入力にタイリングすることができる。ハードウェアアクセラレータ上の静的にコンパイルされたFCNは、複数の固定サイズ入力の各々を処理し、対応する固定サイズ出力を生成することができる。説明される技術は、したがって、入力サイズのためにコンパイルされたFCNによって入力が完全に処理されたかのように最終出力を生成するために、固定サイズ出力をステッチングすることができる。
【0030】
一般に、説明される技術は、特定サイズのためにコンパイルされたFCNによって全体的に入力を処理することによって生成される出力と等価の最終出力を生成するために、特定サイズの入力を多数の固定サイズ入力にタイリングし、かつ多数の固定サイズ入力から生成された多数の固定サイズ出力をステッチングするための、特定の「タイリングおよびステッチング」パラメータを決定するための方法を提供することができる。より具体的には、FCNモデルの特性に従って、説明される技術は、FCNモデルを通じて固定サイズ入力タイルを処理することによって、異なる領域を有する固定サイズ出力を生成することができる。異なる領域は、ダミー領域および有効領域を含むことができる。説明される技術は、FCNモデルの特性(例えば、FCNモデルにおける全ての層のためのパディング、ストライド、フィルタサイズ、スケールファクタ、および層タイプ)を分析することによって、ピクセルごとの値が正確である、即ち、出力ピクセル値を生成するためにゼロ値隣接ピクセルが使用されない、固定サイズ出力における有効領域と、ピクセルごとの値が少なくとも「完全には」正確ではない、即ち、少なくとも1つのゼロ値隣接ピクセルを利用することによってピクセルごとの値がFCNによって生成される、固定サイズ出力におけるダミー領域と、を決定することができる。説明される技術は、最終出力を生成するために全ての固定サイズ出力からの正確なピクセルごとの値を組み合わせる(例えば、「ステッチングする」)ことができ、最終出力におけるピクセルに対応する各々の正確なピクセルごとの値が、少なくとも1つの固定サイズ出力から生成および取得されることを保証することができる。これは、出力データを独立して生成するために入力データが容易に分割される従来の並列化技術とは対照的であり、隣接ピクセルによって生じる不正確を考慮する必要がない。
【0031】
説明される技術は、FCNがコンパイルされかつハードウェアアクセラレータ上で展開される前に様々な手段によって固定サイズを決定することもできる。まず、説明される技術は、FCNモデルおよびFCNが展開されるハードウェアアクセラレータの特性に基づいて複数の候補サイズを提案することができる。複数の候補サイズは、説明される技術によって実行されるタイリングおよびステッチングプロセスのために有効でありかつ適している。例えば、FCNが、1つまたは複数の転置層を含む場合、複数の候補サイズは、出力タイルのアライメント情報に基づいて決定することができる。明細書全体を通して「アライメント情報」という用語は、固定サイズ出力の配列のための制約または要求を表すデータを表す。アライメント情報は、固定サイズ出力を固定サイズ入力へ、またはその逆へ適切に投影することができるようにシステムによって取得される。
【0032】
システムは、適切なタイリングパターンを取得するためにアライメント情報に基づいて、固定サイズ出力と、対応する固定サイズ入力との間の座標シフトを決定することもできる。タイリングパターンは、1つまたは複数の固定サイズ(例えば、自動的にまたはユーザによって選択される1つまたは複数の候補サイズ)、特定の固定サイズにおける固定サイズ入力のためのオーバーラップサイズ、および選択的に、固定サイズ入力および出力の座標、特に、固定サイズ出力のダミーおよび有効領域のための座標を含むことができる。
【0033】
決定されたタイリングパターンは、少なくとも2つの基準を満たさなければならない。即ち(i)アライメント情報が正しくあるべきである、即ち、タイリングパターンは、各々の固定サイズ出力が固定サイズ入力へ、またはその逆へ正確に投影され得るように正確に配置された固定サイズ出力を有するべきであり、(ii)完全な出力データのための各々のピクセル値は、1つの固定サイズ出力の少なくとも有効領域から生成および抽出されるべきである。選択的に、システムは、計算性能を高めかつ計算リソース使用量を最適化するために固定サイズ入力のためのオーバーラップ領域を最小限にするタイリングパターンを決定することができる。アライメント情報に基づいてタイリングパターンを決定することについての詳細は後述する。
【0034】
いくつかの実装形態では、説明される技術は、選択的に、性能メトリクス(例えば、合計実行時間またはオーバーヘッド)に基づいて、固定サイズとして適切なタイリングパターンに含まれた候補サイズのうちの1つを選択することができる。説明される技術は、ハードウェアアクセラレータ上にFCNモデルを展開するための候補サイズの範囲を生成し、ユーザ選択のために候補サイズの範囲を提供することもできる。ユーザは、例えば、FCNモデル、ハードウェアアクセラレータ、またはタスクによる特定の計算要求の特性に従って、固定サイズとして候補サイズの範囲から1つのサイズを選び出すことができる。
【0035】
上述のタイリングパターンは、完全な入力データを1つまたは複数の固定サイズ入力にタイリングするための固定サイズと、固定サイズ入力を生成するためのオーバーラップ領域のサイズと、を含むことができる。一般に、システムは、固定サイズ入力がしばしば互いにオーバーラップするように固定サイズ入力をタイリングすることができ、これにより、最終出力における全てのピクセルに関連した正確なまたは正しいピクセルごとの値を取得することを保証し、即ち、各々の正確な値は、少なくとも1つの固定サイズ出力から生成および取得される。上述のようなタイリングパターンは、さらに、固定サイズ出力のための有効領域およびダミー領域を表すデータを含むことができる。固定サイズ出力は、一般的に、出力ピクセル値を生成するために使用される1つまたは複数のゼロ値隣接ピクセルにより、実質的なサイズのダミー領域を含むことができる。システムは、FCNモデルの特性に基づいてアライメント情報を決定するために1つまたは複数のアルゴリズムを採用することができ、追加的なアルゴリズムを適用して、固定サイズ出力の座標と、対応する固定サイズ入力の座標との間の関係(例えば、マッピング)を決定し、固定サイズ出力のための有効領域を決定し、上述のマッピングおよび有効領域に基づいて固定サイズ出力のための座標シフトを決定することができる。これらのアルゴリズムの詳細は後述する。
【0036】
タイリングパターンを決定した後、システムは、各々の固定サイズ出力の有効領域を組み合わせることによって固定サイズ出力をステッチングすることができる。タイリングパターンはFCNモデルのためのアライメント情報に基づいて生成されることに留意されたい。システムが固定サイズ入力のための適切なタイリングパターンを生成することができるので、システムが固定サイズ出力の有効領域における全てのピクセルのための座標情報を有することにより、ステッチングプロセスはかなり効率的である。いくつかの実装形態では、システムは、完全な出力データを生成するために完全な出力データに配置された各々のピクセルのために少なくとも一回、固定サイズ出力の有効領域におけるピクセル値を取り上げることができる。ステッチングの詳細は、特定のアルゴリズムおよび図3A図3Dに関連して後述する。
【0037】
さらに、説明される技術は、オンラインおよびオフラインの両方で「タイリングおよびステッチング」分析を実行することができる。説明される技術を用いて前に展開されたものと類似の形式でハードウェアアクセラレータ上に、コンパイルされたFCNを展開するために、ホストプロセッサは、未知のまたは様々なサイズを有する完全な出力データを生成するために、完全な入力データを「タイリングし」かつ出力タイルを「ステッチングする」ための、前に保存されたパラメータを再利用することによって、オフラインで分析を実行することができる。前に保存されたパラメータは、少なくとも、FCNのためのアライメント情報などのタイリングパターン、タイリングのための固定サイズ、固定サイズ入力または固定サイズ出力あるいはその両方のためのオーバーラップ領域、ならびに固定サイズ出力のダミーおよび有効領域を含むことができる。システムは、これらのパラメータを再利用して、新たな完全な入力データを処理し、新たな完全な入力が、新たな完全な入力データのサイズのためにコンパイルされたFCNモデルによって直接処理されたかのように、完全な出力データを生成することができる。ホストプロセッサは、新たなFCNが展開される状況において、入力データを処理するための「タイリングおよびステッチング」パラメータの新たなセットを生成することができる。
【0038】
図1は、異なるサイズを有する入力のための完全畳み込みネットワークの推論計算を実行するための例示的な推論システム100を示す。推論システム100は、後述するシステム、コンポーネントおよび技術を実装することができる、1つまたは複数のロケーションにおいて1つまたは複数のコンピュータ上でコンピュータプログラムとして実装されるシステムの一例である。
【0039】
図1に示されているように、システム100は、互いに通信するホスト130およびアクセラレータ110を含む。一般に、システム100は、入力データ150を受信し、ハードウェアアクセラレータ110上に展開される訓練されたFCN115を用いて出力データ170を生成する。一般に、出力データ170は、入力データ150のサイズよりも小さい、入力データ150のサイズよりも大きい、または入力データ150のサイズと等しいサイズを有することができる。
【0040】
より具体的には、システムは、いくつか例を挙げれば、オブジェクト検出および分類(例えば、顔検出)、画像分割、画像生成、画像超解像、画像補完、画像着色などのタスクのために、展開されたFCN115を使用することができる。例えば、タスクが画像分割である場合、入力データ150は画像入力であることができ、システム100は、ピクセルごとの予測、即ち、入力画像の各々のピクセルのためのまたはFCN115によって生成される出力画像の各々のピクセルのためのそれぞれの予測を有する、出力データ170を生成することができる。出力データ170は、それぞれのスコアを多数のカテゴリの各々に割り当てる、各々のピクセルのためのそれぞれのスコア分布も含むことができる。その場合、システム100は、入力画像からオブジェクトの存在、形状、およびロケーションを検出することができる。別の例として、タスクが画像超解像である場合、システム100は、各々の入力ピクセルの周囲に追加されるピクセルを予測することによって入力画像のための画像解像度を高めるために、展開されたFCN115を用いることができる。その場合、出力画像170は、入力画像150よりも高い解像度を有することができ、1つまたは複数の出力セルが、入力画像における各々のピクセルに関連させられ得る。
【0041】
システム100は、ホスト130に含まれたコンパイルエンジン160において、固定サイズを有する入力を処理するためのFCNをコンパイルし、コンパイルされたFCNをハードウェアアクセラレータ110上で展開することができる。FCNをコンパイルするために、ホスト130は、コンパイルエンジン160において訓練されたFCNモデルを表すデータ155を受信し、訓練されたFCNモデルをコンパイルし、訓練されたFCNモデルをハードウェアアクセラレータ110上で展開するために命令(例えば、バイナリデータ)を生成することができる。いくつかの実装形態では、コンパイルエンジン160は、入力の様々なサイズを有する異なる入力データを処理するために、訓練されたFCNモデルを再コンパイルすることができる。訓練されたFCNモデルを再コンパイルし、再コンパイルされたFCNモデルをハードウェアアクセラレータ110上で展開することについての詳細は後述する。
【0042】
一般に、コンパイルされたFCN115は、同じサイズを有するあらゆる適切な入力(例えば、固定サイズ入力138)を処理することができる。したがって、ハードウェアアクセラレータ110は、コンパイルされたFCNモデル115を用いて、提供された固定サイズ入力138のための推論計算を実行することができる。
【0043】
コンパイルエンジン160は、FCNをハードウェアアクセラレータ110上でコンパイルするために従来のコンパイル技術を適用することができる。一般に、コンパイルエンジン160は、あらゆる適切な高水準言語において書かれかつFCNの特性を表すデータによって、ハードウェアアクセラレータ上で機械可読バイナリコードにエンコードされるプログラムコードをデコードすることができる。FCNの特性を表すデータは、FCNの構造を規定するハイパーパラメータ(例えば、入力サイズ、層の数、各々の層におけるノードの数、層のタイプおよび位置、1つまたは複数の層のためのパディング、ストライド、フィルタサイズ、およびスケールファクタ)、および訓練プロセスから得られた層重みを含むことができる。コンパイルする間、システム100は、FCNの特性に基づいてそれぞれの計算リソースを割り当てる必要がある。例えば、システム100は、推論計算を実行するためのそれぞれの計算を提供するためにそれぞれのデータ構造を割り当てる必要がある。別の例として、システムは、展開されたFCNのための推論演算を実行する間、それぞれのデータ構造および関連する計算結果を記憶するためのそれぞれのメモリを割り当てる必要がある。
【0044】
従来、システム100は、入力サイズに従ってそれぞれのデータ構造およびメモリを割り当てる必要がある。例えば、層重みマトリクス、活性化入力および出力のために割り当てられるデータ構造は、少なくとも入力サイズに基づく。層構造および関連する計算結果を記憶するために割り当てられるそれぞれのメモリも、入力サイズに基づく。したがって、展開されるFCNは、展開されると、固定サイズの入力を受信するように構成されている。また、システム(例えば、システム100)は、したがって、固定サイズ入力を受信するためにFCNをしばしば静的にコンパイルし、これにより、システムは、計算リソースを効率的にかつコンパイル中に全てに対して一回で割り当てることができる。
【0045】
いくつかの実装形態では、ホスト130は、FCNモデルおよび関連するハードウェアアクセラレータの特性に基づいてFCN115をコンパイルするためのタイリングパラメータ、例えば、適切な固定サイズ、を決定するためにタイリングパターン分析を実行することができる。ホスト130とは異なる1つまたは複数のホスト(例えば、オフライン分析/コンパイルホスト)が、オフラインでまたはホスト130よりも前もってタイリングパターン分析を実行することができることに留意すべきである。次いで、1つまたは複数のホストは、ホスト130(例えば、1つまたは複数の通信可能に結合されたコンピュータ)上でFCN115をコンパイルおよび展開するか、またはランダムまたは未知のサイズの入力を処理するための1つまたは複数のエッジデバイス(例えば、携帯電話またはタブレット)上で「アプリケーション」としてFCN115を展開することができる。固定サイズを決定することについての詳細は後述する。
【0046】
システム100は、FCNモデルの推論計算を実行するためのあらゆる適切なタイプのハードウェアアクセラレータ110を含むことができる。例えば、ハードウェアアクセラレータ110は、CPU、GPU、またはTPUであることができる。ハードウェアアクセラレータ110は、FCNモデルのパラメータを記憶するためのメモリなどのコンポーネントを含むことができる。さらに、ハードウェアアクセラレータ110は、並列計算のための1つまたは複数の計算ユニットを含むことができる。
【0047】
入力データ150は、コンパイルされたFCN115がその入力を処理するように構成された固定サイズとは異なる1つまたは複数のサイズを有することができる。例えば、入力データ150は、各々が固定サイズとは異なるそれぞれのサイズを有する、複数の画像フレームを含むことができる。
【0048】
生成された出力データ170は、入力データ150のための、訓練されかつ静的に展開されたFCNモデル115のための推論演算を実行するシステム100によって生成された出力である。生成された出力データ170は各々、対応する入力データのサイズに関連したそれぞれのサイズを有することができる。
【0049】
単純な例として、入力データ(例えば、入力画像)が500×500ピクセルのサイズを有する場合、生成される出力170は、50×50ピクセル、500×500ピクセル、または1000×1000ピクセルのサイズを有することができ、出力データの各々のピクセルは、FCNモデルの特性(例えば、FCNモデルの各々の層のためのフィルタサイズ、ストライドサイズ、パディングサイズ、およびスケールファクタ)に基づいて、入力画像の8×8、10×10、または20×20ピクセル近傍内のピクセルに関連させられている。一般に、訓練されたFCNによって入力から生成される出力のサイズは、FCNモデルの特性の関数である。
【0050】
例えば、説明を容易にするために、ナイーブFCNモデルは、2つのネットワーク層を含むことができ、各々の層は、2×2ピクセルのフィルタサイズ、1ピクセルのストライドサイズ、および1×1ゼロパディングを有し、これにより、2つの層のうちの各々の層は、3×3ピクセルの入力を処理することによって4×4ピクセルの出力を生成することができる。3×3入力がネットワークの両層を通過するとき、5×5出力が生成され、同様に、5×5入力は、ナイーブFCNモデルを通じて7×7出力を生成する。
【0051】
ナイーブFCNモデルが、入力データ150からタイリングされた5×5ピクセルのタイルを受信するようにコンパイルされていると仮定する。システムは、FCNモデルの特性を分析することによって7×7ピクセルの固定サイズ出力を生成することができる。次いで、システムは、固定サイズ出力のための有効領域およびダミー領域を決定し、有効領域におけるピクセルごとの値を全ての固定サイズ出力のための最終出力における対応するピクセルに関連付けることによって最終出力170を生成することができる。上記の例を参照すると、ナイーブFCNモデルによって生成された固定サイズ出力の有効領域は、5×5ピクセル入力タイルにおける値を用いて計算されたピクセルごとの値を有する3×3ピクセルのサイズを有することができる(即ち、有効領域におけるピクセルごとの値は、いかなるパディングされたゼロに基づいても生成されない)。
【0052】
別の例として、FCNモデルは、2つの畳み込み層を含むことができ、各々の層は、3×3ピクセルのフィルタサイズ、1のストライドサイズを有し、ゼロパディングを有さない。50×50ピクセルの固定サイズ入力の場合、固定サイズ入力を処理するFCNモデルによって生成された固定サイズ出力は、46×46ピクセルを有することができる。システム100は、固定サイズ出力においてダミー領域が存在せず、固定サイズ出力の有効領域が46×46ピクセルであることを決定することができる。
【0053】
別の例として、FCNモデルは、2つの畳み込み層を含むことができ、各々の層は、3×3ピクセルのフィルタサイズ、1のストライドサイズ、単一のピクセルのゼロパディングを有する。50×50ピクセルの固定サイズ入力を処理するFCNモデルによる固定サイズ出力は、50×50ピクセルのサイズを有することができる。システム100は、出力データ(例えば、出力画像)の全ての側において2ピクセルの幅を有するダミー領域を決定することができ、固定サイズ出力の有効領域は46×46ピクセルである。固定サイズ出力のダミーおよび有効領域を決定するプロセスは、FirstValidPixelOffset()アルゴリズムに関連してより詳細に後述する。
【0054】
一般に、FCNモデルが、2以上のストライドサイズを有する1つまたは複数の畳み込み層を含む場合、入力および出力サイズは、多対1マッピングであることができ、もはや1対1マッピングではない。例えば、FCNモデルは、3×3ピクセルのフィルタサイズ、1のストライドサイズ、および単一ピクセルのゼロパディングを有する、第1の畳み込み層を含み、5×5のフィルタサイズ、2のストライドサイズ、および1のゼロパディングを有する、第2の畳み込み層を含むことができる。FCNモデルは、異なるサイズを有する入力(例えば、50×50ピクセル入力および49×49ピクセル入力)を処理することによって同じサイズ(例えば、24×24ピクセル)の出力を生成することができる。これは、各々のネットワーク層を通じて入力を処理するとき、第2の畳み込み層におけるストライドサイズ2が、丸めプロセスをトリガし得るからである。
【0055】
加えて、FCNモデルは、1つまたは複数の転置畳み込み層を含むことができる。例えば、FCNモデルは、5ピクセルのフィルタサイズを有し、ゼロパディングを有さず、2ピクセルのストライドを有する転置畳み込み層を含むことができる。転置畳み込み層は、2ピクセルのストライドサイズを有する第2の層に付加され得る。転置畳み込み層は、一般に、先行する層によって提供された入力からの出力サイズを転置畳み込み層のストライドサイズに基づくファクタだけ増大(例えば、ブローアップ)するように構成されている。上記の例に関して、転置畳み込み層は、第2の畳み込み層からの24×24ピクセル出力を処理することによって51×51ピクセルの出力を生成することができる。即ち、FCNモデルは、51×51ピクセル出力を生成するために50×50ピクセルまたは49×49ピクセルの入力を処理することができる。
【0056】
転置畳み込み層は、パディングサイズがゼロであってもダミー領域を生成または拡大することができる。ダミー領域のサイズは、転置畳み込み層の特性、例えば、フィルタサイズとストライドサイズとの間の関係に基づくことができる。例えば、転置畳み込み層が、フィルタサイズよりも小さいストライドサイズを有する場合、出力はダミー領域を含むことができる。なぜならば、計算は、固定サイズ入力が完全入力から抽出されるとき、隣接ピクセル領域を伴うからである。上述のように、完全入力データから固定サイズ入力を抽出することによって、FCNは、1つまたは複数の計算に真のピクセル値の代わりに1つまたは複数のゼロ値隣接ピクセルを伴うことができ、これは、固定サイズ入力における境界ピクセルの計算を不正確にし、不正確なピクセル値を含むダミー領域と、ダミー領域によって包囲された真のピクセル値の有効領域とを有する出力を生成する。
【0057】
再び上記の例を参照すると、固定サイズ入力が完全入力データ(例えば、入力データ150)から抽出されるとき、ダミー領域が生成される。さもなければ、完全入力データを直接処理するためにFCNがコンパイルされる場合、ダミー領域は生成されない。例えば、1つまたは複数の転置畳み込み層を含むFCNモデルは、ダミー領域を有する出力を生成することができる。これは、固定サイズ入力が完全入力データから抽出されるとき、出力に寄与する1つまたは複数の非ゼロ隣接ピクセルのピクセル値をゼロ値と置き換えさせるからである。
【0058】
固定サイズ出力の有効領域およびダミー領域を決定するために、システム100は、FCNモデルの特性および出力ピクセルの座標を分析することによって、出力ピクセルのための入力画像における1つまたは複数のピクセルをトレースすることができ、またはその逆である。例えば、システム100は、51×51ピクセルの固定サイズ出力を生成するために入力タイルに50×50ピクセルを配置することができる。上述のように、適切な計算パワーを有するホスト130またはハードウェアアクセラレータ110によって入力データ150から生成されたタイルは、1つまたは複数のピクセルにおいて互いにオーバーラップすることができ、したがって、システムは、展開されたFCNモデルを通じて固定サイズ出力において出力ピクセルを生成するために使用された対応する入力ピクセルをトレースバックするために特定のアルゴリズム(例えば、より詳細に後述するようなProjectBackwards()アルゴリズム)を採用することができる。
【0059】
再び図1を参照すると、ホスト130は、データ、または命令、あるいはその両方を伝達することによってハードウェアアクセラレータ110と通信することができる。ホスト130およびハードウェアアクセラレータ110は、有線または無線接続を通じて通信することができ、いくつかの場合、互いに離れて配置され得る。例えば、ホスト130は、アクセラレータ110が配置されたところから異なる物理的ロケーションにあるサーバであることができる。
【0060】
ホスト130は、固定サイズよりも大きなサイズの入力データ150を受信し、各々が入力データ150よりも小さいサイズを有する複数の固定サイズ入力138を生成することができる。ホスト130は、ハードウェアアクセラレータ110に固定サイズ入力138を提供し、ハードウェアアクセラレータ110から複数の対応する固定サイズ出力133を受信することができる。受信された固定サイズ出力133は、提供された複数の固定サイズ入力138のための展開されたFCN115の推論演算を実行するハードウェアアクセラレータ110によって生成される。
【0061】
いくつかの実装形態では、上述のように、CPUなどのハードウェアコンポーネントを含むハードウェアアクセラレータは、入力データ150を多数の固定サイズ入力138にタイリングするためのタイリングプロセスを実行することができる。
【0062】
入力データ150が固定サイズよりも小さいサイズを有する状況では、システム100は、固定サイズに達するように入力データ150の周囲にゼロをパディングし、これを、推論計算を実行するためのハードウェアアクセラレータ110へ提供することができる。
【0063】
出力データ170を生成するために、ホスト130は、さらに、受信された固定サイズ出力133を組み合わせるように構成されたステッチングエンジン140を含むことができる。ステッチングエンジン140は、固定サイズおよび展開されたFCNモデルの特性に基づいて固定サイズ出力133の各々のためのアライメント情報を決定することによってステッチングプロセスを実行し、タイリングなしに、同じFCNモデルではあるが入力データ150のサイズを有する入力を処理するために展開されたFCNモデルを用いて入力データ150を直接処理することによって得られたかのような等価の出力である最終出力170を生成することができる。
【0064】
いくつかの実装形態では、ステッチングプロセスを実行することができるハードウェアコンポーネントを含むハードウェアアクセラレータは、固定サイズ出力133に基づいてハードウェアアクセラレータ上で最終出力170を生成し、最終出力170をホスト130へまたはユーザインターフェースのディスプレイ上に提供することができる。
【0065】
いくつかの実装形態では、本明細書全体を通じたタイリングおよびステッチングプロセスは、ホストから離れて実行されなくてもよい。例えば、CPUなどの適切なハードウェアコンポーネントを含むあらゆる適切なアクセラレータは、アクセラレータ上でタイリングおよびステッチングプロセスを実行することができる。さらに、タイリングおよびステッチングプロセスは、ホストとは異なる物理的ロケーションにおいて実行され得る。例えば、タイリングは、第1の場所においてアクセラレータの第1のセットによって実行され得、ステッチングプロセスは、第2の場所においてアクセラレータの第2のセットによって実行され得、ホストは、第3の場所に配置され、アクセラレータの第2のセットから最終出力を受信するように構成され得る。アクセラレータおよびホストは、通信可能に接続されており、1つまたは複数のロケーションにおいて物理的にまたは無線で接続されている。
【0066】
図2Aは、従来のシステムを用いる例示的な推論プロセス200を示す。
図2Aに示されているように、従来の推論システム200は、(図1に示されているように)入力データ150を受信し、入力データ150を処理する展開されたFCN215のための推論計算を実行することによって出力データ225を生成することができる。出力データ225は、図1に示されているような出力データ170と実質的に類似であることができる。入力データ150は、上述のように入力画像であることができる。
【0067】
入力データ150の各々は異なるサイズを有することができ、これにより、従来のシステムは、異なる入力サイズを処理するためにハードウェアアクセラレータのためのFCN215を再コンパイルする必要がある。例えば、第1の入力データが50×50ピクセルのサイズを有する場合、システムは、50×50ピクセルのサイズの入力を処理するように構成されるようにハードウェアアクセラレータ上にFCN215を展開することができる。しかしながら、第2の入力データが、第1の入力データとは異なるサイズ、例えば、100×100ピクセルを有する場合、システムは、100×100サイズのサイズの入力を処理するように構成されるようにFCN215を再コンパイルしなければならない。
【0068】
異なるサイズを有する入力データの場合、従来のシステムは、まず特定の入力のサイズを決定し、次いで、特定の入力を処理するためにFCN215を再コンパイルする必要があるかどうかを決定する必要がある。加えて、システム200は、メモリおよびデータ構造が適切に割り当てられているかどうかをモニタするために余分な計算チェックを実行する必要がある。その場合、推論計算を実行するための従来の技術は、実質的な量のオーバーヘッドを生じる可能性があり、様々なサイズの入力が与えられた推論出力を生成するための計算効率を低下させる。
【0069】
図2Bは、図1の例示的な推論システム100を用いる例示的な推論プロセス250を示す。
【0070】
図2Bに示されているように、図1に関連して、説明される技術を採用する推論システム100は、異なるサイズを有する入力のために展開されたFCNを再コンパイルすることを回避することができ、これは、オーバーヘッドを減じ、計算効率を高める。より具体的には、システム100は、まずハードウェアアクセラレータ上にFCNモデル235を静的に展開する。システム100は、FCNモデルの特性に基づいてアライメント情報を決定し、少なくとも1つの固定サイズ出力から各々の有効ピクセルを取得することができるように固定サイズ出力のダミー領域および有効領域をタイリングするための固定サイズを含むタイリングパターンを決定することができる。FCNモデル235は、固定サイズを有する入力を処理するためにコンパイルされる。システム100は、タイリングパターンに基づいて複数の固定サイズ入力230を生成するために入力データ150をタイリングし、展開されたFCN235を用いて推論計算を実行するための固定サイズ入力230を提供することができる。システム100は、展開されたFCN235から固定サイズ出力240を取得し、最終出力データ170を生成するために固定サイズ出力240をステッチングすることができる。出力データ170は、完全入力データ150を処理するためにコンパイルされたFCN215を用いて完全入力データ150を直接処理することによって得られる出力データ225と等価である。タイリングおよびステッチングの詳細は後述する。
【0071】
いくつかの実装形態では、システム100は、FCNモデルがランダムサイズ入力を処理するのに適した候補サイズのセットを決定することができる。システム100は、FCNモデルの特性(例えば、フィルタサイズ、ストライドサイズなどの層特性)に基づいて全てのタイルサイズから候補サイズのセットを決定することができる。いくつかのタイルサイズは特性に従って使用することができないことに留意すべきである。例えば、特定の入力サイズは、FCNモデルのフィルタサイズおよびストライドサイズに基づいて出力サイズを生成することができない。例えば、システム100は、FCNモデルが候補サイズを生成するのに適していないサイズを全ての可能なサイズから除去することができる。
【0072】
いくつかの実装形態では、システム100は、FCNモデルを展開するために複数の候補サイズから固定サイズを選択することができる。例えば、システム100は、性能に基づいて固定サイズを選択することができる。
【0073】
いくつかの実装形態では、候補サイズの各々のために、システム100は、候補サイズのうちの1つを有する入力を処理するためのそれぞれのハードウェアアクセラレータ上でFCNモデルのそれぞれのコピーを展開することができる。システム100は、性能のレベル、例えば、異なる固定サイズ入力を処理するFCNネットワークの異なるコピーを用いて推論計算を実行するための合計実行時間、または、別の例として、それぞれの展開されたFCNのための推論計算を実行するための多数のハードウェアアクセラレータを含むシステム100におけるオーバーヘッド、を測定することができる。性能測定に基づいて、システム100は、特定のハードウェアアクセラレータ上でFCNモデルを展開するための固定サイズとして候補サイズのうちの1つを選択することができる。例えば、システム100は、最小合計実行時間につながる候補サイズを選択することができる。別の例として、システム100は、最も少ないオーバーヘッドを生じる候補サイズを選択することができる。選択的に、システム100は、推論計算を実行するための満足できる実行時間およびオーバーヘッドを有する候補サイズを選択することができる。
【0074】
候補サイズの選択は、訓練されたFCNモデルの特性に基づくことができる。例えば、タイリングのための(または展開されたFCNモデルのための)候補サイズが小さすぎると仮定すると、候補サイズの固定サイズ入力から生成された固定サイズ出力も小さくなる可能性があり、さらにはいかなる有効領域を含まない(即ち、固定サイズ出力における全てのピクセルごとの値がダミー領域にある)。
【0075】
選択的に、システム100は、固定サイズとしてその範囲内の1つの候補サイズを選択するためにユーザに候補サイズの個別の範囲を提供することができる。候補サイズの個別の範囲は、FCNの特性(例えば、1つまたは複数の転置層の数および位置、およびFCNに含まれる各々の層の特性)に基づいて非連続的であることができる。例えば、候補サイズの範囲は、10×10ピクセル~30×30ピクセルの偶数ピクセルであることができる。ユーザは、提供された範囲内で固定サイズとして16×16ピクセルを選択することができる。
【0076】
さらに、固定サイズは、スカラーである必要はない。代わりに、固定サイズは、二次元空間における矩形または三次元空間におけるブロックを表すベクトルであることができる。より具体的には、固定サイズは、それぞれの次元においてそれぞれの値を含むことができる。例えば、入力画像が二次元である場合、システム100は、第1の次元(例えば、水平次元)のための第1のサイズおよび第1の次元とは異なる第2の次元(例えば、垂直次元)のための第2のサイズを有する固定サイズベクトルを決定することができる。システム100は、300×100ピクセルのサイズを有する入力画像から30×10ピクセルの複数の固定サイズ入力を生成することができる。
【0077】
図1および図2Bを参照すると、入力データ150を受信した後、システム100は、受信された入力データから複数の固定サイズ入力を決定することができる。固定サイズよりも大きなサイズを有する入力データの場合、システム100は、入力データを分析し、オーバーラップとともにまたはいかなるオーバーラップもなしに、入力データを複数の固定サイズ入力にタイリングすることができる。固定サイズよりも小さなサイズを有する入力データの場合、システム100は、固定サイズに達するように入力データの周囲にゼロをパディングし、推論計算を実行するための展開されたFCNモデルに、(今では固定サイズでもある)パディングされた入力を提供することができる。
【0078】
受信された入力データ150を複数の固定サイズ入力138にタイリングするために、ホスト130は、入力データ150を受信し、タイリングパターンに基づいて複数の固定サイズ入力138を生成するように構成された、タイリングエンジン135を含むことができる。代替的に、適切なハードウェアアクセラレータ110は、入力150を固定サイズの多数のタイルにタイリングすることができる。より具体的には、ホスト130はコンパイルされたFCNモデルを表すバイナリデータおよび入力データ150を記憶するメモリアドレスを含む命令をハードウェアアクセラレータ110へ送信することができる。ハードウェアアクセラレータ110は、CPUなどの適切な計算コンポーネントを含むことができ、1つまたは複数のタイルのためのピクセルごとの値を記憶する対応するメモリアドレスにアクセスする(例えば、直接メモリアクセス)ことによって1つまたは複数のタイルを取得するように構成されている。例えば、ハードウェアアクセラレータは、タイルの外側のピクセル値を記憶するメモリアドレスにアクセスすることなく、タイルのピクセルごとの値を記憶する対応するメモリアドレスにアクセスすることによって5×5ピクセルのタイルを取得することができる。このように、システム100は、上述のように、メモリトラフィックを減じ、計算効率を高めることができる。
【0079】
システム100は、入力データ150を複数の固定サイズ入力138にタイリングするためのタイリングパターンを決定することができる。例えば、タイリングエンジン135は、特定のオーバーラップサイズを有する特定のサイズにおいて入力データ150を固定サイズ入力にタイリングすることができ、例えば、タイリングされた固定サイズ入力は、いかなるオーバーラップも有さず、または各々が特定サイズの共有されたオーバーラップ領域を有し、または各々がそれぞれのサイズにおいて互いにオーバーラップする。したがって、入力データから生成される固定サイズ入力の総数は、タイリングパターンに依存する。
【0080】
FCNモデルが、2以上のストライドサイズを有する1つまたは複数の転置畳み込み層を含む場合、タイリングパターンは、さらにアライメント情報に基づいて決定されることに留意されたい。
【0081】
タイリングパターンのためのオーバーラップサイズは、固定サイズよりも小さいあらゆる適切なサイズであることができる。例えば、各々の固定サイズ入力は、1つのピクセルの幅および固定サイズ入力のエッジの長さにおいて、共有されたオーバーラップサイズを有することができる。別の例として、オーバーラップサイズは、2ピクセル、3ピクセル、および5ピクセルの幅であることができる。タイリングのための固定サイズおよびオーバーラップサイズは、少なくともアライメント情報に基づいて決定される。
【0082】
システム100は、FCNモデルの特性またはユーザ命令に基づいてタイリングパターンを自動的に決定することができる。例えば、システム100は、100×100ピクセルの入力画像を、各々が60×60ピクセルの4つの固定サイズ入力にタイリングすることができる。固定サイズ入力の各々は、互いに20×60ピクセル、60×20ピクセル、または20×20ピクセルのオーバーラップ領域を有することができる。
【0083】
選択的に、システム100は、固定サイズ入力が互いにそれぞれのオーバーラップ領域を有するようにタイリングパターンを生成することもできる。例えば、70×30ピクセルの入力画像は、展開されたFCNモデルと適合する、30×30ピクセルの固定サイズ入力にタイリングされ得る。1つの状況において、4つの固定サイズ入力は、20×30ピクセルの領域において互いにオーバーラップする。最後の固定サイズ入力は入力画像の外側に10×30ピクセルの領域を有することができ、この領域は、拡張されるまたはゼロでパディングされ得ることに留意されたい。いくつかの実装形態では、システムは、計算効率を高めるためにパディングされるゼロを減じかつさらには排除するために最後の固定サイズ入力のオーバーラップ領域を他の入力とともにシフトさせることができる。
【0084】
いくつかの実装形態では、システム100は、様々な訓練データにおいて訓練された適切な機械学習モデルに基づいてタイリングパターンを決定することができる。訓練データは、入力の同じコピーのための固定サイズ入力のそれぞれのセットであることができるが、各々は異なるタイリングパターンに基づいてタイリングされる。機械学習モデルは、システム100のためのまたはシステム100のためにユーザが選択するための1つまたは複数のタイリングパターンを出力することができる。
【0085】
システム100は、ステッチングエンジン140を用いて固定サイズ出力をステッチングすることによって出力170を生成することができる。システム100は、有効領域におけるピクセルの座標を含むタイリングパターンを取得しているので、システムは、完全出力データを生成するために有効領域からのピクセルを効率的にステッチングすることができる。システムは、より詳細に後述される、ステッチングプロセスのためのアルゴリズムを採用することができる。
【0086】
システム100は、各々の固定サイズ出力のために、特定の固定サイズ出力のための座標と、特定の固定サイズ出力を生成するための対応する固定サイズ入力の座標とを取得することができる。特定の固定サイズ入力の座標は、元の入力150に対する固定サイズ入力の位置を表し、同様に、特定の固定サイズ出力の座標は、対応する最終出力170に対する固定サイズ出力の位置を表す。システム100は、それぞれの座標フレーム(例えば、デカルト座標フレーム、またはあらゆる適切な個別の座標フレーム)と、各々の入力および対応する出力データのための座標フレームの原点とを決定することができる。システム100は、タイリングプロセス中に固定サイズ入力の座標を決定し、展開されたFCNモデル115の特性に従って、対応する固定サイズ出力の座標を決定することができる。同様に、システム100は、まず固定サイズ出力の座標を決定し、次いで、FCNモデル115の特性に基づいて、対応する固定サイズ入力の座標を決定することができる。システム100は、アライメント情報を生成し、固定サイズ入力および固定サイズ出力の座標間の関係を生成し、かつその関係に基づいて固定サイズ出力をステッチングするために、1つまたは複数のアルゴリズムを適用することができる。アライメント情報の詳細は後述する。
【0087】
FCNモデルのためのアライメント制約が満たされると、システム100は、さらに、固定サイズ出力および対応する固定サイズ入力の座標を関連付けた後、各々の固定サイズ出力の中央有効領域および周辺ダミー領域を決定することができる。中央有効領域は、対応する固定サイズ入力からの有効ピクセルを用いて生成されたピクセルを含む。ダミー領域は、(例えば、固定サイズ入力の外側の完全入力画像のピクセルのための非ゼロであるべきであったゼロ値から)1つまたは複数のゼロ値隣接ピクセルを用いて生成されたピクセルを含む。
【0088】
システム100は、固定サイズ出力の間の1つまたは複数のオーバーラップ領域を決定することができる。選択的に、システムは、オーバーラップ領域の少なくとも一部が固定サイズ出力の有効領域に属するかどうかを決定することもできる。いくつかの実装形態では、システム100は、1つまたは複数のオーバーラップする固定サイズ出力のための座標シフトを決定することができ、これにより、異なる固定サイズ出力の有効領域は、オーバーラップすることなく互いに隣接してまたは接して位置決めされる。
【0089】
図3Aは、隣接ピクセル領域310を有する例示的な固定サイズ入力138およびダミー領域320を有する例示的な固定サイズ出力133を示す。
【0090】
上述のように、システム100は、完全入力データ150を、展開されたFCNモデルのために適合する固定サイズを有する複数の固定サイズ入力にタイリングすることができる。システム100は、入力データ150のためのタイリングパターンを決定し、入力データ150を上から下へ、左から右へタイリングすることによって固定サイズ入力を生成することができる。タイリングパターンは、オーバーラップ領域、および本質的に、各々の固定サイズ入力のそれぞれの座標によって規定された位置を含むことができる。例えば、図3に示されているように、1つの固定サイズ入力138は、完全入力データ150の特定の位置に配置されている。タイリングパターンの詳細は図3Bおよび図3Cに関連して後述する。
【0091】
固定サイズ入力138の位置は、完全入力データ150の原点に対する1つまたは複数のコーナーピクセルの座標を用いて表すことができる。例えば、システムは、完全入力データ150の左上コーナーピクセルを原点(0,0)として決定することができる。各々の固定サイズ入力のための座標は、原点に関して決定される。例えば、システム100は、入力138の位置およびサイズを表すために固定サイズ入力138の左上コーナーピクセルおよび右下コーナーピクセルの座標を用いることができる。
【0092】
固定サイズ入力は、あらゆる適切な座標フレームによって表すことができる。例えば、各々の固定サイズ入力138の座標は、デカルト座標フレーム、円筒座標フレーム、またはあらゆるその他の適切な座標フレームにおいて表すことができる。
【0093】
タイリングパターンは、あらゆる適切な形式で各々の固定サイズ入力138のための位置を規定することができる。例えば、固定サイズ入力は、行および列で位置決めすることができる。別の例として、固定サイズ入力は、散乱および不一致させられ得る。言い換えれば、固定サイズ入力138は、行および列において、例えば、ジグザグパターンにおいて互いに整列する必要はない。
【0094】
システム100は、あらゆる適切な表記法で固定サイズ入力の位置を注釈付けることができる。例えば、システム100は、第1の次元に沿ったi番目の位置および第2の次元に沿ったj番目のロケーションにおいて固定サイズ入力を表すために(i,j)表記法を用いることができる。簡略にするために、以下の明細書では、システム100は、タイリンググリッドにおいて固定サイズ入力を注釈付ける。即ち、各々の固定サイズ入力は、行および列に沿った連続番号によって表示される。各々の固定サイズ入力は、実質的に矩形において考えられ得る。しかしながら、タイリングパターンおよび注釈は、タイリング要求に基づいて変化することができることが認められるべきである。
【0095】
システム100は、左上コーナーピクセルの座標を
【0096】
【数1】
【0097】
として、右下コーナーピクセルを
【0098】
【数2】
【0099】
として表示することができ、ここで、iおよびjは、入力データ150に関する各々の固定サイズ入力のナンバリングを表す。例えば、iおよびjは、全ての多数の固定サイズ入力の固定サイズ入力のためのそれぞれの行および列を表す。
【0100】
別の例として、入力画像が100×100ピクセルを有すると仮定すると、システム100は、入力画像を、それぞれのオーバーラップサイズを有する3×3グリッド(即ち、9個の固定サイズ入力)にタイリングする。3×3グリッドの第1の行の固定サイズ入力は、第1のグリッドに配置された第1の固定サイズ入力が、
【0101】
【数3】
【0102】
および
【0103】
【数4】
【0104】
の座標を有することができ、第2のグリッドに配置された第2の固定サイズ入力が、
【0105】
【数5】
【0106】
および
【0107】
【数6】
【0108】
の座標を有することができ、第3のグリッドに配置された第3の固定サイズ入力が、
【0109】
【数7】
【0110】
および
【0111】
【数8】
【0112】
の座標を有することができることを含むことができる。3×3グリッドの第1の列の固定サイズ入力は、第1の固定サイズ入力を含むことができ、第4のグリッドに配置された第4の固定サイズ入力は、
【0113】
【数9】
【0114】
および
【0115】
【数10】
【0116】
の座標を有することができ、第7のグリッドに配置された第5の固定サイズ入力は、
【0117】
【数11】
【0118】
および
【0119】
【数12】
【0120】
の座標を有することができる。入力画像の外側の第3および第5の固定サイズ入力のピクセル値は、拡張され、ゼロとして設定され得ることに留意されたい。
【0121】
多数の固定サイズ入力138の各々のエッジピクセルを重複して数えるまたは計算することを回避するために、いくつかの実装形態では、タイリング中、システム100は、固定サイズ入力138の各々について、固定サイズ入力の上および左のエッジにおけるピクセルは、固定サイズ入力に含まれるものと考えられるのに対し、固定サイズ入力の下および右のエッジにおけるピクセルは、固定サイズ入力に含まれるものと考えられないことを決定することができる。
【0122】
入力データ150を複数の固定サイズ入力にタイリングする前に、システム100は、入力データがシステム100のために設定された固定サイズよりも小さいかどうかを決定することができる。入力データ150が固定サイズよりも小さいという決定に応答して、システム100は、固定サイズに達するように入力データ150の外周の周りにゼロをパディングすることができる。
【0123】
「隣接ピクセル領域310」という用語は、上述のように、隣接ピクセルのための元の非ゼロ値と置き換えるためにゼロ値を使用することによって生成された隣接ピクセルを含む領域を表すことに留意されたい。例えば、隣接ピクセル領域310は、図3Aに示されているように、完全入力データ150に固定サイズ入力138の1つまたは複数の隣接ピクセルを含む領域を含むことができる。隣接ピクセル領域310の幅315は、隣接ピクセル領域310に含まれる隣接ピクセルの数を表すことができる。システム100は、展開されたFCN115モデルの特性に基づいて隣接ピクセル領域310のための幅315を決定することができる。
【0124】
システム100は、最終出力データ170に関して各々の固定サイズ出力133のための座標を取得することができる。例えば、システム100は、最終出力データ170の左上コーナーピクセルを原点として選択することができ、固定サイズ出力の左上コーナーピクセルの座標を
【0125】
【数13】
【0126】
として、右下コーナーピクセルを
【0127】
【数14】
【0128】
として表示することができ、ここで、iおよびjは、出力データ170に関する各々の固定サイズ出力のナンバリングを表す。例えば、iおよびjは、全ての固定サイズ出力のそれぞれの固定サイズ出力のためのそれぞれの行および列を表す。
【0129】
システムは、上述のように、さらに、FCNモデルの特性に基づいて各々の固定サイズ出力133のための有効領域330およびダミー領域320を決定することができる。一般に、有効領域330は、固定サイズ出力133の中央に配置され得、ダミー領域320は、幅335で有効領域330の周囲を包囲することができる。幅335は、各々のダミー領域320におけるピクセルの特定の数を決定する。有効領域は、対応する固定サイズ入力138における有効なピクセルごとの値を用いて計算される有効領域におけるピクセルのためのピクセルごとの値を含み、ダミー領域320は、タイリングプロセス中にまたはFCNモデルにおける1つまたは複数の層において特徴付けられる演算を通じて少なくとも1つまたは複数の隣接ピクセルを用いて計算されるダミー領域におけるピクセルのためのピクセルごとの値を含む。有効領域330におけるピクセルのためのピクセルごとの値は、少なくとも一部は最終出力170に寄与するのに対し、ダミーピクセルは、ステッチングプロセス中に排除または廃棄される。
【0130】
システム100は、FCNモデルの特性に従って、固定サイズ出力におけるピクセルからFCNモデルを通じて、対応する固定サイズ入力における1つまたは複数のピクセルへトレースバックすることによって、有効領域330およびダミー領域320を決定することができる。より具体的には、システム100は、ダミー領域のための幅を決定するために、後述するようなFirstValidPixelOffset()アルゴリズムを実行することができ、有効領域は、出力における領域の残りの部分である。
【0131】
より具体的には、FirstValidPixelOffset()アルゴリズムは、FCN出力の最終ダミー領域を決定するために無効情報を層ごとに伝播させるように構成されている。FCNの第1の層において、層は、第1の層のための隣接ピクセル領域におけるピクセルの使用により、その出力におけるダミー領域を生じる。しかしながら、第2の層から先は、先行する層から生成されかつ伝播させられた隣接ピクセルおよびダミーピクセルの使用により、層出力のダミー領域が成長する。
【0132】
FirstValidPixelOffset()アルゴリズムを実行することによって、システム100は、FCNモデルの特性(例えば、FCNモデルにおける全ての層のためのそれぞれのフィルタサイズ、ゼロパディングサイズ、ストライドサイズ、およびスケールファクタ)に基づいて、幅335、および本質的に幅335内のピクセルの数を決定することができる。ダミー領域の幅335が全てのダミーピクセルを含むことができることに留意されたい。しかしながら、いくつかの実装形態では、幅335は、全てのダミーピクセルおよび1つまたは複数の有効ピクセルを含むために十分に大きい。
【0133】
FCNモデルが1つまたは複数の転置層を含む場合、システム100は、1つまたは複数の転置層の数および位置に基づいてダミー領域320の幅335を決定することができる。FCNモデルにおける転置畳み込み層340、345を用いて出力を生成する例示的なプロセスを示す図3Dに関連して、FCNモデルは、図1のコンパイルされた完全畳み込みネットワーク115に対して等価であることができる。簡略にするために、適切に構成されたシステム、例えば、図1の推論システム100が、図3Dのプロセスを実行することができる。
【0134】
図3Dに示されているように、FCNモデルは、FCNモデルにおける先行する層から2×2ピクセルの出力341を受信するように構成された転置畳み込み層340を含むことができる。システムは、4×4ピクセルの出力342を生成するために、転置畳み込み層340に関連した演算を実行することができる。転置畳み込み層340は、ストライドサイズ1を有する3×3ピクセルのフィルタサイズを含む。転置畳み込み層340は、いかなるゼロパディングも含まない。入力ピクセルAは、出力ピクセルA1、A2、A3、C1、C2、C3、D1、D2およびD3に関連させられており、入力ピクセルBは、出力ピクセルC1、C2、C3、D1、D2、D3、B1、B2およびB3に関連させられている。入力ピクセルAおよびBに関連した出力ピクセルのオーバーラップ領域は、ピクセルC1、C2、C3、D1、D2およびD3を含む。
【0135】
ピクセルC1、C2およびC3が、出力341におけるピクセルAの左側の入力ピクセルにも関連させられていることに留意されたい(図示せず)。同様に、ピクセルA1、A2およびA3は、ピクセルAの左側の2つの入力ピクセルに関連させられており、ピクセルD1、D2およびD3は、入力ピクセルAおよびBならびにピクセルBの右側の別の入力ピクセルに関連させられている。
【0136】
完全入力画像が、ピクセルAの左側の第1のピクセル、ピクセルA、およびピクセルBを含む先行層を通じて中間出力を生成することができると仮定すると、A1、A2、A3、C1、C2およびC3のピクセル値は正確ではない。なぜならば、固定サイズ入力は、第1のピクセルのためのピクセル値を生成せず、したがって、システム100が、ピクセルA1、A2、A3、C1、C2およびC3のための部分出力を生成するために、第1のピクセルを表すためにゼロ値隣接ピクセルを使用するからである。しかしながら、D1、D2、D3、B1、B2およびB3のピクセル値は正確である。なぜならば、完全入力および固定サイズ入力の両方が、ピクセルBの右側のピクセルのためのゼロピクセル値を使用するからである。
【0137】
同様に、転置畳み込み層345は、両方向における2ピクセルのストライドサイズおよび3×3ピクセルのフィルタサイズを含み、先行層から出力344を受信し、5×5ピクセルの出力345を生成するように構成されている。入力ピクセルAは、ピクセルA1、A2、A3、C1、C2、C3、D1、D2およびD3に関連させられており、入力ピクセルBは、ピクセルD1、D2、D3、B1、B2、B3、E1、E2およびE3に関連させられている。オーバーラップ領域は、正確なピクセルD1、D2およびD3を含む。なぜならば、これらのピクセルは、隣接ピクセルを用いて計算されないからである。
【0138】
図3Dは、唯一の転置畳み込み層ための正確および不正確なピクセル値を決定することのみを表すが、システム100は、上述のようにFCNモデルの全ての層のための入力と出力との間の関係を分析することによって固定サイズ出力のためのダミー領域および有効領域を決定することができる。
【0139】
加えて、システム100は、FCNモデルの各々の層のための入力と出力との間の関係に基づいてアライメント情報を決定することができる。
【0140】
例えば、図3Dに示されているように、転置畳み込み層340とは異なり、転置畳み込み層345は、2ピクセルのストライドを有する。したがって、C1、C2、C3、D1、D2、D3、B1、B2およびB3を含む出力は、出力344において対応するピクセルを有さない。システム100は、2ピクセルの整数倍になるように転置畳み込み層345のためのアライメント情報を決定することができる。2ピクセルの整数倍は、転置畳み込み層における有効なマッピングを保証するためにアライメント情報に含まれる、例えば、2、4、8および10ピクセルであることができる。
【0141】
FCNモデルが、2つ以上の転置層を含む場合、システム100は、全ての転置層の特性(例えば、転置層の数、位置、およびストライド)に基づいてFCNモデル全体のための全体的なアライメント情報(例えば、全ての層のための蓄積されたアライメント値、または全体的なアライメント値)を決定することができる。いくつかの実装形態では、システム100は、全ての転置層のそれぞれのストライドサイズの積として全体的なアライメント情報を決定することができる。
【0142】
システム100は、最終出力の正しさ、計算中のメモリトラフィック、および計算効率に基づいて、多数の候補アライメント値からアライメント情報を決定することができる。特に、最終出力の正しさに関して、システム100は、最終出力の各々のピクセルが固定サイズ出力のうちの1つの有効領域から得られ得ることを保証する全体的なアライメント値を選択することができる。
【0143】
プーリング層などのその他のタイプの層を含むFCNモデルの場合、システム100は、タイリングおよびステッチングプロセスを分析するための畳み込み層の一形態としてその他のタイプの層を処理することができる。例えば、最大プーリング2×2層は、タイリングおよびステッチングプロセスを分析するために、2ピクセルのストライド、2×2ピクセルのフィルタサイズを有し、かつゼロパディングを有さない畳み込み層として処理され得る。
【0144】
説明を容易にするために、出力341および344のサイズは2×2ピクセルであり、出力342のサイズは4×4ピクセルであり、出力346のサイズは5×5ピクセルであるが、入力および出力は、一般的に、あらゆる適切なサイズを有することができることに留意されたい。同様に、転置畳み込み層340および341のためのフィルタサイズ、ストライド、およびゼロパディングは、あらゆる適切なサイズを含むことができる。
【0145】
一般に、FCNモデルが1つまたは複数の転置層を含む場合、固定サイズ出力におけるダミー領域の決定は、実質的に複雑になる可能性がある。しかしながら、本明細書に説明される技術を実行するシステムは、層が畳み込み層であるかまたは転置畳み込み層であるかにかかわらず先行層から後続層へのダミー領域の伝播を決定することができ、理論的には、どれだけ多くのネットワーク層をFCNモデルが含むかにかかわらず、FCNモデルの特性に基づいて固定サイズ入力が与えられた固定サイズ出力のためのダミー領域を決定することができる。
【0146】
FCNモデルの1つまたは複数の層は、異なる次元(例えば、二次元層の場合の高さおよび幅次元)に沿って異なる特性を有することができる。例えば、ネットワーク層のフィルタサイズ、ストライドサイズ、またはパディングサイズは、高さおよび幅次元に沿って同じではない場合がある(例えば、3×2ピクセルのフィルタサイズ、2×1ピクセルのストライドサイズ、0×1ピクセルのゼロパディングサイズ)。本明細書に説明される技術は、各々の次元に沿って独立してアライメント情報、ダミー領域、およびタイリングパターンを計算することができ、このことは、異なる次元に沿って不均一な固定サイズ出力を生じ得る。例えば、システム100は、ダミー領域320のための不均一な幅を生成する可能性がある、即ち、幅335は、ダミー領域320のために不均一である可能性がある。例えば、ダミー領域320の左および右の部分の幅335は、上および下の部分よりも大きい可能性がある。
【0147】
一般的に、FCNモデルは、入力テンソルを受信し、多数の次元において出力テンソルを生成することができる。例えば、入力テンソルは、上述のように高さHおよび幅W次元に加えて、多数のチャネルCおよび多数のバッチBを有することができる。
【0148】
FCNモデルは、次元が完全に畳み込みである限り、入力の多数の次元の各々を処理するように適合させられ得る。例えば、FCNモデルは、B×H×W×C次元を有する画像入力を処理することができる。バッチ次元およびチャネル次元が完全に畳み込みではないと仮定すると、FCNモデルは、高さおよび幅次元においてのみ入力を処理することができ、ここで、プロセスは、一般的に二次元問題であると考えることができる。別の例として、FCNは、次元の残りが完全に畳み込みではない場合に単一次元のオーディオ入力のみを処理することによって、多数次元を有するオーディオ入力を処理することができる。代替的に、FCNモデルは、これらの次元が完全に畳み込みである場合、より高い次元、例えば、二次元よりも高い次元を処理することができる。
【0149】
システム100は、固定サイズ出力133の有効領域330の座標も決定することができる。同様に、システムは、固定サイズ出力133の原点に関して、有効領域の左上コーナーピクセルを
【0150】
【数15】
【0151】
として、右下コーナーピクセルを
【0152】
【数16】
【0153】
として表示することができる。例えば、iおよびjは、対応する固定サイズ出力133または対応する固定サイズ出力133の有効領域のためのそれぞれの行および列を表す。
【0154】
転置畳み込み層を有さない展開されたFCNモデルの場合、システム100は、後述する第1のアルゴリズムを通じて固定サイズ出力をステッチングすることができる。別の例として、転置畳み込み層を有する展開されたFCNモデルの場合、システム100は、後述の第2のアルゴリズムを用いて生成されたアライメント情報に基づいて固定サイズ出力をステッチングすることができる。
【0155】
第1のアルゴリズムは、固定サイズ出力の有効領域がオーバーラップしないことを保証することができ、第2のアルゴリズムは、潜在的に固定サイズ出力の有効領域をオーバーラップさせ、このことは、固定サイズ出力を正しく組み合わせるために余分なステップを必要とする。余分なステップは、固定サイズ出力の各々の有効領域、または固定サイズ出力の各々、あるいはその両方のための座標シフトを含むことができ、座標シフトの詳細は後述する。
【0156】
第1のアルゴリズムを使用するとき、システム100は、bとしてのダミー領域335の幅、およびそれぞれ固定サイズ入力、対応する固定サイズ出力、および固定サイズ出力の有効領域の座標のためのマッピング関数
【0157】
【数17】
【0158】
【0159】
【数18】
【0160】
および
【0161】
【数19】
【0162】
を表示することができる。各々のマッピング関数は、特定の座標を特定の方向へ戻すことができる(例えば、I(i,j)。
【0163】
【数20】
【0164】
は、垂直方向または高さ方向における座標を表す。簡略にするために、システム100は、固定サイズ入力および固定サイズ出力が二次元空間において正方形であると仮定し、固定サイズ入力のサイズをT、固定サイズ出力のサイズをTとして表示する。システムは、初期入力データのためのサイズをHおよびWとして表示し、一般性を失うことなく、H>=TおよびW>=Tと仮定される。固定サイズ入力および出力がいくつかの実装形態では矩形であることができることにも留意されたい。
【0165】
システム100は、最終出力170を生成するために、固定サイズ出力のそれぞれの座標に従って、左から右および上から下へスキャンするためのダイナミックプログラミングを用いて、以下の第1のアルゴリズムを実行することができる。第1のアルゴリズムは以下のように書かれる:
初期化:
O(0,0) = (0,0,TO,TO)
V(0,0) = (0,0,TO - b,TO - b)
左境界タイル:
O(i,0) = (V(i - 1,0).hb - b,0,V(i - 1,0).hb - b + TO,TO)
V(i,0) = (V(i - 1,0).hb,0,V(i - 1,0).hb - 2b + TO,TO - b)
上境界タイル:
O(0,j) = (0,V(0,j - 1).wb - b,TO,V(0,j - 1).wb - b + TO)
V(0,j) = (0,V(0,j - 1).wb,TO - b,V(0,j - 1).wb - 2b + TO)
内部タイル:
O(i,j) = (V(i - 1,j).hb - b,V(i,j - 1).wb - b,V(i - 1,j).hb - b + TO,V(i,j - 1).wb - b + TO)
V(i,j) = (V(i - 1,j).hb,V(i,j - 1).wb,V(i - 1,j).hb - 2b + TO,V(i,j - 1).wb - 2b + TO)
右境界タイル:
O(i,lastj) = (V(i - 1,lastj).hb - b,WO - TO,V(i - 1,lastj).hb - b + TO,WO)
V(i,lastj) = (V(i - 1,lastj).hb,WO - TO + b,V(i - 1,lastj).hb - 2b + TO,WO)
下境界タイル:
O(lasti,j) = (HO - TO,V(lasti,j - 1).wb - b,HO,V(lasti,j - 1).wb - b + TO)
V(lasti,j) = (HO - TO + b,V(lasti,j - 1).wb,HO,V(lasti,j - 1).wb - 2b + TO)
上述の第1のアルゴリズムによれば、システム100は、オーバーラップなしで互いに隣接して有効領域を有する有効な固定サイズ出力を生成することができる。より具体的には、システム100は、ダミー領域におけるピクセルを廃棄し、最終出力を生成するために固定サイズ出力における有効領域を組み合わせることができる。さらに、固定サイズ出力の間の有効領域がオーバーラップしないので、第1のアルゴリズムを用いるシステムは、有効領域におけるほとんど全てのピクセルを僅か一回で計算することができ、これは、転置畳み込み層を有さないFCNモデルのための計算効率を最適化する。この実装形態の一例を、図3Bに関連してより詳細に説明する。
【0166】
転置畳み込み層を含むFCNモデルの場合、システム100は、アライメント情報をアドレスする第2のアルゴリズムを実行する必要がある。第2のアルゴリズムを用いて生成される有効領域は、潜在的にオーバーラップする可能性があり、有効領域における1つまたは複数のピクセルのための重複計算を生じる可能性がある。
【0167】
システム100は、FCNモデルにおいて転置畳み込み層によって示された計算要求に従って、固定サイズ出力のためのアライメント情報を取得することができる。例えば、この要求は、固定サイズ出力における1つまたは複数のピクセルからトレースされる固定サイズ入力における1つまたは複数のピクセルのためのピクセル指数が整数であるべきであることができる。
【0168】
第2のアルゴリズムは以下のように書かれる:
初期化:
O(0,0) = (0,0,TO,TO)
V(0,0) = (0,0,TO - b,TO - b)
左境界タイル:
UO= (V(i - 1,0).hb - b,0,V(i - 1,0).hb - b + TO,TO)
O(i,0)=AlignOutputTile(UO)
V(i,0)=(O(i,0).ht + b,0,O(i,0).hb - b,TO - b)
上境界タイル:
UO= (0,V(0,j - 1).wb - b,TO,V(0,j - 1).wb - b + TO)
O(0,j)=AlignOutputTile(UO)
V(0,j)= (0,O(0,j).wt + b,TO - b,O(0,j).wb - b)
内部タイル:
UO= (V(i - 1,j).hb-b,V(i,j - 1).wb - b,V(i - 1,j).hb - b + TO,V(i,j - 1).wb - b + TO)
O(i,j)=AlignOutputTile(UO)
V(i,j)=(O(i,j).ht + b,O(i,j).wt + b,O(i,j).hb - b,O(i,j).wb - b)
第2のアルゴリズムは、第1のアルゴリズムの修正バージョンである。特に、システム100は、アライメント要求を考慮しない「アラインされていない」固定サイズ出力の座標を取得することができる。固定サイズ出力は、Uとして表示される、左および上のダミー領域が省略された、ダミー領域および有効領域の両方を有する。第2のアルゴリズムは、「アラインされていない」固定サイズ出力のためのアライメント情報を決定することができ、「アラインされていない」固定サイズ出力が以下のAlignOutputTile()関数に基づいてアライメント情報を満たすかどうかを決定することができる。アライメント情報は、ローカルサーチまたは分析的方法のうちの少なくとも1つに基づいてAlignOutputTile()関数を用いて取得することができる。アライメント情報は、「アラインされていない」固定サイズ出力を左および上方へシフトさせるための座標シフトを含むことができる。いくつかの実装形態では、アライメント情報は、FCNモデルの特性に基づいて分析的に決定されたアライメント値を表すことができる。アライメント値の詳細およびアライメント値を取得するための関数は後述する。
【0169】
第2のアルゴリズムを実行することによって、システム100は、最終出力に関連した各々のピクセル値が固定サイズ出力のうちの少なくとも1つから取得され得ることを保証することができ、固定サイズ出力のためのアライメント値は、各々の対応する固定サイズ入力が入力画像に関して整数のピクセル座標を有することを保証することができる。したがって、システム100は、第2のアルゴリズムを用いてダミー領域を減算することによって有効領域の座標を取得することができる。
【0170】
第1および第2のアルゴリズムを用いるタイリングおよびステッチングプロセスの詳細は、それぞれ図3Bおよび図3Cに関連して説明される。
【0171】
システム100は、展開されたFCNモデルの特性を用いて、対応する固定サイズ出力の座標に基づいて固定サイズ入力の座標を取得することもできる。より具体的には、システム100は、層出力の座標、ならびに層のパディング、ストライド、フィルタサイズ、およびスケールファクタに基づいて、挿入力の座標を取得することができる。1つの例示的なアルゴリズムは、「ProjectBackwards()」と呼ばれ、以下のように書かれる:
function ProjectBackwards((ht, wt, hb, wb),layers):
for layer = output to input layers:
if ht == hb or wt == wb:
THROW EXCEPTION; //層が消滅させられる
if layer type is “conv”:
//Conv層:n=フロア((m+2p-f)/s)+1, nは出力サイズ、m=入力サイズ
s=層のストライド; p=層のパディング; f=層のフィルタサイズ
n_h = hb - ht; n_w = wb - wt //hおよびw次元における出力タイルサイズ
//入力タイルサイズ
m_h = (n_h - 1) * s + f - 2 p; m_w = (n_w - 1) * s + f - 2p
//注意: m_h x m_w は最小入力タイルサイズであるが、
//(m_h + s-1) x (m_w +s-1)までのあらゆるサイズがn_h x n_w 出力を生じるために働く
//trans_conv層がモデル順序においてconv層に先行し、あるサイズを許容しないならば
//より大きなサイズを選択することが問題となり得る
//サイズは、簡略化のためにここには示されない、バックトラッキングとして調査され得る
ht = ht * s; hb = ht + m_h
wt = wt * s; wb = wt + m_w
else if layer type is “trans_conv”:
//TransConv層:n=(m+2p-1)*s+f
s=層のストライド; p=層のパディング; f=層のフィルタサイズ
n_h = hb - ht; n_w = wb - wt //hおよびw次元における出力タイルサイズ
//入力タイルサイズ
m_h = Validate((n_h - f) / s - 2 p + 1)
m_w = Validate((n_w - f) / s - 2 p + 1)
ht = Validate( ht / s ); hb = ht + m_h
wt = Validate( wt / s ); wb = wt + m_w
return (ht, wt, hb, wb)
where:

function Validate(value):
if value is integral:
return value
else: THROW EXCEPTION
//値は、FCNにおける固定サイズ入力の座標のために使用することはできない
ProjectBackward()アルゴリズムは、固定サイズ入力の座標が層の出力から層の入力へ適切に投影され得るかどうかをチェックするためにValidate()関数を呼び出す。このValidate()関数は、例えば、システム100によって選択された出力ロケーション(例えば、ピクセル座標)が、1つまたは複数の転置畳み込み層のためのアライメント制約またはアライメント情報のために適切ではない(即ち、投影された座標が非整数値を含む)かどうかを決定することができ、したがって、システム100が固定サイズ入力ロケーションへ投影しようとする出力ロケーションは、無効であり、使用することができない。
【0172】
いくつかの実装形態では、システム100は、対応する固定サイズ入力の座標および展開されたFCNモデルの特性に基づいて、固定サイズ出力のための座標を取得することもできる。1つの例示的なアルゴリズムは、「ProjectForward()」と呼ばれ、以下のように書かれる:
function ProjectForward((ht, wt, hb, wb), layers):
for layer = input to output layers:
if ht == hb or wt == wb:
THROW EXCEPTION; //層が消滅させられる
if layer type is “conv”:
//Conv層: n=フロア((m+2p-f)/s)+1, nは出力サイズ, m=入力サイズ
s=層のストライド; p=層のパディング; f=層のフィルタサイズ
m_h = hb - ht; m_w = wb - wt //hおよびw次元における入力タイルサイズ
//出力タイルサイズ
n_h = floor((m_h + 2 p - f) / s) + 1;
n_w = floor((m_w + 2 p - f) / s) + 1
ht = Validate(ht / s); hb = ht + n_h
wt = Validate(wt / s); wb = wt + n_w
else if layer type is “trans_conv”:
//TransConv層: n=(m+2p-1)*s+f
s=層のストライド; p=層のパディング; f=層のフィルタサイズ
m_h = hb - ht; m_w = wb - wt //hおよびw次元における入力タイルサイズ
//出力タイルサイズ
n_h = (m_h + 2 p - 1) * s + f; n_w = (m_w + 2 p - 1) * s + f;
ht = ht * s; hb = ht + n_h
wt = wt * s; wb = wt + n_w
return (ht, wt, hb, wb)
同様に、Validate()関数は、対応する出力ロケーションへの固定サイズ入力ロケーションの投影を検証するためにProjectForwards()アルゴリズムによって使用され得、例えば、2以上のストライドサイズを有する畳み込み層のための固定サイズ入力ロケーションが適切ではないかどうかを決定することができる。
【0173】
再び図3Aおよび図3Dを参照すると、システムは、幅bの領域が少なくとも全ての不正確なピクセルを含むべきであるように、ダミー領域のための幅bを決定することができる。いくつかの実装形態では、ダミー領域は、全ての不正確なピクセルおよび1つまたは複数の正確なピクセルを含むことができる。しかしながら、幅bは、計算性能を害するほど大きすぎるべきではない。なぜならば、大きな幅bの結果、システム100は、タイリングおよびステッチングプロセス中に、より多数のオーバーラップする固定サイズ出力および固定サイズ入力を生じる可能性があるからである。システム100は、各々の層の層出力のための第1の有効ピクセルオフセットを計算することによって、幅bのための最小値を決定することができる。現在の層のための第1の有効ピクセルは、先行層の出力からのいかなるゼロ値隣接ピクセルも使用することなくシステム100によって計算される。システム100は、以下のように関数FirstValidPixelOffset()の演算を実行する:
function FirstValidPixelOffset(layers):
//前の層が有効な結果を生じた第1のピクセルオフセット
first_valid_offset = 0
for layer = input to output layers:
if layer type is “conv”:
s = stride of layer; p = padding of layer; f = filter size of layer
first_valid_offset = ceil((first_valid_offset + p) / s)
else if layer type is “trans_conv”:
s = stride of layer; p = padding of layer; f = filter size of layer
//入力作動における最後の無効なピクセルのオフセット。-1以上であり得る
last_invalid_offset = first_valid_offset + p - 1
//出力作動における最後の無効なピクセルのオフセット
last_invalid_offset = last_invalid_offset * s + f - 1
first_valid_offset = last_invalid_offset + 1
return first_valid_offset

b=FirstValidPixelOffset(layers)
一般に、固定サイズ出力の左および右から計算された第1の有効ピクセルのための基準は、完全に対称的であるわけではなく、いくつかのピクセルは、フィルタが適用され得ない固定サイズ入力の右側に留まる場合があり、これは、左よりも固定サイズ出力の右側において1つ多い有効ピクセルを保持することに留意されたい。FirstValidPixelOffset()関数の出力(例えば、第1の有効オフセット)は、左から計算され、この値は、右のためにも正しいべきである。同様に、上述の分析は、固定サイズ出力の上または下からの計算のためにも適用されるべきである。
【0174】
再び、ProjectBackwards()関数に関連して、第2のアルゴリズムにおけるAlignOutputTile()関数を参照すると、システム100は、それぞれの固定サイズ出力の各々のためのそれぞれの座標シフトを取得し、それぞれの座標シフトに基づいてそれぞれの固定サイズ出力を組み合わせることによって最終出力を生成することができる。
【0175】
システム100は、異なる方法を用いてAlignOutputTile()関数を実装することができる。いくつかの例を挙げれば、システム100は、それぞれの座標シフトのためのローカルサーチを実行するか、またはそれぞれの座標シフトのための分析的表現を取得することができる。AlignOutputTile()は以下のように書かれる:
function AlignOutputTile((ht, wt, hb, wb), layers):
if approach == “local search”:
for (hs, ws) = try all values in some pattern from 0 to max_shift:
try:
return ProjectBackwards((ht - hs, wt-ws, hb-hs, wb-ws), layers)
except:
//投影に失敗、他のシフト値をトライし続ける
THROW EXCEPTION //タイルのための有効なアライメントを見つけることに失敗
else if approach == “analytical”:
hts = int (ht / alignment) * alignment
wts = int (wt / alignment) * alignment
hbs =hb - (ht - hts)
wbs =wb - (wt - wts)
return (hts, wts, hbs, wbs)

where: alignment = CalculateAnalyticalAlignment(layers)
ローカルサーチ法を用いる場合、システム100は、各々の次元において複数のトライアルシフトを提供することができる。トライアルシフト値は、ゼロピクセルから座標シフトのための所定の最大値(例えば、最終出力のサイズ)までの範囲にわたることができる。システム100は、「アラインしていない」固定サイズ出力の座標と、関連する固定サイズ入力の座標との間の関係を決定する必要がある。一例として、システム100は、実証された固定サイズ入力をサーチするために、「アラインしていない」固定サイズ出力133の座標およびトライアルシフト値をProjectBackwards()関数へ提供することができる(即ち、固定サイズ入力を表す座標は、整数ピクセルに当てはまるべきである)。システム100が、実証された固定サイズ入力をうまく見つけると、システム100は、特定のトライアルシフト値に基づいて、シフトされた固定サイズ出力を戻すことができる。
【0176】
分析的方法を用いる場合、システム100は、展開されたFCNモデルの特性を分析することによって一定のアライメント値を決定することができる。分析的表現のための1つの例示的なアルゴリズムは、「CalculateAnalyticalAlignment()」と呼ばれ、以下のように書かれる:
function CalculateAnalyticalAlignment(layers):
//最小の正しいアライメントを見つけるためのアルゴリズム:trans_convの前のconv層の存在
//層はtrans_conv層によって必要とされるアライメントを容易にする
conv_stride_product = 1 //バックトゥバックconv層のストライドの積
trans_conv_stride_product = 1 //バックトゥバックtrans conv層のストライドの積
alignment = 1 //FCN出力層における要求されるタイルアライメント
for layer = output to input layers:
if layer type is “conv”:
s = stride of layer
conv_stride_product *= s
else if layer_type is “trans_conv”:
s = stride of layer
trans_conv_stride_product * = s
prev_layer = previous layer //prev_layerは層のための入力を生じる
//層がFCN全体のための入力層であるならばprev_layer == null
if prev_layer == null OR prev_layer type ! = “trans_conv”:
//最大公約数を用いることによってtrans_conv層のスタックによって課せられるアライメント要求を
//容易にするためにconv層の後続のスタックを利用する
gcd = GCD (conv_stride_product, trans_conv_stride_product) alignment_for_stack = trans_conv_stride_product / gcd
alignment * = alignment_for_stack
//スタックをリセットする
conv_stride_product, trans_conv_stride_product = 1, 1
return alignment
システム100は、FCNモデルの各々の層の特性に基づいて一定のアライメント値を決定する。例えば、この特性は、層タイプ(例えば、畳み込み、転置畳み込み層、またはプーリング層などのその他の層)、または層のためのパディング、フィルタおよびストライドのためのサイズであることができる。前述のように、FCNモデルにおけるその他のタイプの層、例えば、プーリング層は、明細書全体を通じて畳み込み層として処理される。
【0177】
図3Bは、図1の例示的な推論システム100によって実行されるタイリングおよびステッチングプロセス399の一例を示す。システム100は、第1のアルゴリズムを用いてタイリングおよびステッチングプロセス355を実行するように構成され得る。
【0178】
システム100は、それぞれのサイズを有する多数の固定サイズ入力350a、350b、350cおよび350dを生成することができる。例えば、固定サイズ入力350a~dは各々、異なるサイズを有することができる。別の例として、固定サイズ入力350a~dは、図3Bに示されているように、同じサイズを有することができる。説明を容易にするために、固定サイズ入力350a~dは、実線によって正方形で表されている。
【0179】
図3Bに示されているように、各々の固定サイズ入力350a~dは、それぞれの隣接ピクセル領域360a、360b、360c、または360dを有することができる。隣接ピクセル領域のサイズまたは幅は、1ピクセル、3ピクセル、および5ピクセルであることができる。説明を容易にするために、隣接ピクセル領域は、破線によって正方形で表されている。ゼロピクセル値領域360aの左の領域は、いかなるゼロ値隣接ピクセルも含まないことに留意されたい。なぜならば、固定サイズ入力350aの左エッジは、完全入力データ150の左エッジの一部でもあるからであり、これにより、固定サイズ入力350aの左の領域におけるピクセルの計算処理は、対応する固定サイズ出力に不正確さをもたらさない。
【0180】
いくつかの実装形態では、固定サイズ入力350a~dおよびそれぞれに関連した隣接ピクセル領域360a~dは、完全入力データ150に対して均等に間隔を空けられ得、互いに均一にオーバーラップすることができる。図3Bに示されているように、固定サイズ入力350aおよび350bは、オーバーラップ領域353aにおいて互いにオーバーラップしており、固定サイズ入力350bおよび350cは、領域353bにおいて互いにオーバーラップしており、固定サイズ入力350cおよび350dは、領域353cにおいて互いにオーバーラップしている。オーバーラップ領域353aおよび353bは、同じサイズを有するが、オーバーラップ領域353cは、オーバーラップ領域353aおよび353bよりも大きいことができる。これは、第1のアルゴリズムの特性による。第1のアルゴリズムに示されているように、右境界および下境界における固定サイズ入力は、入力データの境界を超えることができない。例えば、固定サイズ入力350dが、他の固定サイズ入力350a~cと同じ形式で配置されていると仮定すると、固定サイズ入力350dは、右境界にあり、完全入力データ150の右境界を超える部分を有することができる。システム100は、第1のアルゴリズムを用いて、固定サイズ入力350dをいくつかのピクセルだけ左へ「移動させる」(即ち、再タイリングする)ことができ、これにより、固定サイズ入力350dのピクセルは、完全入力データ150内に完全に配置される。しかしながら、固定サイズ入力350dの配置は、もはや他の固定サイズ入力と同じではないので、固定サイズ入力350dおよび350cの間のオーバーラップ領域353cは、オーバーラップ領域353aおよび353bよりも大きいことができる。右および下の境界における固定サイズ入力が、完全入力データ150の対応する境界を超えない場合、固定サイズ入力は、同じオーバーラップ領域を有するように配置され得る。
【0181】
オンラインまたはオフラインで計算された固定サイズに基づいて完全入力データ150を多数の固定サイズ入力にタイリングした後、システム100は、少なくとも第1のアルゴリズムおよびより詳細に後述されるステッチングアルゴリズムに基づいて、ランダムサイズ入力を処理し、互いにオーバーラップせず、エッジピクセルにおいて互いに隣接するそれぞれの有効領域を有する固定サイズ出力を生成することができる。
【0182】
システム100は、一般的に完全出力データ170においてオーバーラップしない有効領域を有する固定サイズ出力を生成することができる。しかしながら、いくつかの状況では、1つまたは複数の固定サイズ出力は、互いにオーバーラップする可能性がある。図3Bに示されているように、有効領域370a、370bおよび370cは互いにオーバーラップしない。しかしながら、有効領域370dは、オーバーラップ領域373において有効領域370cとオーバーラップする。これは、第1のアルゴリズムが、第1のアルゴリズムを用いて右境界固定サイズ入力350aをいくつかのピクセルだけ左へ「移動」させ、これにより、固定サイズ出力370dが、隣接する固定サイズ出力370cとオーバーラップするからである。対応する有効領域に関連したダミー領域375a、375b、375cおよび375dは、オーバーラップすることができる。説明を容易にするために、固定サイズ出力の有効領域は、実線によって正方形で表されており、固定サイズ出力のダミー領域は、破線によって正方形で表されている。
【0183】
ダミー領域375aの左の領域は、いかなる無効値も含まない。なぜならば、固定サイズ出力375aの左エッジは、完全出力データ170の左エッジの一部でもあるからである。同様に、ダミー領域375dの右エッジは、いかなる無効値も含まない。
【0184】
ステッチングプロセス中、システム100は、ダミー領域におけるピクセルごとの値を廃棄することができ、完全出力データ170を生成するために有効領域におけるピクセルごとの値を接続する。完全出力データ(または最終出力)における各々のピクセル値は、有効領域におけるピクセルごとの値から少なくとも一回提供される。
【0185】
図3Cは、図1の例示的な推論システム100によって実行されるタイリングおよびステッチングプロセス355の別の例を示す。システム100は、第2のアルゴリズムを用いてタイリングおよびステッチングプロセス399を実行するように構成され得る。
【0186】
上述のように、第1のアルゴリズムと比較して、システム100は、第2のアルゴリズムを用いていくつかの追加的なステップを実行し、例えば、FCNモデルのためのアライメント情報を決定し、アライメント情報に基づいて固定サイズ出力のための座標シフトを計算することによって有効領域を決定する。これは、FCNモデルが特定の層(例えば、転置畳み込み層)を含む場合、システムが、固定サイズ出力におけるピクセルから固定サイズ入力における対応するピクセルへのマッピング(例えば、整数座標)を検証する必要があるからである。
【0187】
加えて、第2のアルゴリズムは、完全入力データ150の右および下の境界における固定サイズ出力の「移動」を実行する必要がないことにより、第1のアルゴリズムとは異なる。
【0188】
図3Cに示されているように、システム100は、タイリングパターンに基づいて完全入力データ150から多数の固定サイズ入力(例えば、固定サイズ入力380a~d)を生成することができる。固定サイズ入力380a~dは、それぞれのサイズまたは同じサイズで互いにオーバーラップすることができる。例えば、固定サイズ入力380aおよび固定サイズ入力380bは、オーバーラップ領域385aにおいて互いにオーバーラップすることができ、第2の固定サイズ入力380bおよび第3の固定サイズ入力380cは、オーバーラップ領域385bにおいて互いにオーバーラップすることができ、第3の固定サイズ入力380cおよび第4の固定サイズ入力380dは、オーバーラップ領域385cにおいて互いにオーバーラップすることができる。オーバーラップ領域385a~cのサイズは、図3Cに示されているように、実質的に同じである。いくつかの実装形態では、オーバーラップ領域385a~cは、第1のアルゴリズムを用いて生成されるオーバーラップ領域よりも僅かに大きいことができる。これは、第2のアルゴリズムを用いるシステムが、アライメント情報に基づいて固定サイズ入力をタイリングする必要があるからである。
【0189】
システム100は、上述のものと類似のゼロ値隣接ピクセル領域390a~dを決定および配置することもできる。図3Cに示されているように、説明を容易にするために、固定サイズ入力380a、380b、380cおよび380dは、実線の正方形によって表されており、隣接ピクセル領域390a、390b、390cおよび390dは、破線の正方形によって表されている。
【0190】
システム100は、第2のアルゴリズムを用いて完全入力データ150の外側の領域を決定することができ、固定サイズ入力380dを「移動させる」必要がない場合がある。図3Cに示されているように、固定サイズ入力380dは、完全入力データ150の外側の領域381を有する。固定サイズ入力380dは「移動」させられないため、オーバーラップ領域385a~cは同じであることを維持することができる。「移動」演算が許されない特定の入力を処理する場合、第2のアルゴリズムは第1のアルゴリズムよりもロバストである。
【0191】
コンパイルされたFCNモデルを通じて全ての固定サイズ入力を処理した後、システム100は、全ての固定サイズ出力の有効領域395a、395b、395cおよび395dならびに対応するダミー領域397a、397bおよび397cを決定し、第2のアルゴリズムに従って有効領域におけるピクセルのための座標シフトを計算し、ダミー領域におけるピクセルを廃棄し、完全出力データ170を生成するために有効領域におけるピクセルを組み合わせることができる。有効領域395a~dは、それぞれのオーバーラップ領域393a~cにおいて互いにオーバーラップすることもできる。それぞれのオーバーラップ領域393a~cは、固定サイズ入力の間のオーバーラップ領域385a~cが実質的に同じである場合、実質的に同じであることができる。
【0192】
同様に、説明を容易にするために、固定サイズ出力395a~dの有効領域は、実線の正方形によって表されており、固定サイズ出力397a~dのダミー領域は、破線の正方形によって表されている。
【0193】
4つの固定サイズ入力および4つの固定サイズ出力のみが図3Bおよび図3Cに示されているが、システム100は、完全入力データ150をタイリングするために5以上の固定サイズ入力、例えば、5、10、20、50、およびそれよりも多い固定サイズ入力を生成することができることが認められるべきであることに留意されたい。システムは、完全出力データ170における各々のピクセルのための有効なピクセルごとの値を含む5以上の固定サイズ出力、例えば、5、10、20、50、およびそれよりも多い固定サイズ出力を生成することもできる。完全出力データ170に関連したピクセルのための各々のピクセルごとの値は、少なくとも、対応する固定サイズ入力から生成された固定サイズ出力において表される。2つ以上の固定サイズ出力を横断するオーバーラップ領域におけるピクセルのピクセルごとの値の場合、システム100は、ピクセルのためのピクセルごとの値として、オーバーラップする固定サイズ出力のうちのいずれか1つから、対応するピクセル値を選択することができる。
【0194】
FCNモデルを通じて全ての固定サイズ出力を計算した後、システムは、以下のようにStitchOutputImage()関数を用いて入力がFCNモデルによって完全に処理されたかのように完全出力を構築するために、O(i,j)およびV(i,j)マッピングを適用することができる:
function StitchOutputImage():
for tile indices (i,j)in a top-to-bottom, left-to-right scan of the tiles:
(ht_O, wt_O, hb_O, wb_O) = O(i,j)
(ht_V, wt_V, hb_V, wb_V) = V(i,j)
Output(ht_V:hb_V, wt_V:wb_V) = OutputTile( (ht_V-ht_O):(hb_V-ht_O), (wt_V-wt_O):(wb_V-wt_O) )
OutputTile(i,j)は、(i,j)番目の固定サイズ入力に対応する、サイズTの固定サイズ出力を表す。例えば、タイリンググリッドのi番目の列およびj番目の行における固定サイズ入力である。
【0195】
図4は、異なるサイズを有する入力のための完全畳み込みネットワークの推論計算を実行するための例示的なプロセス400を示す。簡便にするために、プロセス400は、1つまたは複数のロケーションに配置された1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。例えば、適切にプログラムされた、ニューラル推論システム、例えば、図1のシステム100が、プロセス400を実行することができる。
【0196】
システムは、ハードウェアアクセラレータ上に展開された完全畳み込みニューラルネットワークによって処理される新たな入力を受信する(410)。新たな入力は、ハードウェアアクセラレータ上に展開されたときに完全畳み込みニューラルネットワークが処理するように構成された固定サイズとは異なる第1のサイズを有することができる。上述のように、新たな入力は、固定サイズよりも大きいまたは固定サイズよりも小さいサイズを有することができる。
【0197】
システムは、新たな入力から1つまたは複数の固定サイズ入力を決定する(420)。1つまたは複数の固定サイズ入力の各々の固定サイズ入力は、固定サイズを有する。より具体的には、システムは、少なくとも、展開されたFCNモデルの特性、例えば、アライメント情報、パディングサイズ、ストライドサイズ、フィルタサイズ、およびスケールファクタに基づいて、新たな入力をタイリングするためのタイリングパターンを決定することができる。
【0198】
システムは、完全畳み込みニューラルネットワークを用いて推論計算を実行するためにハードウェアアクセラレータへ1つまたは複数の固定サイズ入力の各々を提供する(430)。
【0199】
システムは、ハードウェアアクセラレータから、1つまたは複数の固定サイズ入力の各々のために完全畳み込みニューラルネットワークによって生成されたそれぞれの固定サイズ出力を取得する(440)。それぞれの固定サイズ出力は、1つまたは複数の不正確なピクセルごとの結果を含む可能性がある。上述のように、システムは、ハードウェアアクセラレータ上に展開されたFCNのための固定サイズ入力を提供し、ハードウェアアクセラレータから固定サイズ出力を受信するためのホストを含むことができる。システムは、固定サイズ入力を処理するときに、固定サイズ入力を包囲する隣接ピクセルを使用し、各々の固定サイズ出力のための有効領域およびダミー領域を決定することができる。
【0200】
システムは、それぞれの固定サイズ出力から、完全畳み込みニューラルネットワークを用いて新たな入力を処理することによって生成される出力と等価の最終出力を生成する(450)。
【0201】
上述のように、システムは、展開されたFCNの特性に基づいて、異なるアルゴリズムを用いて固定サイズ出力を組み合わせることができる。FCNモデルがいかなる転置畳み込み層も含まない場合、システムは、第1のアルゴリズムを用いて各々の固定サイズ出力の有効領域を組み合わせることができる。FCNモデルが1つまたは複数の転置畳み込み層を含む場合、システムは、各々の固定サイズ出力のための座標シフトを取得し、座標シフトに基づいて各々の固定サイズ出力の座標をシフトさせることによって、固定サイズ出力を組み合わせることができる。
【0202】
システムは、異なる方法を用いて座標シフトを決定することができる。例えば、システムは、ローカルサーチを用いて座標シフトを決定することができる。システムは、ProjectBackwards()関数を用いて複数のトライアルシフト値を試験することによって固定サイズ出力のための座標シフトを生成することができる。代替的に、システムは、展開されたFCNの特性を分析することに基づいて座標シフトを生成し、「CalculateAnalyticalAlignment()」関数を用いて分析的表現によって座標シフトのための一定の値を取得することができる。
【0203】
主題の実装形態および本明細書に説明される動作および演算は、デジタル電子回路、有形的に具体化されたコンピュータソフトウェアまたはファームウェア、本明細書に開示された構造およびそれらの構造的均等物を含むコンピュータハードウェア、またはそれらのうちの1つまたは複数の組合せにおいて実装され得る。本明細書に説明される主題の実装形態は、1つまたは複数のコンピュータプログラム、例えば、データ処理装置による実行のためにまたはデータ処理装置の演算を制御するために、コンピュータプログラムキャリアにおいてエンコードされた、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。キャリアは、有形非一時的コンピュータ記憶媒体であってよい。代替的にまたは加えて、キャリアは、人工的に生成された伝播される信号、例えば、データ処理装置による実行のために適切な受信機装置へ伝送するための情報をエンコードするために生成された、機械生成された電気的、光学的、または電磁気的信号であってよい。コンピュータ記憶媒体は、機械可読記憶装置、機械可読記憶基板、ランダムまたはシリアルアクセルメモリ装置、またはそれらのうちの1つまたは複数の組合せ、またはその一部であることができる。コンピュータ記憶媒体は、伝播される信号ではない。
【0204】
「データ処理装置」という用語は、例えば、プログラマブルプロセッサ、コンピュータ、もしくは多数のプロセッサまたはコンピュータを含む、データを処理するための全ての種類の装置、デバイスおよび機械を含む。データ処理装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィックスプロセシングユニット)を含むことができる。装置は、ハードウェアに加えて、コンピュータプログラムのための実行環境を生じるコード、例えば、プロセッサファームウェア、プロトコルスタック、データベースマネジメントシステム、オペレーティングシステム、またはそれらのうちの1つまたは複数の組合せを構成するコード、を含むこともできる。
【0205】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードと呼ばれてもよいまたは記述されてもよいコンピュータプログラムは、コンパイラ型またはインタープリタ型言語、もしくは宣言型または手続き型言語を含む、あらゆる形式のプログラミング言語において書かれ得る。コンピュータプログラムは、スタンドアロンプログラムとしてまたはモジュール、コンポーネント、エンジン、サブルーチン、またはコンピューティング環境において実行するのに適したその他のユニットとして、これらを含むあらゆる形式で展開され得る。前記環境は、1つまたは複数のロケーションにおいてデータ通信ネットワークによって相互接続された1つまたは複数のコンピュータを含んでよい。
【0206】
コンピュータプログラムは、ファイルシステムにおけるファイルに対応してよいが、その必要はない。コンピュータプログラムは、他のプログラムまたはデータ、例えば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプト、を保持するファイルの一部に、問題になっているプログラムに専用のシングルファイルに、または多数の調整されたファイル、例えば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイルに、記憶され得る。
【0207】
本明細書に説明されるプロセスおよび論理流れは、入力データにおいて動作しかつ出力を生成することによって演算を実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のコンピュータによって実行され得る。プロセスおよび論理流れは、専用論理回路、例えば、FPGA、ASIC、またはGPUによって、または専用論理回路と1つまたは複数のプログラムされたコンピュータとの組合せによって、実行されることもできる。
【0208】
コンピュータプログラムの実行に適したコンピュータは、汎用もしくは専用マイクロプロセッサまたはその両方、あるいはあらゆるその他の種類の中央処理装置に基づくことができる。一般的に、中央処理装置は、読み出し専用メモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの必須の要素は、命令を実行するための中央処理装置と、命令およびデータを記憶するための1つまたは複数のメモリデバイスである。中央処理装置およびメモリは、専用論理回路によって補助されるか、または専用論理回路に組み込まれ得る。
【0209】
一般的に、コンピュータは、1つまたは複数の大容量記憶装置も含むか、または1つまたは複数の大容量記憶装置からデータを受信するか、または1つまたは複数の大容量記憶装置へデータを転送するために動作可能に結合される。大容量記憶装置は、例えば、磁気、磁気光学、または光学ディスク、またはソリッドステートドライブであることができる。しかしながら、コンピュータは、このような装置を有する必要はない。さらに、コンピュータは、別の装置、例えば、いくつか例を挙げれば、携帯電話、パーソナルデジタルアシスタント(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶装置、例えば、ユニバーサルシリアルバス(USB)フラッシュドライブ、に埋め込まれ得る。
【0210】
ユーザとの相互作用を提供するために、本明細書に説明される主題の実装形態は、ユーザに情報を表示するためのディスプレイ装置、例えば、LCD(液晶ディスプレイ)モニタと、それによってユーザがコンピュータに入力を提供することができる入力装置、例えば、キーボードおよびポインティングデバイス、例えば、マウス、トラックボールまたはタッチパッドと、を有するコンピュータ上で実装されるか、またはこのようなコンピュータと通信するように構成され得る。ユーザとの相互作用を提供するために、その他の種類の装置が使用されることもできる。例えば、ユーザに提供されるフィードバックは、あらゆる形式の感覚フィードバック、例えば、視覚的フィードバック、聴覚フィードバック、または触覚フィードバックであることができる。ユーザからの入力は、音響入力、音声入力、または触覚入力を含むあらゆる形式で受信され得る。加えて、コンピュータは、ユーザによって使用される装置へドキュメントを送信しかつ装置からドキュメントを受信することによって、例えば、ウェブブラウザから受信されたリクエストに応答してユーザの装置におけるウェブブラウザへウェブページを送信することによって、またはユーザデバイス、例えば、スマートフォンまたは電子タブレット上で動作するアプリと相互作用することによって、ユーザと相互作用することができる。また、コンピュータは、パーソナルデバイス、例えば、メッセージングアプリケーションを動作させているスマートフォンへテキストメッセージまたはその他の形式のメッセージを送信し、ユーザから戻ってくる応答メッセージを受信することによって、ユーザと相互作用することができる。
【0211】
本明細書は、システム、装置、およびコンピュータプログラムコンポーネントに関連して「~するように構成される」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の演算または動作を実行するように構成されるということは、システムが、システムにインストールされた、演算時にシステムの演算または動作を実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せを有することを意味する。1つまたは複数のコンピュータプログラムが特定の演算または動作を実行するように構成されるということは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に演算または動作を実行させる命令を含むことを意味する。専用論理回路が特定の演算または動作を実行するように構成されるということは、回路が、演算または動作を実行する電子論理を有することを意味する。
【0212】
本明細書に説明される主題の実装形態は、例えば、データサーバとして、バックエンドコンポーネントを含むか、またはミドルウェアコンポーネント、例えば、アプリケーションサーバを含むか、またはフロントエンドコンポーネント、例えば、それを通じてユーザが本明細書に説明される主題の実装形態と相互作用することができるグラフィカルユーザインターフェース、ウェブブラウザまたはアプリを有するクライアントコンピュータを含むか、または1つまたは複数のこのようなバックエンド、ミドルウェアまたはフロントエンドコンポーネントのあらゆる組合せを含む、コンピューティングシステムにおいて実装され得る。システムのコンポーネントは、デジタルデータ通信、例えば、通信ネットワークのあらゆる形式または媒体によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、例えば、インターネットを含む。
【0213】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般的に、互いに離れており、典型的には、通信ネットワークを通じて相互作用する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で動作しかつ互いに対するクライアント-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実装形態では、サーバは、例えば、クライアントとして働く装置と相互作用するユーザにデータを表示しかつユーザからユーザ入力を受信するために、データ、例えば、HTMLページをユーザ装置へ送信する。ユーザ装置において生成されたデータ、例えば、ユーザ相互作用の結果は、装置からサーバにおいて受信され得る。
【0214】
本明細書は、多くの特定の実装形態詳細を含むが、これらは、請求されているまたは請求され得るものの範囲に対する限定として解釈されるべきではなく、特定の発明の特定の実装形態に特定であり得る特徴の説明として解釈されるべきである。別々の実装形態の関連において本明細書に説明されるある特徴は、1つの実装形態において組み合わされて実装されることもできる。反対に、1つの実装形態の関連において説明される様々な特徴は、多数の実装形態において別々にまたはあらゆる適切なサブコンビネーションにおいて実装されることもできる。さらに、特徴は、ある組合せにおいて働くものとして上記に説明されかつ最初でさえもそのように請求されている場合があるが、請求された組合せからの1つまたは複数の特徴は、いくつかの場合、その組合せから削除され得、請求項は、サブコンビネーションまたはサブコンビネーションの変形態様に向けられる場合がある。
【0215】
同様に、演算は、特定の順序で図面に示されかつ特許請求の範囲に述べられているが、これは、このような演算が、所望の結果を達成するために、示された特定の順序でまたは順番通りに実行されること、または全ての示された演算が実行されることを要求するものとして理解されるべきではない。ある状況では、マルチタスクおよび並列処理が有利であり得る。さらに、上記で説明された実装形態における様々なシステムモジュールおよびコンポーネントの分離は、全ての実装形態においてこのような分離を要求するものとして理解されるべきではなく、説明されたプログラムコンポーネントおよびシステムが、一般的に、1つのソフトウェア製品に統合され得るか、または多数のソフトウェア製品にパッケージングされ得ると理解されるべきである。
【0216】
主題の特定の実装形態が説明されている。その他の実装形態は添付の特許請求の範囲に含まれる。例えば、特許請求の範囲に挙げられた動作は、異なる順序で実行することができ、依然として望ましい結果を達成することができる。一例として、添付の図面に示されたプロセスは、所望の結果を達成するために、必ずしも示された特定の順序、または順番を必要とするわけではない。いくつかの場合、マルチタスクおよび並列処理が有利であり得る。
図1
図2A
図2B
図3A
図3B
図3C
図3D
図4
【手続補正書】
【提出日】2024-09-04
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
1つまたは複数のコンピュータが実行する方法であって、
ハードウェアアクセラレータ上に展開された完全畳み込みニューラルネットワークによって処理される新たな入力を受信することを含み、前記新たな入力は、前記ハードウェアアクセラレータ上で展開されたときに前記完全畳み込みニューラルネットワークが処理するように構成されている固定サイズとは異なる第1のサイズを有し、
前記方法は、
前記新たな入力から1つまたは複数の固定サイズ入力を決定することをさらに含み、各々の固定サイズ入力は、固定サイズを有し、
前記方法は、
前記完全畳み込みニューラルネットワークを用いて推論計算を実行するために前記ハードウェアアクセラレータに前記1つまたは複数の固定サイズ入力の各々を提供することと、
前記ハードウェアアクセラレータから、前記1つまたは複数の固定サイズ入力の各々について前記完全畳み込みニューラルネットワークによって生成されたそれぞれの固定サイズ出力を取得することとをさらに含み、前記それぞれの固定サイズ出力は、1つまたは複数の不正確なピクセルごとの結果を含み、
前記方法は、
前記それぞれの固定サイズ出力から、前記完全畳み込みニューラルネットワークを用いて前記新たな入力を処理することによって生成される出力と等価な最終出力を生成することをさらに含む、方法。
【請求項2】
前記ハードウェアアクセラレータ上に前記完全畳み込みニューラルネットワークを展開する前に、少なくとも前記完全畳み込みニューラルネットワークの特性に基づいて、前記固定サイズを決定することをさらに含む、請求項1に記載の方法。
【請求項3】
前記固定サイズを決定することは、前記固定サイズとして複数の候補サイズのうちの1つの候補サイズを選択するために、ユーザに前記複数の候補サイズを提供することをさらに含む、請求項2に記載の方法。
【請求項4】
前記完全畳み込みニューラルネットワークの特性に基づいて、前記完全畳み込みニューラルネットワークのための複数の候補サイズを生成することと、
前記候補サイズの各々について、
前記候補サイズの入力を処理するためにそれぞれのハードウェアアクセラレータ上で前記完全畳み込みニューラルネットワークのコピーを展開することと、
前記それぞれのハードウェアアクセラレータ上で前記完全畳み込みニューラルネットワークの展開された前記コピーのための推論計算を実行する合計実行時間を測定することと、
前記固定サイズとして、少なくとも前記候補サイズについて測定された前記合計実行時間に基づいて、前記複数の候補サイズから候補サイズを選択することと
をさらに含む、請求項1に記載の方法。
【請求項5】
前記固定サイズを決定することは、
前記新たな入力の前記第1のサイズが前記固定サイズよりも小さいことを決定することと、
前記固定サイズまで前記新たな入力の周辺にゼロをパディングすることによって固定サイズ入力を生成することと
をさらに含む、請求項1または請求項2に記載の方法。
【請求項6】
それぞれの前記固定サイズ出力の各々は、中央有効領域と、第1の数のピクセルの幅における周辺ダミー領域とを含み、前記中央有効領域は、前記最終出力の少なくとも一部を含み、前記周辺ダミー領域は、1つまたは複数の不正確なピクセルごとの結果を含む、請求項1~請求項5のいずれか1項に記載の方法。
【請求項7】
前記第1の数のピクセルは、前記完全畳み込みニューラルネットワークの特性に基づいて決定される、請求項6に記載の方法。
【請求項8】
それぞれの前記固定サイズ出力から前記最終出力を生成することは、
それぞれの前記固定サイズ出力の座標と、それぞれの前記固定サイズ出力を生成するために使用されたそれぞれの対応する固定サイズ入力の座標との間の関係に基づいて、それぞれの前記固定サイズ出力の前記中央有効領域を組み合わせることを含む、請求項6に記載の方法。
【請求項9】
それぞれの前記固定サイズ出力を組み合わせることは、
それぞれの前記固定サイズ出力の各々についてそれぞれの座標シフトを表すデータを決定することと、
決定された前記データに基づいてそれぞれの前記固定サイズ出力の前記中央有効領域を組み合わせることと
をさらに含む、請求項8に記載の方法。
【請求項10】
それぞれの前記座標シフトを表すデータを決定することは、
ローカルサーチを用いてそれぞれの前記座標シフトを決定することを含み、前記ローカルサーチは、固定サイズ出力の座標と、前記固定サイズ出力を生成するために使用された対応する固定サイズ入力の座標との間の関係を決定することを含む、請求項9に記載の方法。
【請求項11】
それぞれの前記座標シフトを表すデータを決定することは、
前記完全畳み込みニューラルネットワークの特性に基づいて、全体アライメント情報を決定することと、
決定された前記全体アライメント情報に基づいて、それぞれの前記固定サイズ出力の各々についてそれぞれの前記座標シフトを決定することと
を含む、請求項9に記載の方法。
【請求項12】
前記完全畳み込みニューラルネットワークの前記特性は、前記完全畳み込みニューラルネットワークの各々のネットワーク層のためのそれぞれのフィルタサイズ、ゼロパディングサイズ、ストライドサイズ、およびスケールファクタを含む、請求項2、請求項4、請求項7、または請求項11のいずれか1項に記載の方法。
【請求項13】
1つまたは複数のコンピュータと、前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに請求項1~請求項12のいずれか1項に記載の方法のオペレーションを実行させる命令を記憶する1つまたは複数の記憶装置と、を含むシステム。
【請求項14】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに請求項1~請求項12のいずれか1項に記載の方法のオペレーションを実行させるプログラム
【国際調査報告】