njulj / RFDN

Residual Feature Distillation Network for Lightweight Image Super-Resolution
MIT License
354 stars 43 forks source link

代码中的学习率一个是0.5,一个是1.0? #6

Closed Lininggggggg closed 3 years ago

Lininggggggg commented 3 years ago

您好,想请问下代码中的学习率是不是忘记改了?(不是0.25和0.5的问题)

https://github.com/njulj/RFDN/blob/a7d8fcb5a4d8679a1fcca6a73063b5beb7eb3851/block.py#L136 image

然后另一个问题是, 如果您们论文中列出的数据,如表格3,所使用的模型记为A,代码模型B,以及比赛模型C: 那么模型大小是不是A<B<C? A没用ESA,B用了ESA但没全局连接,C用了ESA以及全局连接?

麻烦解答下,感谢!

scutlrr commented 3 years ago

代码模型就是比赛模型吧,作者在另一个issue说了比赛的时候觉得模块内不用identity(residual) connection效果更好一点。表格3用的模型是比AIM比赛更大的,因为模块是6(参数550K)vs 4(参数433K)...按论文设置感觉这模型得训练四五天....

Lininggggggg commented 3 years ago

那请问第一个问题呢?

scutlrr commented 3 years ago

那请问第一个问题呢?

和IMDN的结构对比一下可以发现IMDN原来的输入通道是64,经过卷积(64->64)后split为16和48。而后48再经过卷积(48->64)继续split为16和48,在RFDN中省略了split的过程,自然就变成用48直接卷积成16和48的输出了。唯一的不同在于最开始的输入不是64(IMDN)而是48了。

Lininggggggg commented 3 years ago

那请问第一个问题呢?

和IMDN的结构对比一下可以发现IMDN原来的输入通道是64,经过卷积(64->64)后split为16和48。而后48再经过卷积(48->64)继续split为16和48,在RFDN中省略了split的过程,自然就变成用48直接卷积成16和48的输出了。唯一的不同在于最开始的输入不是64(IMDN)而是48了。

你好,很感谢你之前的回答,但我按照你说的把输入通道设置为48,模块数设置为6,但出来的是582k,不是550k呀?? 而设置为(50,5),是530k: (50,4)是433k, (50,6)是627k,都找不到论文550k啊

Lininggggggg commented 3 years ago

好的,谢谢,我知道了

Lininggggggg commented 3 years ago

代码模型就是比赛模型吧,作者在另一个issue说了比赛的时候觉得模块内不用identity(residual) connection效果更好一点。表格3用的模型是比AIM比赛更大的,因为模块是6(参数550K)vs 4(参数433K)...按论文设置感觉这模型得训练四五天....

你好,请问论文里的设置,是不是要学习率要对折5x10^-4 / 10^-8 =5x10^4次? 这样的话假设btach size为64,一个大的epoch包含1000miniepochs,那2x10^5次更新一次学习率,是不是就要(5x10^4 x 2x10^5)/ (64/1000) = 156250个epoch, 约15.6万次???感觉其他的模型训练最多也就1000个epoch啊?(是我搞错了吗?麻烦解答下,比如batch size实际是?感谢啊!) image

scutlrr commented 3 years ago

代码模型就是比赛模型吧,作者在另一个issue说了比赛的时候觉得模块内不用identity(residual) connection效果更好一点。表格3用的模型是比AIM比赛更大的,因为模块是6(参数550K)vs 4(参数433K)...按论文设置感觉这模型得训练四五天....

你好,请问论文里的设置,是不是要学习率要对折5x10^-4 / 10^-8 =5x10^4次? 这样的话假设btach size为64,一个大的epoch包含1000miniepochs,那2x10^5次更新一次学习率,是不是就要(5x10^4 x 2x10^5)/ (64/1000) = 156250个epoch, 约15.6万次???感觉其他的模型训练最多也就1000个epoch啊?(是我搞错了吗?麻烦解答下,比如batch size实际是?感谢啊!) image

em...你看一下data加载的函数就会发现detasets的_len_被修改了(有一个repeat参数),div2k数据集的图片数量是800,一个batch的大小是64,一个epoch实际加载数据的次数是:1000/(800/64)=80次 200epoch就是:200000次迭代(minibatch) 实际训练的次数确实是1000epoch没错,并且200epoch学习率才减半一次。

Lininggggggg commented 3 years ago

好的,感谢大佬哈

Lininggggggg commented 3 years ago

代码模型就是比赛模型吧,作者在另一个issue说了比赛的时候觉得模块内不用identity(residual) connection效果更好一点。表格3用的模型是比AIM比赛更大的,因为模块是6(参数550K)vs 4(参数433K)...按论文设置感觉这模型得训练四五天....

你好,请问论文里的设置,是不是要学习率要对折5x10^-4 / 10^-8 =5x10^4次? 这样的话假设btach size为64,一个大的epoch包含1000miniepochs,那2x10^5次更新一次学习率,是不是就要(5x10^4 x 2x10^5)/ (64/1000) = 156250个epoch, 约15.6万次???感觉其他的模型训练最多也就1000个epoch啊?(是我搞错了吗?麻烦解答下,比如batch size实际是?感谢啊!) image

em...你看一下data加载的函数就会发现detasets的_len_被修改了(有一个repeat参数),div2k数据集的图片数量是800,一个batch的大小是64,一个epoch实际加载数据的次数是:1000/(800/64)=80次 200epoch就是:200000次迭代(minibatch) 实际训练的次数确实是1000epoch没错,并且200epoch学习率才减半一次。

emm,那请问下大佬您复现了这篇论文了吗?能达到多少的指标?比如set5的x4倍数的db值是?

Lininggggggg commented 3 years ago

因为我复现了下,但只有32.13db值,没有达到论文的指标

scutlrr commented 3 years ago

因为我复现了下,但只有32.13db值,没有达到论文的指标

我只重新训练过比赛的那个模型 和给的预训练模型得出的指标相差无几 稍微低了一点 还有就是训练了自己修改过结构的模型 在set5 x4上接近38db。别看模型不大。。训练得好几天

scutlrr commented 3 years ago

https://github.com/njulj/RFDN/issues/5#issuecomment-710090699 参考这个issue 调整一下是和论文得参数量一致的。

Lininggggggg commented 3 years ago

好的,谢谢哈,但是我这几天重新加大参数训练了下还是达不到,仍然是32.132dB, 不管怎样,都谢谢了哈!

Doreenqiuyue commented 3 years ago

大佬们,有对Set14进行过测试吗?Set14里面有几张图片不能进行PSNR/SSIM测试。 比如comic.png,HR大小是250×361,SR大小是250×360,大小不匹配无法进行测试,需要先对comic的HR图片进行裁剪吗?? 比如bridge是单通道图片,如何进行测试??? 谢谢!!

raychl94 commented 1 year ago

您好,我把该网络放在EDSR中训练,在DIV2K 验证集上 总是在35-36dB之间就饱和了。 我放在另一个框架A2N下训练就成了36-37之间饱和了 一般文章里提到的学习率,bachsize、patchsize,都有修改,我不清楚是不是在EDSR 中option文件还有其他参数没有修改而影响了结果。 希望得到您的回答,感谢