当前位置:   article > 正文

Pytorch虚拟环境搭建、训练unet、vit、yolov3_assert os.path.exists(img_path), "file: '{}' dose

assert os.path.exists(img_path), "file: '{}' dose not exist.".format(img_pat

一、搭建虚拟环境 

手把手教你在win10下搭建pytorch GPU环境(Anaconda+Pycharm) - 老潇的摸鱼日记 - 博客园 (cnblogs.com)https://www.cnblogs.com/victorxiao/p/13512258.html【扫盲】PyTorch环境配置_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1m4411m7uZ?spm_id_from=333.999.0.0

 cuda安装成功:

接下来把cudnn的bin、include、lib 这三个文件夹直接复制到cuda里面的cudnn文件夹中:

 接下来配置环境变量:

 

Anaconda prompt下安装:

创建虚拟环境:

conda create --name pytorch_gpu python=3.7

激活虚拟环境pytorch_gpu:

conda activate pytorch_gpu

添加清华镜像源:

 

i 编辑  Esc :wq退出并保存

  1. channels:
  2. - defaults
  3. show_channel_urls: true
  4. default_channels:
  5. - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  6. - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  7. - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  8. custom_channels:
  9. conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  10. msys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  11. bioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  12. menpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  13. pytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  14. simpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

 我的

 

 cudatookit = 10.2  (windows 装的是11.3)

  1. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  2. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  3. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  4. conda config --set show_channel_urls yes
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

NVIDIA RTX A5000对应cuda11.0

  1. # CUDA 11.0
  2. conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=11.0 -c pytorch

 问题:cuda版本太旧,显卡太新,cuda得11以上,此处选择11.3

(157条消息) 解决pytorch capability sm_86 is not compatible with the current PyTorch installation 问题_a563562675的博客-CSDN博客_cuda sm86对应pytorch版本icon-default.png?t=M85Bhttps://blog.csdn.net/a563562675/article/details/121656894 

 pip 安装cuda11.3版本pytorch的命令

pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

如果提示:

则安装10.2版本   cudatookit=10.2

结果如下:

 

 可能遇到:

可能遇到cuda版本和pillow版本不一致的问题,将pillow从9.0.1更新到9.1.0就好了:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade pillow

超出内存,修改如下:

二、unet:

训练:

数据集:

修改train.py中的num_workers=0

如果cuda显存不足:减小批处理大小

训练的过程中他会生成一个记录每一次epoch的结果(results20220402),包括有动态调优的学习率,会发现,损失基本上是越来越小的,IOU是越来越大的,代表预测的图像和本身标注的掩码图的相似度是越来越高的,最后会记录一个最佳的模型参数,作为最终的结果去预测。

预测:

接下来做预测,右图为测试图像的标注好的图像,左图为预测后的图像,大的血管还是能够得到保留,一些细小的血管学习效率不好,网络性能有待提升。

三、vision transformer

训练:

数据集:

选择好Prompt终端的虚拟环境:

 

 

 注意修改以下:

 

 

 预测:

将预测批量输出到output_predict文件夹下:

  1. import os
  2. import json
  3. import torch
  4. from PIL import Image
  5. from torchvision import transforms
  6. import matplotlib.pyplot as plt
  7. from vit_model import vit_base_patch16_224_in21k as create_model
  8. def readimg():
  9. path_predict = 'F:\\python\\visiontr\\test_image'
  10. path_predict_list = []
  11. for i in os.listdir(path_predict):
  12. path_img = os.path.join(i)
  13. # path_img = os.path.join(path_predict,i)
  14. path_predict_list.append(path_img)
  15. return path_predict_list
  16. # abc = readimg()
  17. # print(abc)
  18. def main(img_name):
  19. device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
  20. data_transform = transforms.Compose(
  21. [transforms.Resize(256),
  22. transforms.CenterCrop(224),
  23. transforms.ToTensor(),
  24. transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])])
  25. # load image
  26. img_path = 'F:\\python\\visiontr\\test_image\\' + img_name
  27. # print(img_path)
  28. assert os.path.exists(img_path), "file: '{}' dose not exist.".format(img_path)
  29. img = Image.open(img_path)
  30. plt.imshow(img)
  31. # [N, C, H, W]
  32. img = data_transform(img)
  33. # expand batch dimension
  34. img = torch.unsqueeze(img, dim=0)
  35. # read class_indict
  36. json_path = 'F:\\python\\visiontr\\class_indices.json'
  37. # json_path = './class_indices.json'
  38. assert os.path.exists(json_path), "file: '{}' dose not exist.".format(json_path)
  39. json_file = open(json_path, "r")
  40. class_indict = json.load(json_file)
  41. # create model
  42. model = create_model(num_classes=3, has_logits=False).to(device)
  43. # load model weights
  44. model_weight_path = "F:\\python\\visiontr\\weights\\model-9.pth"
  45. # model_weight_path = "./weights/model-9.pth"
  46. model.load_state_dict(torch.load(model_weight_path, map_location=device))
  47. model.eval()
  48. with torch.no_grad():
  49. # predict class
  50. output = torch.squeeze(model(img.to(device))).cpu()
  51. predict = torch.softmax(output, dim=0)
  52. predict_cla = torch.argmax(predict).numpy()
  53. print_res = "class: {} prob: {:.3}".format(class_indict[str(predict_cla)],
  54. predict[predict_cla].numpy())
  55. plt.title(print_res)
  56. for i in range(len(predict)):
  57. print("class: {:10} prob: {:.3}".format(class_indict[str(i)],
  58. predict[i].numpy()))
  59. output_path = r'./output_predict'
  60. if not os.path.exists(output_path):
  61. os.mkdir(output_path)
  62. plt.savefig('./output_predict/' + img_name)
  63. # plt.show()
  64. if __name__ == '__main__':
  65. abc = readimg()
  66. for i in range(len(abc)):
  67. main(abc[i])

结果如下:

四、yolov3

训练:

数据集:

训练:

 

预测:

修改生成的权重:

 

五、CPU训练

如果显卡算力太低且pytorch版本过高则:

换用cpu进行训练:

改为

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/92638
推荐阅读
相关标签
  

闽ICP备14008679号