日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深度学习:用生成对抗网络(GAN)来恢复高分辨率(高精度)图片 (附源码,模型与数据集)

發(fā)布時間:2023/12/20 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习:用生成对抗网络(GAN)来恢复高分辨率(高精度)图片 (附源码,模型与数据集) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • Demo效果
  • 鏈接
  • 原理分析
    • 系統(tǒng)模型
    • 損失函數(shù)
  • 實驗
  • 結束

前言


平時生活中,我們經(jīng)常碰到一些自己喜歡的圖片卻苦于分辨率很低,而原圖又找不太到。 現(xiàn)在,神經(jīng)網(wǎng)絡可以幫助我們從一張給定的低分辨率圖片恢復出高分辨率的圖片。 這個功能聽上去既炫酷又實用,具體是怎么做的呢,詳見下文!

Demo效果



上圖就是訓練了2000次后的模型的效果,只需要輸入一張左邊的低精度的圖片, 就可以生成右邊的高精度的圖片。肉眼看上去效果還是非常不錯的!

這張GIF則展示了整個訓練過程的變化, 左邊的圖是由神經(jīng)網(wǎng)絡生成的, 中間的是原始的高精度的圖片, 右邊的是輸入到神經(jīng)網(wǎng)絡的低分辨率圖片, 神經(jīng)網(wǎng)絡在整個生成過程中是沒有得到高精度圖片信息的,這里給出高精度圖片只是為了對比體現(xiàn)生成的效果。可以看到在100次epoch迭代之后,性能已經(jīng)非常不錯了。

鏈接

項目源碼:基于keras的SRGAN實現(xiàn).
主要參考了著名的keras-GAN這個庫,做了一些小改動使得節(jié)目效果更好,適合作為Demo來展示哈哈。如果對你有幫助的話請Star一下哈!
論文地址 被引用了1500多次,很強了!這個代碼也是根據(jù)論文里的參數(shù)寫的。
數(shù)據(jù)集地址 這個鏈接給出了百度云和谷歌云盤的下載地址,筆者是用百度云下載的,非會員用戶, 5M/s的速度,很給力!

原理分析

這里提供非常概括性的分析,想深入理解的同學建議參考原文。

系統(tǒng)模型


首先作者使用了非常火熱的GAN生成對抗網(wǎng)絡(對GAN不熟悉的可以百度一下GAN,已經(jīng)有許多優(yōu)質(zhì)的資料)。 生成網(wǎng)絡(上圖上半部)接收低精度圖片作為輸入,通過殘差網(wǎng)絡等,生成高精度圖片。 然后 判別器網(wǎng)絡(上圖下半部)接收一個輸入, 判斷其是否為生成的圖片。 損失函數(shù)為:
min?θGmax?θDEIHR~pranin(IHR)[log?DθD(IHR)]+EILR~pG(ILR)[log?(1?DθD(GθG(ILR))]\begin{array}{c}{\min _{\theta_{G}} \max _{\theta_{D}} \mathbb{E}_{I^{H R} \sim p_{\mathrm{ranin}}\left(I^{H R}\right)}\left[\log D_{\theta_{D}}\left(I^{H R}\right)\right]+} {\mathbb{E}_{I^{L R} \sim p_{G}\left(I^{L R}\right)}\left[\log \left(1-D_{\theta_{D}}\left(G_{\theta_{G}}\left(I^{L R}\right)\right)\right]\right.}\end{array} minθG??maxθD??EIHRpranin?(IHR)?[logDθD??(IHR)]+EILRpG?(ILR)?[log(1?DθD??(GθG??(ILR))]?
沒有GAN基礎的同學可能比較難理解上述公式,這里深入淺出的通俗解釋下訓練過程其實就是:

  • 固定生成器G (參數(shù)為θG{\theta_{G}}θG?), 訓練判別器,使得其能夠分辨 真實的圖片和生成器生成的圖片。
  • 固定判別器, 訓練生成器, 使得其能夠讓固定的判別器將其判別為真實的圖片
    如此迭代之后, 判別器再也無法分別真實和生成的圖片,此時就說明生成器生成的圖片已經(jīng)足夠以假亂真。這里真實的圖片指的就是高精度的圖片,訓練完成后,我們期望生成器可以接收低精度圖片,來生成高精度圖片。
  • 生成器作者主要使用了ResNet來實現(xiàn)。
    判別器是使用了常規(guī)的卷積神經(jīng)網(wǎng)絡。

    損失函數(shù)

    與普通的GAN網(wǎng)絡不同的是,這篇文章還考慮了content loss:
    lVGG/i.jSR=1Wi,jHi,j∑x=1Wi,jHi,j(?i,j(IHR)x,y??i,j(GθG(ILR))x,y)2\begin{array}{r}{l_{V G G / i . j}^{S R}=\frac{1}{W_{i, j} H_{i, j}} \sum_{x=1}^{W_{i, j} H_{i, j}}\left(\phi_{i, j}\left(I^{H R}\right)_{x, y}\right.} {-\phi_{i, j}\left(G_{\theta_{G}}\left(I^{L R}\right)\right)_{x, y} )^{2}}\end{array} lVGG/i.jSR?=Wi,j?Hi,j?1?x=1Wi,j?Hi,j??(?i,j?(IHR)x,y???i,j?(GθG??(ILR))x,y?)2?
    意思就是,生成的圖片會和準確的圖片一起,輸入到VGG網(wǎng)絡中,然后得到特征圖。 再將兩者的特征圖求MSE,并訓練生成器縮小該MSE。這就是從內(nèi)容的角度,讓生成的圖片和準確圖片盡可能的接近。

    結合上述的GAN網(wǎng)絡,本文采用的loss是:
    lSR=lXSR?content?loss?+10?3lGenSR?adversarial?loss?l^{S R}=\underbrace{l_{\mathrm{X}}^{S R}}_{\text { content loss }}+\underbrace{10^{-3} l_{G e n}^{S R}}_{\text { adversarial loss }} lSR=?content?loss?lXSR???+?adversarial?loss?10?3lGenSR???
    也就是說在MSE損失的基礎上,摻入了一點GAN的損失,作者指出這樣會獲得更好的性能。

    實驗

    上述簡單的概述應該很難讓讀者完全看懂,建議結合論文與代碼一起融會貫通。這里說一下仿真細節(jié):
    數(shù)據(jù)集使用了數(shù)據(jù)集地址 人臉數(shù)據(jù)集,因此要恢復的圖片也應該是人像圖才會效果比較好。
    筆者的配置是1080Ti + i9-9900k + 48G內(nèi)存, 因此使用的batch_size為10。配置不夠的同學可以先設為1,確保機器可以跑起來。
    具體還可以參見基于keras的SRGAN實現(xiàn)中的readme,有具體的使用方法。

    結束

    這個Demo非常簡單,但是效果很不錯,適合課堂演示,Presentation之類的。
    我給出了自己這邊訓練了2000次后的模型權重,可以從鏈接下載
    提取碼:su92
    由于訓練的模型固定了輸出的尺寸,因此你自己想輸入的圖片也盡可能取正方形圖片(裁剪一下就行)。

    總結

    以上是生活随笔為你收集整理的深度学习:用生成对抗网络(GAN)来恢复高分辨率(高精度)图片 (附源码,模型与数据集)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。