SeaNet 模型图像分割测试代码优化与错误解决
{/'title/':/'SeaNet 模型图像分割测试代码优化与错误解决/',/'description/':/'本文介绍了 SeaNet 模型图像分割测试代码的优化,包括使用 imageio.imwrite 保存灰度图像,以及解决 OSError: cannot write mode F as PNG 错误。代码中还包含了性能测试和结果保存。/',/'keywords/':/'SeaNet, 图像分割, 测试代码, 代码优化, 错误解决, imageio.imwrite, PNG, 灰度图像, 性能测试/',/'content/':/'代码:import ///'torch///'//nimport ///'torch.nn.functional as F///'//n//nimport ///'numpy as np///'//nimport pdb, os, argparse//n# from scipy import misc//nimport time//n//nfrom model.SeaNet_models import SeaNet//nfrom data import test_dataset//n//nimport imageio # 添加的//n//ntorch.cuda.set_device(0)//nparser = argparse.ArgumentParser()//nparser.add_argument('--testsize', type=int, default=288, help='testing size')//nopt = parser.parse_args()//n//n# dataset_path = './dataset/test_dataset/' # 需要修改//ndataset_path = './dataest/steel/'//n//nmodel = SeaNet()//nmodel.load_state_dict(torch.load('./models/SeaNet/SeaNet.pth.49')) # 需要修改 /原'./models/SeaNet/SeaNet.pth.50'//n//nmodel.cuda()//nmodel.eval()//n//n# test_datasets = ['EORSSD'] # 修改//ntest_datasets = ['steel']//n//nfor dataset in test_datasets://n # save_path = './models/SeaNet/' + dataset + '/' # 修改//n save_path = './models/SeaNet/' + '/'//n if not os.path.exists(save_path)://n os.makedirs(save_path)//n # image_root = dataset_path + dataset + '/image/' #修改//n image_root = dataset_path + '/RGB/'//n print(dataset)//n # gt_root = dataset_path + dataset + '/GT/'//n gt_root = dataset_path + '/GT/'//n test_loader = test_dataset(image_root, gt_root, opt.testsize)//n time_sum = 0//n for i in range(test_loader.size)://n image, gt, name = test_loader.load_data()//n gt = np.asarray(gt, np.float32)//n gt /= (gt.max() + 1e-8)//n image = image.cuda()//n time_start = time.time()//n res, s34, s5, s12_sig, s34_sig, s5_sig, edge1, edge2 = model(image)//n time_end = time.time()//n time_sum = time_sum+(time_end-time_start)//n # res = F.upsample(res, size=gt.shape, mode='bilinear', align_corners=False) # nn.functional.upsample -> nn.functional.interpolate//n res = F.interpolate(res, size=gt.shape, mode='bilinear', align_corners=False)//n res = res.sigmoid().data.cpu().numpy().squeeze()//n res = (res - res.min()) / (res.max() - res.min() + 1e-8)//n # misc.imsave(save_path+name, res)//n imageio.imwrite(save_path + name, res, format='JPEG', quality=100) # 修改为JPEG格式保存//n if i == test_loader.size-1://n print('Running time {:.5f}'.format(time_sum/test_loader.size))//n print('FPS {:.5f}'.format(test_loader.size / time_sum))//n出现如下错误:OSError: cannot write mode F as PNG内容:这个错误是因为在保存图像时,使用了错误的模式。在代码中,使用了imageio.imwrite函数来保存图像,但是默认的保存模式是PNG,而你的图像是灰度图像,所以不能使用PNG模式保存。你需要将保存模式更改为适合灰度图像的模式,例如'L'模式。//n//n修改代码如下://n//npython//nimageio.imwrite(save_path + name, res, format='JPEG', quality=100)//n//n//n这样就可以将图像保存为JPEG格式,并且使用最高的质量。如果你想使用其他的模式和参数,可以参考imageio.imwrite函数的文档。/
原文地址: https://www.cveoy.top/t/topic/pV7P 著作权归作者所有。请勿转载和采集!