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の男の魂を問う質問が白熱した議論を巻き起こす

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

ブログ    
ブログ    

推薦する

AIとMLでドキュメントを自動化する方法

[[312937]] [51CTO.com クイック翻訳] かつて紙は必須の事務用品とみなされ、ほと...

2023年に開発者が知っておくべき6つのAIツール

Chat GPTのリリース以来、AIはプログラミングをはじめ、さまざまな分野で素晴らしい製品を生み出...

VRとAI: 融合しようとしている2つの技術

テクノロジーは私たちの生活に常に影響を与えています。社会として私たちはテクノロジーに大きく依存するよ...

百度と東軟教育が共同で「東軟百度人工知能アカデミー」を設立し、AIの「人材不足」を打破

インテリジェント時代が加速しており、人工知能の人材はAIの発展を支える第一のリソースとして特に重要で...

人工知能について知っておくべき4つのこと!

1950 年代以来、コンピューター科学者は人間の知能を模倣するプログラムの開発に取り組んできました...

...

技術革新は「プロトタイプ」で止まるわけにはいかない…

[[270666]] [51CTO.com クイック翻訳] 昨今、クラウドコンピューティング、ブロ...

AIの開発パターンは「データ」から「知識」へと進化している

半世紀以上前に誕生して以来、人工知能(AI)革命は全世界に大きな影響を与えてきました。特に過去10年...

Tofsee ボットネットは独自のドメイン名生成アルゴリズムを使用する

概要スイス政府コンピュータ緊急対応センター (GovCERT) は最近、Tofsee ボットネット ...

...

...

自動車業界における人工知能の活用方法

[[431746]]自動車業界は、新しい技術の最前線に立つことが多いです。業界では数十年にわたって組...

...

...

2018年の人工知能の発展に関する5つの予測

2017年は人工知能技術(AI)において画期的な発展があった年でした。過去 1 年間の大きな宣伝にも...