一步一步教你跑DCPDN深度学习去雾网络

论文:Densely Connected Pyramid Dehazing Network(CVPR2018)

论文就不讲解了,网上有,步骤开始:

1、环境安装:

Ubuntu16.0.4平台运行

Python2.7环境

Pytorch>=0.3.1框架

CUDA9.0+CUDNN7

训练网络需要使用GPU,显存和运行内存、还有系统交换区swap不要太抠,不然容易程序无法进行而报错。还有系统共享内存也不能不足,我的电脑勉强用100个训练数据训练,迭代了40000次。

DCPDN源码下载

建议安装Anaconda3创建Python环境,便于管理,运行程序时,如果缺什么包直接使用anaconda集成安装到环境里即可。

DCPDN的预训练模型可直接用于测试,测试数据、模型、训练数据数都很多,数据均为或者均要转化为h5文件来训练和测试,需要翻墙下载。需要仔细阅读README.md文件。

预训练模型、训练数据、测试数据等已经上传到百度网盘中,提取码为:pv5f,供大家参考,根据自己需要去下载,训练数据也不用全部下载使用。

2、项目文件结构(部分重点介绍)

项目下载解压后目录如下:

项目添加数据后的根目录如下:

checkpoints_new:利用合成图片生成无雾图片和训练生成的新模型的文件夹。

cvprw_test_resize_crop:存储自己的实际有雾图片。

demo_model:存储预训练模型,作者提供了netG_epoch_8.pth,需要自行下载,百度云里已经有了。

facades:最重要,也是最大的文件夹,内容如下图。其中,nat_new4文件夹存储用于测试的实际图片h5数据,test_cvpr文件夹存储你的实际有雾图片转换的h5文件,用于去雾。train512为用于训练的h5文件,共有4000个,根据你自己系统能力,从头按顺序连续选取部分数据,作者使用0-1000来训练网络,会迭代400*1000=400000次。val512存储400个用于对抗鉴别器训练的h5文件。

result_cvpr18:存储去雾结果的文件夹。

create_train.py:所有合成的,用于训练和测试的数据样本,都在HDF5文件中进行了扫描。您还可以使用“create_train.py”生成样本数据。

dehaze22.py:去雾网络模型框架。

demo.py:运行作者提供的预训练模型,anaconda进入创建的环境,cd进入项目根目录“cd 你的路径/DCPDN”,然后运行带参数的命令:(运行前确保对应目录下的文件下载齐全)

python demo.py --dataroot ./facades/nat_new4 --valDataroot ./facades/nat_new4 --netG ./demo_model/netG_epoch_8.pth

generate_testsample.py:用于将你自己的有雾图片生成h5文件,用于去雾。若要修改图片读取和存储方式,请修改代码中的

73行“train_list_per=glob.glob('./cvprw_test_resize_crop/*jpg')”和90行”directory='./facades/test_cvpr/'“。由于网络需要,图片会被resize为512*512的大小,生成去雾图片后请自行resize回来,代码百度云已提供。

train.py:训练网络使用,使用以下命令:(实际是微调作者提供的预训练模型,并保存下来)

python train.py --dataroot ./facades/train512 --valDataroot ./facades/test512 --exp ./checkpoints_new --netG ./demo_model/netG_epoch_8.pth

使用自己的有雾图片去雾:

首先使用 generate_testsample.py将自己的图片生成为h5文件,然后使用以下命令去雾:

python demo.py --dataroot ./facades/test_cvpr --valDataroot ./facades/test_cvpr --netG ./checkpoints_new/netG_epoch_9.pth

./facades/test_cvpr为你的实际有雾图片生成的h5文件所在的根目录,./checkpoints_new/netG_epoch_9.pth为生成的模型的路径。训练中途会保存很多模型,选择你觉得效果好的模型使用即可。

3、源码适配

作者原始源码部分需要修改,如下:(如果下载百度云的则不需要,已修改过了)

generate_testsample.py:

去掉99行的注释,防止自己输入的图片不是规定尺寸;

第一个包numpy不需要as np;

create_train.py:

第119行reshap的参数A改为a;

引用numpy包不需要as np。

我的操作到此结束,写的可能不是很清楚,有问题请随时留言,如果哪里理解有误还望指出。

4、致谢

感谢作者的贡献,感谢大家的支持!

  • 25
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 64
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 64
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值