EnlightenGAN的源代碼艱難復(fù)現(xiàn)過程
目錄
問題1.github中進(jìn)行安裝環(huán)境的統(tǒng)一部署(問題2到問題12是針對EnlightenGAN的解決)... 1
問題2,創(chuàng)建虛擬環(huán)境python3.5,安裝jupyter后打開提示內(nèi)核錯(cuò)誤... 2
問題3,No ?matching distribution found for torch==0.3.1. 4
問題4 安裝visdom后不能正常調(diào)用... 5
問題5 ?pycharm調(diào)用conda安裝的python3.5. 8
問題6 無法加載文件 ?D:\ProgramData\Anaconda3\shell\condabin\Conda.psm1,因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本。... 9
問題7 報(bào)錯(cuò)return ?f'<EnlightenGAN OnnxModel {id(self)}>' 10
問題8,報(bào)錯(cuò),已安裝opencv-python但是無法識別... 11
問題9,根據(jù)https://zhuanlan.zhihu.com/p/454098658網(wǎng)站的方法快跑出結(jié)果了,遇到一部分小問題沒有記錄,百度一搜索就解決了,當(dāng)前遺留問題:... 13
問題10,報(bào)錯(cuò)... 13
問題11打開visdom不顯示一個(gè)新的解決辦法... 19
問題12嘗試學(xué)習(xí)使用google ?colab. 20
問題13,20230412,在宿舍用32gb內(nèi)存電腦跑該代碼,內(nèi)存占用拉滿,錯(cuò)誤提示... 22
14.運(yùn)行時(shí)train.py的修改如下:... 25
?
問題1.github中進(jìn)行安裝環(huán)境的統(tǒng)一部署(問題2到問題12是針對EnlightenGAN的解決)

解決辦法:1先將當(dāng)前環(huán)境轉(zhuǎn)換到GitHub代碼requirement.txt所在的文件夾

2運(yùn)行

問題2,創(chuàng)建虛擬環(huán)境python3.5,安裝jupyter后打開提示內(nèi)核錯(cuò)誤


ImportError: No module named 'win32api'
網(wǎng)絡(luò)解決方案https://blog.csdn.net/Kwoky/article/details/80660047,不管用

解決辦法:https://blog.csdn.net/REAL_liudebai/article/details/126185097

如圖,切換環(huán)境安裝
conda env list
conda activate python35#(虛擬環(huán)境名稱)
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已經(jīng)完全打不開了

錯(cuò)誤提示:module 'idna' has no attribute 'IDNAError'
解決辦法3:在上一步錯(cuò)誤后直接運(yùn)行 pip install idna,結(jié)束以后打開notebook,成功,提示內(nèi)核連接,問題成功解決

問題3,No matching distribution found for torch==0.3.1
鏡像網(wǎng)站下載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后不能正常調(diào)用

嘗試重新安裝,提示已安裝

visdom模塊需要Python 3.6或更高版本才能運(yùn)行?
嘗試卸載當(dāng)前版本,再安裝0.1.8.9版本

30分鐘以后依然在運(yùn)行uninstall
卸載辦法如下圖:秒卸

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



執(zhí)行以下命令,安裝成功。

打開notebook,重啟內(nèi)核,成功調(diào)用

出現(xiàn)新問題,Checking for scripts.
Downloading scripts, this may take a little while
卡在該界面不動(dòng),解決方案:
https://blog.csdn.net/InkBamboo920/article/details/107434021

找到目錄,根據(jù)網(wǎng)絡(luò)方案注掉代碼,

啟動(dòng),成功。it’s Alive!


問題5 pycharm調(diào)用conda安裝的python3.5
解決方案如圖,

問題6 無法加載文件 D:\ProgramData\Anaconda3\shell\condabin\Conda.psm1,因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本。
已解決,https://blog.csdn.net/weixin_43560852/article/details/128403090

問題7 報(bào)錯(cuò)return f'<EnlightenGAN OnnxModel {id(self)}>'
錯(cuò)誤信息表明使用的是Python 3.5,這是一個(gè)不支持f-string的版本。
換成python3.6重新嘗試
重復(fù)以上過程如圖,打開pycharm

再一次遇到問題,

有一個(gè)基于python3.8的安裝包,再在python3.8下重新重復(fù)以上步驟,成功

問題8,報(bào)錯(cuò),已安裝opencv-python但是無法識別


解決辦法:
添加環(huán)境變量,重啟內(nèi)核成功
https://blog.csdn.net/m0_56738500/article/details/127171782
將原始代碼導(dǎo)入python3.8繼續(xù)進(jìn)行



問題9,根據(jù)https://zhuanlan.zhihu.com/p/454098658網(wǎng)站的方法快跑出結(jié)果了,遇到一部分小問題沒有記錄,百度一搜索就解決了,當(dāng)前遺留問題:

python3.8
問題:torch版本下載不對,重新下載GPU版本

安裝,運(yùn)行,繼續(xù)報(bào)錯(cuò)
問題10,報(bào)錯(cuò)
錯(cuò)誤1

錯(cuò)誤2

問題1搜索結(jié)果https://blog.csdn.net/qq_45397526/article/details/125834669

查看cuda版本? nvidia-smi
最新版本對應(yīng)關(guān)系https://github.com/pytorch/vision#installation
經(jīng)對比選擇這兩個(gè)版本下載

安裝,繼續(xù)運(yùn)行

報(bào)錯(cuò)
后來重新安裝visdom,成功運(yùn)行,報(bào)錯(cuò)

全部關(guān)閉,重啟,又一次報(bào)錯(cuò)

內(nèi)存錯(cuò)誤?
再一次全部重啟,報(bào)錯(cuò)

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

重新運(yùn)行,不對,沒有加對地方
解決方法2
https://www.freesion.com/article/2458937949/
這一次的報(bào)錯(cuò),內(nèi)存爆了

嘗試刪除部分訓(xùn)練集,報(bào)錯(cuò)相同,那就推測不是內(nèi)存的問題,繼續(xù)尋找問題源
解決辦法,在conda安裝盤上分配虛擬內(nèi)存:

如圖,從左到右123步
重新運(yùn)行,報(bào)錯(cuò),GPU內(nèi)存不夠

溯源,可能是這一步修改優(yōu)點(diǎn)大,改成4,重新運(yùn)行,程序崩潰

又一次報(bào)錯(cuò),顯存不足
再次改小到2,運(yùn)行
報(bào)錯(cuò)相同,

根據(jù)提示,限制
https://blog.csdn.net/MirageTanker/article/details/127998036
運(yùn)行前添加代碼
set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:32
報(bào)錯(cuò),新錯(cuò)誤

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

問題11打開visdom不顯示一個(gè)新的解決辦法
https://blog.csdn.net/goodgoodstudyddp/article/details/114038471

沒有用該方法,在download以后打開了,visdom打開以后有顯示第一行環(huán)境,暫時(shí)解決

問題12嘗試學(xué)習(xí)使用google colab

顯存大小15GB
使用教程https://blog.csdn.net/weixin_45912366/article/details/124253460
后面操作不贅述
成功復(fù)現(xiàn)代碼,但是不完全成功,

經(jīng)過對比,torch和torchvision,本地版本與谷歌云盤一致,重新運(yùn)行一次,有了結(jié)果,但是無法完整運(yùn)行,報(bào)錯(cuò)如下:

錯(cuò)誤代碼1455表示系統(tǒng)資源不足,無法打開共享文件映射。
內(nèi)存不足!
在google colab中還發(fā)現(xiàn)一個(gè)問題,訓(xùn)練結(jié)果的迭代次數(shù)是負(fù)的!如下圖,所以結(jié)果不正常!

經(jīng)過對比,發(fā)現(xiàn)問題出在

以下是報(bào)錯(cuò)原文:
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
從報(bào)錯(cuò)內(nèi)容中可以看到,This DataLoader will create 4 worker processes in total. Our suggested max number of worker in current system is 2,要把參數(shù)DataLoader從4換成2,也就是處理器核心不足??
現(xiàn)在的問題:
本地電腦內(nèi)存不足,google網(wǎng)盤CPU處理器核心不足
問題13,20230412,在宿舍用32gb內(nèi)存電腦跑該代碼,內(nèi)存占用拉滿,錯(cuò)誤提示
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,再次運(yùn)行,
運(yùn)行結(jié)束,沒有報(bào)錯(cuò),但是原作者3張1080ti跑完一輪需要3個(gè)小時(shí),我只用了3分鐘就運(yùn)行結(jié)束
?
最開始找到的代碼網(wǎng)站:https://github.com/Samuel-wing/EnlightenGAN-master
打開GitHub,代碼網(wǎng)站變成https://github.com/VITA-Group/EnlightenGAN
下載第二個(gè)網(wǎng)站的代碼,重新運(yùn)行
報(bào)錯(cuò),
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
解決網(wǎng)站,

按照提示修改代碼,報(bào)錯(cuò)內(nèi)容相同
?
發(fā)現(xiàn)問題,我運(yùn)行的是python .\scripts\script.py --train,給的修改方法是predict
嘗試手動(dòng)修改代碼,運(yùn)行,報(bào)錯(cuò)

又是關(guān)于nn的問題,
models\networks.py,使用一鍵替換,upsample替換為interpolate,再次運(yùn)行,
運(yùn)行成功,沒有報(bào)錯(cuò),iters也是正常
運(yùn)行時(shí)的內(nèi)存占用如圖

根據(jù)運(yùn)行實(shí)時(shí)結(jié)果,需要跑200輪次,

按照150s一輪次計(jì)算,200輪需要8小時(shí)
放棄運(yùn)行
只運(yùn)行了前5輪次,前5輪結(jié)果如下:


可以證實(shí)代碼完全成功
經(jīng)查詢,1080ti有11gb顯存,原作者3小時(shí)運(yùn)行結(jié)束
在將batch_size從源代碼8修改為4后,4060 8gb顯存需要8小時(shí)以上才能完整跑完該代碼一輪
14.運(yùn)行時(shí)train.py的修改如下:
本科非計(jì)算機(jī)專業(yè),復(fù)現(xiàn)一次代碼也是學(xué)習(xí)的一個(gè)過程。
前面的好多個(gè)彎路好像是沒必要走的,但是走過了也不算彎路,曲曲折折總是學(xué)會(huì)了一些東西。