学习 > Windows10下的图像修复相关学习试错记录 (Deep Learning + GAN + EdgeConnect)

一、参考资料汇总

  1. 基于深度学习的图像修复相关论文推荐(CSDN)
  2. 在选择学习方向时看到过的方法或代码
    2-1. 基于上下文编码器的图像修复(GitHub)
      基于上下文编码器的图像修复代码解读
    2-2. 基于语境的图像修复(简书)
    2-3. 基于内容感知生成模型的图像修复
    2-4. 失焦/模糊等图像的修复(CSDN)
  3. 基于GAN的图像修复相关论文(CSDN)

二、准备工作

Anaconda的安装
  1. Anaconda的安装和环境配置(CSDN)
    需要注意的点:
     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. Anaconda和Pycharm的安装和配置
  我用的软件是Spyder,基本没太看这篇博文,但可以作为参考。
  3. Anaconda国内镜像源整理-包括删除源的方法(CSDN)

CUDA与cuDNN的安装

参考链接1
参考链接2
NVIDIA官网
 验证成功:
CUDA/cuDNN安装验证
CUDA/cuDNN安装验证
GPU、CUDA、cuDNN三者关系简单理解

pytorch的安装

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

conda install pytorch torchvision cudatoolkit

 虽然没有指明版本,但最后使用时没有出错。
安装pytorch时参考过的博文1-安装失败及问题解决
安装pytorch时参考过的博文2-详细的换源方法

三、程序学习

  1. 学习程序的选定
     最终我选择了EdgeConnect即使用对抗边缘学习进行生成图像修复的方法进行学习。
    该模型的GitHub源码
    该模型的中文ReadMe
  2. 生成对抗网络GAN的学习
    浅显易懂的生成对抗网络入门级原理解释
    进阶解读
    GAN的判别器PatchGAN的解读
  3. 安装程序所需依赖文件
    生成与安装requirements.txt的方法(CSDN)
     要注意的是,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. 训练/验证/测试文件集的下载和整理
   该项目采用的是place2公开数据集。
数据集
   因为我在自己电脑上跑,所以根本没考虑高分辨率即蓝框内容,下的是小图即红框内容。要跑出来的模型精度高的话自然建议蓝框。
   那时候我也还没能搭好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影响也十分重大。虽然磕磕巴巴把程序跑了出来,但最后的效果并不理想,以后如果有机会再跑一次,或许能得到不错的成果。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值