Paco
Paco
> 李博,你好。 我使用了fusion_imagefusion-rfn-nest-main\imagefusion-rfn-nest-main\test_40pairs.py这个程序,利用下图1数据集,跑出的结果却是下图2,咨询一下我这样的demo结果可能出错在哪些地方?我的图大量都是纯黑色或纯白色的。   同学你好,我最近在测试时也出现了和你相同的情况,请问你是如何解决的呢? 我的测试环境:pytorch=1.12,python=3.9 我尝试了以下操作: (1)将融合方式更改为代码里其他的融合策略,发现输出的图像是正常的,说明代码各部分都没有问题; (2)将融合方式换回rfn模块,然后在保存图像前,尝试打印图像像素的最大值和最小值,发现几乎都大于255(如下图所示),所以导致输出的图像是黑白的;(另外,相加的方式也会有部分图像像素的最大值超出255,导致图像整体偏亮) `print(img_fusion.max(), img_fusion.min())`  (3)在保存图像前,将图像进行最大最小归一化,并乘以255,将像素值缩放为[0, 255],之后再保存图像,得到的图像终于能够正常显示(如下图所示)。 `img_fusion = (img_fusion - img_fusion.min()) / (img_fusion.max() - img_fusion.min()) * 255.0`  以上是我的解决方案,不知这样做对吗?归一化后的图像是否会影响评价指标的结果呢?其他的融合方式也是否需要归一化呢?还有其他方法解决吗? @hli1221 李导能够帮忙解答吗?期待您的答复,谢谢。
同学你好,是的,PixelLoss() 就是计算输入图像和输出图像之间的强度损失,mode='l1' 为 L1 损失(MAE 损失),mode='l2' 为 L2 损失(MSE 损失)。
同学你好,首先谢谢你的关注和留言。 Q1:您的数据集是放在代码上一级目录 datasets 中的对吗? A1:对。 Q2:valid中所存放的图片是验证集吗? A2:是。 Q3:验证集的图像是需要通过 gen_patches 进行分块处理的对吗? A3:验证集的处理方式应该与训练集保持一致。 Q4:测试集放在哪里以及它是否需要 gen_patches 处理? A4:测试集可以放在 train 和 valid 的同级目录中,测试集不需要分块处理。 P.S. 由于代码是自己复现的,如果在使用中遇到报错或者发现与原作者不一致的地方,欢迎留言指正,大家共同学习进步。
同学你好! (1)eval.py 中 eval_model 函数里会调用 save_result 和 cv2.imwrite 函数,运行该文件时,测试图像和融合结果会自动拼接并保存在 ../runs/2022-11-01_xx-xx 目录下的 eval 文件夹中,请留意。 (2)samples 中给出的是数据集的样例,并不是融合结果,是用来测试读取数据集的功能。dataset.py 中 FusionDataset 类读取的是两张完整图像,AEDataset 类读取的是一张裁剪图像;patches.py 中 FusionPatches 类读取的是两张分块图像。 (3)测试时,默认输入的是整张图像,不需要对图像进行分块处理。