复现一下TransUNet的实验,数据集是汽车部件,记录一下bug
https://blog.csdn.net/qq_37652891/article/details/123465472?spm=1001.2014.3001.5506
1.转化数据集,将images中的图像和labels中的标签生成一个.npz文件需要安装cv2库
先在控制台中更新pip,使用清华源非常快,否则速度很慢会报错安装失败。
若不更新直接安装可能会报错,不知道为什么
python -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
然后再安装opencv-python就可以了
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple`
2.转化数据集的.py文件报错,需要在代码最后加上即可
if __name__ == '__main__':
npz()
3.自己写一个函数读取train_npz中所有的文件名称,然后将文件名称写入train.txt文件
import os
from fnmatch import fnmatch
# 修改成自己的路径
baseName = r"D:/APERSONAL/TransUNet-main/TransUNet-main/data/Synapse/train_npz"
print(baseName, '--------')
txtdata = open('D:/APERSONAL/TransUNet-main/TransUNet-main/lists/lists_Synapse/train.txt', 'w')
print(txtdata, '--------')
for root, dirs, files in os.walk(baseName):
for file in files:
if fnmatch(file, "*npz"):
name = file.split('.')[0]
print(name, '--------')
txtdata.write(name + "\n")
os.path.join(baseName)
4.No such file or directory: '…/model/vit_checkpoint/imagenet21k/R50+ViT-B_16
解决方法:把vit_seg_configs.py中的…\model\vit_checkpoint\imagenet21k\R50+ViT-B_16.npz改成绝对路径。源码的训练权重包名可能不太一样,我们这里也要修改成R50+ViT-B_16。(源码好像是没有写R50+这几个字,test.py里还要改一下)
但我这边还是报了错,指向的是train.py的net.load_from(weights=np.load(config_vit.pretrained_path)这行,看来还是预训练权重的问题。。
5.最终方法,直接注释掉#net.load_from(weights=np.load(config_vit.pretrained_path))#,不使用作者提供的预训练权重,但效果可能会比较差。
先设置了max_epoch=1,batch_size=2试一试,运行train.py,可以运行(能跑就行,哈哈哈)
6.把测试集也做了,跟着改代码,这里一路畅通没有报错。
https://blog.csdn.net/qq_37652891/article/details/123470578?spm=1001.2014.3001.5506
效果看来一言难尽哈哈哈哈:
但总算是大致完成了,后续再尝试换更好的设备训练、调参吧