我正在使用Pytorch 0.4.0使用类似UNet的CNN架构进行图像分割。在最终分割结果中将前景标记为1,背景标记为0。我使用了预先训练的VGG功能提取器作为我的编码器,因此我需要多次对编码器输出进行上采样,但是结果显示出奇怪的晶格部分,如下所示:
我想知道产生黑色晶格的原因。它们看起来像是网格或方格图案,以及如何解决。此外,我还需要将所有反偶像层超参数调整为一个均匀或单独对其进行修改?>
环境:Ubuntu 16.04,Pytorch 0.4.0,GTX 1080Ti, 上采样的架构是三个deconv层,它们是一个接一个的。
我修改了deconv超参数后,(受noise in image segmentation result使用启发
因此避免输出填充并满足尺寸要求。但是在100个时期之后,我遇到了类似的问题。
self.conv1=Basic(1024,512,kernel_size=3,stride=1,padding=1)
self.conv2=Basic(512,512,kernel_size=3,stride=1,padding=1)
self.deconv1=Basic(512,256,kernel_size=4,stride=2,conv=False,padding=1)
self.deconv2=Basic(256,128,kernel_size=4,stride=2,conv=False,padding=1)
self.deconv3=Basic(128,64,kernel_size=4,stride=2,conv=False,padding=1)
#output 480*640 segmap
self.conv4=Basic(64,2,kernel_size=1,stride=1)
# self.avgpool=nn.AvgPool2d(kernel_size=2,stride=2)
def forward(self, input):
input=self.conv1(input)
input=self.conv2(input)
input=self.deconv1(input)
input=self.deconv2(input)
input=self.deconv3(input)
input=self.conv4(input)
# print(input.shape)
#a channel-wise probability map
raw=input
return raw`