SRGAN-超分辨率圖像復(fù)原
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
本文轉(zhuǎn)自|機(jī)器學(xué)習(xí)算法工程師
github:
https://github.com/OUCMachineLearning/OUCML/blob/master/GAN/srgan_celebA/srgan.py
arxiv:
https://arxiv.org/abs/1609.04802
我的研究方向:GAN
大家好,我是中國海洋大學(xué)的陳揚(yáng)。在遙遠(yuǎn)的九月份,我開始做了keras的系列教程,現(xiàn)在我主要的研究方向轉(zhuǎn)到了生成對抗網(wǎng)絡(luò),生成對抗網(wǎng)絡(luò)的代碼實(shí)現(xiàn)和訓(xùn)練機(jī)制比分類模型都要復(fù)雜和難入門.之前一段時間時間一直在幫璇姐跑cvpr的實(shí)驗(yàn)代碼,做了蠻多的對比實(shí)驗(yàn),其中我就發(fā)現(xiàn)了,keras的代碼實(shí)現(xiàn)和可閱讀性很好,搭生成對抗網(wǎng)絡(luò)網(wǎng)絡(luò)GAN就好像搭樂高積木一樣有趣哦。不只是demo哦,我還會在接下來的一系列 keras教程中教你搭建Alexnet,Vggnet,Resnet,DCGAN,ACGAN,CGAN,SRGAN,等等實(shí)際的模型并且教你如何在GPU服務(wù)器上運(yùn)行。
上個星期發(fā)了一篇有關(guān)GAN入門的文章,同學(xué)們都覺得挺有趣的,上一次我寫了如何理解最基礎(chǔ)的GAN的原理,今天我給大家?guī)淼氖侨绾芜\(yùn)用強(qiáng)大的GAN做一些好玩的應(yīng)用.
超分辨率復(fù)原一直是計(jì)算機(jī)視覺領(lǐng)域一個十分熱門的研究方向,在商業(yè)上也有著很大的用武之地,隨著2014年goodflew那篇驚世駭俗的GAN發(fā)表出來,GAN伴隨著CNN一起,可謂是乘風(fēng)破浪,衍生出來琳瑯滿目的各種應(yīng)用.

簡單的來說,就給定一個低分辨率圖片作為噪聲z的輸入,通過生成器的變換把噪聲的概率分布空間盡可能的去擬合真實(shí)數(shù)據(jù)的分布空間.

在這里,我們把生成器看的目標(biāo)看成是要以次充好,判別器的目標(biāo)是要明辨真假.
我們可以的看到,在生成器的前6層網(wǎng)絡(luò)中,我們運(yùn)用了殘差塊,為什么要用殘差塊呢?
因?yàn)槲覀兛梢詮纳蠄D看出來,當(dāng)損失函數(shù)從判別器開始反向傳播會生成器的時候,實(shí)際上進(jìn)過來很多層,我們知道越深的網(wǎng)絡(luò)隱藏參數(shù)越多,在反向傳播的過程中也越容易梯度彌散.而且殘差連接的方法,就有效的保證了我們梯度信息能夠有效的傳遞而增強(qiáng)生成對抗網(wǎng)絡(luò)的魯棒性.(事實(shí)上沃瑟斯坦loss也可以增強(qiáng)GAN訓(xùn)練的魯棒性,以后會寫)
再來聊聊今天用的數(shù)據(jù)集,這是Celeb-A,里面有大量的帶標(biāo)注信息的明星人臉.在目前很多的GAN的應(yīng)用中,都是用CelebA作為基礎(chǔ)的數(shù)據(jù)集,這個數(shù)據(jù)集大概在1.2G左右,可以在kaggle上下載.

瀏覽數(shù)據(jù)集
[https://www.kaggle.com/jessicali9530/celeba-dataset]
A popular component of computer vision and deep learning revolves around identifying faces for various applications from logging into your phone with your face or searching through surveillance images for a particular suspect. This dataset is great for training and testing models for face detection, particularly for recognising facial attributes such as finding people with brown hair, are smiling, or wearing glasses. Images cover large pose variations, background clutter, diverse people, supported by a large quantity of images and rich annotations. This data was originally collected by researchers at MMLAB, The Chinese University of Hong Kong (specific reference in Acknowledgment section).
202,599 number of face images of various celebrities
10,177 unique identities, but names of identities are not given
40 binary attribute annotations per image
5 landmark locations
簡單點(diǎn)說,就是給你一張模糊的圖片,讓你復(fù)原一張高清的圖片.

這個時候,我們可以把LRimg看成是一個噪聲z的輸入,G生成的是一個FAKE-HRimg,我們讓D分辨fake-HRimg and original HRimg.
Our ultimate goal is to train a generating function G that estimates for a given LR input image its corresponding HR counterpart. To achieve this, we train a generator network as a feed-forward CNN GθG parametrized by θG. Here θG = {W1:L ; b1:L } denotes the weights and biases of a L-layer deep network and is obtained by optimizing a SR-specific
loss function lSR. For training images IHR , n = 1, . . . , N n
withcorrespondingILR,n=1,...,N,wesolve:

作者認(rèn)為這更接近人的主觀感受,因?yàn)槭褂胮ixel-wise的MSE使得圖像變得平滑,而如果先用VGG來抓取到高級特征(feature)表示,再對feature使用MSE,可以更好的抓取不變特征。




核心公式

這個公式我們要分成兩個部分來看,先看前半部分:

這個公式的意思是,先看加號前面
,我們希望D最大,所以
應(yīng)該最大,意味著我的判別器可以很好的識別出,真實(shí)的高分辨率圖像是"true",在看加號后面的
,要讓log盡可能的大,需要的是ΘD(ΘG(z))盡可能的小,意味著我們生成模型復(fù)原的圖片應(yīng)該盡可能的被判別模型視為"FALSE".

再看后半部分部分
我們應(yīng)該讓G盡可能的小,加號前面的式子并沒有G,所以無關(guān),在看加號后面的式子

,要讓ΘG盡可能地小,就要ΘD(ΘG(Z))盡可能的大,也就是說本來就一張低分辨率生成的圖片,判別器卻被迷惑了,以為是一張?jiān)嫉母叻直媛蕡D片.這就是所謂的以次充好.
、
###vgg用于提取特征
self.vgg.compile(loss='mse',
optimizer=optimizer,
metrics=['accuracy'])
###生成器
self.combined.compile(loss=['binary_crossentropy', 'mse'],
loss_weights=[1e-3, 1],
optimizer=optimizer)
###判別器
self.discriminator.compile(loss='mse',
optimizer=optimizer,
metrics=['accuracy'])訓(xùn)練判別器
d_loss_real = self.discriminator.train_on_batch(imgs_hr, valid)
d_loss_fake = self.discriminator.train_on_batch(fake_hr, fake)
d_loss = 0.5 * np.add(d_loss_real, d_loss_fake)訓(xùn)練生成器
image_features = self.vgg.predict(imgs_hr)
# Train the generators
g_loss = self.combined.train_on_batch([imgs_lr, imgs_hr], [valid, image_features])
5000 batchsize
、
嘻嘻嘻,大家要是喜歡這個系列的話就給我個小小的贊哦,等到我期末考考完試文件錄視頻來講如何從零開始搭建生成對抗網(wǎng)絡(luò),emmmm現(xiàn)在大二學(xué)業(yè)壓力確實(shí)大了,不過我們的創(chuàng)造會一如既往的用心做下去的,感謝你們的陪伴,也是我持續(xù)創(chuàng)造的動力源泉.

END
好消息,小白學(xué)視覺團(tuán)隊(duì)的知識星球開通啦,為了感謝大家的支持與厚愛,團(tuán)隊(duì)決定將價值149元的知識星球現(xiàn)時免費(fèi)加入。各位小伙伴們要抓住機(jī)會哦!

交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計(jì)算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

