SwinUnet官方代码的数据集是.npz格式的,训练自己数据集搞了我几天。md。
1.原图和mask大小要一致,而且都是要单通道图片,如果是3通道的图片用下面代码转化一下成单通道。我只会一张张图片转换,如果有人会批量转换,可以在评论区发一下啊,大家一起学习。
img = cv2.imread('./data/DRIVE/test/images/21.png') # 读取图片
gray_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # 将RGB图像转换为灰度图像
print(gray_img)
cv2.imwrite('211.jpg', gray_img) # 保存灰度图像为文件
首先搞四个文件夹,test—npz和train-npz空着就行。
def npz():
# 代码只是用2分类
#原图像路径
path = r'./images/*.png'
#放npz文件路径
path2 = r'./train_npz\\'
for i,img_path in enumerate(glob.glob(path)):
image = cv2.imread(img_path)
image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
label_path = img_path.replace('images','labels')
label = cv2.imread(label_path,flags=0)
label[label!=255]=0
label[label==255]=1
np.savez(path2+str(i),image=image,label=label)
print('------------',i)
然后就会生成对应的npz文件。
我只会弄2分类的啊,如果有人会弄多分类的,也可以在评论区发一下啊,大家一起学习。
用下面代码生成npz文件对应的txt文件
def write_name():
#npz文件路径
files = glob.glob(r'./test\*.npz')
#txt文件路径
f = open(r'./test.txt','w')
for i in files:
name = i.split('\\')[-1]
name = name[:-4]+'\n'
f.write(name)
然后txt文件里面就会生成这个
剩下的,把读取数据集里面的路径改一下就好了