admin 管理员组文章数量: 887007
EnlightenGAN 开源代码运行
EnlightenGAN: Deep Light Enhancement without Paired Supervision工作公布于2019年,论文已被TIP 2021接收,其采用非成对数据训练了一个用于低照度图像增强的对抗生成网络模型,可以显著增强低照度图像的亮度及对比度,表现优异。
论文地址:.06972
代码地址:
补充:预训练权重文件 ,提取码:xjyh
以下记录运行开源代码的主要步骤及测试过程中遇到的一些问题和解决办法。
源码下载和环境配置比较简单,本文测试环境:Win10 + RTX2060、cuda 11.1、python 3.8 + torch 1.9.0 + numpy 1.20.1
1. 打开visidom.server:
- 若是Linux系统,执行
nohup python -m visdom.server -port=8097
,其中nohup
用于在后台不挂断地运行命令; - Windows系统则直接执行
pyhton -m visdom.server -port=8097
,而后另开一个终端执行后续操作即可。
上述命令执行过程中可能会出现以下情况:
D:\ProgramData\Anaconda3\lib\site-packages\visdom\server.py:39: DeprecationWarning: zmq.eventloop.ioloop
is deprecated in pyzmq 17. pyzmq now works with default tornado and asyncio eventloops.ioloop.install() # Needs to happen before any tornado imports!
Checking for scripts.
Downloading scripts, this may take a little while
找到visidom的源码中download_scripts_and_run
函数,将download_scripts()
注释掉,如下图所示:
def download_scripts_and_run():# download_scripts()main()
再次执行上述命令,结果如下;
D:\ProgramData\Anaconda3\lib\site-packages\visdom\server.py:39: DeprecationWarning: zmq.eventloop.ioloop
is deprecated in pyzmq 17. pyzmq now works with default tornado and asyncio eventloops.ioloop.install() # Needs to happen before any tornado imports!
It's Alive!
INFO:root:Application Started
You can navigate to http://localhost:8097
打开浏览器输入地址http://localhost:8097
,即可监测训练进程。
2. 修改测试文件地址:
- 按
readme.md
文件说明,创建测试文件目录,其结构如下:
|——test_dataset|——testA|——testB
测试图像放在/testA
文件夹下,为了使程序正常运行,需确保在/testB
文件夹下至少有一张任意图像。
- 执行
python .\scripts\script.py --predict
运行测试程序,可能会出现如下报错:
AssertionError: ../test_dataset\testA is not a valid directory
报错显示提供的测试路径不是有效路径,原因可能是在创建test_dataset
时候将其作为项目文件夹的子文件夹,解决方法是将其从项目文件夹移出,使之与项目文件夹在同级目录下,最终测试结果保存在./ablation/enlightening/test_200/images
文件夹下。
3. 测试代码运行出错:
- 在执行
python .\scripts\script.py --predict
后,终端可能会报错
RuntimeError:An attempt has been made to start a new process before thecurrent process has finished its bootstrapping phase.This probably means that you are not using fork to start yourchild processes and you have forgotten to use the proper idiomin the main module:if __name__ == '__main__':freeze_support()...The "freeze_support()" line can be omitted if the programis not going to be frozen to produce an executable.
该报错原因是windows下测试时,子进程递归创建导致的,需要修改程序入口,具体做法是,在predict.py
中,把要运行的代码段放进if __name__ == '__main__':
中,一种可行的修改方案如下:
if __name__ == '__main__':freeze_support()opt = TestOptions().parse()print(opt.which_epoch)opt.nThreads = 1 # test code only supports nThreads = 1opt.batchSize = 1 # test code only supports batchSize = 1opt.serial_batches = True # no shuffleopt.no_flip = True # no flipdata_loader = CreateDataLoader(opt)dataset = data_loader.load_data()model = create_model(opt)visualizer = Visualizer(opt)# create websiteweb_dir = os.path.join("./ablation/", opt.name, '%s_%s' % (opt.phase, opt.which_epoch))webpage = html.HTML(web_dir, 'Experiment = %s, Phase = %s, Epoch = %s' % (opt.name, opt.phase, opt.which_epoch))# testprint(len(dataset))for i, data in enumerate(dataset):model.set_input(data)visuals = model.predict()img_path = model.get_image_paths()print('process image... %s' % img_path)visualizer.save_images(webpage, visuals, img_path)webpage.save()
4. 最后一点说明:
无论是训练还是测试,都要打开visdom.server
祝好!^_^
本文标签: EnlightenGAN 开源代码运行
版权声明:本文标题:EnlightenGAN 开源代码运行 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732355523h1534322.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论