【发布时间】:2019-05-26 04:26:01
【问题描述】:
我正在试用this repo 的这个 SSIM loss 工具来进行图像恢复。
为了参考作者GitHub上的原始示例代码,我试过了:
model.train()
for epo in range(epoch):
for i, data in enumerate(trainloader, 0):
inputs = data
inputs = Variable(inputs)
optimizer.zero_grad()
inputs = inputs.view(bs, 1, 128, 128)
top = model.upward(inputs)
outputs = model.downward(top, shortcut = True)
outputs = outputs.view(bs, 1, 128, 128)
if i % 20 == 0:
out = outputs[0].view(128, 128).detach().numpy() * 255
cv2.imwrite("/home/tk/Documents/recover/SSIM/" + str(epo) + "_" + str(i) + "_re.png", out)
loss = - criterion(inputs, outputs)
ssim_value = - loss.data.item()
print (ssim_value)
loss.backward()
optimizer.step()
但是,结果并没有像我预期的那样出来。在前 10 个 epoch 之后,打印的结果图像都是黑色的。
loss = - criterion(inputs, outputs)是作者提出的,但是对于经典的Pytorch训练代码,这将是loss = criterion(y_pred, target),因此这里应该是loss = criterion(inputs, outputs)。
不过,我试过loss = criterion(inputs, outputs),结果还是一样。
谁能分享一些关于如何正确利用 SSIM 损失的想法?谢谢。
【问题讨论】:
-
你的
criterion是什么?是可微分的吗? -
@Shai 抱歉回复晚了。标准是我帖子中的 pytorch_ssim.SSIM() 。它是可区分的。
标签: python deep-learning pytorch image-segmentation ssim