本文做了兩個小實驗,分別利用兩個經典的生成模型(DCGAN與VAE)來合成腦影像;使用pytorch,全部代碼見github;實驗設備,NVIDIA 1080Ti;
訓練數據
腦影像使用Brats18 公開數據集的T2模態;提取axial面的240X240大小2d 切片,resize成128X128大小;保存爲.npy文件。
數據集示例
VAE
網絡結構
損失函數
第一項重建誤差,第二項KL loss;
重參數技巧
直接根據編碼器生成的均值與方差進行採樣,該採樣過程是不可導的,如左圖所示;用右圖的重參數技巧得到採樣點的過程可導
合成結果
隨機輸入:
插值結果:
訓練時遇到一個問題,VAE輸出的圖像全相同,且KL loss很快收斂到0。發現問題在於重建loss與KL loss的權重分配上,nn.BCELoss默認是計算每個像素上的平均誤差;而KL是計算一幅圖像上的誤差;故而對重建loss 乘上了圖像的像素數,問題得到了解決
DCGAN
網絡結構
損失函數
合成結果
隨機輸入:
插值結果: