PULSE: 暗黙の空間に基づく画像超解像アルゴリズム

PULSE: 暗黙の空間に基づく画像超解像アルゴリズム

CVPR 2020 に採択された論文「PULSE: 生成モデルの潜在空間探索による自己教師あり写真アップサンプリング」を共有します。著者は、新しい画像超解像法を提案しました。教師ありの PSNR ベースおよび GAN​​ ベースの方法とは異なり、この方法は教師なしの方法であり、つまり、高品質で高解像度の画像を復元するには低解像度の画像のみが必要です。

コードは現在オープンソースです:

https://github.com/adamian98/pulse

論文情報:

1. 動機

画像超解像タスクの基本的な目標は、低解像度の画像を対応する高解像度の画像に超解像することです。 PNSR または GAN に基づく教師あり学習方法のいずれであっても、ピクセル単位のエラー損失関数が多かれ少なかれ使用され、生成される画像はより滑らかになることが多く、細部があまり良くない場合があります。そこで著者は考えを変えました。**これまでの方法はすべて、LRからHRを徐々に回復して生成するものでした。高解像度画像HRのマニフォールドを見つけ、そのマニフォールドから高解像度画像を検索して、そのダウンサンプリングをLRに復元できれば、検索した画像がLR超解像後の結果になります。 **したがって、この記事では主に次の 2 つの問題を解決します。

Manifold の高解像度画像を見つけるにはどうすればいいですか?
高解像度画像の多様体上で画像を検索し、ダウンサンプリングによって LR を復元するにはどうすればよいでしょうか。

2. 方法

高解像度画像の多様体が であり、これが M 上の高解像度画像であると仮定します。低解像度画像が与えられた場合、LR がダウンサンプリング操作 DS を通じて復元できる場合、それは LR の超解像結果と見なすことができます。問題は次のように定義されます。

つまり、両者の差が一定のしきい値未満の場合です。 、この記事の課題は、次の図に示すような解決策を見つけることです。

以上がこの記事の核となる内容です。コードで具体的にどのように実装されているか見ていきましょう。

まず、高解像度のマニフォールドを近似するための生成モデルが必要です。この記事では、著者は StyleGAN の事前トレーニング済みモデルを使用します。

StyleGAN のジェネレーター ネットワークには 2 つの部分があり、1 つは潜在コードをスタイル コードにマッピングするために使用されるマッピング ネットワークで、もう 1 つはマッピング後に取得されたスタイル コードを使用して画像の生成をガイドするために使用される合成ネットワークです。ここで注意すべき点は、この記事では StyleGAN の事前トレーニング済みモデルのみを使用し、そのパラメータをトレーニングまたは更新していないことです。 2 つの部分のパラメータをロードした後、100,000 個のランダム潜在コードがランダムに構築されます。マッピング ネットワークを通過した後、新しい潜在コードを使用して平均と分散を計算します。

  1. 潜在 = torch.randn(( 1000000 , 512 ),dtype=torch.float32, デバイス= "cuda" )
  2. 潜在出力 = torch.nn.LeakyReLU( 5 )(マッピング(潜在))
  3. self.gaussian_fit = { "平均" : latent_out.mean( 0 ), "標準偏差" : latent_out.std( 0 )}

この平均と分散は、新しい潜在コードをマッピングするために使用できます。次のステップは、潜在コードとノイズをランダムに初期化することです(StyleGAN に必要)。

  1. # 潜在コードを初期化する
  2. 潜在 = torch.randn((batch_size, 18 , 512 ), dtype=torch.float , requires_grad=True, device= 'cuda' )
  3. # ノイズを初期化する
  4. i が範囲( 18 )内にある場合: # [?, 1 , 4 , 4 ] -> [?, 1 , 1024 , 1024 ]
  5. res = (batch_size, 1 , 2 **(i //2+2), 2**(i//2+2))  
  6. new_noise = torch.randn(res、dtype= torch.float 、デバイス= 'cuda' )
  7. if (i < num_trainable_noise_layers): # num_trainable_noise_layers
  8. new_noise.requires_grad = True
  9. noise_vars.append(新しいノイズ)
  10.                     
  11. ノイズ.append(新しいノイズ)

**ここから、モデルが実際にはモデル パラメータではなく、潜在的なコードとノイズの最初の 5 層を最適化していることがわかります。 **初期化が完了したら、以下を実行できます。

  1. # 以前に取得した平均と分散に基づいて潜在コードをマッピングする
  2. latent_in = self.lrelu(latent_in*self.gaussian_fit[ "std" ] + self.gaussian_fit[ "mean" ])
  3. # 画像生成用の合成ネットワークをロードする
  4. # 画像の結果を[- 1 , 1 ]から[ 0 , 1 ]に変更します
  5. gen_im = (self.synthesis(latent_in, ノイズ) + 1 ) / 2  

損失は​​、元の低解像度画像と生成された高解像度画像に基づいて計算されます。コードでは、損失は次の 2 つの部分で構成されます。

L2 損失は、生成された高解像度画像 gen_im の LR をバイキュービックダウンサンプリングによって復元し、入力 LR とのピクセル単位の誤差を計算するもので、GEOCROSS は測地線距離です。

最終的に選択される最適化装置は球状最適化装置です。

  1. # opt = SphericalOptimizer(torch.optim.Adam, [x], lr= 0.01 )
  2.  
  3. クラスSphericalOptimizer(Optimizer):
  4. def __init__(self, オプティマイザ, パラメータ, **kwargs):
  5. self.opt = オプティマイザ(パラメータ、**kwargs)
  6. self.params = パラメータ
  7. torch.no_grad() の場合:
  8. self.radii = {param: (param.pow( 2 ).sum(tuple(range( 2 ,param.ndim)),keepdim=True)+1e- 9 ).sqrt()で、paramparams 内になります}
  9.  
  10. @torch .no_grad()
  11. def step(self, クロージャ=None):
  12. 損失 = self.opt.step(クロージャ)
  13. self.params 内の paramの場合:
  14. param.data.div_((param.pow( 2 ).sum(tuple(range( 2 ,param.ndim)),keepdim=True)+1e- 9 ).sqrt())
  15. param.mul_(自己.半径[param])
  16.  
  17. リターンロス

3. 結果

結果から、PULSE によって生成された画像は、髪の毛、目、歯など比較的微妙な領域を含む詳細がより豊富であることがわかります。さらに、ノイズの多い LR の場合でも非常にうまく生成できるため、アルゴリズムの堅牢性が高まっていることがわかります。

最終的な比較指標は MOS です。

4. 質問

PULSE は教師なし画像超解像モデルであり、画像の品質は実際には選択された生成モデルの品質に大きく依存します。一方、PULSE の基本原理は、ダウンサンプリング後に LR を復元できるように高解像度の画像を見つけることであるため、結果は一意ではないことを意味します。生成された画像は非常に鮮明かもしれませんが、識別情報は失われています。

5. リソース

PaperPULSE: https://arxiv.org/pdf/2003.03808.pdfStyleGAN: https://arxiv.org/abs/1812.04948高次元のランダムベクトル: https://www.sci-hub.ren/10.1017/9781108231596.006
GitHub: https://github.com/adamian98/pulse.git

<<:  シリコンバレーの大企業も「名門校の学位」を重視するのでしょうか? Redditの男の魂を問う質問が白熱した議論を巻き起こす

>>:  金融技術分野における人工知能と機械学習の応用と開発

ブログ    
ブログ    

推薦する

2021年12月のドローン業界の最新動向を3分で振り返る

[[442512]]現在、人工知能や5Gなどの技術の助けを借りて、我が国のドローン開発は急速な成長の...

テレンス・タオが AI を使って形式化した証明とは、いったい何でしょうか? PFR予想の歴史の簡単な紹介

12月5日、有名な数学者でフィールズ賞受賞者のテレンス・タオ氏は、ソーシャルネットワーク上で、多項式...

...

データ構造フレームワークの考え方を理解すると、すべてのアルゴリズムは単なる張り子の虎に過ぎない

1. データ構造の保存方法データ構造を保存する方法は、配列 (順次ストレージ) とリンク リスト (...

OpenAI の組み込み検索は本当に便利ですか?定量的な評価により、より深い理解が得られます。

ベクターデータベースの強力なライバルが登場するか?トラック関連のスタートアップ企業がまたもや倒産しそ...

AI が企業のランサムウェア対策やクラウド セキュリティ侵害防止にどのように役立つか

サイバーセキュリティの状況は毎年、組織が対処する必要のある新たな課題や障害をもたらしており、たとえば...

2021年の量子コンピューティング研究開発の現状と将来展望

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

AIが観測性を高める方法

今の時代、過去を懐かしむのは当然ですが、私たちは、以前と同じ観測可能性を持つことは決してできないよう...

顔認識システムにおける「バイアス」のジレンマとは何ですか?ジェフ・ディーンは、この若者のスピーチに思わず賛同した。

AIアルゴリズムの偏り(性別、人種など)は海外ではもはや新しい話題ではありません。少し前には、イン...

...

Google が使用する 4 つのデータ指標モデル

この目的のために、市場で一般的なデータ モデルを見つけて整理し、分析することができます。主流のデータ...

プライバシー保護における新たなブレークスルー: ガウス差分プライバシー フレームワークとディープラーニングの組み合わせ

[[324532]]人工知能におけるプライバシーの問題は、重要かつ深刻な問題として認識されています。...

...