论文及其完整代码示例点此处https://github.com/SeungjunNah/DeepDeblur_release
注意!!! 我是在ubuntu 16.04上进行的,而且需要你的机子上面有gpu,当然也可以用cpu跑,但是估计很慢,而且你还要自己修改一些代码,我没试过,我是用服务器上的机子跑的
要想运行该示例代码,需要装三个所需的依赖: 1.torch7 (首先要装这个,安装方式查看官网torch 2.torchx(r这个用luarocks装,命令行 luarocks install torchx) 3.cudnn(这个百度搜索怎么装,装东西也是一种熟悉linux的方法) 4.cutorch(其实这个也需要装,作者没提,当然有可能运行示例代码中,有一些其它错误,我有些不记得了,自己查吧,去stackoverflow或者github)
等所有的依赖装好后,将该论文的github repository 下载下来,可以使用git clone 或者 直接下载.zip文件 例如将下好的文件夹放入/home目录下,该文件名为DeepDeblur_release-master,然后根据github上作者的描述,再下载预先训练好的模型并解压缩到experiment文件夹中,会有release_scale3_adv_gamma和release_scale3_adv_lin两个文件夹
接下来就可以实现示例程序运行了,先进入/home/DeepDeblur_release-master/code文件夹, 然后在终端输入qlua -i demo.lua -load -save release_scale3_adv_lin -blur_type linear (这里就要有一些问题了,坑1)
坑1: 由于我是在服务器上面跑,着实遇到了很多坑 首先,我没有管理员权限,所以安装一些软件都是下源码,编译,安装,这个确实可以学到一些东西;
其次,我指定了要使用的gpu的id,可还是有问题,在code文件夹下有个opts.lua文件,里面告诉我怎么指定想要用那块gpu,就是”-gpuid”这个选项,它是以1为基准开始计数的,服务器里有8块gpu,当我设置-gpuid 1 时,用nvidia-smi查看,结果发现它用了最后一块gpu(索引号是7,用nvidia-smi查看,gpu索引号是从0开始计数的),很奇怪,然后我就用-gpuid 2 尝试,结果报错说invalid device ordinal 随后我相继试了2,3,4,5,6,7,8,都报错invalid device ordinal ,后来查到可以在应用程序前指定哪块gpu可见,输入 export CUDA_VISIBLE_DEVICES=0 这里默认使用gpu 0(也就是第一块gpu) 再运行 qlua -i demo.lua -load -save release_scale3_adv_lin -blur_type linear 就没有报错了,而且用nvidia-smi查看,也确实是使用了gpu 0 这次我没有在命令行显示指出使用哪块GPU,是因为opts.lua里面默认的 gpuid=1 ,因为我们只让demo.lua程序可见GPU0,所以 gpuid =1 则表示选用 GPU0 了
好了,显卡选择好了,但是!!!还有错误Unable to connect X11 server 又上网查,由于我是用本地电脑登录服务器在服务器上运行示例程序,一般登录服务器输入 ssh username@ip 这个没有默认允许x11server好像是这样,所以应该在登录服务器的时候加入选项 -X 样例如下 ssh -X username@ip 这个附加选项 能够使我们连接上X11 server
qlua -i demo.lua -load -save release_scale3_adv_lin -blur_type linear 就没有错误,而是继续运行了