参考博客:SwinUnet官方代码训练自己数据集(单通道灰度图像的分割)_swinunet代码-CSDN博客
TransUnet官方代码测试自己的数据集(已训练完毕)_transunet测试集-CSDN博客
TransUnet官方代码训练自己数据集(彩色RGB3通道图像的分割)_transunet训练自己的数据集-CSDN博客
【swinUnet官方代码测试自己的数据集(已训练完毕)】_swinunet训练自己的数据集-CSDN博客
参考这个博主TranUnet和SwinUNet的四篇博客,很赞的教程!
①我用的是医学图像的二分类数据(image和label的命名要一一对应)
npz文件的制作参考swinunet这篇
代码:
import os
import glob
import cv2
import numpy as np
def npz():
# 图像路径
image_path = "/*.png"
# 输出npz文件路径
output_path = ""
for i, img_path in enumerate(glob.glob(image_path)):
#
image = cv2.imread(img_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
label_path = img_path.replace('image', 'label')
label = cv2.imread(label_path, flags=0)
# 标签要归一化
label = label / 255.0
#
np.savez(output_path + str(i), image=image, label=label)
print('------------', i)
print('ok')
npz()
------------------
②除了改博主博客里的部分代码,还需要参考这篇博客改对应的部分
③我遇到的有评论区的问题也有评论区没有的问题,都是能够解决的,多翻评论区或者直接百度搜索,或者chatgpt,全部都能解决de!要相信互联网的力量!!
④最后预测的问题,预测结果全为0,注意检查npz文件和txt文件是不是按顺序一一对应的,我的npz之前写进txt里面是乱序的,导致出来的指标全部为0(尊的很无语的问题),还有就是要将label的像素归一化,最后预测的可以直接保存黑色的图(只要指标算出来不是0,图一般都是有像素值的)然后自己再转一下0-255就可以看到预测的图了,或者直接跟着博主改(我怕再报错就直接自己重新转了一下像素)
⑤没有会员的同学(博主那边下载要会员)可以自己挂梯子去下载预训练模型,我下载了好多次才成功
⑥需要安装的一些库(每个人环境不一样,直接运行代码缺哪个pip哪个就好):ml_collections,medpy,tensorboardX,tqdm,
⑦在utils.py中(两个网络都需要)
错误:NameError: name 'Image' is not defined
解决方法:from PIL import Image
⑧swinunet中
FileNotFoundError: [Errno 2] No such file or directory: './data/Synapse/test_vol_h5/test_vol_h5/0.npz'不知道哪里的问题test_vol_h5文件夹路径拼接重复了,有两个,我直接按错误提示改文件夹,也可以直接找代码的对应部分改,只要读得到文件就可以
⑨swinunet中
FileNotFoundError: [Errno 2] No such file or directory: './data/Synapse/test_vol_h5/test_vol_h5/.npz'
是因为txt文件中多了一行空格,删掉空格就可以了
⑩swinunet的预训练权重只有224*224的,我的图片数据是128*128,我是用等比缩放的方式处理了图片再输进去网络,不确定会不会对结果有影响,也可以试试不使用预训练权重来跑