RESCAN 踩坑

Recurrent Squeeze-and-Excitation Context Aggregation Net for Single Image Deraining

用 Rain 800 中的 700 张当训练集,100张当验证集,用 rain100H 中取出来的 100 张当测试集。

release 的 data 里面 test_syn 其实是 val,training 其实是 train,testset 就自己去从 rain100H 里找 100 张吧。(我也不知道,我随便说的

  • 关于 DataLoader 就挂掉的问题:
1
2
3
4
5
try:
batch_t = next(dt_train)
except StopIteration:
dt_train = sess.get_dataloader('train')
batch_t = next(dt_train)
  • 关于 conda 怎么也装不上 pytorch 0.4

上午怎么搞都只能装上 pytorch 0.12,可能是因为 cudnn 装不上更高版本吧……

然而人家 pip 直接就上了 0.4

  • 测试用 code 运行不起来

因为 dataloader 和 train 的时候的不一样……

手写一下就吼了

对于这种 combine 到一起的图,掌握了 np.hsplit(a, 切分个数) 的新技能= =

以及还出现了多次把 ground truth 传进去测试的情况…… 不过发现一个很有意思的事情,ground truth 传进去之后输出也会丢失细节。

以及 B, O = np.hsplit(img_pair, 2) 被我写成了 O, B = np.hsplit(img_pair, 2)

测出来比它文章里高很多啊QAQ ,原来是这不同的代码测起来还可以结果不一样的。

  • test 的时候 batch_size 改成 1

刚开始直接用的训练的时候的 64, 发现不能对齐,就把数据都给转成一样大小的了

  • np.rot90 到底是不是无损的

  • np.narrow 是对闭区间操作的 [l, l + len]

  • 莫名其妙测出来的 ssim 0.98 最后还是因为搞错了数据集

后来又测出来一次 0.98,仔细检查了很久过程上没有出问题…… 最后发现果然= =,大家都这么厉害了……

  • cv2.imwrite() 和 img.imsave() 的输出效果好像不太一样,混用导致了色偏
1
// import matplotlib.image as img

我一起写到这里吧……

eigen13 的 code 测出来会有一圈边框…… 导致直接测的话 psnr 很低 = =,删掉边框会正常一些。

测 Rain100L 上面 psnr 现在大家做到快 40 了,真的可怕= =

话说昨天跑 DetailNet 发现它是一个一个图读进来的 hmmm

然后发现 DetailNet 只能测 RGB 的图,单通道的 model 喂不进去…… 然而 RESCAN 就可以的啧

DetailNet 训出来 Loss 很低,但是也有之前跑 SRGAN 的时候遇到的纯蓝色色块之类的现象= =

很迷,不知道为啥


  • cv2.imwrite() 和 matplotlib 里面的img.imsave() 不能混用

  • test 的时候 batch_size 要改成 1,因为两个代码都是把结果 concat 起来,可能原paper的数据集图片都是一样大的

  • 不同的层要分开定义,否则实际上相当于 share weight 了

  • pytorch_total_params = sum(p.numel() for p in model.parameters()),这个会把model里定义的东西都算进去,求出来的不一定是实际上使用的 parameter 个数。