基于BRATs 2020的DCGAN生成脑MRI图像出现波纹噪声问题排查
BRATs 2020数据集DCGAN生成脑MRI图像的问题排查
我正在基于BRATs 2020数据集开发DCGAN以生成脑MRI数据。为验证设计合理性,我使用单张图像与固定噪声开展训练,排查是否存在固有缺陷。GAN虽能捕捉整体图案,但生成图像存在噪声失真,清晰度不及原图,且从训练初期便出现类似“波纹”或十字形的图案。
以下为生成器代码,判别器为其镜像结构(采用普通卷积而非转置卷积):
class SimpleGenerator(nn.Module): def __init__(self,out_channels =1, noise_dimension = 100 , channels= 64 ): super(SimpleGenerator, self).__init__() self.noise_shape = (noise_dimension,1,1,1) self.out_channels = out_channels self.channels = channels self.gen = nn.Sequential( nn.ConvTranspose3d(self.noise_shape[0], self.channels * 32, 4, 1, (1, 0, 1)), nn.ReLU(), self._block( self.channels * 32, self.channels * 16, 5, 1, 0), self._block( self.channels * 16, self.channels * 8, 5, 1, 0), self._block( self.channels * 8, self.channels * 4, 4, 2, 1), self._block( self.channels * 4, self.channels * 2, 4, 2, 1), self._block( self.channels * 2, self.channels, 4, 2, 1), nn.ConvTranspose3d( self.channels, self.out_channels, 4, 2, 1), nn.Sigmoid() ) def _block(self,in_channels,out_channels,kernel_size,stride,padding): return nn.Sequential( nn.ConvTranspose3d(in_channels,out_channels,3,1,1,bias=False), nn.InstanceNorm3d(out_channels), nn.ReLU(), nn.ConvTranspose3d(out_channels,out_channels,kernel_size,stride,padding,bias=False), nn.InstanceNorm3d(out_channels), nn.ReLU() ) def forward(self, x,separate=False): x = self.gen(x) return x
我尝试过_block包含一层或两层卷积的版本,均出现此类噪声图案。
备注
- 因图像尺寸为160×192×160过大,GPU无法支持batch_size>1,故使用InstanceNorm而非BatchNorm;
- 卷积核大小、步长和填充的特殊数值是为了得到非2的幂次的目标尺寸,这是否为问题根源?
内容的提问来源于stack exchange,提问作者Iliasp
相关产品推荐
相关产品推荐

