EnlightenGAN的源代码艰难复现过程
目录
问题1.github中进行安装环境的统一部署(问题2到问题12是针对EnlightenGAN的解决)... 1
问题2,创建虚拟环境python3.5,安装jupyter后打开提示内核错误... 2
问题3,No matching distribution found for torch==0.3.1. 4
问题4 安装visdom后不能正常调用... 5
问题5 pycharm调用conda安装的python3.5. 8
问题6 无法加载文件 D:\ProgramData\Anaconda3\shell\condabin\Conda.psm1,因为在此系统上禁止运行脚本。... 9
问题7 报错return f'<EnlightenGAN OnnxModel {id(self)}>' 10
问题8,报错,已安装opencv-python但是无法识别... 11
问题9,根据https://zhuanlan.zhihu.com/p/454098658网站的方法快跑出结果了,遇到一部分小问题没有记录,百度一搜索就解决了,当前遗留问题:... 13
问题10,报错... 13
问题11打开visdom不显示一个新的解决办法... 19
问题12尝试学习使用google colab. 20
问题13,20230412,在宿舍用32gb内存电脑跑该代码,内存占用拉满,错误提示... 22
14.运行时train.py的修改如下:... 25
问题1.github中进行安装环境的统一部署(问题2到问题12是针对EnlightenGAN的解决)

解决办法:1先将当前环境转换到GitHub代码requirement.txt所在的文件夹

2运行

问题2,创建虚拟环境python3.5,安装jupyter后打开提示内核错误


ImportError: No module named 'win32api'
网络解决方案https://blog.csdn.net/Kwoky/article/details/80660047,不管用

解决办法:https://blog.csdn.net/REAL_liudebai/article/details/126185097

如图,切换环境安装
conda env list
conda activate python35#(虚拟环境名称)
pip install pypiwin32
问题解决,打开jupyter

问题没有解决,右上角python3 kernel显示连接断开,不能使用
解决办法1:https://blog.csdn.net/qq_43790749/article/details/105494910/,不管用

解决办法2:
https://blog.csdn.net/weixin_45671524/article/details/128209452

输入pip install --user --ignore-installed jupyter 后

notebook已经完全打不开了

错误提示:module 'idna' has no attribute 'IDNAError'
解决办法3:在上一步错误后直接运行 pip install idna,结束以后打开notebook,成功,提示内核连接,问题成功解决

问题3,No matching distribution found for torch==0.3.1
镜像网站下载https://download.pytorch.org/whl/torch_stable.html
torch==0.3.1
torchvision==0.2.0
没有win平台的torch==0.3.1
无解,torch从0.4.0开始支持win平台
尝试下载torch-0.4.0-cp35-cp35m-win_amd64.whl安装,安装成功

安装torchvision-0.2.0,安装成功

问题4 安装visdom后不能正常调用

尝试重新安装,提示已安装

visdom模块需要Python 3.6或更高版本才能运行?
尝试卸载当前版本,再安装0.1.8.9版本

30分钟以后依然在运行uninstall
卸载办法如下图:秒卸

重新安装,https://pypi.tuna.tsinghua.edu.cn/simple/找到0.1.8.9,下载



执行以下命令,安装成功。

打开notebook,重启内核,成功调用

出现新问题,Checking for scripts.
Downloading scripts, this may take a little while
卡在该界面不动,解决方案:
https://blog.csdn.net/InkBamboo920/article/details/107434021

找到目录,根据网络方案注掉代码,

启动,成功。it’s Alive!


问题5 pycharm调用conda安装的python3.5
解决方案如图,

问题6 无法加载文件 D:\ProgramData\Anaconda3\shell\condabin\Conda.psm1,因为在此系统上禁止运行脚本。
已解决,https://blog.csdn.net/weixin_43560852/article/details/128403090

问题7 报错return f'<EnlightenGAN OnnxModel {id(self)}>'
错误信息表明使用的是Python 3.5,这是一个不支持f-string的版本。
换成python3.6重新尝试
重复以上过程如图,打开pycharm

再一次遇到问题,

有一个基于python3.8的安装包,再在python3.8下重新重复以上步骤,成功

问题8,报错,已安装opencv-python但是无法识别


解决办法:
添加环境变量,重启内核成功
https://blog.csdn.net/m0_56738500/article/details/127171782
将原始代码导入python3.8继续进行



问题9,根据https://zhuanlan.zhihu.com/p/454098658网站的方法快跑出结果了,遇到一部分小问题没有记录,百度一搜索就解决了,当前遗留问题:

python3.8
问题:torch版本下载不对,重新下载GPU版本

安装,运行,继续报错
问题10,报错
错误1

错误2

问题1搜索结果https://blog.csdn.net/qq_45397526/article/details/125834669

查看cuda版本 nvidia-smi
最新版本对应关系https://github.com/pytorch/vision#installation
经对比选择这两个版本下载

安装,继续运行

报错
后来重新安装visdom,成功运行,报错

全部关闭,重启,又一次报错

内存错误?
再一次全部重启,报错

解决方法1
https://www.likecs.com/show-308167823.html

重新运行,不对,没有加对地方
解决方法2
https://www.freesion.com/article/2458937949/
这一次的报错,内存爆了

尝试删除部分训练集,报错相同,那就推测不是内存的问题,继续寻找问题源
解决办法,在conda安装盘上分配虚拟内存:

如图,从左到右123步
重新运行,报错,GPU内存不够

溯源,可能是这一步修改优点大,改成4,重新运行,程序崩溃

又一次报错,显存不足
再次改小到2,运行
报错相同,

根据提示,限制
https://blog.csdn.net/MirageTanker/article/details/127998036
运行前添加代码
set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:32
报错,新错误

https://blog.csdn.net/baidu_39629638/article/details/128024990

问题11打开visdom不显示一个新的解决办法
https://blog.csdn.net/goodgoodstudyddp/article/details/114038471

没有用该方法,在download以后打开了,visdom打开以后有显示第一行环境,暂时解决

问题12尝试学习使用google colab

显存大小15GB
使用教程https://blog.csdn.net/weixin_45912366/article/details/124253460
后面操作不赘述
成功复现代码,但是不完全成功,

经过对比,torch和torchvision,本地版本与谷歌云盘一致,重新运行一次,有了结果,但是无法完整运行,报错如下:

错误代码1455表示系统资源不足,无法打开共享文件映射。
内存不足!
在google colab中还发现一个问题,训练结果的迭代次数是负的!如下图,所以结果不正常!

经过对比,发现问题出在

以下是报错原文:
CustomDatasetDataLoader
dataset [UnalignedDataset] was created
/usr/local/lib/python3.9/dist-packages/torch/utils/data/dataloader.py:561: UserWarning: This DataLoader will create 4 worker processes in total. Our suggested max number of worker in current system is 2, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.
warnings.warn(_create_warning_msg(
#training images = 1016
single
从报错内容中可以看到,This DataLoader will create 4 worker processes in total. Our suggested max number of worker in current system is 2,要把参数DataLoader从4换成2,也就是处理器核心不足??
现在的问题:
本地电脑内存不足,google网盘CPU处理器核心不足
问题13,20230412,在宿舍用32gb内存电脑跑该代码,内存占用拉满,错误提示
UserWarning: nn.functional.upsample is deprecated. Use nn.functional.interpolate instead.
warnings.warn("nn.functional.upsample is deprecated. Use nn.functional.interpolate instead.")
需要修改代码,
位置
E:\buquandaima\1.EnlightenGAN-master-master\EnlightenGAN-master-master\EnlightenGAN-master-master\models\networks.py
但是代码中旧版代码利用过多,
重新修改E:\buquandaima\1.EnlightenGAN-master-master\EnlightenGAN-master-master\EnlightenGAN-master-master\models\networks.py,使用一键替换,upsample替换为interpolate,再次运行,
运行结束,没有报错,但是原作者3张1080ti跑完一轮需要3个小时,我只用了3分钟就运行结束
最开始找到的代码网站:https://github.com/Samuel-wing/EnlightenGAN-master
打开GitHub,代码网站变成https://github.com/VITA-Group/EnlightenGAN
下载第二个网站的代码,重新运行
报错,
RuntimeError:
An attempt has been made to start a new process before the
current process has finished its bootstrapping phase.
This probably means that you are not using fork to start your
child processes and you have forgotten to use the proper idiom
in the main module:
if __name__ == '__main__':
freeze_support()
...
The "freeze_support()" line can be omitted if the program
is not going to be frozen to produce an executable.
https://blog.csdn.net/weixin_44504393/article/details/123029707
解决网站,

按照提示修改代码,报错内容相同
发现问题,我运行的是python .\scripts\script.py --train,给的修改方法是predict
尝试手动修改代码,运行,报错

又是关于nn的问题,
models\networks.py,使用一键替换,upsample替换为interpolate,再次运行,
运行成功,没有报错,iters也是正常
运行时的内存占用如图

根据运行实时结果,需要跑200轮次,

按照150s一轮次计算,200轮需要8小时
放弃运行
只运行了前5轮次,前5轮结果如下:


可以证实代码完全成功
经查询,1080ti有11gb显存,原作者3小时运行结束
在将batch_size从源代码8修改为4后,4060 8gb显存需要8小时以上才能完整跑完该代码一轮
14.运行时train.py的修改如下:
本科非计算机专业,复现一次代码也是学习的一个过程。
前面的好多个弯路好像是没必要走的,但是走过了也不算弯路,曲曲折折总是学会了一些东西。