lsylnnu / BiG-FSLF

6 stars 0 forks source link

MSI157_matpickle.py生成新源域数据后遇到的问题,想请教大佬 #3

Open TipsF opened 5 months ago

TipsF commented 5 months ago
    您好大佬,想请教您几个问题:我在跑通源码后,用一对LEVIR-CD中第157组1024×1024的png图像转成mat文件,再通过MSI157_matpickle.py生成了一个pickle文件,放到代码中在training后有报错:class_list = random.sample(class_folders, self.num_classes)   ValueError: Sample larger than population or is negative。
    然后我把class_num从2改成了1,代码能继续跑通一点但还会报错:

Training... Testing ... 4.346039295196533 -2.104224681854248 kappa: 0.6361500223273364 Accuracy: 60069/73471 (81.76%)

save networks for episode: 1 Traceback (most recent call last): File "C:\Users\f1535\Desktop\BiG-FSLF-main\main_BAY.py", line 759, in A[iDataSet, :] = np.diag(C) / np.sum(C, 1, dtype=np.float64) ValueError: could not broadcast input array from shape (2,) into shape (1,) 我想请教一下大佬这是为什么,刚接触小样本还不是特别理解。

TipsF commented 5 months ago

请教大佬!我把LEVIR-CD的PNG转为MAT,再转为pickle格式后,代码中参数改为:class_num=1,test_class_num=1,A = np.zeros([nDataSet, 2])时能正常运行且生成图片,但是类别只有0这一种,想请教一下这是为什么?能否提供一下论文中PNG转MAT的代码,想生成一个正确的MAT文件,万分感谢!

lsylnnu commented 5 months ago

建议debug检查label。后续会上传mat格式的vhr数据集。

---原始邮件--- 发件人: @.> 发送时间: 2024年6月2日(周日) 晚上6:27 收件人: @.>; 抄送: @.***>; 主题: Re: [lsylnnu/BiG-FSLF] MSI157_matpickle.py生成新源域数据后遇到的问题,想请教大佬 (Issue #3)

请教大佬!我把LEVIR-CD的PNG转为MAT,再转为pickle格式后,代码中参数改为:class_num=1,test_class_num=1,A = np.zeros([nDataSet, 2])时能正常运行且生成图片,但是类别只有0这一种,想请教一下这是为什么?能否提供一下论文中PNG转MAT的代码,想生成一个正确的MAT文件,万分感谢!

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

TipsF commented 5 months ago

不好意思又打扰了,debug之后label都是0,想请教一下大佬转化的代码有什么问题,能否提供一个正确的转化代码或者MAT数据,万分感谢! PNG转MAT的代码如下: import os import numpy as np from PIL import Image import scipy.io as io

save_dir = 'datasets/' print('Start...')

img_data = Image.open('datasets/LEVIR_1_1.png') img_label = Image.open('datasets/label_1.png') res0 = np.array(img_data, dtype='int16') res1 = np.array(img_label, dtype='uint8') print('Saving data...')

if not os.path.exists(save_dir): os.mkdir(save_dir) np.save(save_dir + 'LEVIR_1_1.npy', res0) np.save(save_dir + 'label_1.npy', res1)

numpy_file0 = np.load('datasets/LEVIR_1_1.npy') numpy_file1 = np.load('datasets/label_1.npy')

io.savemat('datasets/LEVIR_1_1.mat', {'data': numpy_file0}) io.savemat('datasets/label_1.mat', {'data': numpy_file1}) print('Done.')

lsylnnu commented 5 months ago

链接:https://pan.baidu.com/s/1iCC81vBIR9CoIFKr7HrVqw  提取码:5tow

mat版本数据见链接

------------------ 原始邮件 ------------------ 发件人: "lsylnnu/BiG-FSLF" @.>; 发送时间: 2024年6月3日(星期一) 下午3:38 @.>; @.**@.>; 主题: Re: [lsylnnu/BiG-FSLF] MSI157_matpickle.py生成新源域数据后遇到的问题,想请教大佬 (Issue #3)

不好意思又打扰了,debug之后label都是0,想请教一下大佬转化的代码有什么问题,能否提供一个正确的转化代码或者MAT数据,万分感谢! PNG转MAT的代码如下: import os import numpy as np from PIL import Image import scipy.io as io

save_dir = 'datasets/' print('Start...')

img_data = Image.open('datasets/LEVIR_1_1.png') img_label = Image.open('datasets/label_1.png') res0 = np.array(img_data, dtype='int16') res1 = np.array(img_label, dtype='uint8') print('Saving data...')

if not os.path.exists(save_dir): os.mkdir(save_dir) np.save(save_dir + 'LEVIR_1_1.npy', res0) np.save(save_dir + 'label_1.npy', res1)

numpy_file0 = np.load('datasets/LEVIR_1_1.npy') numpy_file1 = np.load('datasets/label_1.npy')

io.savemat('datasets/LEVIR_1_1.mat', {'data': numpy_file0}) io.savemat('datasets/label_1.mat', {'data': numpy_file1}) print('Done.')

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

TipsF commented 5 months ago

谢谢大佬,问题都解决了!还有一个小问题想请教:这篇论文的思路是在普通遥感图像上做训练,然后迁移到高光谱上来吗?