【SCRDet++代码调试】windows下调试(重点是“编译 setup.py(rotate) tensorflow版”)

一、环境要求

【论文】
【github代码位置】

显卡内存一定要大于等于11G!!! 如果没有达到,就不要尝试运行代码了……
在这里插入图片描述

二、硬件环境配置

为了使深度学习任务能够更高效地完成,通常使用图形处理器(Graphics processing unit,GPU)来并行处理深度学习中的计算任务。

在台式机GPU市场上,NVIDIA、AMD、Intel占据主导地位。这里使用NVIDIA公司型号为NVIDIA GeForce xxx 的GPU来完成任务。

在使用GPU之前,需要安装必要的驱动程序和环境等。

【说在前面的话】

听说,安装完 GPU 驱动以后,直接在 Anaconda 中安装 tensorflow-gpu 会自动安装匹配的 CUDA Toolkit、cdDNN?

如果有朋友尝试真的可以,麻烦告诉小弟一下!


参考:
1. 为什么深度学习和神经网络需要GPU?
2. 什么是显卡 - 图形处理器和显卡什么区别和联系
3. 英伟达(Nvidia)的图形处理器(GPU)怎样分类的,分别面向什么市场?
4. Win10 Anaconda 下 TensorFlow-GPU 环境搭建详细教程(包含CUDA+cuDNN安装过程)


1、安装 NVIDIA 图形驱动程序

NVIDIA 图形驱动程序是用来驱动 NVIDIA 图形处理器的程序,可在 NVIDIA 官网通过自动更新手动搜索的方式进行安装(推荐先手动搜索,再自动更新)。

【官方:NVIDIA 驱动程序下载】

2、安装 CUDA Driver

CUDA Driver 是 CUDA 工具包兼容的驱动程序。

CUDA(Compute Unified Device Architecture),是 NVIDIA 推出的运算平台/并行计算框架,只能用于 NVIDIA 旗下的 GPU,只有安装这个框架才能够进行复杂的并行计算(还有一个 cuDNN,是针对深度卷积神经网络的加速库)

安装 CUDA Toolkit 的时候,会默认安装 CUDA Driver


放两个帮助理解的解释:

1. 把 CUDA 想象成 NVIDIA 公司提供的一个计算平台,在这个平台上,可以使用 NVIDIA 公司提供的各种便捷计算工具来进行计算,不需要自己再来开发这些工具。
2. “显卡”是硬件层面的,好比汽车,需要“显卡驱动”这个“人”来驾驶,而 CUDA 就是 NVIDIA 牌汽车上的驾驶辅助系统,帮助驾驶。

显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?


3、CUDA Toolkit

  1. 【根据自己的 NVIDIA 驱动程序版本,选择对应的 CUDA Toolkit 版本】
    由于SCRDet++ 代码指定了 tensorflow 版本,因此需要根据 tensorflow 版本 选择 对应的 CUDA Toolkit 版本同时还要保证自己的 NVIDIA 驱动程序版本支持该CUDA Toolkit 版本(把NVIDIA 驱动程序升级到最新版,就不需要考虑这个问题了)。【windows:tensorflow 版本 与 CUDA 版本对应】
  2. 【官网-CUDA Toolkit 10.0 下载】

附:
1. 【BUG修复】:安装 CUDA 时,出现 “此应用无法在你的电脑上运行”的错误提示
2. 需要安装VS,否则可能无法正常进行


4、cuDNN

安装好 CUDA Toolkit 后,需要安装一个专门为深度学习计算设计的软件库 cuDNN,里面提供了很多专门的计算函数,如卷积等。
【根据 tensorflow 版本 选择 对应的 cuDNN 版本】(下载 cuDNN 需要在 NVIDIA 上注册账号,免费的。登陆账号后才能下载)

三、软件环境配置

1、安装 Anaconda

Anaconda 官网,下载安装即可

2、Anaconda 中配置 tensorflow 环境

conda create --name tf_gpu_131 python=3.5.0

conda activate tf_gpu_131

pip install tensorflow-gpu==1.13.1

#还需要安装一些包,运行时按错误提示补充安装即可
opencv:pip install opencv-python
PILL:pip install pillow
tfplot:pip install tensorflow-plot

测试是否能用:
import tensorflow as tf
print(tf.test.is_gpu_available())


附:
1. 【提示错误“ImportError: DLL load failed: 找不到指定的模块”解决办法】
2. 【BUG修复】:linux 系统,pip install tensorflow-plot 出错


四、准备数据集、权重文件

按照【官方README】,需要进行如下操作:

1、Pretrain weights

下载 resnet50_v1, resnet101_v1 pre-trained models ,放在 data/pretrained_weights(地址在README中)

2、Compile

打开libs/box_utils/cython_utils发现目录下有一个“Makefile”帮助文件,接下来需要按照文件中的提示进行。

执行python setup.py build_ext --inplace,会出现错误OSError: The nvcc binary could not be located in your $PATH. Either add it to your path, or set $CUDAHOME

因为原版是在linux中使用的,在linux里可以直接编译,在windows下需要修改setup.py
【参考】:win10编译 Fast R-CNN 所需的setup.py(rotate) tensorflow版


linux 系统上,如果python setup.py build_ext --inplace报错,可以尝试python setup.py build_ext --inplace --force


3、Make tfrecord

  1. 下载 DOTA 数据集
    【下载地址1】
    【下载地址2】

  2. 执行data_crop.py,按照错误提示修改文件位置,大概位置如图。

cd $PATH_ROOT\data\io\DOTA
python data_crop.py

在这里插入图片描述

  1. 执行convert_data_to_tfrecord.py,执行过程如下图。(VOC_dir 需要换成上一张图片中save_dir
cd $PATH_ROOT/data/io/  
python convert_data_to_tfrecord.py --VOC_dir='/PATH/TO/DOTA/' --xml_dir='labeltxt' --image_dir='images' --save_name='train' --img_format='.png' --dataset='DOTA'

在这里插入图片描述

五、Multi-gpu train

在pycharm中设置好interpreter,之后运行multi_gpu_train.py。出现了这个错误,原因是【显卡内存不够】……(需要显卡的内存是11G,我的电脑是2G……)

在自己电脑上配置了半天,到了最后一步,决定转战Google免费云端环境Colaboratory……

在这里插入图片描述


运行完突然发现 C盘 少了15G……,所以,附一个:【Intellij或者pycharm的缓存目录很大,如何从C盘移动出去?】


六、Test

python test_dota_ms.py --test_dir='/PATH/TO/IMAGES/' --gpus=0,1,2,3,4,5,6,7 -s (visualization, optional) -ms (multi-scale test, optional)

在执行上述语句之后,可能会出现,以下错误:
ValueError: Shape must be rank 0 but is rank 1 for ‘cond/cond/Switch’ (op: ‘Switch’) with input shapes: [6], [6].,解决方法见链接。

附:可能出现的错误及解决方法

  1. 【BUG修复】:安装 CUDA 时,出现 “此应用无法在你的电脑上运行”的错误提示
  2. 【提示错误“ImportError: DLL load failed: 找不到指定的模块”解决办法】
  3. 【BUG修复】:linux 系统,pip install tensorflow-plot 出错
  4. ‘‘tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[?]’’ 如果是直接 git 的代码,出现了这个问题,一般换一个好一点的显卡(显卡内存大一点就可以解决)
  5. ValueError: Shape must be rank 0 but is rank 1 for ‘cond/cond/Switch’ (op: ‘Switch’) with input shapes: [6], [6].
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值