学习 > Windows10下的图像修复相关学习试错记录 (Deep Learning + GAN + EdgeConnect)
发布日期:2022-02-08 04:20:42 浏览次数:3 分类:技术文章

本文共 4560 字,大约阅读时间需要 15 分钟。

目录

一、参考资料汇总

  1. 在选择学习方向时看到过的方法或代码
    2-1.
      
    2-2.
    2-3.
    2-4.

二、准备工作

Anaconda的安装

  1. 需要注意的点:
     1-1. 没有代理的情况下官网下载很慢,可以去下载Anaconda安装包。
     1-2. 若先安装Python再安装Anaconda,安装选项中的Just Me/All Users应选择一致,否则可能会出现问题。
     1-3. 由于默认不勾选添加环境变量,在Anaconda安装完成后,需要手动将Anaconda目录、Anaconda目录下的Scripts目录、Anaconda目录下的Library/bin目录添加至环境变量。环境变量添加路径:右击我的电脑>>属性>>高级系统设置>>环境变量>>编辑用户变量(Just Me)/系统变量(All Users),依次添加即可。
     1-4. 添加清华conda镜像源的方法(永久添加):
     无需激活环境,运行以下命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/conda config --set show_channel_urls yes

   附注:;。

   1-5. 添加清华pip镜像源的方法(临时添加,且可能不成功):

pip install [要装的库名] -i https://pypi.tuna.tsinghua.edu.cn/simple

   如果不成功,可以试试执行以下命令:

pip install [要装的库名] -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pymysql

   1-6. 安装中可能出现的问题:

    1-6-1. 不装python,直接装Anaconda可能遇到的报错及解决方式:
警告
    遇到这个警告需要激活环境。
    若在激活环境中继续报错:
激活环境报错
    那么运行以下命令:

conda init

    然后关闭cmd重开,运行以下命令:

conda activate [Anaconda目录]

    其中[Anaconda目录]是Anaconda的安装目录。报错即解决。

    1-6-2. 从外网下载库时遇到超时报错,可以设置超时时间:

pip --default-timeout=100 install -U [要装的库名]

    另,这条指令我没验证过,但执行不会报错。

  2.

  我用的软件是Spyder,基本没太看这篇博文,但可以作为参考。
  3.

CUDA与cuDNN的安装

 验证成功:
CUDA/cuDNN安装验证
CUDA/cuDNN安装验证

pytorch的安装

 进去之后直接根据情况选择后生成命令,复制命令去cmd运行即可。
 验证成功:
pytorch安装验证
 另,如果用官网给的命令安装太慢,可以去掉末尾的 -c pytorch,这是路径。
 以及我当时使用的安装命令为

conda install pytorch torchvision cudatoolkit

 虽然没有指明版本,但最后使用时没有出错。

三、程序学习

  1. 学习程序的选定
     最终我选择了EdgeConnect即使用对抗边缘学习进行生成图像修复的方法进行学习。
  2. 生成对抗网络GAN的学习
  3. 安装程序所需依赖文件
     要注意的是,conda似乎不识别“~=”这个符号,要用conda命令安装依赖文件只能手动把所有~=都改成=或者用pip命令安装(我采用的方法)。
     此外,用pip安装对应依赖的时候我因为下载速度太慢出过一些奇怪的问题,如:

Building wheel for XXX (setup.py) … error

Command errored out with exit status 1:

   (XXX为安装的包名)

错误截图

错误截图

   由于下载速度过慢产生的一系列问题有两种解决办法。

   一是直接从把对应的包下下来,用cd进入下载文件的对应路径,用pip install命令直接安装对应的.whl文件。
   如图所示:
pip直接安装.whl包
   这里要注意的是安装的顺序。如安装scipy、scikit需先安装numpy+mkl,因为scipy和scikit-image、scikit-learn等都是依赖于numpy+mkl这个库。
   二是对pip进行代理设置。指令如下:

pip install XXX --proxy="http":"IP地址:端口号"

   (XXX为需要安装的包名)

   查找本机IP地址和端口号的方法:
   进入ie浏览器>>右击最上方空白边栏打开菜单栏>>工具>>Internet选项>>连接>>局域网设置>>代理服务器里面有地址和端口号
   另,要采用这种方法必须是有代理的,即已经搭建过ladder…
   此外,在这里要注意一下,EdgeConnect对python、tensorflow和numpy的版本有严格要求,当时我没注意直接用的python3.7,导致numpy版本过高,无法满足scipy的安装要求。但与此同时,适应高版本numpy的scipy因为去掉了某个库所以无法运行EdgeConnect程序,我最后是安装了scipy=1.4.1,没有把python卸了重装,刚好满足numpy和程序库的要求… 太惊险了,下次再跑这个程序应该装低版本的python,特此记录。
   以及,如果不慎装了高版本的python,在安装依赖时直接去掉scipy,装完之后再安装scipy=1.4.1就可以了。
numpy和scipy冲突
安装成功
   反正好像那个库可以有替代物,但我太菜了没法自己写,所以没有往那边探究。
   另,在折腾卸库的时候如果出现“[WinError 5]拒绝访问”的问题,可以在指令后加上“–user”把权限提上去。
   最后,能用pip还是用pip比较好,至少不用手动安装前置的包,会自动检测安装条件。
 4. 训练/验证/测试文件集的下载和整理
   该项目采用的是公开数据集。
数据集
   因为我在自己电脑上跑,所以根本没考虑高分辨率即蓝框内容,下的是小图即红框内容。要跑出来的模型精度高的话自然建议蓝框。
   那时候我也还没能搭好ladder,是请朋友帮我下好了之后我再解压整合的,一把辛酸泪。没什么用的解压纪念如下:
RAR转tar

解压tar1

解压tar2

   最终的数据集大小和文件个数如下:
训练数据集

测试数据集

验证数据集

 5. 遮罩文件的下载和整理
   该程序中提供的遮罩程序地址是,但我使用时发现他少一个关键的包mask_generator,且这个包并不是常规可以用过pip命令下载下来的。
mask_generator1
mask_generator2
   我找不到这个包,只能放弃使用这个不规则遮罩程序,转而,这也是EdgeConnect里提供的遮罩下载办法。
   下下来之后是这个样子的:
在这里插入图片描述
 6. 把各种数据集准备好之后,其实到这一步程序已经可以运行了,但因为是在Windows上跑,所以还要修改一个参数,否则会报错:
多线程报错
解决这个问题我参考了,在此程序中应当改的是这个位置:
多线程改动
将num_workers改成0即可。
 7. 关于开始训练模型之前的传参
 我参考了。
 具体来说,spyder里传入可变参数(命令行参数)的方法是:
 运行>>单文件配置>>一般设置>>命令行选项>>输入格式是:–可变参数 参数值
 例如,我在运行flist.py文件生成文件集列表时,传入的参数是:

--path J:\python\data_set\train_256 --output J:\python\file_list\train_list

 其含义为:将path指向路径下的所有图片文件(包括子文件夹里的内容)名称和路径取出,生成的列表文件train_list存储在output指向的路径中。

 开始训练模型之前,要分别生成9个flist文件,并将其分别存入这些文件夹中:
flist文件存储位置及名称
 8. 模型训练时传入的参数:

--model 1 --checkpoints J:\python\temp\airfield

 即在训练模式下,使用airfield文件夹内的数据集进行训练。

 这些参数在ReadMe里讲得很详细,可以对照着往里传,这里不再举例。
 在这里我其实出现了硬件问题:
显存爆了
 电脑显存不足。这个完全没办法,我后来租了个RTX 2080Ti勉强跑了下来,不过Windows下果然限制还是颇多,以后有机会试试在Linux下用多台GPU联跑,速度应该会快很多。
 我使用的GPU参数如下:
GPU
 然后程序就成功开始跑了:
开始训练
训练过程
 参数含义:
 ETA:预计还有多长时间训练完毕
 epoch:所有的数据遍历次数
 iter:batchsize输入网络次数
  关系:(iter*batchsize)/sum_photos=epoch
 precision:精确率(从预测结果角度看,有多少预测是准确的)
 recall:召回率(确定了正类被预测为正类图片占所有标注图片的个数)
  precision与recall都是越高越好
  precision与recall的解释在

 9. 由于时间原因,我无法跑完整个训练过程(预计耗时一个月),所以只能通过更改最大遍历次数的办法来提前中断训练,得到的模型效果很差,还不如原程序给的ReadMe直观。

 修改位置:
修改最大遍历次数
 我最后得到的测试结果:
测试结果
 参数含义:
 psnr:峰值信噪比
 mae:平均绝对误差
 显然,结果并不尽如人意。

四、总结

综上所述,可以把跑程序的过程大概归纳为以下几个步骤(指令):

conda create -n XXX python=3.7
1.pip install -r requirements.txt --proxy=“http”:“127.0.0.1:25378”
2.pip install scipy==1.2.1 --proxy=“http”:“127.0.0.1:25378”
3.pip install torch-1.4.0-cp37-cp37m-win_amd64.whl
4.spyder
5.C:\Users\xdtech/.torch\models
6.–model 1 --checkpoints M:\auto_upload_20200407225024\20200407\temp\airfield
7.pip install torchvision --proxy=“http”:“127.0.0.1:25378”
8.pip install -U numpy --proxy=“http”:“127.0.0.1:25378”
代理十分有必要,GPU影响也十分重大。虽然磕磕巴巴把程序跑了出来,但最后的效果并不理想,以后如果有机会再跑一次,或许能得到不错的成果。

转载地址:https://blog.csdn.net/Silenor/article/details/108325600 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:学习 > 开机自动弹出记事本desktop:[.ShellClassInfo]…的解决办法
下一篇:学习 > cmd进入文件夹命令(cd)的使用方法

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月05日 12时02分05秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章