pytorch 图像分割的交并比_级联多对抗的LAPGAN(二)pytorch实现
上文“級聯別多對抗的LAPGAN(一)原理分析”中對LAPGAN【1】的理論進行了介紹,本文將使用pytorch進行代碼實現。由于其采用拉普拉斯金字塔與高斯金字塔結合并需要訓練多個GAN網絡的方式比較復雜,同時生成圖像的質量也遠不及當今的GAN網絡,所以本文僅僅編寫了其網絡結構對應的代碼,沒有進行訓練或者測試,其網絡整體結構如下:
按照上圖所示,需要實現的網絡包含4個生成器G0、G1、G2和G3,以及4個判別器D0、D1、D2和D3,下面對其實現進行分析。
一、生成器實現
生成器G3的輸入僅有噪聲數據,而其余生成器輸入既有噪聲又有圖像,所以G3和其余生成器的實現是不同的,下面分別進行討論:
1.1 頂層生成器G3
上圖并沒有給出最頂層輸入為噪聲數據的生成器(G3)結構圖,按照網上的復現版本【2】,輸入為噪聲數據的網絡可以是全連接網絡,輸入為100維的噪聲,輸出為8x8x3的圖像:
lass其中初始化參數z_dim表示噪聲維度,out_width表示輸出圖像的長寬。
1.2 生成器G0、G1、G2
在LAPGAN論文的補充材料中提供的結構圖如下:
從上圖中左邊可以看出生成器G的輸入是4通道數據,由3個顏色通道(圖像)和1個噪聲通道組成。生成器G的輸出為拉普拉斯金字塔中的一層,表示高分辨率圖像和低分辨率圖像之間的差異。
除了頂層生成器G3由于輸入為噪聲數據所以采用全連接以外,其余的生成器均為全卷積網絡,采用卷積+激活的方式構建中間各層。激活函數選擇ReLU,中間層的通道數為128。其中G2輸出圖像尺寸為16x16,G1輸出圖像尺寸為32x32,G3輸出圖像尺寸為64x64。它們結構相同,以G2為例代碼如下:
class二、判別器實現
判別器D結構如下圖所示:
從上圖中可以看出判別器D的輸入為拉普拉斯金字塔中的某層或者生成的差異圖,與高斯金字塔某層的上采樣圖片進行拼接,D的輸出為二分類輸出。判別器的情況和生成器類似,這里僅以判別器D2為例。D2的輸入是拉普拉斯金字塔存儲的差異圖和上采樣圖的和,即D2輸入3個通道;D2的中間層通道數是128,中間各層的構建方式為Conv+ReLU,最后使用全連接層+sigmoid做分類。D2代碼實現如下:
class上述代碼中in_dim表示輸入通道數,in_width表示輸入圖片的長和寬。
三、總結
LAPGAN作為早期的生成對抗網絡模型,它的效果雖然沒有今天各種GAN網絡那么優秀,但是它的級聯思想絕對是具有非常重要的意義的,后續會分析一些類似的級聯網絡或者是多階段生成網絡。
參考:
【1】Denton E L, Chintala S, Fergus R. Deep generative image models using a laplacian pyramid of adversarial networks[C]//Advances in neural information processing systems. 2015: 1486-1494.
【2】https://github.com/AaronYALai/Generative_Adversarial_Networks_PyTorch
總結
以上是生活随笔為你收集整理的pytorch 图像分割的交并比_级联多对抗的LAPGAN(二)pytorch实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++之静态成员变量和静态成员函数
- 下一篇: Apple System: Error: