git代码:
TransUNet/datasets/README.md at main · Beckschen/TransUNet (github.com)
参考文章:TransUNet模型复现_transunet复现-CSDN博客
1.下载 Google 预训练的 ViT 模型(其实 就用的这一个)
2.准备数据:参考文章里面有别人贴的
3. 环境:使用python=3.7准备一个环境 pip install -r requirements.txt
注意:目前最新的Simple ITK不支持py3.7,用pip install SimpleITK==2.0.0
4,代码结构:
- 整体结构
- 本次用的vit预训练权重
- 数据集的格式
5.训练train.py:
报错1:找不到vit权重文件
FileNotFoundError: [Errno 2] No such file or directory:'../model/vit_checkpoint/imagenet21k/R50+ViT-B_16.npz'
解决1:跳转函数,修改vit_seg_config:贴绝对路径
报错2:FileNotFoundError: [Errno 2] No such file or directory:'../data/Synapse/train_npz/case0023_slice036.npz
解决2:图1:数据参数:改为绝对路径。
图二:将:parser.add_argument('--root_path', type=str, default='./data/Synapse/train_npz', help='root dir for data')修改见图
报错3:RuntimeError: CUDA out of memory. Tried to allocate 74.00 MiB (GPU 0; 10.75 GiB total capacity; 9.61 GiB already allocated; 13.62 MiB free; 9.92 GiB reserved in total by PyTorch)
解决3:显存不足够,减少bs,我根据我的实际情况改为:python train.py --batch_size 15
查看GPU:nvidia-smi(略)润:
所有训练完的.pth文件会保存在新产生的model文件,我改了好几次btachsize:最优秀的,get!
6.测试test.py
参考文章:TransUnet官方代码测试自己的数据集(已训练完毕)_transunet测试-CSDN博客
图一:修改test.py:除了test_vol_h5,地址要放对,其他三个参数与train文件一致(此图为修改后)
图二:data_config:改为绝对路径
报错1:No such file or directory: '../model/TU_Synapse224/TU_pretrain_R50-ViT-B_16_skip3_bs24_224/epoch_29.pth'
解决1:我没有用bs=24,我用的bs=15,所以,没有这个24权重文件,使用训练后新产生的15的权重文件
报错2:
解决2:要把模型名称与train改一样了!就上面修改test的文件,与train的模型名称要一致。
润test.py:
最后:新生成记录文件
mean_dice
表示平均 Dice 系数,用于度量模型的图像分割性能。Dice 系数越接近 1,表示分割结果与真实标签的重叠越好,性能越高。
mean_hd95
表示平均 95% Hausdorff 距离,也用于评估图像分割性能。95% Hausdorff 距离越小,表示分割结果与真实标签的接近度越高,性能越好。
PS:不要迷信GPT4,感谢大家先验知识,菜鸟分享。努力摆菜。