偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

PULSE:一種基于隱式空間的圖像超分辨率算法

人工智能 算法
PULSE: Self-Supervised Photo Upsampling via Latent Space Exploration of Generative Models,作者提出了一種新的圖像超分辨率方法,區(qū)別于有監(jiān)督的PSNR-based和GANs-based方法,該方法是一種無監(jiān)督的方法,即只需要低分辨率的圖片就可以恢復(fù)高質(zhì)量、高分辨率的圖片。

分享一篇 CVPR 2020 錄用論文:PULSE: Self-Supervised Photo Upsampling via Latent Space Exploration of Generative Models,作者提出了一種新的圖像超分辨率方法,區(qū)別于有監(jiān)督的PSNR-based和GANs-based方法,該方法是一種無監(jiān)督的方法,即只需要低分辨率的圖片就可以恢復(fù)高質(zhì)量、高分辨率的圖片。 

目前代碼已經(jīng)開源:

https://github.com/adamian98/pulse 

論文信息:

 

1. Motivation

圖像超分辨率任務(wù)的基本目標(biāo)就是把一張低分辨率的圖像超分成其對應(yīng)的高分辨率圖像。無論是基于PNSR還是GAN的監(jiān)督學(xué)習(xí)方法,或多或少都會用到pixel-wise誤差損失函數(shù),而這往往會導(dǎo)致生成的圖像比較平滑,一些細(xì)節(jié)效果不是很好。于是作者換了一個思路:**以往的方法都是從LR,逐漸恢復(fù)和生成HR;如果能找到一個高分辨率圖像HR的Manifold,并從該Manifold中搜尋到一張高分辨率的圖像使其下采樣能恢復(fù)到LR,那么搜尋到的那張圖像就是LR超分辨率后的結(jié)果。**所以本篇文章主要解決了以下的兩個問題:

如何找到一個高分辨率圖像的Manifold?
如何在高分辨率圖像的Manifold上搜尋到一張圖片使其下采樣能恢復(fù)LR?

2. Method

假設(shè)高分辨率圖像的Manifold是,是M上的一個高分辨率圖片,給定一個低分辨率圖像,如果可以通過下采樣操作DS恢復(fù)LR,那么就可以認(rèn)為是LR的超分辨率結(jié)果,該問題定義如下:

即當(dāng)兩者的差值小于某個閾值時。令,那么本文任務(wù)其實(shí)就是找到一個如下圖所示:

以上就是本篇文章的核心內(nèi)容,下面我們結(jié)合代碼來看一下具體是怎么實(shí)現(xiàn)的。

首先我們需要一個生成模型來近似高分辨率的Manifold,在本文中,作者采用的是StyleGAN的預(yù)訓(xùn)練模型:

StyleGAN的生成器網(wǎng)絡(luò)中有兩個部分,一個是Mapping Network用于將latent code映射為style code,一個Synthesis Network用于將映射后得到的style code用于指導(dǎo)圖像的生成。這里需要注意的是,本篇文章只是使用了StyleGAN的預(yù)訓(xùn)練模型,并不訓(xùn)練更新其參數(shù)。加載兩個部分的參數(shù)之后,隨機(jī)構(gòu)造100000個隨機(jī)latent code,經(jīng)過Mapping Network,用得到新的latent code計(jì)算均值與方差:

  1. latent = torch.randn((1000000,512),dtype=torch.float32, device="cuda"
  2. latent_out = torch.nn.LeakyReLU(5)(mapping(latent)) 
  3. self.gaussian_fit = {"mean": latent_out.mean(0), "std": latent_out.std(0)} 

這個均值與方差就可以用來映射新的latent code。接下就是隨機(jī)初始化latent code和noise(StyleGAN需要):

  1. # 初始化latent code 
  2. latent = torch.randn((batch_size, 18512), dtype=torch.float, requires_grad=True, device='cuda'
  3. # 初始化noise 
  4. for i in range(18): # [?, 144] -> [?, 110241024
  5.     res = (batch_size, 12**(i//2+2), 2**(i//2+2)) 
  6.     new_noise = torch.randn(res, dtype=torch.float, device='cuda'
  7.     if (i < num_trainable_noise_layers):  # num_trainable_noise_layers 
  8.         new_noise.requires_grad = True 
  9.     noise_vars.append(new_noise) 
  10.                     
  11. noise.append(new_noise) 

**從這里我們可以看出,模型優(yōu)化的其實(shí)是latent code與noise的前5層,而不是模型參數(shù)。**初始化完成了之后就可以執(zhí)行前向了:

  1. # 根據(jù)之前的求得的均值和方差,映射latent code 
  2. latent_in = self.lrelu(latent_in*self.gaussian_fit["std"] + self.gaussian_fit["mean"]) 
  3. # 加載Synthesis Network用于生產(chǎn)圖像 
  4. # 把圖像結(jié)果從[-11]修改到[01
  5. gen_im = (self.synthesis(latent_in, noise)+1)/2 

根據(jù)原始的低分辨率圖像和生成的高分辨率圖像計(jì)算loss。在代碼中,loss由兩個部分組成:

其中L2損失是將生成的高分辨率圖像gen_im通過bicubic下采樣恢復(fù)LR,并與輸入的LR計(jì)算pixel-wise誤差,GEOCROSS是測地線距離。

最后優(yōu)化器選擇的是球面優(yōu)化器:

  1. # opt = SphericalOptimizer(torch.optim.Adam, [x], lr=0.01
  2.  
  3. class SphericalOptimizer(Optimizer): 
  4.     def __init__(self, optimizer, params, **kwargs): 
  5.         self.opt = optimizer(params, **kwargs) 
  6.         self.params = params 
  7.         with torch.no_grad(): 
  8.             self.radii = {param: (param.pow(2).sum(tuple(range(2,param.ndim)),keepdim=True)+1e-9).sqrt() for param in params} 
  9.  
  10.     @torch.no_grad() 
  11.     def step(self, closure=None): 
  12.         loss = self.opt.step(closure) 
  13.         for param in self.params: 
  14.             param.data.div_((param.pow(2).sum(tuple(range(2,param.ndim)),keepdim=True)+1e-9).sqrt()) 
  15.             param.mul_(self.radii[param]) 
  16.  
  17.         return loss 

3. Result

從結(jié)果可以看出,PULSE生成的圖像細(xì)節(jié)更豐富,包括頭發(fā)絲、眼睛和牙齒這些比較細(xì)微的地方都能生成的很好。而且對于有噪聲的LR,也能生成的很好,說明該算法有很強(qiáng)的魯棒性:

最終的比較指標(biāo)采用的是MOS:

4. Questions

PULSE是一個無監(jiān)督的圖像超分辨率模型,其圖像的質(zhì)量其實(shí)很大程度上取決于所選取的生成模型的好壞。另一方面,由于PULSE的基礎(chǔ)原理就是找到一個高分辨率的圖像,使其下采樣之后能恢復(fù)LR,那么意味著結(jié)果不唯一,可能生成的圖像很清楚,但是已經(jīng)失去了身份信息:

5. Resource

PaperPULSE:https://arxiv.org/pdf/2003.03808.pdfStyleGAN: https://arxiv.org/abs/1812.04948Random Vectors in High Dimen- sions: https://www.sci-hub.ren/10.1017/9781108231596.006
Github: https://github.com/adamian98/pulse.git

 

責(zé)任編輯:梁菲 來源: 今日頭條
相關(guān)推薦

2022-01-17 17:01:23

深度學(xué)習(xí)圖像人工智能

2021-01-20 11:14:47

人工智能算法技術(shù)

2018-07-12 10:08:31

圖像超分辨率重建技術(shù)原理

2017-04-10 09:17:08

神經(jīng)網(wǎng)絡(luò)分辨率像素遞歸

2021-09-10 16:24:00

框架AI開發(fā)

2018-07-24 17:00:57

人工智能機(jī)器學(xué)習(xí)深度學(xué)習(xí)

2017-11-10 11:02:36

2024-07-05 10:41:30

目標(biāo)檢測算法

2022-07-12 14:50:03

模型研究

2024-06-05 09:26:50

2014-08-07 15:06:45

Android設(shè)備分辨率

2021-06-02 10:01:20

開源技術(shù) 軟件

2013-03-11 13:48:24

投影

2017-05-04 21:15:30

Android分辨率

2011-07-09 17:00:13

愛普生掃描儀

2014-10-15 14:58:50

iPhone6iOS 8分辨率

2023-08-28 13:45:21

DNA編碼

2021-08-08 07:56:19

游戲神器應(yīng)用Reso

2021-03-02 09:06:20

安全API授權(quán)

2025-05-19 08:30:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號