这段代码展示了一个使用 PyTorch 模型进行图像去雾处理的简单示例。

def dehaze_image(image_path):
	data_hazy = Image.open(image_path)
	data_hazy = (np.asarray(data_hazy)/255.0)

	data_hazy = torch.from_numpy(data_hazy).float()
	data_hazy = data_hazy.permute(2,0,1)
	data_hazy = data_hazy.cuda().unsqueeze(0)

	dehaze_net = net.dehaze_net().cuda()
	dehaze_net.load_state_dict(torch.load('snapshots/dehazer.pth'))

	clean_image = dehaze_net(data_hazy)
	torchvision.utils.save_image(torch.cat((data_hazy, clean_image),0), 'F:/Pycharm/VD-end/images/' + image_path.split('/')[-1])


if __name__ == '__main__':
	test_list = glob.glob('F:/Pycharm/VD-foggy/images/train/*')

	for image in test_list:
		dehaze_image(image)
		print(image, 'done!')

代码解释:

  1. 图像读取与预处理:

    • Image.open(image_path):读取指定路径的图像文件。
    • np.asarray(data_hazy)/255.0:将图像数据转换为 NumPy 数组,并将其归一化到 0 到 1 之间。
    • torch.from_numpy(data_hazy).float():将 NumPy 数组转换为 PyTorch 张量,并设置为浮点类型。
    • data_hazy.permute(2,0,1):对张量进行维度变换,使其符合 PyTorch 模型的输入要求。
    • data_hazy.cuda().unsqueeze(0):将张量移动到 GPU 上,并添加一个额外的维度,以便与模型的批量处理功能兼容。
  2. 加载去雾模型:

    • dehaze_net = net.dehaze_net().cuda():创建并加载去雾模型到 GPU 上。
    • dehaze_net.load_state_dict(torch.load('snapshots/dehazer.pth')):加载预训练模型参数。
  3. 进行去雾处理:

    • clean_image = dehaze_net(data_hazy):使用模型对输入图像进行去雾处理,并获取处理后的图像。
  4. 保存处理结果:

    • torchvision.utils.save_image(torch.cat((data_hazy, clean_image),0), 'F:/Pycharm/VD-end/images/' + image_path.split('/')[-1]):将原始图像和处理后的图像拼接在一起,并保存到指定的路径中。
  5. 循环处理图像列表:

    • test_list = glob.glob('F:/Pycharm/VD-foggy/images/train/*'):获取指定路径下的所有图像文件路径。
    • 使用循环遍历图像列表,对每个图像执行上述步骤,完成去雾处理。

这段代码演示了一个简单的图像去雾处理流程,通过使用预训练模型,可以方便地进行图像去雾处理。

Python 去雾图像处理代码示例:使用 PyTorch 模型进行去雾

原文地址: https://www.cveoy.top/t/topic/bk3o 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录