一、安装与环境配置
1、cuda
&cudnn
踩坑记录
①版本选择
一般会首先安装cuda
,但是应考虑电脑原有的python
版本,python
与pytorch
版本的对应关系:
而cuda
与pytorch
的版本也有对应关系:
以本次安装来说,电脑原有python
版本为3.8,不改动python
版本的前提下,应选择的torch
版本应为1.4.0以上,对应torchvision
版本为0.5.0。
则对应的cuda
版本应为10.1以上!
版本一定先看清...
另外也要考虑电脑本身的显卡驱动版本,命令行输入查看:
cd C:\Program Files\NVIDIA Corporation\NVSMI
nvidia-smi
与之对应的`cuda`版本:
②预装VS
不装VS
似乎会引发许多问题,因此应预装,本次安装的是VS 2017
及其C++
组件。
③具体安装过程及安装结果验证
python教程:安装cuda10.1以及cudnn_北极小小猪的博客-CSDN博客_cuda10.1 cudnn
(本次安装选择了cuda 10.1
和cudnn 7.6.5
,电脑C盘较小,安装在了D盘)
2、pytorch
的安装
①虚拟环境
conda create -n xxxx python=xxxx
conda activate xxxx
conda deactivate
②安装torch
和torchvision
深度学习环境配置2——windows下的torch=1.2.0环境配置_Bubbliiiing的博客-CSDN博客
选择版本为torch 1.4.0
和torchvision 0.5.0
,可以直接通过官网安装它们(下载速度亲测很快):
# CUDA 10.1
pip install torch===1.4.0 torchvision===0.5.0 -f https://download.pytorch.org/whl/torch_stable.html
以上命令会同时下载numpy
和Pillow
但是还有其他依赖库需要安装(一个博主的建议),虽然Anaconda
预装了这些包,但是新的虚拟环境还是再装一遍:
scipy==1.2.1
numpy==1.17.0
matplotlib==3.1.2
opencv_python==4.1.2.30
tqdm==4.60.0
Pillow==8.2.0
h5py==2.10.0
这些包安装时用镜像!
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
格式(包名前面带空格!):
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ 包名
③验证安装结果
torch
安装成功,且可以使用GPU
加速。
二、预测
使用GitHub
上的项目:GitHub - bubbliiiing/faster-rcnn-pytorch: 这是一个faster-rcnn的pytorch实现的库,可以利用voc数据集格式的数据进行训练。 使用预训练权重先进行一个简单的预测,主干特征提取网络为ResNet50
1、VS Code环境问题
本次使用的IDE
是vs code
,但是发现无法导入cv2
包,明明已经安装了opencv-python
库,cmd
命令行中却可以导入:
发现是因为Anaconda
多环境导致的 ,默认VS Code
里的默认终端是powershell
,但是powershell
不能执行conda activate
,所以Python
无法切换到需要的环境。
解决方法如下:
vscode 提示import cv2 ModuleNotFoundError: No module named ‘cv2‘解决方法,亲测实用!_livercy的博客-CSDN博客
但是为什么只有cv2
会出问题,而numpy
之类的库不会呢?目前还未可知。
而且每重启一次VS Code
,就要再重新配置一遍,而且很多库会突然无法使用,需要在终端再pip install
一下(虽然install
之后又提示“Requirement already satisfied
”,非常诡异)这个问题还未解决,将来换Pycharm
试试看。
2、torchvision
版本问题
又是版本问题,运行的时候出现了“RuntimeError: No such operator torchvision::nms
"的报错,原因是torchvision
版本不对,非常奇怪。
就把之前的torch
和torchvision
卸载,重装了torch==1.5.0
和torchvision==0.6.0
的版本,就不再报错。
找几张图片试了一下:
三、本地训练
在网上下载了VOC07+12
的数据集,使用VOC
格式进行训练。
1、日常改bug
库缺失的小bug:“ImportError: TensorBoard logging requires TensorBoard with Python summary writer installed. This should be available in 1.14 or above
”,少了1.14版本以上的TensorBoard
,装上就是了。
还有库的版本问题:“TypeError: Descriptors cannot not be created directly
”,给出的修改提示为:
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
1. Downgrade the protobuf package to 3.20.x or lower.
2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
遵循第一条提示,降低protobuf
版本:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple protobuf==3.19.0
2、参数调整
本次实验的电脑显卡是MX150
,显存只有2G,需调整一下训练参数。Freeze_batch_size = 4
及Unfreeze_batch_size = 2
的情况下电脑直接黑屏。
以上的训练前准备白忙活了,改成Freeze_batch_size = 42
及Unfreeze_batch_size = 1
,倒是没有直接黑屏,但还是提示“RuntimeError: CUDA out of memory
”,现在这台机器看来只能止步于测试。看网上说可以用谷歌的colab
,待会儿试试看。
四、Colaboratory
colab
免费版提供一块Tesla T4的GPU,连续运行的时间限制为12小时,关闭计算机让它自己在云端训练是pro+
才能提供的服务。
1、使colab
能访问Google Drive
基本流程是这个:
利用Google的CoLab来跑Faster-Rcnn pytorch版_w1520039381的博客-CSDN博客
不过其中有个client错误,如下解决:
colab挂载谷歌云盘出错_小英雄Dui的博客-CSDN博客
2、长期不操作自动掉线问题
首先在Colab
界面打开控制台(快捷键Ctrl+Shift+I
),然后复制以下代码(这段代码的功能是设置每隔60000ms也就是1min自动点击一下Colab
的“连接”操作:
function ClickConnect(){
console.log("Working");
document.querySelector("colab-toolbar-button#connect").click()
}
setInterval(ClickConnect, 60000)
把上面这段代码添加到下图所示的位置 ,然后敲一下回车键即可
还是有bug,这次显示“ TypeError: load() missing 1 required positional argument: 'Loader'”,看网上说原因是:
“YAML 5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader,通过默认加载器(FullLoader)禁止执行任意函数,该load函数也变得更加安全”