记录超分辨率重建(DRN)复现工作

今早终于把DRN跑起来了,因为大大小小改了很多bug,并且在数据集上用了一些时间所以把大致流程在这记录一下,方便以后看。

代码来源:https://github.com/VitaminyW/Super_Solution

http://t.csdn.cn/2flFmicon-default.png?t=N7T8http://t.csdn.cn/2flFm这篇博客删除了,看下面这个。

http://t.csdnimg.cn/Num9H

基于文章

《Closed-loop matters: Dual regression networks for single image super-resolution》

文章源代码:

GitHub - guoyongcs/DRN: Closed-loop Matters: Dual Regression Networks for Single Image Super-Resolution大致了解到博主是基于源码作出了一系列改进,不过我既没享受到unpair的优势,又在数据集的制作上出了一点麻烦。

1、配置环境

 这是论文源码处做出的要求,很宽松的要求

 甚至torch2.0.1和对应的cuda11.7都可以运行。配环境时并未碰到太多麻烦。

2、数据集设置

大佬博客中提到可以用unpair的数据集及逆行训练,并给出数据集构建的框架但再未更多介绍,但我只有一些高清图像。所以还是选择采用了源码给的构建数据集的方式

副本不用管,重要的是下面三个 ,这三个文件夹的内容构成是类似的,如下:

HR放高清(我的是1024),LR_bicubic 放三个文件夹

    其中X2(512*512) X4(256*256)X8(128*128)我认为这三个文件夹的大小是有关系的,但DRN源码给出的数据集示例中,不同文件夹图像size的关系却没能彻底弄懂,但是这样设置确实跑起来了。

     同时X2、4、8中图片名称要与HR一一对应,并不是一样,如果HR中有1.png 则X2中要有1x2.png,X4中则要有1x4.png以此类推。

3,option.py 调参

首先最重要的是修改数据集位置

根据我的数据集命名这里不难改。其他的其实完全没必要在py文件里改,完全可以通过命令行

pycharm的话在run里找edit configuration

 先在script path里找到我们工程的main函数,然后在parameters 对batchsize啥的进行设置。需要说明的参数差不多就是这些啊,除了scale其他的好像都是必须的,scale当时好像是因为报错了所以加上的,大致意思是放大倍数是8吧,然后LR就是X8那个文件夹,我也是个萌新啊,原理啥都不懂,为了以后复现才写的这个。

4、我目前只是单纯跑起来,其实博主给的代码基本不用动啊,只要在main那加一个if name = main 那个错,很常见的错一查就查到,每跑一个epoch就会用val数据集test一下,然后生成一个PSNR,再跑,刚才被人push了不想写了,如果有人看了还有问题就问我吧,总体来说算是好实现,但是值得探索的地方还有很多。

测试的时候报错了:

AttributeError: Can t pickle local object  Data_reconstruction.__init__.<locals>.<lambda>

我测试使用的命令是通过博主新增的main_reconstruction测试的,这个错误我没去细致研究是咋回事,是pickle库的问题,网上和chatgpt提供的方法都是:

import dill as pickle就是将dill库替换为pickle库,但是我这个错是出现在pickle库中的一个py文件中的,而dill是基于pickle库的,所以这么改会导致循环import。

没办法了,还是用的源码测试的方法

main设置argument:
--data_dir
D:/python_project/Super_Solution-main/DataSet
--save
D:/python_project/Super_Solution-main/test-r
--data_test
my_val
--scale
2
--model
DRN-S
--pre_train
D:\python_project\Super_Solution-main\experiment\training_result\model\model_best.pt
--test_only
--save_results

补训练时的设置:

--batch_size
1
--n_GPUs
1
--scale
4
--save
./experiment/training_result
--model
DRN-S
--epochs
1000

训练时scale是啥,这里就是啥,数据集要将my_val改为自己要测试的数据集,构成方式和训练时的要一样,也就是说HR X2 X4 X8都要有而且文件命名也要正确,但真正起作用的只有scale对应文件夹,如你训练时scale=8 那么就会测试X8中的文件。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值