靈感:最近也是在看關(guān)于GAN方面的代碼,也是看到了很多篇博客,都寫的挺好的,讓我醍醐灌頂,理解了GAN的原理以及代碼實(shí)現(xiàn)。所以寫一下來記載一下,最后有其他好文章的鏈接。
創(chuàng)新互聯(lián)建站科技有限公司專業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供四川綿陽服務(wù)器托管,高防物理服務(wù)器租用,成都IDC機(jī)房托管,成都主機(jī)托管等互聯(lián)網(wǎng)服務(wù)。靈感來源:pix2pixGAN理論以及代碼實(shí)現(xiàn)
目錄
1.什么是pix2pix GAN
2.pix2pixGAN生成器的設(shè)計(jì)
3.pix2pixGAN判別器的設(shè)計(jì)
4.損失函數(shù)
5.代碼實(shí)現(xiàn)?
6.參考文獻(xiàn)
1.什么是pix2pix GAN它實(shí)際上就是一個(gè)CGAN,條件GAN,不過是改變了一般GAN的辨別器的輸出。其他的都是輸出一個(gè)概率,而pix2pixGAN或者也可以是patchgan,它的最終輸出是一個(gè)矩陣,每一個(gè)塊代表一個(gè)patch的概率而已。關(guān)于patch這一塊的知識(shí)可以去其他地方補(bǔ)一下,文末也有入口。
圖片x作為此cGAN的條件,需要輸入到G和D中。G的輸入是x(x是需要轉(zhuǎn)換的圖片),輸出是生成的圖片G(x)。D則需要分辨出(x,G(x))和(x,y)
pix2pixGAN主要用于圖像之間的轉(zhuǎn)換,又稱圖像翻譯。
2.pix2pixGAN生成器的設(shè)計(jì)對(duì)于圖像翻譯任務(wù)來說,輸入和輸出之間會(huì)共享很多信息。比如輪廓信息是共享的。如何解決共享問題?需要我們從損失函數(shù)的設(shè)計(jì)當(dāng)中去思考。
如果使用普通的卷積神經(jīng)網(wǎng)絡(luò),那么會(huì)導(dǎo)致每一層都承載保存著所有的信息。這樣神經(jīng)網(wǎng)絡(luò)很容易出錯(cuò)(容易丟失一些信息)
所以,我們使用UNet模型作為生成器
D要輸入成對(duì)的圖像。這類似于cGAN,如果G(x)和x是對(duì)應(yīng)的,對(duì)于生成器來說希望判別為1;
如果G(x)和x不是對(duì)應(yīng)的,對(duì)于生成器來說希望判別器判別為0
pix2pixGAN中的D被論文中被實(shí)現(xiàn)為patch_D.所謂patch,是指無論生成的圖片有多大,將其切分為多個(gè)固定大小的patch輸入進(jìn)D去判斷。如上圖所示。
這樣設(shè)計(jì)的好處是:D的輸入變小,計(jì)算量小,訓(xùn)練速度快
4.損失函數(shù)D網(wǎng)絡(luò)損失函數(shù):輸入真實(shí)的成對(duì)圖像希望判定為1;輸入生成圖像與原圖希望判定為0
G網(wǎng)絡(luò)損失函數(shù):輸入生成圖像與原圖像希望判定為1
對(duì)于圖像翻譯任務(wù)而言,G的輸入和輸出之間其實(shí)共享了很多信息。因而為了保證輸入圖像和輸出圖像之間的相似度,還加入了L1loss,公式如下所示:
5.代碼實(shí)現(xiàn)?代碼實(shí)現(xiàn)的話有官方以及別人的實(shí)現(xiàn),但是我有點(diǎn)不懂。然后看到這個(gè)鏈接的代碼才懂。
全部代碼在這:pix2pixGAN理論以及代碼實(shí)現(xiàn)
我作為筆記記錄,寫一下我覺得關(guān)鍵的代碼理解。
for step,(annos,imgs) in enumerate(dataloader):
imgs = imgs.to(device) #imgs 輸入的圖像
annos = annos.to(device) #標(biāo)簽,真實(shí)的應(yīng)該生成的圖片
#定義判別器的損失計(jì)算以及優(yōu)化的過程
d_optimizer.zero_grad()
disc_real_output = dis(annos,imgs) #輸入真實(shí)成對(duì)圖片
d_real_loss = loss_fn(disc_real_output,torch.ones_like(disc_real_output,
device=device))
#上面是為了將我們輸入的真實(shí)圖像對(duì)都標(biāo)為1,希望他接近1,因?yàn)檎鎸?shí)嘛
d_real_loss.backward() #求梯度
gen_output = gen(annos) #通過輸入圖像生成圖片
disc_gen_output = dis(annos,gen_output.detach()) #將我們輸入的和生成的圖片輸入辨別器
d_fack_loss = loss_fn(disc_gen_output,torch.zeros_like(disc_gen_output,
device=device)) #辨別器希望生成的和我們輸入的圖像最終的判斷為0,也就是假的嘛
d_fack_loss.backward()
disc_loss = d_real_loss+d_fack_loss#判別器的損失計(jì)算,由兩個(gè)之和
d_optimizer.step() #梯度更新
#定義生成器的損失計(jì)算以及優(yōu)化的過程
g_optimizer.zero_grad()
disc_gen_out = dis(annos,gen_output) #辨別器辨別輸入圖像和生成圖像的匹配度
gen_loss_crossentropyloss = loss_fn(disc_gen_out,
torch.ones_like(disc_gen_out,
device=device)) #生成器和辨別器相反,他希望生成的圖像和輸入的圖像匹配為真實(shí),也就是造假嘛
gen_l1_loss = torch.mean(torch.abs(gen_output-imgs)) #L1損失
gen_loss = gen_loss_crossentropyloss +LAMBDA*gen_l1_loss
gen_loss.backward() #反向傳播
g_optimizer.step() #優(yōu)化
#累計(jì)每一個(gè)批次的loss
with torch.no_grad():
D_epoch_loss +=disc_loss.item()
G_epoch_loss +=gen_loss.item()
上面用到的loss_fn是BCE損失。因?yàn)槲覀兊谋鎰e器輸出值為概率嘛,0到1,所以算得上是二分類,可以使用BCE。
6.參考文獻(xiàn)GAN系列之 pix2pixGAN 網(wǎng)絡(luò)原理介紹以及論文解讀https://blog.csdn.net/m0_62128864/article/details/124026977
一文看懂PatchGAN_明月幾時(shí)有.的博客-博客_patchgan最近看到PatchGAN很是好奇原理是什么,發(fā)現(xiàn)網(wǎng)上很多介紹的并不清楚.故墻外墻內(nèi)來回幾次,大概是清楚了.PatchGAN其實(shí)指的是GAN的判別器,將判別器換成了全卷積網(wǎng)絡(luò).這么說并不嚴(yán)謹(jǐn),PatchGAN和普通GAN判別器是有區(qū)別的,普通的GAN判別器是將輸入映射成一個(gè)實(shí)數(shù),即輸入樣本為真樣本的概率.PatchGAN將輸入映射為NxN的patch(矩陣)X,XijX_{ij}Xij?的值代表...https://blog.csdn.net/weixin_35576881/article/details/88058040
pix2pix算法筆記_AI之路的博客-博客_pix2pix算法論文:Image-to-Image Translation with Conditional Adversarial Networks論文鏈接:https://arxiv.org/abs/1611.07004代碼鏈接:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix這篇論文發(fā)表在CVPR2017,簡(jiǎn)稱pix2pix,是將GAN應(yīng)用...https://blog.csdn.net/u014380165/article/details/98453672
Pix2Pix-基于GAN的圖像翻譯_張雨石的博客-博客_pix2pix算法語言翻譯是大家都知道的應(yīng)用。但圖像作為一種交流媒介,也有很多種表達(dá)方式,比如灰度圖、彩色圖、梯度圖甚至人的各種標(biāo)記等。在這些圖像之間的轉(zhuǎn)換稱之為圖像翻譯,是一個(gè)圖像生成任務(wù)。多年來,這些任務(wù)都需要用不同的模型去生成。在GAN出現(xiàn)之后,這些任務(wù)一下子都可以用同一種框架來解決。這個(gè)算法的名稱叫做Pix2Pix,基于對(duì)抗神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)。https://blog.csdn.net/stdcoutzyx/article/details/78820728
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
新聞標(biāo)題:【深度學(xué)習(xí)】pix2pixGAN理論及代碼實(shí)現(xiàn)與理解-創(chuàng)新互聯(lián)
地址分享:http://m.newbst.com/article18/dpgogp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、ChatGPT、自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化、網(wǎng)站策劃、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容