去雨去雪去雾算法程序中断问题解决方法

中断问题

在进行去雨去雾去雪算法的实验过程中,时常会由于各种意外情况导致实验中断,而在该源码中,并没有对应的中断应对策略,这就导致该源码的健壮性太差,而且博主在实验时也确实遇到多次这种情况,这让博主不胜其烦。
针对这个问题,其实也很好解决,只要在中断后让模型加载最后一次的参数模型即可,其实这种做法是很常见的。

代码修改

代码修改很简单,首先是指定一个参数,若发生中断,则将最后一次保存的模型地址赋值给该参数

parser.add_argument('--resumes', default="outputs/latest_model")

随后让模型加载该参数即可:

model = net_func().cuda()
if args.resumes:
		checkpoint = torch.load(args.resumes)
		model.load_state_dict(checkpoint['state_dict'], strict=False)

这样就OK了,我们检验一下效果。

实验对比

不使用先前的模型

我们在第45个epoch时发生了中断,此时如果我们直接修改开始的epoch,然后重新运行的话,得到的结果如下:

首先是训练时的损失,在先前的训练中,我们的损失已经下降到了0.3左右,而此时却重新变为了0.37,这与我们重新从1开始运行时的损失接近。

去雨去雪去雾算法程序中断问题解决方法_第1张图片

随后是结果评估,可以看到,先前第45个epoch的结果中,PSNR已经达到了24.16,而SSIM为0.83,而此时的中断后不使用先前模型的结果PSNR为18.93,SSIM为0.51,这与最开始的值较为接近。

去雨去雪去雾算法程序中断问题解决方法_第2张图片

使用先前的模型

而当我们使用了最后一次模型的参数后,此时的结果如下,此时的损失已经变为了0.269。

去雨去雪去雾算法程序中断问题解决方法_第3张图片

此时的评估结果,可以看到较先前有了巨大提升。

去雨去雪去雾算法程序中断问题解决方法_第4张图片

可以看到此时的结果,其PSNR为24.25,SSIM为0.84,可以看到结果在原基础上有所提升。

去雨去雪去雾算法程序中断问题解决方法_第5张图片

由此,关于该模型的中断问题就解决了。OK

你可能感兴趣的:(图像去噪,人工智能)