1. Pix2pix的簡(jiǎn)介:
? ? ? ? 圖像處理中的很多問(wèn)題都是將一張輸入的圖片轉(zhuǎn)變成一張對(duì)應(yīng)的輸出圖像浓体,比如將一張灰度圖轉(zhuǎn)換為一張彩色圖,將一張素描圖轉(zhuǎn)換為一張實(shí)物圖胞皱, 這類(lèi)問(wèn)題的本質(zhì)上是像素到像素的映射俐巴。2017年的CVPR上發(fā)表了一篇文章提出了一種基于GAN的Pix2pix網(wǎng)絡(luò)來(lái)解決這類(lèi)問(wèn)題压汪,pix2pix可以實(shí)現(xiàn)兩個(gè)領(lǐng)域中匹配圖像直接的轉(zhuǎn)換撩荣,而且所得的結(jié)果比較清晰铣揉。
2. Pix2pix的網(wǎng)絡(luò)結(jié)構(gòu):
? ? ? ? 該結(jié)構(gòu)中生成器G的輸入為Img_A,大小為(batch_size, A_channel, cols, rows)餐曹, 輸出為Img_B,大小為(batch_size, B_channel, cols, rows)敌厘。判別器D的輸入為Img_A和Img_B的圖像對(duì)台猴,需要將兩個(gè)圖像在channel的維度上進(jìn)行拼接,因此判別器輸入數(shù)據(jù)的尺寸為(batch_size, A_channel + B_channel, cols, rows)俱两,判別器的輸出為(batch_size, 1, s1, s2)饱狂。
3. Pix2pix的損失函數(shù)
pix2pix使用的是cGAN結(jié)構(gòu),除了cGAN的基本損失函數(shù)宪彩,生成器還增加了一個(gè)像素?fù)p失休讳。
(1)生成器的損失函數(shù):生成器的損失函數(shù)由對(duì)抗損失和像素?fù)p失構(gòu)成。
對(duì)抗損失:
像素?fù)p失:
生成器總的損失為:?
fake_B = generator(real_A)
pred_fake = discriminator(fake_B, real_A)
loss_GAN = torch.nn.MSELoss(pred_fake, valid)? ? ? ? # 對(duì)抗損失
loss_pixel = torch.nn.L1Loss(fake_B, real_B)? ? ? ? # 像素?fù)p失
loos_G = loss_GAN + lambda * loss_pixel? ? ? ? ? # 生成器的總損失
(2)判別器的損失函數(shù): pix2pix中判別器的損失與cGAN相同尿孔。
判別器總的損失為:?
pred_real = discriminator(real_A, real_B)
loss_real = torch.nn.MSELoss(pred_loss, valid)? ? ? ?#? 真實(shí)圖像對(duì)的損失
pred_fake = discriminator(fake_B.detach(), real_A)
loss_fake = torch.nn.MSELoss(pred_fake, fake)? ? ? ? #? 生成圖像對(duì)的損失
loss_D = (loss_real + loss_fake) / 2? ? ? ? ? ? ? # 判別器的總損失