ClassSR
ClassSR copied to clipboard
学习率问题
作者您好,这是一篇非常不错的文章。我有一个问题想问一下,训练的第三阶段(联合训练阶段)的学习率和前两阶段保持一致吗,都是1e-3吗?
感谢关注~应该是2e-4,具体参考对应yml文件里,默认的就是使用的
@Xiangtaokong 感谢作者大大的回复,还有一个问题请教一下,在联合训练阶段(最后一阶段)也全部使用了l1 loss,class loss和Avg loss吗?作者您在做DnCNN降噪任务的时候三个loss的参数设置是多少呢?麻烦作者帮忙解答一下谢谢啦。
我把class loss和avg loss用于降噪任务时,发现psnr值在达到某一个值之后不在增加了。这个现象时怎么回事呢?麻烦作者大大帮忙解答一下。
作者大大能分享一下在DnCNN的代码吗?如果可以的话,麻烦作者大大发我邮箱:[email protected]。再次感谢你的帮助。
学习率用的一样的,可以根据自己训练的情况调整三个loss的权重,谁高了可以加大一些权重。PSNR一直保持不变可能是全去了最复杂支路,可以检查一下,如果这样的话要加大avgloss权重。
最近比较忙,我可以发一下refine前的代码,你需要稍微改改再用~
感谢作者大大的解答,谢谢。
再次感谢作者大大的回复!
在codes/models/ClassSR_model.py
中的 def test(self):
lr_list, num_h, num_w, h, w = self.crop_cpu(self.var_L, self.patch_size, self.step)
gt_list=self.crop_cpu(self.real_H,self.patch_size*4,self.step*4)[0]
self.var_L
用的是self.patch_size, self.step
,而self.real_H
用的是self.patch_size*4,self.step*4
,这样裁剪出来的数据尺度不一样,后者对应的H, W是前者的4倍。这部分代码是不是有点问题呢?
还要一个问题,How to train ClassSR
阶段,
cd codes
python train_ClassSR.py -opt options/train/train_ClassSR_FSRCNN.yml
python train_ClassSR.py -opt options/train/train_ClassSR_CARN.yml
python train_ClassSR.py -opt options/train/train_ClassSR_SRResNet.yml
python train_ClassSR.py -opt options/train/train_ClassSR_RCAN.yml
除去预训练参数,这个阶段是不是就是训练的最后一个阶段Jointly train阶段,不包含第二阶段fixing SR-Module,training Cls-Module.
1.没错,超分之后变成四倍大
2.是的。这种操作也可以,就是不预训练分类模块,直接联合训练。
你好,请问你把class loss 和 average loss应用到降噪上最后work了吗?我发现数据集如果不划分(即初始branchs都在一个数据集上train),最后classifier不会收敛= =
你好,请问你把class loss 和 average loss应用到降噪上最后work了吗?我发现数据集如果不划分(即初始branchs都在一个数据集上train),最后classifier不会收敛= =
work的,文章接近最后有放DNCNN的结果,但我觉得如果用到去噪上还可以做一下patch大小之类的适配(因为超分会x4,去噪相当于只x1) 对,这样不会收敛的。初始branch放在一个数据集上train会导致他们没有各自“擅长”的部分,这个知识也就没法在联合训练里传递给classifier了。
你好,请问你把class loss 和 average loss应用到降噪上最后work了吗?我发现数据集如果不划分(即初始branchs都在一个数据集上train),最后classifier不会收敛= =
work的,文章接近最后有放DNCNN的结果,但我觉得如果用到去噪上还可以做一下patch大小之类的适配(因为超分会x4,去噪相当于只x1) 对,这样不会收敛的。初始branch放在一个数据集上train会导致他们没有各自“擅长”的部分,这个知识也就没法在联合训练里传递给classifier了。
明白了!非常感谢,这个classfier的训练看起来容易操作起来不容易呀,我尝试改了改都会崩= =