Kev*_*vin 5 python image-segmentation deconvolution pytorch semantic-segmentation
我正在使用 Pytorch 0.4.0 使用类似 UNet 的 CNN 架构进行图像分割。它在最终分割结果中将前景标记为 1,将背景标记为 0。我使用预训练的 VGG 的特征提取器作为我的编码器,所以我需要对编码器输出进行多次上采样。但结果显示了一个奇怪的格子部分,如下所示:
我想知道产生黑色格子的原因。它们看起来像一个网格或方形部分。如何解决它。此外,我需要将所有deconv层超参数调整为一个统一的或分别修改它们?
环境:Ubuntu 16.04、Pytorch 0.4.0、GTX 1080Ti,上采样的架构是三层deconv层,层层递进。
在我修改了 deconv 超参数之后,(受图像分割结果中的噪声启发使用
从而避免输出填充并满足大小。但是在 100 epoch 之后我遇到了类似的问题。
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`
Run Code Online (Sandbox Code Playgroud)