AI帶來的穿越,老電影重現(xiàn)新畫質(zhì)
老照片、老電影總能讓人們的思緒飄回那些久遠的年代,沉淀于其中,可與此同時,模糊的畫面又不免給記憶蒙上了一層薄霧。如今,隨著人工智能技術的發(fā)展,SRGAN(超分辨率生成對抗網(wǎng)絡)使得撥散云霧始見真,成倍還原了畫面質(zhì)量。
2019年底,WAIC開發(fā)者·上海臨港人工智能開發(fā)者大會的開幕式上,上海市經(jīng)濟和信息化委員會副主任張英為上海市人工智能創(chuàng)新中心授牌,深蘭科技等7家企業(yè)首批入選,同時深蘭科技兩項應用場景方案入圍“上海市第二批人工智能試點應用場景”。
其中,在AI+文化旅游場景中,深蘭科技入圍成為上海文化廣告影視集團有限公司的解決方案供應商,將為其提供視頻圖像質(zhì)量增強技術,通過智能算法提高視頻畫面質(zhì)量,使2K高清素材達到4K超高清要求,優(yōu)化提升老舊節(jié)目的圖像清晰度。
今天,就來個承上啟下,回顧前一年成績的同時,也用創(chuàng)新和進步為新的一年注入能量。獲獎方案的團隊負責人、深蘭科學院深度學習科學家方林博士,給出了實現(xiàn)超分辨率的SRGAN模型的網(wǎng)絡結構、訓練步驟和損失函數(shù),將幫助GAN的初學者理解對抗網(wǎng)絡的實質(zhì),為今后設計更加復雜的超分模型打下基礎。
超分辨率
超分辨率的目的是把低分辨率的圖像或者視頻轉(zhuǎn)為高分辨率,比如:
我們利用超分辨率生成式對抗網(wǎng)絡(SRGAN, Super Resolution Generative Adversarial Network)實現(xiàn)超分辨率。
下面我們通過一個簡單的SRGAN模型來說明超分模型的基本結構和訓練步驟。
圖片準備
超分模型由兩張圖片組成,第一張是模糊圖片,形狀為[128, 128, 3];第二張是對應的清晰圖片,形狀為[512, 512, 3]。清晰圖片的長寬分別是模糊圖片的長寬的4倍。我們的目標是把模糊圖片的分辨率提高16倍。
圖片必須是一一對應的,即一張模糊圖片必須有對應的一張清晰圖片。為了準備圖片,我們先收集足夠數(shù)量(最好2萬張以上)的清晰圖片,圖片的長度和寬度應該都大于等于512。然后選取任意一個512*512的部分進行剪裁。
注意:
不要把一個大的圖片resize成512*512大小,因為這會導致圖片變形;
由于我們可以在大圖片的任意位置剪裁出512*512的圖片,所以長度或者寬度大于512的圖片可以生成多個清晰圖片。比如520*520的圖片可以生成64個清晰圖片。
當我們獲得了所有清晰圖片之后,再把每張清晰圖片resize到128*128大小,這樣我們就獲得了模糊圖片。OpenCV的resize()方法可以幫助我們改變圖片大小。
SRGAN模型
1、主要結構
SRGAN模型結構如下圖所示:
圖中“模糊”是指模糊圖片,“清晰”是指清晰圖片,“生成”是指生成器生成的圖片。生成圖片的分辨率與清晰圖片相同,為512*512。模糊圖片的分辨率是128*128,為清晰圖片的1/16。
上圖中的模型主要由生成器和辨別器兩部分組成。生成器的目的是輸入模糊圖片(圖中的“模糊”),輸出生成圖片(圖中的“生成”)。辨別器的輸入由a、b兩個參數(shù)組成。其中b是模糊圖片,a是生成圖片或者清晰圖片。辨別器的目的是判斷圖片a是否是真實的清晰圖片。b是用來協(xié)助辨別器進行判斷的。辨別器的輸出p是一個概率,1表示a是100%的真實清晰圖片,0%表示a是100%的生成圖片。
訓練上述模型時,生成器總是盡可能生成像真實圖片的圖片,而辨別器則盡可能分辨出a是真實圖片還是生成圖片。所以辨別器和生成器之間存在著一種對抗:生成器越優(yōu)化,辨別器越不能分辨生成圖片的真假;辨別器越優(yōu)化,生成器生成的圖片就越不能通過辨別器的檢查。對抗的結果是雙方的能力都得到了提高,最后達到納什均衡:即生成器生成了很像真實圖片的圖片,連辨別器也無法分辨其中的真假。這就是SRGAN的基本原理。
2、生成器結構
生成器的輸入是128*128的3通道圖片,輸出是512*512的3通道圖片。SRGAN使用U型網(wǎng)絡實現(xiàn)這種圖片到圖片的轉(zhuǎn)化,結構如下:
請注意:
第一,整個U型網(wǎng)絡的左半部分全部由卷積操作組成,用來抽取輸入圖像的特征。右半部分全部由反卷積操作組成,用來根據(jù)特征構建清晰圖片。由于輸出圖片比輸入圖片大4倍,所以右邊比左邊高出一截。
第二,左右兩邊相同大小的圖片之間的連線稱為捷徑,表示左邊的圖片與右邊的圖片進行加法操作,結果保留在右邊。這是借用了殘差神經(jīng)網(wǎng)絡(ResNet)的做法。不過ResNet中的捷徑跨越相同數(shù)量的操作,而這里的捷徑跨越不同數(shù)量的操作,并且越上方的捷徑離輸入和輸出越近,快速傳播梯度的效果越好。
第三,左邊最后的卷積和最后的反卷積操作都不含激活函數(shù),并且整個網(wǎng)絡中不使用Dropout,這樣做的原因超出了本文的討論范疇,這里不敘述。
3、辨別器結構
辨別器有兩個輸入,a表示要判斷真假的圖片,b是輔助辨別器判斷的模糊圖片。兩者的分辨率分別是512*512和128*128。對于參數(shù)a,我們采用卷積操作不斷提純其特征,最后全連接到一個神經(jīng)元,最后經(jīng)過sigmoid激活后得到一個概率。這條路徑我們稱為主路徑。參數(shù)b,我們通過resize改變其大小,然后從側(cè)面切入到主路徑中去,從而影響特征的提取。下圖顯示了辨別器結構:
請注意,全連接之后使用sigmoid激活函數(shù),這樣可以獲得概率值。
SRGAN訓練
SRGAN的訓練分三步完成。第一步,訓練辨別器識別真樣本。這一步圖示如下:
這一步的目的是用每一對模糊和清晰圖片訓練辨別器,使得辨別器的輸出盡可能趨近于1。注意:清晰圖片對應于參數(shù)a,模糊圖片對應于參數(shù)b,辨別器的期望輸出是1。
假設我們用函數(shù) disc(a,b) 表示辨別器的輸出(表示a為真實樣本的概率),則這一步的損失可以用交叉熵表示為:
其中a和b分別表示真實的清晰圖片和對應的模糊圖片。
第二步,訓練辨別器識別假樣本。這一步圖示如下:
請注意:生成器在這一步中是固定不變的,只有辨別器才被優(yōu)化。這是因為這一步只是為了訓練辨別器識別假樣本,也就是說辨別器的期望輸出是0,所以就不能改動生成器。否則就會導致生成器試圖生成讓辨別器輸出為0的圖片,這不是生成器所期望的。生成器應該期望生成能讓辨別器以為是真(即辨別器輸出為1)的圖片。
很多算法工程師不清楚在這一步訓練中如何達到僅訓練一個模塊(比如說辨別器),而固定其他模塊(比如說生成器)的目的。
在Tensorflow中,一般地,我們可以調(diào)用函數(shù):
來實現(xiàn)梯度的反向傳播和對模型參數(shù)的優(yōu)化。此時我們只需指定第二個參數(shù)varlist等于辨別器中所有可訓練參數(shù)的列表(list)即可。其他未被指定的參數(shù)(比如生成器中的參數(shù))就不會被優(yōu)化,也就是說,被固定了。
假設我們用函數(shù)gen()表示生成的輸出,則這一步辨別器的輸出是:
由于這一步辨別器的期望輸出是0,所以這一步的損失可以用交叉熵表示為:
第三步,訓練辨別器識別假樣本。這一步圖示如下:
請注意,在這一步訓練中辨別器被固定住了,保持不變,被訓練優(yōu)化的是生成器。因為這一步的目的是要讓生成器生成辨別器以為是真實圖片的圖片,所以辨別器的期望輸出是1。此時我們必須固定住辨別器,否則辨別器會變成這個樣子:不管生成器輸出什么樣的圖片,辨別器都盡可能輸出1。顯然,這不是我們所期望的。
這一步訓練的結構跟第二步相同,不同的是固定的是什么,訓練的是什么,以及辨別器的期望輸出不同。
由于這一步辨別器的期望輸出是1,所以這一步的損失可以用交叉熵表示為:
我們可以發(fā)現(xiàn),第二步和第三步訓練的輸入數(shù)據(jù)都是b,網(wǎng)絡的輸出都是disc(gen(b),b), 但是期望輸出一個是0,另一個是1。對抗由此產(chǎn)生,最終的結果將達到納什均衡。理想情況下,disc(gen(b),b) 的結果既不是0也不是1,而是接近0.5。
結束語
我們有了三個訓練步驟,有了三個損失函數(shù),并且知道每一步訓練什么、固定什么,則依次循環(huán)執(zhí)行這三步訓練就能達到實現(xiàn)超分模型的目的。
本文是對GAN和SRGAN的一個簡單說明,是給初學者理解SRGAN模型看的,沒有涉及到GAN更高深的知識(比如WGAN和推土機距離等)。如有錯漏之處希望給以批評指正。
請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
-
10月31日立即下載>> 【限時免費下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報名>>> 【在線會議】多物理場仿真助跑新能源汽車
-
11月28日立即報名>>> 2024工程師系列—工業(yè)電子技術在線會議
-
12月19日立即報名>> 【線下會議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會
-
即日-12.26火熱報名中>> OFweek2024中國智造CIO在線峰會
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍皮書》
推薦專題
- 高級軟件工程師 廣東省/深圳市
- 自動化高級工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結構工程師 廣東省/深圳市