faster-rcnn记录

发布于:2023-01-09 ⋅ 阅读:(1497) ⋅ 点赞:(0)

一、安装与环境配置

1、cuda&cudnn踩坑记录

①版本选择

一般会首先安装cuda,但是应考虑电脑原有的python版本,pythonpytorch版本的对应关系:

cudapytorch的版本也有对应关系:

以本次安装来说,电脑原有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.1cudnn 7.6.5,电脑C盘较小,安装在了D盘)

2、pytorch的安装

①虚拟环境

conda create -n xxxx python=xxxx
conda activate xxxx
conda deactivate

②安装torchtorchvision

深度学习环境配置2——windows下的torch=1.2.0环境配置_Bubbliiiing的博客-CSDN博客

选择版本为torch 1.4.0torchvision 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

以上命令会同时下载numpyPillow

但是还有其他依赖库需要安装(一个博主的建议),虽然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环境问题

本次使用的IDEvs 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版本不对,非常奇怪。

就把之前的torchtorchvision卸载,重装了torch==1.5.0torchvision==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 = 4Unfreeze_batch_size = 2的情况下电脑直接黑屏。


以上的训练前准备白忙活了,改成Freeze_batch_size = 42Unfreeze_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函数也变得更加安全”