[0014] ディープ・ラーニング・ベースの超解像度は、低解像度の画像やビデオ・フレームを、高解像度の画像やビデオ・フレームに復元する際に使用される可能性がある。現在、ディープ・ラーニング・ベースの方法は、あるダウンサンプリング技術によって得られた低解像度及び高解像度の画像ペアに基づいて訓練プロセスを実行する場合がある。例えば、バイキュービック・フィルタ(bicubic filter)でダウンスケーリングされた低解像度画像を使用する従来の超解像技術が使用されるかもしれない。例えば、従来の超解像技術は、バイキュービック・フィルタによってダウンスケーリングされた低解像度画像を使用することが可能である。幾つかのブラインド超解像システムは、複数のカーネルを用いたガウシアン平滑化とバイキュービック・フィルタを組み合わせることにより、このダウンスケーリング・プロセスを更に改善することができる。この種の訓練プロセスは、自然コンテンツ(nature content)については良く機能するかもしれない。しかしながら、スクリーンやゲームのコンテンツでは、シャープなエッジのアップスケーリングの後に、厳しいオーバーシュートやアンダーシュートのアーチファクトが観察されることがある。本件で使用されるように、オーバーシュート・アーチファクトは、エッジ付近の“ゴースト”又はスプリアス・バンドとして現れるアーチファクトである。オーバーシュート・アーチファクトはまた、リンギング・アーチファクトと言及されることもある。自然コンテンツは、カメラでキャプチャされたビデオ・シーンを含むビデオである。例えば、自然コンテンツは、シャープなエッジをより少なく含む可能性がある。スクリーン・コンテンツは、レンダリングされたグラフィックス(ゲームを除く)、テキスト、又はカメラで捕捉されたビデオ・シーン以外のアニメーションをかなりの部分に含んでいるビデオである。ゲーミング・コンテンツはかなりの部分がレンダリングされたゲームである。
[0015] ディープ・ラーニング・ベースの超解像に関し、より高い品質の出力を達成するために、2つのアプローチがしばしば使用されている。例えば、ディープ畳み込みネットワークは、バイリニア(bilinear)、バイキュービック(bicubic)、ランチョス(Lanczos)フィルタ等のような従来方法によってサイズ変更された画像やビデオの細部を改善するために、伝統的なスケーラの後処理モデルとして使用されることが可能である。しかしながら、これは、大きな演算負担を推論デバイスに導入してしまう可能性がある(特に、画像やビデオの入力解像度が高い場合である)。より高い品質の出力を達成する別の方法は、低解像度の画像やビデオ・フレームを入力として直接的に取得し、次いで畳み込みネットワークを利用して高解像度画像の詳細を復元することである。例えば、畳み込みネットワークを使用して、先ず、一連のニューラル・ネットワーク層を低解像度ビデオ・フレームに適用して、高解像度詳細を復元するために使用される特徴マップを正確にインポートすることができる。その後、専用のニューラル・ネットワーク層は、低解像度特徴マップを高解像度出力にアップスケーリングすることができる。このようにして、ワークロードの一部を低解像度機能へ移行することが可能である。この方法でワークロードを移行することは、以前の方法と比較して演算及び帯域幅オーバーヘッドを低減することが可能であり、なぜなら演算の大部分は高解像度ではなく低解像度で実行されるからである。
[0016] 低解像度画像を取得するためにグランド・トゥルース高解像度訓練画像をダウンサンプリングすることは、ほとんどの自然コンテンツに対して良く機能する可能性のあるニューラル・ネットワーク用の訓練ペアを取得するための直接的かつ簡易な方法である。しかしながら、周波数ドメインで極めて高い周波数を含む可能性のあるスクリーンやゲーミング・コンテンツの場合、高周波数情報はダウンサンプリング・プロセスの後では破壊されている可能性がある。例えば、フレームは、先ず、ある種の変換を使用することによって周波数ドメインに転送される可能性がある。変換は、離散コサイン変換、又は離散フーリエ変換であってもよい。このような変換の主な目的は、画像を表現するために異なる基底の線形結合を使用することである場合がある。各変換によって定められる基底は、非常に低い周波数から非常に高い周波数の範囲に及ぶ様々な周波数を有する様々な信号を含む可能性がある。空間的な又は画像の領域におけるシャープなエッジについては、周波数ドメインでこの信号を表現するために、多くの高周波数の基底が使用される可能性がある。従って、シャープなエッジは、通常、他のものよりもはるかに高い周波数成分を含む可能性がある。更に、バイリニア、バイキュービック、ランツォ、又はその他のフィルタを介して行うような補間を使用するダウンサンプリングは、そのような高周波数成分を破壊してしまう傾向があるかもしれない。ニューラル・ネットワークは、このような高周波入力をどのように処理するかを決して学習することはできないかもしれない。従って、訓練プロセスとは対照的に、何らの周波数破壊を被らない可能性のある実際のスクリーン・コンテンツのケースに適用される場合、高周波数情報が不適切な方法で強調されることに起因してアーチファクトが発生する可能性がある。
[0017] 幾つかの例では、データ拡張チューニング・プロセスの後に、オーバーシューティング・アーチファクトは、ほとんど除去される可能性がある。しかしながら、最終的な高解像度出力は、データ拡張を使用しない結果と比較すると、ぼやけてしまうようになる可能性があり、これもまた、他のテクスチャ・コンテンツの品質低下を引き起こす可能性がある。チューニング前の結果と比較して、出力はぼやけてしまうようになる。このようなオーバーシューティングの問題は、黒い線に沿って発生する可能性があり、正規化線形ユニット(ReLU)活性化を使用することによって引き起こされる可能性がある。更に、反復されるパターンを伴う画像又はビデオもまた、エイリアシング・アーチファクトを表示してしまう可能性がある。
[0018] 本開示は、概して、スケーラブル・ニューラル・ネットワークを使用する超解像のための技術に関する。例えば、本技術は訓練方法及び実例推論トポロジーを含む。先ず、データ準備段階では、バイリニア又はバイキュービック・ダウンサンプリングのような従来の補間ベースのダウンサンプリング・プロセスの代わりに、最近傍ダウンサンプリング(nearest neighbor downsampling)が、追加的なデータ拡張のためにスクリーン・コンテンツに使用されることが可能である。訓練段階では、L1/L2損失関数を使用することに加えて、自己相似性損失(self-similarity loss)が、エイリアシング・アーチファクトを取り扱うために、損失関数の一部分として使用される。推論トポロジーに関し、この技術はまた、ネットワークのロバスト性を改善するために、エンハンスト深層超解像(enhanced deep super-resolution, EDSR)に基づく小規模ネットワークを含み、ReLU活性化を、パラメトリック正規化線形ユニット(PReLU)活性化に置換する。
[0019] 従って本件で説明される技術は、復元された画像又はビデオにおける鮮鋭さに影響を及ぼすことなく、スクリーン・コンテンツにおけるオーバーシュート、アンダーシュート及びエイリアシングの問題を解消することを可能にする。設計されるネットワークは、1280×720(720p)、1920×1080(1080p)、2560×1440(1440p)以上の解像度のような任意の解像度の入力ビデオを用いて、リアル・タイムで高品質の超解像を可能にするようにユーザーを支援することが可能である。例えば、畳み込みニューラル・ネットワークによりルミナンス・チャネルを処理し、ハードウェア・アップスケーラを用いてクロミナンス・チャネルを処理するだけで、本技術は、より少な演算リソースを使用してビデオ・フレームを効率的に処理することが可能である。更に、本件で説明される技術は、自然コンテンツの外観にほとんど副作用を及ぼすことなく、スクリーンやゲーミング・コンテンツにおけるアーチファクトを排除することができる。従って、本件における技術は、自然、スクリーン及びゲーミング・コンテンツのための画像やビデオ・フレームの品質を高めるために使用することが可能である。
[0020] 図1は、スケーラブル・ニューラル・ネットワークを用いる超解像のための例示的なシステムを示すブロック図である。例示的なシステム100は、図6-9の方法600-900を使用して、図10における演算デバイス1000に実装されることが可能である。例えば、システム100は、図6及び図7の方法600及び700を使用して訓練され、図8及び図9の方法800及び900を使用して実行されることが可能である。
[0021] 例示的なシステム100は、低解像度フレーム102を含む。システム100は、低解像度フレーム102のソースに通信的に結合された畳み込みニューラル・ネットワーク(CNN)104を含む。システム100は、低解像度フレーム102のソースに通信可能に結合されたハードウェア・スケーラ106を更に含む。また、システム100は、畳み込みニューラル・ネットワーク(CNN)104とハードウェア・スケーラ106とに通信的に結合されたコンバイナ108を更に含む。
[0022] 図1のシステム100は、入力として低解像度ビデオ・フレームを直接的に受け取り、畳み込みニューラル・ネットワーク104を利用して、出力の高解像度フレーム110における詳細を復元する推論フレームワークを示す。特に、低解像度フレーム102は、CNN 104とハードウェア・スケーラ106に供給されることが可能である。幾つかの例において、低解像度フレーム102は、YUV 420フォーマットであってもよく、その場合において、UVチャネルのサイズはルミナンス・チャネルYの1/4のサイズであることが可能である。YUVフォーマットは、人の知覚を考慮に入れてカラー画像又はビデオを符号化し、クロミナンス成分に対して縮小された帯域幅を可能にする。幾つかの例では、RGBからYUVへの色変換が適用されてもよい。
[0023] 様々な例において、ハードウェア・スケーラ106は、特定のスケーリング因子を使用するアップ・サンプラであってもよい。幾つかの例では、スケーリング因子は、フレームの高解像度及び低解像度ペアの異なるサンプリング・レートによって決定される。例えば、360pを720pに変換するためには、スケーリング因子は2xである。例えば、ハードウェア・スケーラ106は、低解像度の画像又はビデオ・フレームを入力として受信し、各方向で2回ずつクロミナンス成分の画像又はビデオをアップサンプリングすることが可能である。従って、ハードウェア・スケーラ106の出力は、高解像度の画像又はビデオ・フレームである可能性がある。例えば、ハードウェア・スケーラ106によって生成された高解像度の画像又はビデオ・フレームは、入力された低解像度フレームの2倍の解像度を有する場合がある。
[0024] CNN 104は、低解像度フレーム102を入力として取得する任意のアップスケーリング・フレームワークであるとすることが可能である。CNN 104は、低解像度入力フレームとグランド・トゥルース高解像度フレームとを含む訓練ペアが与えられている場合に、ニューラル・ネットワークの出力間の残差を学習するように訓練されることが可能である。例えば、ニューラル・ネットワークの多数のウェイトが、計算された残差に基づいて修正されることが可能である。このようにして、CNN 104は、フレームの訓練セット内の入力の低解像度フレームのグランド・トゥルースにより類似しているフレームを出力するように、反復的に訓練されている可能性がある。
[0025] コンバイナ108は、CNN 104の出力高解像度フレームを、ハードウェア・スケーラ106からの高解像度フレームと結合し、結合された高解像度フレーム110を生成する。例えば、結合された高解像度フレーム110は、ハードウェア・スケーラ106からの高解像度フレームと比較して、改善された詳細を有する可能性がある。更に、種々の例において、システム100は、ハードウェア・スケーラ106とスケーラブルCNN 104とを含むスケーラブルCNN超解像フレームワークであって、品質要件及び演算能力が増加するにつれて拡張されることが可能なものであるとすることが可能である。例えば、CNN 104は、図2のスケーラブルCNN 200であってもよい。
[0026] 図1の図形は、例示的なシステム100が図1に示される構成要素の全てを含むことを示すようには意図されていない。むしろ、例示的なシステム100は、図1に示されていない追加的な構成要素又はより少ない構成要素(例えば、追加的な低解像度フレーム、高解像度フレーム、CNNネットワーク、ハードウェア・スケーラなど)を用いて実現することができる。
[0027] 図2は、超解像のためのスケーラブルな畳み込みニューラル・ネットワークの一例を示すブロック図である。例示的なスケーラブルCNN 200は、図6-9の方法600-900を使用して、図1のシステム100のCNN 104、又は図10の演算デバイス1000のCNN 1038において実装されることが可能である。例えば、スケーラブルCNN 200は、図6及び図7の方法600及び700を使用して訓練され、図8及び図9の方法800及び900を使用して高解像度フレームを生成するために使用されることが可能である。
[0028] 例示的なスケーラブルCNN 200は、図1と同様な番号が付された要素を含む。例えば、スケーラブルCNN 200は、低解像度フレーム102を受け取り、高解像度フレーム110を出力するように示されている。幾つかの例では、YUV入力フレーム102に加えて、スケーラブルCNNネットワーク200は、ネイティブRGB入力フレーム102をサポートするように構成されることが可能である。これらの例では、訓練と推論の両方が、RGB色空間における画像又はビデオ・フレームを入力102として使用することが可能であり、ハードウェア・スケーラは使用されない。スケーラブルCNN 200は、更に、PReLU活性化を伴う第1畳み込み層202Aを含む。例えば、第1畳み込み層202Aは、(K,1,3,N)のパラメータ値を有する可能性があり、ここで、Kは畳み込みカーネル・サイズであり、第1の値“1”は畳み込みを適用するためのストライドの数を示し、値“3”は入力チャネルの数を示し、Nは出力チャネル又は特徴マップの数を示す。別の例として、第1畳み込み層202AがCNN 104で使用される場合、パラメータ値は(K,1,1,N)であってもよく、その場合、シングル・チャネルは、YUVビデオ・フレームのY成分であってもよい。スケーラブルCNN 200は、第1畳み込み層202Aに通信可能に結合される残差ブロック・グループ(residual block group)204を含む。スケーラブルCNN 200は、更に、残差ブロック・グループ204に通信可能に結合されたPReLU活性化202Bを有する第2畳み込み層を含む。例えば、第2畳み込み層202Bは、(K,1,N,N)のパラメータ値を有する可能性があり、ここで、最初の“N”は入力特徴マップの数であり、2番目の“N”の値は特徴マップの新たな出力セットにおけるフィーチャー・マップの数である。例えば、畳み込み層202Bは、N個の特徴マップの入力を有する可能性があり、各々の特徴マップは2次元画像パッチである。畳み込み層202Bでの処理の後、畳み込み層202Bは、高解像度の画像又はビデオを復元するために使用されるN個の特徴マップの新たなセットを出力することが可能である。システムは、第1畳み込み層202Aと第2畳み込み層202Bとに通信可能に結合されたコンバイナ108を含む。スケーラブルCNN 200はまた、コンバイナ108に通信可能に結合された、PReLU活性化を伴う転置畳み込み層(transpose convolution layer)208も含む。例えば、転置畳み込み層208は、(K,1,N,N)というパラメータ値を有していいてもよい。種々の例において、転置畳み込み層208は、入力のN個の特徴マップを整数因子でアップスケーリングする。例えば、転置畳み込み層208は、2xアップスケーリングの場合に、入力特徴を2の因子でアップスケーリングすることができる。一例として、各々の入力特徴マップのサイズがpである場合に、転置畳み込み層208は、N個の特徴マップの新しいセットを出力してもよく、各々の特徴マップのサイズは2pである。スケーラブルCNN 200は、転置畳み込み層208に通信可能に結合された第3畳み込み層210を更に含む。例えば、第3畳み込み層210は、(K,1,N,3)の特徴を有していてもよい。スケーラブルCNN 200がCNN 104として使用される場合のような何らかの例において、第3畳み込み層210に設定されるパラメータは、(K,1,N,1)であってもよく、なぜなら唯1つのチャネルがネットワークによって出力されてもよいからである。例えば、その1つのチャネルは、Y成分チャネルであってもよい。残差ブロック・グループ204は、多数の残差ブロック210を含む。削減された個数の残差ブロックを使用することが点線矢印で示されている。例えば、残差ブロック・グループ204の最後の残差ブロック210は、より少ない演算複雑性を伴う演算には使用されなくてもよい。
[0029] 図2の例に示されるように、様々な例において、エンハンスト深層超解像ネットワーク(EDSR)構造に基づくトポロジーが、スケーラブルCNN 200のための基本フレームワークとして配備されてもよい。EDSR構造は、従来の残差ネットワークと比較して、不必要なモジュールを除去することによって最適化されることが可能である。種々の例において、スケーラブルCNN 200の内部ウェイト及び活性化精度は、減少する可能性がある。例えば、スケーラブルCNN 200は、オリジナルのEDSR構造における32ビットの代わりに、16ビットの浮動小数点表現を使用することができる。更に、種々の例において、特徴次元や残差ブロックの数は、モバイル・プラットフォームにおける限られた演算能力及びメモリ帯域幅でリアル・タイム・パフォーマンスを達成するためにプルーニングされてもよい。例えば、より少ない数の残差ブロック210を使用するために残差ブロック210をプルーニングすることは、点線矢印によって示されている。畳み込み層202A、202B、208、及び210において使用される特徴マップの数Nも、スケーラブルCNN 200の特徴次元を減らすために低減されてもよい。この数を減らすことにより、総演算リソースとメモリ帯域幅を効果的に減らすことができる。幾つかの例では、ネットワーク特徴マップ・サイズは、入力解像度に適応させてもよい。例えば、CNNネットワークの能力は、計算量の増加に伴って更に増加させることができる。例えば、より多くの残差ブロックをカスケード接続するか、又は特徴マップの数Nを増加させることによって、システムは、より大きなネットワークに拡張される、より高い品質の結果を提供することが可能である。同様に、演算負担を低減するために、CNNネットワーク200の能力は、残差ブロックの数又は畳み込み層202A、202B、208、及び210において使用される特徴マップの数Nの何れかを低減することによって、削減されてもよい。幾つかの例では、キャッシュ局所性を改善するために、特徴マップのサイズを調整することも可能である。本件で使用されるように、特徴マップ・サイズは、画像パッチのサイズを指す。例えば、画像パッチのサイズは(W/M)x(H/N)であってもよい。一例として、M = N = 1の場合、特徴マップ・サイズは、低解像度画像の幅W及び高さHと等しくてもよい。推論段階では、各々の低解像度画像は、M×N個の画像パッチに分割されることが可能であり、画像パッチのサイズは(W/M)x(H/N)である。幾つかの例では、最適な特徴マップ・サイズが、最良のシステム・パフォーマンスを達成するためにキャッシュ局所性を改善するために使用されてもよい。例えば、最適な特徴マップ・サイズは、異なる特徴マップ・サイズを使用して推論を複数回実行することによって決定され、どの特徴マップ・サイズが最良のパフォーマンスを有するかが決定されてもよい。幾つかの例において、演算デバイスのアーキテクチャに関するより詳細な情報が利用可能であれば、最適な特徴サイズ値を決定するために、理論的なパフォーマンス予測が、様々な特徴マップ・サイズを使用して実行されることが可能である。
[0030] また、EDSR構造のReLU関数は、PReLU関数に置き換えられてもよい。例えば、PReLU関数は図4のPReLU関数であってもよい。
[0031] 図2の図形は、例示的なスケーラブルCNN 200が、図2に示される全ての構成要素を含むことを示すようには意図されていない。むしろ、例示的なスケーラブル・システムCNN 200は、図2に示されていない追加的な構成要素又はより少ない構成要素(例えば、追加的な低解像度フレーム、高解像度フレーム、畳み込みネットワーク、残差ブロックなど)を用いて実現することが可能である。
[0032] 図3は、超解像度のためのスケーラブル畳み込みニューラル・ネットワークを訓練するためのシステム例を示すフローチャートである。例示的なシステム300は、図10の演算デバイス1000又は図11のコンピュータ読み取り可能な媒体1100を使用して、図1及び図2のシステム100又はスケーラブルCNN 200を訓練するように実装することが可能である。
[0033] 図3のシステム300は、一組の高解像度フレーム302を含む。例えば、高解像度フレーム302は、一組の訓練フレームであってもよい。システム300はダウンスケーラ304を含む。システム300は、ダウンスケーラ302によって出力されるように示されている低解像度フレーム306を含む。システム300は、ダウンスケールされた低解像度フレーム306を受け取るために、ダウンスケーラ304に通信可能に結合されたCNNベースの超解像ユニット308を含む。システム300は、CNNベースの超解像ユニット308によって生成されるように示されている、再構成された高解像度フレーム310のセットを含む。例えば、CNNベースの超解像ネットワーク308は、図2のスケーラブル畳み込みニューラル・ネットワーク200を使用して実装されてもよい。システム300は、CNNベースの超解像ユニット308に通信可能に接続され、高解像度フレーム302と再構成された高解像度フレーム310との両方を受信する損失計算器312も更に含む。
[0034] CNNベースの超解像ユニット308を訓練するための例示的なシステム300は、第1低解像度フレーム306と高解像度フレーム302のペアを含み、これらは訓練前に準備されてもよい。例えば、高解像度フレーム310は、より高いサンプリング・レートを有するデバイスによって捕捉されてもよい。幾つかの例において、高解像度フレーム310は、RGBのような他の画像フォーマットからYUVフォーマットに変換されてもよい。様々な例において、ダウンスケーラ304は、高解像度フレーム302をダウンサンプリングすることによって、低解像度フレーム306を生成することができる。種々の例において、高解像度フレーム302は、データ拡張の目的のために、最近傍ダウンサンプリング法を用いてダウンスケールされてもよい。例えば、訓練データセットは、先ず、従来の方法で生成され、次いで、スクリーンやゲーミング・コンテンツが、最近傍法を用いてサイズ変更されてもよい。種々の例において、全ての訓練セットの中で最近傍のダウンサンプリングされたフレームの割合が制御されてもよい。訓練入力のための最近傍のダウンサンプリングされたフレームを使用することによって、結果として得られる訓練済みのCNNベースの超解像ネットワーク308は、推論におけるテキストやエッジ上でオーバーシュート・アーチファクトを生成してしまうことを、首尾良く防止することができる。しかしながら、最近傍のダウンサンプリングされたフレームが、訓練入力のために専ら使用されるならば、何らかの歪みがテキスト・エリアに導入されるかもしれない。例えば、テキスト・エリアは、変更されたフォント・スタイルを有しているように見えるかもしれない。更に、何らかの鮮鋭な詳細が、ラインに沿って取り除かれてしまう場合もある。従って、最近傍ダウンスケーリングされたデータで訓練するだけでは、高解像度出力品質を劣化させてしまう可能性がある。従って、幾つかの例では、最近傍訓練フレームの割合が最適化され、全ての訓練フレームの中で10%から25%の範囲内で使用されるように設定されることが可能である。このようにして、CNNベースの超解像ネットワーク308に関する訓練済みモデルは、オーバーチューニングされない可能性がある。
[0035] 様々な例において、CNNベースの超解像ネットワーク308は、ダウンスケールされた低解像度フレーム306を受信し、再構成された高解像度フレーム310を生成する。例えば、再構成された高解像度フレーム310は、高解像度フレーム302の解像度と一致してもよい。
[0036] 再構成された高解像度フレーム310は、オリジナルの高解像度フレーム302と共に損失計算器312に入力され、損失計算器は最小化される損失を計算する。例えば、損失は、任意の適切な損失関数を使用して計算されることが可能である。様々な例において、訓練に使用される損失関数は、出力及びグランド・トゥルースのL1/L2、又は他の任意の適切なパーセプチャル損失として設計されることが可能である。幾つかの例において、CNNのウェイトに関する損失関数の勾配は、逆伝搬を使用して計算されてもよい。それに応じて、CNNの1つ以上のウェイトが更新されてもよい。生成された再構成された高解像度フレーム310とそれらの対応するグランド・トゥルース高解像度フレーム302との間の損失関数を最小化することによって、CNNベースの超解像ネットワーク308は、最終的に、ある程度まで収束する可能性がある。例えば、収束の程度は、所定の閾値として設定されてもよい。
[0037] 様々な例において、その結果得られた訓練済みのCNNベースの超解像ネットワーク308は、改良された超解像撮像のための推論段階で使用されてもよい。例えば、訓練済みのCNNベースの超解像ネットワーク308は、図1のシステム100のように使用されてもよい。
[0038] 図3の図形は、例示的なシステム300が、図3に示される全ての構成要素を含むことを示すようには意図されていない。むしろ、例示的なシステム300は、図3に示されていない追加的な構成要素又はより少ない構成要素(例えば、追加的な高解像度フレーム、低解像度フレーム、再構成された高解像度フレーム、ダウンスケーラ、CNNベースの超解像ネットワーク、損失など)を用いて実現することができる。例えば、システム300は、CNNベースのダウンサンプラを導入することによって、図5の自己相似性損失及び最終損失を使用することも可能である。
[0039] 図4は、ReLU活性化関数402をPReLU活性化関数404に置き換えることを示すグラフのペア400である。グラフの縦軸はf(y)の値を示し、横軸はyの値を示す。幾つかの例において、ReLU活性化402は、ゼロを下回る出力yを、ゼロのf(y)値にクランプする可能性があるので、これは、訓練中に勾配消失を招く可能性がある。特に、y < 0の場合、ReLUの勾配は0に等しく、これは、勾配逆伝搬がこの時点で停止してしまう可能性があり、ReLUより前の全ての層が訓練によって十分に最適化されない可能性があることを意味する。従って、訓練及び結果として生じる出力品質を改善するために、ReLU活性化402を、PReLU活性化404に置換することが可能である。例えば、PReLU 404を使用する際の品質改善は、テキストのようなシャープなエッジを含むフレームで推論する際に特に顕著である場合がある。スクリーン・コンテンツのようなある種のコンテンツは、より頻繁にシャープなエッジを含む可能性がある。図3で説明されたデータ拡張技術と共に、PReLU活性化404を用いて訓練されたモデルは、自然コンテンツにおける鮮鋭さを維持しつつ、スクリーンやゲーミング・コンテンツにおけるオーバーシュート・アーチファクトを除去することができる。
[0040] 図5は、自己相似性損失を用いて、超解像のためのスケーラブル畳み込みニューラル・ネットワークを訓練するためのシステム例を示すブロック図である。例示的なシステム500は、図1及び図2のシステム100又はスケーラブルCNN 200、図10の演算デバイス1000、又は図11のコンピュータ読み取り可能な媒体1100を訓練するように実装することが可能である。
[0041] 図5のシステム500は、図3のシステム300と同様に番号が付された要素を含む。更に、システム500は、CNNベースの超解像ネットワーク308に通信可能に結合されたCNNベースのダウンスケーラ502を含む。種々の例において、CNNベースのダウンスケーラ502は、図2の例示のスケーラブル畳み込みニューラル・ネットワーク200と同じトポロジーを有していてもよいが、パラメータは、ダウンスケーリングを可能にするために別様に設定されてもよい。更に、システム500は、CNNベースのダウンサンプラ502に通信可能に結合された自己相似性損失計算器504も含む。また、システム500は、自己相似性損失計算器504及び損失計算器312に通信可能に結合された最終損失計算器506を更に含む。
[0042] システム500では、CNNベースのダウンスケーラ502は、再構築された高解像度フレーム310に対してダウンサンプリングを実行し、本件においてCNNベースのダウンサンプリングされたフレームと呼ばれる低解像度のダウンサンプリングされた再構築された高解像度フレームを生成することが可能である。例えば、CNNベースのダウンサンプリングされたフレームは、低解像度フレーム306と同様な解像度を有していてもよい。
[0043] 自己相似性損失計算器504は、低解像度フレーム306とCNNベースのダウンサンプリングされたフレームとに基づいて、自己相似性損失を計算することが可能である。様々な例において、自己相似性損失は、ダウンスケーリングされた入力フレームと、再構成された高解像度フレーム310のダウンスケーリングされたコピーとの間の類似性(similarity)を測るものである。種々の例において、自己相似性損失は、逆伝搬によるエイリアシング・アーチファクトを抑制するために、CNNネットワークを正則化するために使用されることが可能である。
[0044] 最終損失計算器506は、損失312と自己相似性損失504に基づいて最終損失を計算することが可能である。例えば、最終損失は、損失312と自己相似性損失504の加重平均によって計算されてもよい。例えば、最終的な損失は、次式を用いて計算されてもよい:
Finalloss = lossA + λ* self_similarity_loss Eqn. 1
ここで、lossAは、損失計算器312によって計算された損失であり、self_similarity_lossは、自己相似性損失計算器504によって計算された損失であり、ラムダは経験的に決定される重み付けパラメータである。従って、エイリアシング・アーチファクトは、ネットワーク最適化における最終損失を使用することによって抑制される可能性がある。CNNベースのダウンサンプラ502は、訓練中に使用されるだけであり、推論中には使用されないので、訓練済みのCNNベースの超解像ネットワーク308を使用する結果として得られるシステムは、推論において非常に演算効率的である可能性がある。
[0045] 図5の図形は、例示的なシステム500が、図5に示される全ての構成要素を含むことを示すようには意図されていない。むしろ、例示的なシステム500は、図5に示されていない追加的な構成要素又はより少ない構成要素(例えば、追加的な高解像度グランド・トゥルース訓練フレーム、低解像度フレーム、高解像度フレーム、CNNネットワーク、ハードウェア・スケーラなど)を用いて実現することができる。
[0046] 図6は、超解像のためのスケーラブル畳み込みニューラル・ネットワークを訓練するための方法600を示すプロセス・フローチャートである。例示的な方法600は、図1及び図2のシステム100及び200、図10の演算デバイス1000、又は図11のコンピュータ読み取り可能な媒体1100において実施されることが可能である。
[0047] ブロック602において、訓練フレームが受信される。例えば、訓練フレームはグランド・トゥルース・フレームとして使用される高解像度フレームであってもよい。様々な例において、訓練フレームは、YUVフォーマットのフレームであってもよい。
[0048] ブロック604において、訓練フレームは、低解像度訓練フレームを生成するためにダウンスケールされる。例えば、訓練フレームは、各方向に2の因子でダウンスケールされてもよい。従って、4つのピクセルの各ブロックは、低解像度訓練フレーム内の1つのピクセルによって表現される可能性がある。種々の例において、訓練フレームは、最近傍ダウンスケーリングを使用してダウンスケーリングされてもよい。幾つかの例において、訓練フレームは基本パートと拡張されたパートを含んでいてもよい。基本パートは、バイキュービック補間を使用することによって生成された低解像度フレームであってもよい。拡張されたパートは、最近傍ダウンスケーリングを使用することによって生成された低解像度フレームであってもよい。種々の例において、パートの合計全体に対する、拡張されたパートのパーセンテージは、10%-25%であってもよい。これら2つのパートをここで強調する必要があるかどうかは既知であってもよい。
[0049] ブロック606において、低解像度訓練フレームは、再構成された高解像度フレームを生成するために、スケーラブル畳み込みニューラル・ネットワークを介して処理される。例えば、再構成された高解像度フレームは、高解像度訓練フレームと同じ解像度を有している可能性がある。
[0050] ブロック608において、訓練フレームと再構成された高解像度フレームとの比較に基づいて、損失が計算される。例えば、損失は、L1/L2損失又はその他の任意の適切なパーセプチャル損失であってもよい。
[0051] ブロック610において、計算された損失は逆伝搬される。例えば、スケーラブル畳み込みニューラル・ネットワークの1つ以上のウェイトは、計算された損失に基づいて調整されることが可能である。
[0052] 図6のプロセス・フローチャートは、例示的な方法600のブロックが何らかの特定の順序で実行されるべきこと、あるいは、全てのブロックが全てのケースで含まれるべきであること、を示すようには意図されていない。更に、図示されていない任意の数の追加的なブロックが、特定の実装の詳細に応じて、例示的な方法600内に含まれてもよい。
[0053] 図7は、自己相似性損失を用いて、超解像のためのスケーラブル畳み込みニューラル・ネットワークを訓練するための方法700を示すプロセス・フローチャートである。例示的な方法700は、図1及び図2のシステム100及び200、図10の演算デバイス1000、又は図11のコンピュータ読み取り可能な媒体1100において実施されることが可能である。
[0054] ブロック702において、訓練フレームが受信される。例えば、訓練フレームは高解像度カラー・フレーム又はビデオ・フレームであってもよい。様々な例において、訓練フレームは、YUVフォーマットにおけるビデオ・フレームであってもよい。例えば、畳み込みニューラル・ネットワークは、YUVフォーマット・ビデオ・フレームのYチャネルを受信するように構成されることが可能である。幾つかの例において、訓練フレームは、RGBフォーマットにおけるものであってもよい。例えば、スケーラブル畳み込みニューラル・ネットワークは、スケーラを使用せずに、3つのチャネル入力をサポートするように構成されていてもよい。
[0055] ブロック704において、訓練フレームは、低解像度訓練フレームを生成するためにダウンスケールされる。例えば、訓練フレームは、各方向に2の因子でダウンスケールされてもよい。種々の例において、訓練フレームは、最近傍ダウンスケーリングを使用してダウンスケーリングされてもよい。
[0056] ブロック706において、低解像度訓練フレームは、再構成された高解像度フレームを生成するために、スケーラブル畳み込みニューラル・ネットワークを介して処理される。例えば、再構成された高解像度フレームは、高解像度訓練フレームと同じ解像度を有している可能性がある。
[0057] ブロック708において、訓練フレームと再構成された高解像度フレームとの比較に基づいて、第1損失が計算される。例えば、損失は、L1/L2損失又はその他の任意の適切なパーセプチャル損失であってもよい。
[0058] ブロック710において、再構成された高解像度フレームは、ダウンサンプリングされたフレームを生成するように処理される。例えば、再構成された高解像度フレームは、CNNベースのダウンサンプラを使用してダウンサンプリングされてもよい。
[0059] ブロック712において、自己相似性損失は、低解像度訓練フレームとダウンサンプリングされたフレームとの比較に基づいて計算される。例えば、自己相似性損失は、L1/L2損失又はその他の任意の適切なパーセプチャル損失を使用して計算されてもよい。
[0060] ブロック714において、自己相似性損失と第1損失に基づいて最終損失が計算される。例えば、最終損失は、自己相似性損失と第1損失を組み合わせることによって計算されてもよい。
[0061] ブロック716において、最終損失がスケーラブル畳み込みニューラル・ネットワークによって逆伝搬される。例えば、スケーラブル畳み込みニューラル・ネットワークの1つ以上のウェイトは、計算された損失に基づいて調整されることが可能である。
[0062] 図7のプロセス・フローチャートは、例示的な方法700のブロックが何らかの特定の順序で実行されるべきこと、あるいは、全てのブロックが全てのケースで含まれるべきであること、を示すようには意図されていない。更に、図示されていない任意の数の追加的なブロックが、特定の実装の詳細に応じて、例示的な方法700に含まれてもよい。
[0063] 図8は、スケーラブル・ニューラル・ネットワークを用いる超解像のための方法800を示すプロセス・フローチャートである。例示的な方法800は、図1及び図2のシステム100及び200、図10の演算デバイス1000、又は図11のコンピュータ読み取り可能な媒体1100において実施されることが可能である。
[0064] ブロック802において、低解像度フレームが受信される。例えば、低解像度ビデオ・フレームは、YUVビデオ・フレームにおけるものであってもよい。幾つかの例において、低解像度フレームは、RGBフォーマットからYUVフレーム・フォーマットに変換されたものであってもよい。
[0065] ブロック804において、高解像度ルミナンス成分フレームは、畳み込みニューラル・ネットワーク(CNN)により、低解像度フレームに基づいて生成される。例えば、高解像度ルミナンス成分フレームは、低解像度フレームのルミナンス成分に基づいて生成されてもよい。幾つかの例において、CNNは、図2のスケーラブルCNNであってもよい。種々の例において、CNNは、高解像度グランド・トゥルース訓練フレームの最近傍ダウンサンプリングを使用して訓練されてもよい。幾つかの例において、CNNは、自己相似性損失関数を用いて訓練されてもよい。例えば、CNNは、図6及び図7の方法600又は700を用いて訓練されてもよい。幾つかの例において、CNNは、縮小された残差ブロック・グループ(reduced residual block group)を含んでもよい。様々な例において、CNNはまた、パラメトリック正規化線形ユニット(PReLU)活性化を含んでもよい。
[0066] ブロック806において、ハードウェア・スケーラにより、低解像度フレームに基づいて、高解像度クロミナンス成分フレームが生成される。例えば、高解像度ルミナンス成分フレームは、低解像度フレームのクロミナンス成分に基づいて生成されてもよい。種々の例において、ハードウェア・スケーラは、エネルギー効率の良いハードウェア・スケーラである可能性がある。
[0067] ブロック808において、高解像度ルミナンス成分フレームは、高解像度クロミナンス成分フレームと組み合わされて、高解像度フレームを生成する。例えば、高解像度ルミナンス成分フレームは、高解像度クロミナンス成分フレームと組み合わせて、高解像度YUVフォーマット・ビデオ・フレームを生成することができる。
[0068] 図8のプロセス・フローチャートは、例示的な方法800のブロックが何らかの特定の順序で実行されるべきこと、あるいは、全てのブロックが全てのケースで含まれるべきであること、を示すようには意図されていない。更に、図示されていない任意の数の追加的なブロックが、特定の実装の詳細に応じて、例示的な方法800に含まれてもよい。例えば、方法800は、畳み込みニューラル・ネットワークの特徴マップ・サイズを、低解像度フレームの解像度に適合させることを含んでもよい。幾つかの例において、方法800は、プロセッサに利用可能なメモリ帯域幅に基づいて、畳み込みニューラル・ネットワークにおける特徴マップの数を調整することを含んでもよい。
[0069] 図9は、PReLU活性化を伴うスケーラブル・ニューラル・ネットワークを用いる超解像のための方法900を示すプロセス・フローチャートである。例示的な方法900は、図1及び図2のシステム100及び200、図10の演算デバイス1000、又は図11のコンピュータ読み取り可能な媒体1100において実施されることが可能である。
[0070] ブロック902において、低解像度フレームが受信される。例えば、低解像度フレームは、YUVビデオ・フレーム・フォーマットで受信されてもよい。幾つかの例において、フレームは、RGBフォーマットで受信され、YUVフレーム・フォーマットに変換されてもよい。
[0071] ブロック904において、高解像度フレームは、PReLU活性化を伴う畳み込みニューラル・ネットワーク(CNN)により生成される。例えば、高解像度ルミナンス成分フレームは、低解像度フレームのルミナンス成分に基づいて生成されてもよい。幾つかの例において、CNNは、図2のスケーラブルCNNであってもよい。
[0072] ブロック906において、残差ブロック・グループとPReLU活性化を用いるハードウェア・スケーラにより、高解像度フレームが生成される。例えば、高解像度ルミナンス成分フレームは、低解像度フレームのクロミナンス成分に基づいて生成されることが可能である。種々の例において、ハードウェア・スケーラは、エネルギー効率の良いハードウェア・スケーラである可能性がある。
[0073] ブロック908において、CNNの高解像度フレームはハードウェア・スケーラの高解像度フレームと結合され、結合された高解像度フレームが生成される。例えば、高解像度ルミナンス成分フレームは、高解像度クロミナンス成分フレームと組み合わせて、高解像度YUVフォーマット・ビデオ・フレームを生成することができる。
[0074] 図9のプロセス・フローチャートは、例示的な方法900のブロックが何らかの特定の順序で実行されるべきこと、あるいは、全てのブロックが全てのケースで含まれるべきであること、を示すようには意図されていない。更に、図示されていない任意の数の追加的なブロックが、特定の実装の詳細に応じて、例示的な方法900に含まれてもよい。例えば、方法900は、畳み込みニューラル・ネットワークの特徴マップ・サイズを、低解像度フレームの解像度に適合させること、畳み込みニューラル・ネットワークにおける特徴マップの数を、プロセッサに利用可能なメモリ帯域幅に基づいて調整すること、又はそれら双方を含むことが可能である。
[0075] 図10をここで参照すると、スケーラブル・ニューラル・ネットワークを用いて超解像を実行することが可能な演算デバイスの一例を示すブロック図が示されている。演算デバイス1000は、例えば、ラップトップ・コンピュータ、デスクトップ・コンピュータ、タブレット・コンピュータ、モバイル・デバイス、又はウェアラブル・デバイス、等々であってもよい。幾つかの例では、演算デバイス1000は、クラウド・コンピューティング・システムのエッジ・デバイスであってもよい。様々な例において、演算デバイス1000は、カメラ・システムであってもよい。演算デバイス1000は、記憶された命令を実行するように構成された中央処理ユニット(CPU)1002と、CPU 1002によって実行することが可能な命令を記憶するメモリ・デバイス1004とを含んでもよい。CPU 1002は、バス1006によってメモリ・デバイス1004に結合されてもよい。更に、CPU 1002は、シングル・コア・プロセッサ、マルチ・コア・プロセッサ、演算クラスタ、又は任意の数の他の構成であってもよい。更に、演算デバイス1000は、複数のCPU 1002を含んでもよい。幾つかの例において、CPU 1002は、マルチ・コア・プロセッサ・アーキテクチャを有するシステム・オン・チップ(SoC)であってもよい。幾つかの例において、CPU 1002は、ビデオ処理のために使用される特殊化されたデジタル信号プロセッサ(DSP)であるとすることが可能である。メモリ・デバイス1004は、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、フラッシュ・メモリ、又はその他の任意の適切なメモリ・システムを含むことが可能である。例えば、メモリ・デバイス1004は、ダイナミック・ランダム・アクセス・メモリ(DRAM)を含んでもよい。
[0076] メモリ・デバイス1004は、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、フラッシュ・メモリ、又はその他の任意の適切なメモリ・システムを含むことが可能である。例えば、メモリ・デバイス1004は、ダイナミック・ランダム・アクセス・メモリ(DRAM)を含んでもよい。
[0077] 演算デバイス1000はまた、グラフィックス処理ユニット(GPU)1008を含んでもよい。図示のように、CPU 1002は、バス1006を介してGPU 1008に結合されることが可能である。GPU 1008は、演算デバイス1000内での任意数のグラフィックス演算を実行するように構成されてもよい。例えば、GPU 1008は、演算デバイス1000のユーザーに表示されることになるグラフィックス画像、グラフィックス・フレーム、ビデオ等をレンダリング又は処理するように構成されてもよい。
[0078] メモリ・デバイス1004は、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、フラッシュ・メモリ、又はその他の任意の適切なメモリ・システムを含むことが可能である。例えば、メモリ・デバイス1004は、ダイナミック・ランダム・アクセス・メモリ(DRAM)を含んでもよい。メモリ・デバイス1004は、複数の畳み込みニューラル・ネットワークを訓練して、シーケンスに依存しない処理を実行するための命令を実行するように構成されるデバイス・ドライバ1010を含んでもよい。デバイス・ドライバ1010は、ソフトウェア、アプリケーション・プログラム、アプリケーション・コードなどであってもよい。
[0079] CPU 1002はまた、演算デバイス1000を1つ以上のI/Oデバイス1014に接続するように構成された入/出力(I/O)デバイス・インターフェース1012に、バス1006を介して接続されてもよい。入出力装置1014は、例えばキーボードやポインティング・デバイスを含んでもよく、ポインティング・デバイスは、特に、タッチパッド又はタッチスクリーンを含んでもよい。I/Oデバイス1014は、演算装置1000の内蔵構成要素であってもよいし、又は、演算デバイス1000に外部接続されるデバイスであってもよい。幾つかの例において、メモリ1004は、ダイレクト・メモリ・アクセス(DMA)を介してI/Oデバイス1014に通信可能に結合されることが可能である。
[0080] CPU 1002はまた、演算デバイス1000を表示デバイス1018に接続するように構成された表示インターフェース1016に、バス1006を介してリンクされてもよい。表示デバイス1018は、演算デバイス1000の内蔵構成要素である表示スクリーンを含んでもよい。また、表示デバイス1018は、コンピュータ・モニタ、テレビジョン、又はプロジェクタ等々であって、コンピュータ・デバイス1000の内部にある又は外部に接続されるものを含んでもよい。
[0081] 演算デバイス1000はまた記憶デバイス1020を含む。記憶デバイス1020は、ハード・ドライブ、光学ドライブ、サムドライブ、ドライブのアレイ、ソリッド・ステート・ドライブ、又はそれらの任意の組み合わせのような物理メモリである。記憶デバイス1020はまた、遠隔記憶ドライブを含んでもよい。
[0082] 演算デバイス1000はまた、ネットワーク・インターフェース・コントローラ(NIC)1022を含んでもよい。NIC 1022は、演算デバイス1000をネットワーク1024にバス1006を介して接続するように構成されてもよい。ネットワーク1024は、ワイド・エリア・ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、又はインターネット等々であってもよい。幾つかの例において、デバイスは、無線技術を介して他のデバイスと通信することができる。例えば、デバイスは、無線ローカル・エリア・ネットワーク接続を介して他のデバイスと通信することができる。幾つかの例において、デバイスは、Bluetooth(登録商標)又は同様な技術により、他のデバイスに接続したり、通信したりすることが可能である。
[0083] 演算デバイス1000は、更に、カメラ1026を含む。例えば、カメラ1026は1つ以上の撮像センサを含んでもよい。幾つかの例では、カメラ1026は、ビデオ・フレームを生成するためのプロセッサを含んでもよい。
[0084] 演算デバイス1000は、深層学習超解像トレーナ1028を更に含む。例えば、深層学習超解像トレーナ1028は、超解像撮像を実行するようにニューラル・ネットワークを訓練するために使用されることが可能である。深層学習超解像トレーナ1028は、ダウンサンプラ1030、損失計算器1032、及びバックプロパゲータ1034を含むことが可能である。幾つかの例において、深層学習超解像トレーナ1028の構成要素の各々1030-1034は、マイクロコントローラ、埋め込まれたプロセッサ、又はソフトウェア・モジュールであってもよい。ダウンサンプラ1030は、高解像度訓練フレームをダウンスケールして、基本パートと拡張されたパートを含む追加的な訓練ペアを生成することが可能である。例えば、ダウンサンプラ1030は、バイキュービック・ダウンサンプリングを用いて訓練フレームをダウンスケールして、訓練フレーム・ペアの各々の基本パートを生成することができる。様々な例において、ダウンサンプラ1030は、各々の訓練フレーム・ペアのうちの拡張されたパートを生成するために、高解像度グランド・トゥルース訓練フレームの最近傍ダウンサンプリングを使用して、訓練フレームをダウンスケールすることが可能である。種々の例において、ベース・パートと拡張されたパートを含む追加的な訓練ペアは、使用される訓練データセットの10ないし25%である可能性がある。例えば、訓練中に10-25%の追加的な訓練ペアを使用することは、ネットワークを正則化し、訓練されるネットワークの質を改善することができる。損失計算器1032は、再構成された高解像度フレームと高解像度グランド・トゥルース・フレームとの比較に基づいて損失を計算することができる。例えば、畳み込みニューラル・ネットワークを使用して、再構成された高解像度フレームを、低解像度訓練フレームから訓練中に生成することができる。幾つかの例において、損失計算器1032は、ダウンサンプル再構成・高解像度フレームとダウンサンプルされた低解像度フレームとの比較に基づいて、自己相似性損失を計算することができる。例えば、損失計算器1032は、再構成された高解像度フレームから生成されたCNNベースのダウンサンプリングされたフレームと、高解像度グランド・トゥルース・フレームをダウンスケーリングすることによって生成された低解像度訓練フレームとに基づいて、自己相似性損失を計算することができる。様々な例において、損失計算器1032は、第1損失と自己相似性損失に基づいて最終損失を計算することができる。例えば、損失計算器1032は、第1損失と自己相似性損失とを組み合わせることによって、最終損失を計算することができる。バックプロパゲータ1034は、損失を逆伝搬させて、CNNベースの超解像ネットワークの1つ以上のウェイトを修正することができる。幾つかの例において、バックプロパゲータ1034は、CNNベースの超解像ネットワークの1つ以上のウェイトを修正するために、最終損失を逆伝搬させることができる。
[0085] 演算デバイスは、深層学習超解像ネットワーク1036も更に含む。例えば、深層学習超解像ネットワーク1036は、スケーラブル畳み込みニューラル・ネットワークであってもよい。深層学習超解像ネットワーク1036は、入力フレームに対して超解像処理を実行して、より高い解像度と細部を有するフレームを生成するために使用することが可能である。深層学習超解像ネットワーク1036は、畳み込みニューラル・ネットワーク1038と、ハードウェア・スケーラ1040と、コンバイナ1042とを含む。畳み込みニューラル・ネットワーク1038は、低解像度フレームを受信し、高解像度ルミナンス成分フレームを生成することができる。例えば、畳み込みニューラル・ネットワーク1038は、強化された深層超解像度に基づく小規模ネットワークであってもよい。幾つかの例において、畳み込みニューラル・ネットワーク1038は、パラメトリック正規化線形ユニット(PReLU)活性化を含んでもよい。様々な例において、畳み込みニューラル・ネットワーク1038は、キャッシュの局所性を改善するように最適化された特徴マップ・サイズを含んでもよい。ハードウェア・スケーラ1040は、低解像度フレームを受信し、高解像度クロミナンス成分フレームを生成することができる。コンバイナ1042は、高解像度ルミナンス成分フレームと高解像度クロミナンス成分フレームを結合して、高解像度フレームを生成することができる。例えば、結合された高解像度画像は、人間の視覚によって最も顕著に知覚されるルミナンス成分において詳細を改善している可能性がある。
[0086] 図10のブロック図は、演算デバイス1000が、図10に示される全ての構成要素を含むことを示すようには意図されていない。むしろ、演算デバイス1000は、図10に示されていない追加的な構成要素又はより少ない構成要素、例えば追加的なバッファ、追加的なプロセッサ、追加的なCNNなどを含むことが可能である。演算デバイス1000は、特定の実装の詳細に応じて、図10に示されていない任意数の追加の構成要素を含んでもよい。例えば、深層学習超解像トレーナ1028は、畳み込みニューラル・ネットワークを訓練するために、再構成された高解像度フレームをダウンサンプリングするCNNベースのダウンサンプラを更に含んでもよい。更に、最近傍ダウンサンプラ1030、損失計算器1032、及びバックプロパゲータ1034、又はCNN 1038、ハードウェア・スケーラ1040、又はコンバイナ1042のうちの任意の機能が、部分的に又は全体的に、ハードウェア及び/又はプロセッサ1002において実装されてもよい。例えば、機能は、特定用途向け集積回路、プロセッサ1002に実装されるロジック、又は他の任意のデバイスにおいて実装されてもよい。更に、CPU 1002の何れの機能も、ハードウェア及び/又はプロセッサにおいて部分的又は全体的に実装することができる。例えば、深層学習超解像トレーナ1028又は深層学習超解像ネットワーク1036の機能は、特定用途向け集積回路、プロセッサに実装されたロジック、GPU 1008のような特殊化されたグラフィックス処理ユニットに実装されたロジック、又は他の任意のデバイスで実装されてもよい。
[0087] 図11は、スケーラブル・ニューラル・ネットワークを使用して超解像を実行するためのコードを記憶するコンピュータ読み取り可能な媒体1100を示すブロック図である。コンピュータ読み取り可能な媒体1100は、コンピュータ・バス1104を介してプロセッサ1102によってアクセスされることが可能である。更に、コンピュータ読み取り可能な媒体1100は、本件で説明される方法を実行するように、プロセッサ1102に指示するように構成されたコードを含んでもよい。幾つかの実施形態において、コンピュータ読取り可能な媒体1100は、非一時的なコンピュータ読み取り可能な媒体であってもよい。幾つかの例では、コンピュータ読み取り可能な媒体1100は記憶媒体であってもよい。
[0088] 本件で議論される種々のソフトウェア構成要素は、図11に示されるように、1つ以上のコンピュータ読み取り可能な媒体1100に記憶されてもよい。例えば、レシーバ・モジュール1106は、低解像度フレームを受信するように構成されてもよい。トレーナ・モジュール1108は、高解像度グランド・トゥルース訓練フレームを受け取り、訓練フレームに基づいてCNNを訓練するように構成されてもよい。例えば、トレーナ・モジュール1108は、CNNを訓練するために低解像度訓練フレームを生成するためん、訓練フレームをダウンスケールするように構成されてもよい。幾つかの例では、トレーナ・モジュール1108は、高解像度グランド・トゥルース訓練フレームの最近傍ダウンサンプリングを使用して訓練フレームをダウンスケールするように構成されてもよい。トレーナ・モジュール1108は、訓練フレームと、CNNからの再構成された高解像度フレームとの比較に基づいて、第1損失を計算するように構成されてもよい。幾つかの例において、トレーナ・モジュール1108は、ダウンサンプリングされたフレームを生成するために、再構成された高解像度フレームを処理するように構成されてもよい。様々な例において、トレーナ・モジュール1108は、低解像度訓練フレームとダウンサンプリングされたフレームとの比較に基づいて、自己相似性損失を計算するように構成されてもよい。例えば、トレーナ・モジュール1108は、図6及び図7の方法600又は700を実行するように構成されてもよい。CNNモジュール1110は、低解像度フレームに基づいて、高解像度ルミナンス成分フレームを生成するように構成されてもよい。幾つかの例において、CNNモジュール1110は、縮小された残差ブロック・グループを用いて構成されてもよい。種々の例において、CNNモジュール1110は、パラメトリック正規化線形ユニット(PReLU)活性化を含むように構成されてもよい。幾つかの例において、CNNモジュール1110は、適合可能な特徴マップ・サイズを用いて、低解像度フレームの解像度に適合するように構成されてもよい。様々な例において、CNNモジュール1110は、調整可能な数の特徴マップを用いて、プロセッサにとって利用可能なメモリ帯域幅に基づいて構成されてもよい。ハードウェア・スケーラ・モジュール1112は、受信した低解像度フレームに基づいて、高解像度クロミナンス成分フレームを生成するように構成されることが可能である。例えば、ハードウェア・スケーラ・モジュール1112は、低解像度フレームのクロミナンス・チャネルをアップスケールするように構成されることが可能である。コンバイナ・モジュール1114は、CNNモジュール1110の高解像度ルミナンス成分フレームを、ハードウェア・スケーラ・モジュール1112からの高解像度クロミナンス成分フレームと結合して、高解像度フレームを生成するように構成されることが可能である。例えば、結合された高解像度フレームは、ルミナンス成分における改善された詳細を含むYUVフレームであってもよい。
[0089] 図11のブロック図は、コンピュータ読み取り可能な媒体1100が、図11に示される全ての構成要素を含むべきであることを示すようには意図されていない。更に、コンピュータ読み取り可能な媒体1100は、特定の実装の詳細に応じて、図11に示されていない任意数の追加の構成要素を含んでもよい。
[0090] 実施例
実施例1は超解像撮像のための装置である。装置は、低解像度フレームを受信し、高解像度ルミナンス成分フレームを生成する畳み込みニューラル・ネットワークを含む。装置は、低解像度フレームを受信し、高解像度クロミナンス成分フレームを生成するハードウェア・スケーラも含む。装置は、高解像度ルミナンス成分フレームと高解像度クロミナンス成分フレームとを結合して高解像度フレームを生成するコンバイナを更に含む。
[0091] 実施例2は、選択的な特徴を含むか又は除外する実施例1の装置を含む。この実施例では、畳み込みニューラル・ネットワークは、高解像度グランド・トゥルース訓練フレームの最近傍ダウンサンプリングを使用して生成された拡張されたパートを含むように生成された追加的な訓練フレーム・ペアに関して訓練されている。
[0092] 実施例3は、選択的な特徴を含むか又は除外する実施例1又は2のうちの任意の何れかの装置を含む。この実施例では、畳み込みニューラル・ネットワークは、自己相似性損失関数を利用して訓練されている。
[0093] 実施例4は、選択的な特徴を含むか又は除外する実施例1ないし3のうちの任意の何れかの装置を含む。この実施例では、畳み込みニューラル・ネットワークは、エンハンスト深層超解像度(EDSR)に基づく小規模ネットワークを含む。
[0094] 実施例5は、選択的な特徴を含むか又は除外する実施例1ないし4のうちの任意の何れかの装置を含む。この実施例では、畳み込みニューラル・ネットワークは、パラメトリック正規化線形ユニット(PReLU)活性化を含む。
[0095] 実施例6は、選択的な特徴を含むか又は除外する実施例1ないし5のうちの任意の何れかの装置を含む。この実施例では、畳み込みニューラル・ネットワークは、訓練中に、低解像度訓練フレームから、再構成された高解像度フレームを生成するものである。畳み込みニューラル・ネットワークを訓練するために使用される損失を計算するために、再構成された高解像度フレームとグランド・トゥルース高解像度フレームが使用される。
[0096] 実施例7は、選択的な特徴を含むか又は除外する実施例1ないし6のうちの任意の何れかの装置を含む。この実施例では、装置は、畳み込みニューラル・ネットワークを訓練するために、再構成された高解像度フレームをダウンサンプリングするCNNベースのダウンサンプラを含む。
[0097] 実施例8は、選択的な特徴を含むか又は除外する実施例1ないし7のうちの任意の何れかの装置を含む。この実施例では、装置は、再構成された高解像度フレームから生成されたCNNベースのダウンサンプリングされたフレームと、高解像度グランド・トゥルース・フレームをダウンサンプリングすることにより生成された低解像度訓練フレームとに基づいて、自己相似性損失を計算する自己相似性損失計算部を含む。
[0098] 実施例9は、選択的な特徴を含むか又は除外する実施例1ないし8のうちの任意の何れかの装置を含む。この実施例では、装置は、損失と自己相似性損失とに基づいて最終損失を計算する最終損失計算部を含み、最終損失は、訓練中に、畳み込みニューラル・ネットワークを訓練するために使用される。
[0099] 実施例10は、選択的な特徴を含むか又は除外する実施例1ないし9のうちの任意の何れかの装置を含む。この実施例では、畳み込みニューラル・ネットワークの特徴マップ・サイズは、キャッシュ局所性を改善するように最適化される。
[0100] 実施例11は超解像撮像のための方法である。方法は、プロセッサが、低解像度フレームを受信することを含む。方法は、畳み込みニューラル・ネットワーク(CNN)が、低解像度フレームに基づいて、高解像度ルミナンス成分フレームを生成することも含む。方法は、ハードウェア・スケーラが、低解像度フレームに基づいて、高解像度クロミナンス成分フレームを生成することを更に含む。方法は、プロセッサが、高解像度ルミナンス成分フレームと高解像度クロミナンス成分フレームとを結合して高解像度フレームを生成することも更に含む。
[0101] 実施例12は、選択的な特徴を含むか又は除外する実施例11の方法を含む。この実施例では、方法は、高解像度グランド・トゥルース訓練フレームの最近傍ダウンサンプリングを使用して、畳み込みニューラル・ネットワークを訓練することを含む。
[0102] 実施例13は、選択的な特徴を含むか又は除外する実施例11ないし12のうちの任意の何れかの方法を含む。この実施例では、方法は、自己相似性損失関数を利用して、畳み込みニューラル・ネットワークを訓練することを含む。
[0103] 実施例14は、選択的な特徴を含むか又は除外する実施例11ないし13のうちの任意の何れかの方法を含む。この実施例では、高解像度ルミナンス成分フレームを生成することは、縮小された残差ブロック・グループとともにCNNを利用することを含む。
[0104] 実施例15は、選択的な特徴を含むか又は除外する実施例11ないし14のうちの任意の何れかの方法を含む。この実施例では、高解像度ルミナンス成分フレームを生成することは、パラメトリック正規化線形ユニット(PReLU)活性化とともにCNNを利用することを含む。
[0105] 実施例16は、選択的な特徴を含むか又は除外する実施例11ないし15のうちの任意の何れかの方法を含む。この実施例では、方法は、畳み込みニューラル・ネットワークの特徴マップ・サイズを、低解像度フレームの解像度に適合させることを含む。
[0106] 実施例17は、選択的な特徴を含むか又は除外する実施例11ないし16のうちの任意の何れかの方法を含む。この実施例では、方法は、プロセッサに利用可能なメモリ帯域幅に基づいて、畳み込みニューラル・ネットワークにおける特徴マップの数を調整することを含む。
[0107] 実施例18は、選択的な特徴を含むか又は除外する実施例11ないし17のうちの任意の何れかの方法を含む。この実施例では、方法は、畳み込みニューラル・ネットワークを訓練することを含む。畳み込みニューラル・ネットワークを訓練することは、訓練フレームを受信することを含む。畳み込みニューラル・ネットワークを訓練することは、ダウンスケーラが、訓練フレームをダウンスケーリングして、低解像度訓練フレームを生成することを含む。畳み込みニューラル・ネットワークを訓練することは、畳み込みニューラル・ネットワークが、再構成された高解像度フレームを生成するように、低解像度訓練フレームを処理することも含む。畳み込みニューラル・ネットワークを訓練することは、訓練フレームと、再構成された高解像度フレームとの比較に基づいて、損失を計算することを更に含む。畳み込みニューラル・ネットワークを訓練することは、計算された損失を逆伝搬させることも更に含む。
[0108] 実施例19は、選択的な特徴を含むか又は除外する実施例11ないし18のうちの任意の何れかの方法を含む。この実施例では、方法は、畳み込みニューラル・ネットワークを訓練することを含む。畳み込みニューラル・ネットワークを訓練することは、CNNベースのダウンサンプラが、ダウンサンプリングされたフレームを生成するように、再構成された高解像度フレームを処理することを含む。畳み込みニューラル・ネットワークを訓練することは、低解像度訓練フレームとダウンサンプリングされたフレームとの比較に基づいて自己相似性損失を計算することも含む。畳み込みニューラル・ネットワークを訓練することは、高解像度訓練フレームと再構成された高解像度フレームとの間で計算された損失と、自己相似性損失とに基づいて、最終損失を計算することを更に含む。畳み込みニューラル・ネットワークを訓練することは、計算された最終損失に基づいて畳み込みニューラル・ネットワークを逆伝搬させることも更に含む。
[0109] 実施例20は、選択的な特徴を含むか又は除外する実施例11ないし19のうちの任意の何れかの方法を含む。この実施例では、方法は、RGB成分フレームを受信することと、RGBカラー・フレームをYUV成分フレームに変換することとを含む。
[0110] 実施例21は、命令を記憶した超解像撮像のための少なくとも1つのコンピュータ読み取り可能な媒体であり、命令は低解像度フレームを受信することを、プロセッサに指示する。コンピュータ読み取り可能な媒体は、低解像度フレームに基づいて、高解像度ルミナンス成分フレームを生成することを、プロセッサに指示する命令も含む。コンピュータ読み取り可能な媒体は、低解像度フレームに基づいて、高解像度クロミナンス成分フレームを生成することを、プロセッサに指示する命令を更に含む。コンピュータ読み取り可能な媒体は、高解像度ルミナンス成分フレームと前記高解像度クロミナンス成分フレームとを結合して高解像度フレームを生成することを、プロセッサに指示する命令も更に含む。
[0111] 実施例22は、選択的な特徴を含むか又は除外する実施例21のコンピュータ読み取り可能な媒体を含む。この実施例では、コンピュータ読み取り可能な媒体は、高解像度グランド・トゥルース訓練フレームの最近傍ダウンサンプリングを使用して、畳み込みニューラル・ネットワークを訓練することを、プロセッサに実行させる命令を含む。
[0112] 実施例23は、選択的な特徴を含むか又は除外する実施例21ないし22のうちの任意の何れかのコンピュータ読み取り可能な媒体を含む。この実施例では、コンピュータ読み取り可能な媒体は、自己相似性損失関数を利用して、畳み込みニューラル・ネットワークを訓練することを、プロセッサに実行させる命令を含む。
[0113] 実施例24は、選択的な特徴を含むか又は除外する実施例21ないし23のうちの任意の何れかのコンピュータ読み取り可能な媒体を含む。この実施例では、コンピュータ読み取り可能な媒体は、縮小された残差ブロック・グループとともに畳み込みニューラル・ネットワーク(CNN)を利用して高解像度ルミナンス成分フレームを生成することを、プロセッサに実行させる命令を含む。
[0114] 実施例25は、選択的な特徴を含むか又は除外する実施例21ないし24のうちの任意の何れかのコンピュータ読み取り可能な媒体を含む。この実施例では、コンピュータ読み取り可能な媒体は、パラメトリック正規化線形ユニット(PReLU)活性化とともに畳み込みニューラル・ネットワーク(CNN)を利用して高解像度ルミナンス成分フレームを生成することを、プロセッサに実行させる命令を含む。
[0115] 実施例26は、選択的な特徴を含むか又は除外する実施例21ないし25のうちの任意の何れかのコンピュータ読み取り可能な媒体を含む。この実施例では、コンピュータ読み取り可能な媒体は、畳み込みニューラル・ネットワークの特徴マップ・サイズを、低解像度フレームの解像度に適合させることを、プロセッサに実行させる命令を含む。
[0116] 実施例27は、選択的な特徴を含むか又は除外する実施例21ないし26のうちの任意の何れかのコンピュータ読み取り可能な媒体を含む。この実施例では、コンピュータ読み取り可能な媒体は、プロセッサに利用可能なメモリ帯域幅に基づいて、畳み込みニューラル・ネットワークにおける特徴マップの数を調整することを、プロセッサに実行させる命令を含む。
[0117] 実施例28は、選択的な特徴を含むか又は除外する実施例21ないし27のうちの任意の何れかのコンピュータ読み取り可能な媒体を含む。この実施例では、コンピュータ読み取り可能な媒体は、訓練フレームを受信すること;訓練フレームをダウンスケーリングして、低解像度訓練フレームを生成すること;再構成された高解像度フレームを生成するように、低解像度訓練フレームを処理すること;訓練フレームと、再構成された高解像度フレームとの比較に基づいて、損失を計算すること;及び計算された損失を逆伝搬させることを、プロセッサに実行させる命令を含む。
[0118] 実施例29は、選択的な特徴を含むか又は除外する実施例21ないし28のうちの任意の何れかのコンピュータ読み取り可能な媒体を含む。この実施例では、コンピュータ読み取り可能な媒体は、ダウンサンプリングされたフレームを生成するように、再構成された高解像度フレームを処理すること;低解像度訓練フレームとダウンサンプリングされたフレームとの比較に基づいて自己相似性損失を計算すること;高解像度訓練フレームと再構成された高解像度フレームとの間で計算された損失と、自己相似性損失とに基づいて、最終損失を計算すること;及び計算された最終損失に基づいて畳み込みニューラル・ネットワークを逆伝搬させることを、プロセッサに実行させる命令を含む。
[0119] 実施例30は、選択的な特徴を含むか又は除外する実施例21ないし29のうちの任意の何れかのコンピュータ読み取り可能な媒体を含む。この実施例では、コンピュータ読み取り可能な媒体は、RGB成分フレームを受信することと、RGBカラー・フレームをYUV成分フレームに変換することとを、プロセッサに実行させる命令を含む。
[0120] 実施例31は超解像撮像のためのシステムである。システムは、 低解像度フレームを受信し、高解像度ルミナンス成分フレームを生成する畳み込みニューラル・ネットワークを含む。システムは、低解像度フレームを受信し、高解像度クロミナンス成分フレームを生成するハードウェア・スケーラも含む。システムは、高解像度ルミナンス成分フレームと高解像度クロミナンス成分フレームとを結合して高解像度フレームを生成するコンバイナを更に含む。
[0121] 実施例32は、選択的な特徴を含むか又は除外する実施例31のシステムを含む。この実施例では、畳み込みニューラル・ネットワークは、高解像度グランド・トゥルース訓練フレームの最近傍ダウンサンプリングを使用して生成された拡張されたパートを含むように生成された追加的な訓練フレーム・ペアに関して訓練されている。
[0122] 実施例33は、選択的な特徴を含むか又は除外する実施例31ないし32のうちの任意の何れかのシステムを含む。この実施例では、畳み込みニューラル・ネットワークは、自己相似性損失関数を利用して訓練されている。
[0123] 実施例34は、選択的な特徴を含むか又は除外する実施例31ないし33のうちの任意の何れかのシステムを含む。この実施例では、畳み込みニューラル・ネットワークは、エンハンスト深層超解像度(EDSR)に基づく小規模ネットワークを含む。
[0124] 実施例35は、選択的な特徴を含むか又は除外する実施例31ないし34のうちの任意の何れかのシステムを含む。この実施例では、システムは、畳み込みニューラル・ネットワークは、パラメトリック正規化線形ユニット(PReLU)活性化を含む。
[0125] 実施例36は、選択的な特徴を含むか又は除外する実施例31ないし35のうちの任意の何れかのシステムを含む。この実施例では、畳み込みニューラル・ネットワークは、訓練中に、低解像度訓練フレームから、再構成された高解像度フレームを生成するものである。畳み込みニューラル・ネットワークを訓練するために使用される損失を計算するために、再構成された高解像度フレームとグランド・トゥルース高解像度フレームが使用される。
[0126] 実施例37は、選択的な特徴を含むか又は除外する実施例31ないし36のうちの任意の何れかのシステムを含む。この実施例では、システムは、畳み込みニューラル・ネットワークを訓練するために、再構成された高解像度フレームをダウンサンプリングするCNNベースのダウンサンプラを含む。
[0127] 実施例38は、選択的な特徴を含むか又は除外する実施例31ないし37のうちの任意の何れかのシステムを含む。この実施例では、システムは、再構成された高解像度フレームから生成されたCNNベースのダウンサンプリングされたフレームと、高解像度グランド・トゥルース・フレームをダウンスケーリングすることにより生成された低解像度訓練フレームとに基づいて、自己相似性損失を計算する自己相似性損失計算部を含む。
[0128] 実施例39は、選択的な特徴を含むか又は除外する実施例31ないし38のうちの任意の何れかのシステムを含む。この実施例では、システムは、損失と自己相似性損失とに基づいて最終損失を計算する最終損失計算部を含み、最終損失は、訓練中に、前記畳み込みニューラル・ネットワークを訓練するために使用されるものである。
[0129] 実施例40は、選択的な特徴を含むか又は除外する実施例31ないし39のうちの任意の何れかのシステムを含む。この実施例では、畳み込みニューラル・ネットワークの特徴マップ・サイズは、キャッシュ局所性を改善するように最適化される。
[0130] 実施例41は超解像撮像のためのシステムである。システムは、 受信した低解像度フレームに基づいて、高解像度ルミナンス成分フレームを生成する手段を含む。システムは、受信した低解像度フレームに基づいて、高解像度クロミナンス成分フレームを生成する手段も含む。システムは、高解像度ルミナンス成分フレームと高解像度クロミナンス成分フレームとを結合して高解像度フレームを生成する手段を更に含む。
[0131] 実施例42は、選択的な特徴を含むか又は除外する実施例41のシステムを含む。この実施例では、高解像度ルミナンス成分フレームを生成する手段は、高解像度グランド・トゥルース訓練フレームの最近傍ダウンサンプリングを使用して訓練されている。
[0132] 実施例43は、選択的な特徴を含むか又は除外する実施例41ないし42のうちの任意の何れかのシステムを含む。この実施例では、高解像度ルミナンス成分フレームを生成する手段は、自己相似性損失関数を利用して訓練されている。
[0133] 実施例44は、選択的な特徴を含むか又は除外する実施例41ないし43のうちの任意の何れかのシステムを含む。この実施例では、高解像度ルミナンス成分フレームを生成する手段は、エンハンスト深層超解像度(EDSR)に基づく小規模ネットワークを含む。
[0134] 実施例45は、選択的な特徴を含むか又は除外する実施例41ないし44のうちの任意の何れかのシステムを含む。この実施例では、高解像度ルミナンス成分フレームを生成する手段は、パラメトリック正規化線形ユニット(PReLU)活性化を含む。
[0135] 実施例46は、選択的な特徴を含むか又は除外する実施例41ないし45のうちの任意の何れかのシステムを含む。この実施例では、高解像度ルミナンス成分フレームを生成する手段は、訓練中に、低解像度訓練フレームから、再構成された高解像度フレームを生成するものである。高解像度ルミナンス成分フレームを生成する手段を訓練するために使用される損失を計算するために、再構成された高解像度フレームとグランド・トゥルース高解像度フレームが使用される。
[0136] 実施例47は、選択的な特徴を含むか又は除外する実施例41ないし46のうちの任意の何れかのシステムを含む。この実施例では、システムは、高解像度ルミナンス成分フレームを生成する手段を訓練するために、再構成された高解像度フレームをダウンサンプリングする手段を含む。
[0137] 実施例48は、選択的な特徴を含むか又は除外する実施例41ないし47のうちの任意の何れかのシステムを含む。この実施例では、システムは、再構成された高解像度フレームから生成されたCNNベースのダウンサンプリングされたフレームと、高解像度グランド・トゥルース・フレームをダウンスケーリングすることにより生成された低解像度訓練フレームとに基づいて、自己相似性損失を計算する手段を含む。
[0138] 実施例49は、選択的な特徴を含むか又は除外する実施例41ないし48のうちの任意の何れかのシステムを含む。この実施例では、システムは、損失と自己相似性損失とに基づいて最終損失を計算する手段を含み、最終損失は、訓練中に、高解像度ルミナンス成分フレームを生成する手段を訓練するために使用されるものである。
[0139] 実施例50は、選択的な特徴を含むか又は除外する実施例41ないし49のうちの任意の何れかのシステムを含む。この実施例では、高解像度ルミナンス成分フレームを生成する手段の特徴マップ・サイズは、キャッシュ局所性を改善するように最適化される。
[0140] 本件に記載及び図示されている全ての構成要素、機能、構造、特徴などが、特定の態様又は各態様に含まれることは必須ではない。明細書が含まれ「てもよい」、含まれる「かもしれない」、含まれる「ことが可能である」、又は含まれることが「可能であった」と記述している場合、例えばその特定の構成要素、機能、構造又は特徴は、含まれるように要求されてはいない。明細書又はクレームが「ある」又は「或る」(“a” or “an”)要素に言及している場合、それは、その要素が唯1つしか存在しないことを意味してはいない。本明細書又はクレームが「ある追加的な」要素に言及している場合、それは、その追加的な要素が1つより多く存在することを排除していない。
[0141] 特定の実装を参照して幾つかの態様が説明されているが、幾つかの態様に従って他の実装も可能であることに留意すべきである。更に、図面に示される及び/又は明細書で説明される回路素子又はその他の特徴の配置及び/又は順序は、図示及び説明される特定の方法で配置されることを要求してはいない。幾つもの態様に従って、他の多くの構成が可能である。
[0142] 図中に示される各システムにおいて、何らかのケースにおける要素の各々は、表現される要素が類似している及び/又は異なることを示唆するために、同一の参照番号又は異なる参照番号を有する場合がある。しかしながら、要素は、異なる実装を有し、本件で図示又は記述されたシステムの全部又は一部と共に動作する程度に十分に柔軟であってもよい。図中に示される種々の要素は、同一であってもよいし、又は異なるものであってもよい。第1要素と呼ばれるものと、第2要素と呼ばれるものは、任意的である。
[0143] 前述の例における詳細は、1つ以上の態様における任意の場所で使用されてもよいことが理解されるべきである。例えば、上述の演算デバイスの全てのオプション特徴は、本件で説明される方法又はコンピュータ読み取り可能な媒体の何れかに関して実施されてもよい。更に、フローチャート及び/又は状態図は、態様を説明するために本件で使用されてもよいが、本技術は、本件におけるこれらの図や対応する説明に限定されない。例えば、フローは、図示されたボックス又は状態の各々を通って、又は本件で図示及び説明されたものと厳密に同じ順序で、進行してゆくことを要求してはいない。
[0144] 本技術は、本件でリストに挙げられた特定の詳細に限定されるものではない。実際、本開示の恩恵を有するに至った当業者は、前述の説明及び図面からの他の多くの変更が、本技術の範囲内で行われても良いことを理解するであろう。従って、本技術の範囲を定めるものは、任意の補正を含む以下のクレームである。