Linfeng-Tang / SwinFusion

This is official Pytorch implementation of "SwinFusion: Cross-domain Long-range Learning for General Image Fusion via Swin Transformer"
161 stars 20 forks source link

MFF多焦点图像融合遇到的问题 #10

Open baby1634810490 opened 1 year ago

baby1634810490 commented 1 year ago

您好,非常感谢您的指点,有些问题想请教一下,就是关于MFF多焦点融合,您的github项目里面写的是需要把训练数据集放入MEF中训练,但是trainsets中是有MFI-WHU的。我把数据集放入了MFI-WHU中训练的,成功出了模型,但是在测试过程中出现了数组越界的错误(IndexError: list index out of range),我想请问一下,是不是需要放入MEF中进行训练出的模型才可以测试成功呀,不能把数据放入MEI-WHU中训练呀。还是我缺少了些步骤呀。我的错误具体如下: [1/2] Saving fused image to : results/SwinFusion_Lytro/1-checkpoint.jpg, Processing time is 557.452528 s Traceback (most recent call last): File "/root/horse/SwinFusion/SwinFusion-master/test_swinfusion.py", line 158, in main() File "/root/horse/SwinFusion/SwinFusion-master/test_swinfusion.py", line 69, in main for i, test_data in enumerate(test_loader): File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 517, in next data = self._next_data() File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1199, in _next_data return self._process_data(data) File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/dataloader.py", line 1225, in _process_data data.reraise() File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/_utils.py", line 429, in reraise raise self.exc_type(msg) IndexError: Caught IndexError in DataLoader worker process 0. Original Traceback (most recent call last): File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/_utils/worker.py", line 202, in _worker_loop data = fetcher.fetch(index) File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch data = [self.dataset[idx] for idx in possibly_batched_index] File "/opt/conda/envs/pytorch1.8/lib/python3.9/site-packages/torch/utils/data/_utils/fetch.py", line 44, in data = [self.dataset[idx] for idx in possibly_batched_index] File "/root/horse/SwinFusion/SwinFusion-master/data/dataloder.py", line 37, in getitem B_path = self.paths_B[index] IndexError: list index out of range

非常感谢您的指点,麻烦您了,谢谢您。

Linfeng-Tang commented 1 year ago

你这是训练还是测试过程中出现的错误呢? 你可以在dataloader中打印self.paths_B 和self.path_A 看看二者是否是一样的

baby1634810490 commented 1 year ago

您好,非常感谢您的指点,这个错误是才MFF测试中遇到的,打印出的两个路径也不是完全一样的(self.paths_A is -> ['Dataset/testsets/Lytro/A_Y/.ipynb_checkpoints/1-checkpoint.jpg', 'Dataset/testsets/Lytro/A_Y/1.jpg'] self.paths_B is -> ['Dataset/testsets/Lytro/B_Y/1.jpg'])请问这个问题是什么原因造成的呢?

Linfeng-Tang commented 1 year ago

这个是由于 你A_Y数据集里多了一个'Dataset/testsets/Lytro/A_Y/.ipynb_checkpoints/1-checkpoint.jpg', 造成的 你可以尝试把.ipynb_checkpoints 文件夹删除来解决这个问题呢

baby1634810490 commented 1 year ago
   谢谢您的指点,我那个里面数据集没有这个文件(A_Y数据集里多了一个'Dataset/testsets/Lytro/A_Y/.ipynb_checkpoints/1-checkpoint.jpg',),目前我在datalodar里面给B_path的数组索引进行-1操作,测试程序完美执行了,我还想问问,输出的两个图片(0.png和1.png)为灰度图像,是不是也需要进行YCBCR转换成RGB呀,而且测试代码为啥会保存两张图像呀,融合后不应该是一张图像吗?
   非常谢谢您的指点
baby1634810490 commented 1 year ago

非常感谢您的指点,我已经解决了YCbCr的问题了,出来的效果也不错,再次感谢您的指点

Linfeng-Tang commented 1 year ago

好的 好的