跑微光图像增强程序遇到的问题汇总

趁着程序还在跑,来把过程中遇到的问题总结一下——希望世间再无bug

文章目录

      • 问题一:各个模块的安装
      • 问题二:训练集样本数一直为0
      • 问题三:cuda内存不足
      • 问题四: torch.nn.utils.clip_grad_norm函数被弃用
      • 问题五:nn.functional.tanh被弃用
      • 问题六:No such file or directory

问题一:各个模块的安装

用到的之前没用过的模块当然需要自己安装一下,这也不算是问题比较麻烦的有两个:

一个是是安装cv2,具体方法前几天也有总结,指路——no module named cv2,但这个的方法真的有点玄学,有的方法有的人就可以,但有的就不行,所以有点耐心,把能找到的方法都试一遍,总有一个适合你。

另一个是解决pytorch_colors的问题,一开始我并没有意识到问题的严重性(毕竟第一次见),以为它也只是一个平平无奇的pip install即可解决的模块,直到倒腾了一会才意识到这原来他就是python的第三方库,然后也是各种百度,实话说这真的太能搞心态了,各路大佬可能见怪不怪所以几乎所有的方法都是从第二步开始介绍,没有人跟我说需要先下载好已经写好的含有setup.py的pytorch_colors的zip包(哭会……),后来知道真相的我,被自己蠢到在床上打滚。。。具体方法当场我就总结了,指路——如何解决PyTorch中的No module named ‘pytorch_colors‘问题

问题二:训练集样本数一直为0

出现这种问题一般是两个原因,一是图片路径出现问题,而是参数设置错误。而我就是路径问题,主要原因是没有分清python中相对路径和绝对路径。

问题三:cuda内存不足

两个方法,要么减少训练集数目,要么令batch_size=1

问题四: torch.nn.utils.clip_grad_norm函数被弃用

e:/pytnon_list/Zero-DCE-master/Zero-DCE_code/lowlight_train.py:72: 
UserWarning: torch.nn.utils.clip_grad_norm is now deprecated in favor of 
torch.nn.utils.clip_grad_norm_.
  torch.nn.utils.clip_grad_norm(DCE_net.parameters(),config.grad_clip_norm)

在训练程序中用到了这个函数,但最后报错说它已被弃用,只用把它改成torch.nn.utils.clip_grad_norm_即可,具体代码如下:

	optimizer.zero_grad()
	loss.backward()	
	torch.nn.utils.clip_grad_norm(DCE_net.parameters(),config.grad_clip_norm) #替换之前
	torch.nn.utils.clip_grad_norm_(DCE_net.parameters(),config.grad_clip_norm) #替换之后
	optimizer.step()

问题五:nn.functional.tanh被弃用

porch D:\Anacondaa\envs\net\lib\site-packages\torch\nn\functional.py:1339: 
UserWarning: nn.functional.tanh is deprecated. Use torch.tanh instead.
  warnings.warn("nn.functional.tanh is deprecated. Use torch.tanh instead.")

不影响程序正常运行,但这种警告是说你的pytorch版本在未来的版本会将nn.functional.tanh这个API启动,需要用torch.tanh来替代,具体代码如下:

	import torch.nn.functional as F
	
	x5 = self.relu(self.e_conv5(torch.cat([x3,x4],1)))
	# x5 = self.upsample(x5)
	x6 = self.relu(self.e_conv6(torch.cat([x2,x5],1)))

	x_r = F.tanh(self.e_conv7(torch.cat([x1,x6],1))) #替换之前
	x_r = torch.tanh(self.e_conv7(torch.cat([x1,x6],1))) #替换之后
	r1,r2,r3,r4,r5,r6,r7,r8 = torch.split(x_r, 3, dim=1)  

问题六:No such file or directory

找不到文件或文件夹,这是做预测试的时候报的错,好像又是路径问题,我要吐了……
具体代码实现在这:

if __name__ == '__main__':
# test_images
	with torch.no_grad():
		filePath = 'Zero-DCE-master/Zero-DCE_code/data/test_data/'
	
		file_list = os.listdir(filePath)

		for file_name in file_list:
			test_list = glob.glob(filePath+file_name+"/*") 
			for image in test_list:
				#image = image
				print(image)
				lowlight(image)

完整的报错是这样的:

Zero-DCE-master/Zero-DCE_code/data/test_data/DICM\01.jpg
12.054098844528198
Traceback (most recent call last):
  File "e:/pytnon_list/Zero-DCE-master/Zero-DCE_code/lowlight_test.py", line 56, in <module>
    lowlight(image)
  File "e:/pytnon_list/Zero-DCE-master/Zero-DCE_code/lowlight_test.py", line 42, in lowlight
    torchvision.utils.save_image(enhanced_image, result_path)
  File "D:\Anacondaa\envs\net\lib\site-packages\torchvision\utils.py", line 105, in save_image
    im.save(filename)
  File "D:\Anacondaa\envs\net\lib\site-packages\PIL\Image.py", line 2131, in save
    fp = builtins.open(filename, "w+b")
FileNotFoundError: [Errno 2] No such file or directory:
 'Zero-DCE-master/Zero-DCE_code/data/result/DICM\\01.jpg'

一开始我百度然后一堆人讲相对路径、绝对路径,可我看了半天感觉好像不是路径的问题了,因为运行结果说明是找到了Zero-DCE-master/Zero-DCE_code/data/test_data/DICM\01.jpg,并且也输出了它的结束时间,我又试了一下,打印所有的test_list,结果也说明了在读取路径上是完全没有问题的:
跑微光图像增强程序遇到的问题汇总_第1张图片

所以问题大概就出在lowlight这个函数上。

你可能感兴趣的:(论文精读)