网络知识 娱乐 腾讯云GPU服务器进行深度学习之目标检测初体验

腾讯云GPU服务器进行深度学习之目标检测初体验

配置如下

  1. CPU: 20核 80G
  2. GPU: NVIDIA Tesla T4 16G
  3. OS: CentOS Linux release 7.6.1810

第一步 先到安全组开通22端口

一键放通端口.png
打开ssh端口.png

第二步 用你熟悉的ssh工具登录(xshell,putty,堡塔)

  • 不喜欢用root乱搞,还是建个用户
  • 添加密码
  • 添加sudoers
sudoers.png
lighthouse.png

第三步 照着葫芦画葫芦,查看参数和安装驱动

  1. 内存高高的,硬盘够够的
    内存和硬盘.png
  2. 价值上万的显卡信息,大概长这个样子吧 https://item.jd.com/62176433104.html
    显卡.png
  3. NVIDIA的官网download驱动 https://www.nvidia.com/download/index.aspx?lang=en-us#
  4. 为了迎合pytorch,只能装个10.2
    NVIDIA_Driver.png
    - wget下载https://us.download.nvidia.com/tesla/440.118.02/NVIDIA-Linux-x86_64-440.118.02.run
- sudo sh 安装
- 按照命令OK...OK...
- nvidia-sim查看下显卡,已发现0号GPU
查看nvidia-sim.png
nvidia-sim.png
  1. NVIDIA安装的Cuda10.2是包括 CUDA 程序的编译器、IDE、调试器,不是我们神经网络训练所需要的CUDA,所以上面看看就也可以了
  2. 补充安装下Cuda10.2:conda install cudatoolkit=10.2

第四步 安装anaconda就可以使用我喜欢的jupyter

 - wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh
 - sh安装 Anaconda3-2021.11-Linux-x86_64.sh
 - 放通jupyter端口8888,别忘了加头“TCP:”(与轻量的配置还不一样)
jupyter端口.png

第五步 进入正题,安装pytorch,tensorflow

  • 选择对口的PyTorch版本、Compute Platform: https://pytorch.org/get-started/locally/
    PyTorch.png
  • 拷贝命令执行
  • 使用清华源提升速度 pip3 install torch torchvision torchaudio tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 用torch在本机的cuda上定义个变量
torch.JPG
  • 有时候还需要cuDNN,cuDNN是一个SDK,是一个专门用于神经网络的加速包。在https://developer.nvidia.com/rdp/cudnn-archive#a-collapse742-10 中查找对应Cuda版本的cuDNN
    需要登录下载cudNN.JPG
  • 有tar版本和rpm版本,都下载和安装试一下
  • wget https://developer.nvidia.com/compute/cudnn/secure/8.3.3/local_installers/10.2/cudnn-linux-x86_64-8.3.3.40_cuda10.2-archive.tar.xz
  • wget https://developer.nvidia.com/compute/cudnn/secure/8.3.3/local_installers/10.2/cudnn-local-repo-rhel7-8.3.3.40-1.0-1.x86_64.rpm
  • tar包都是lib库和h文件
    cuDNN-lib.png
  • rpm包在 /var 路径解压了一些文档
    cuDNN-rpm.png
  • 安装libcudnn8的3个rpm包 sudo rpm -ivh libcudnn8-samples-8.3.3.40-1.cuda10.2.x86_64.rpm libcudnn8-devel-8.3.3.40-1.cuda10.2.x86_64.rpm libcudnn8-8.3.3.40-1.cuda10.2.x86_64.rpm
    cuDNNV8.3.3.png

第六步 进入正题,安装paddlepaddle框架和cudatoolkit10.2

  • 进入飞桨官网https://www.paddlepaddle.org.cn/
  • 根据本机参数选择对应版本,飞桨不仅安装框架还提供对应的cudatoolkit一并安装,否则飞桨的项目可能训练中出现模型错误
飞桨框架-CUDA10.2.png
error_gaussian_random.png

第七步 开始操练,用飞桨的PaddleDetection框架做个火灾烟雾识别的物体检测训练(以下完全模仿)

1. 码云上下载模型框架

!git clone https://gitee.com/PaddlePaddle/PaddleDetection.git -b develop

"""

Cloning into 'PaddleDetection'...

remote: Enumerating objects: 23165, done.

remote: Counting objects: 100% (3635/3635), done.

remote: Compressing objects: 100% (1765/1765), done.

remote: Total 23165 (delta 2578), reused 2667 (delta 1863), pack-reused 19530

Receiving objects: 100% (23165/23165), 261.63 MiB | 11.14 MiB/s, done.

Resolving deltas: 100% (17127/17127), done.

"""

2. 下载相关依赖包

cd /home/lighthouse/Fire_Smoke/PaddleDetection

! pip install -r requirements.txt

requirements.png

3. 下载VOC格式的烟雾火苗图像和标签数据

https://bj.bcebos.com/v1/ai-studio-online/9578810e94ad496297dac9d94dc7ddf86ef373f0399245fb847e0c4b733bedfe?responseContentDisposition=attachment%3B%20filename%3Dfire_smoke.zip&authorization=bce-auth-v1%2F0ef6765c1e494918bc0d4c3ca3e5c6d1%2F2021-11-25T03%3A58%3A19Z%2F-1%2F%2F2d1b2883dd6a80ffcbf49e10c69720d4d5a8857e08d1b32fb084284571102b2f

4. 解压缩数据文件

! unzip fire_smoke.zip

5. 设置ppyolov2残差神经网络配置文件,对比的两台参数一致

config_path = '/home/lighthouse/Fire_Smoke/PaddleDetection/configs/ppyolo/ppyolov2_r50vd_dcn_voc.yml'

6. 启动训练

!export CUDA_VISIBLE_DEVICES=0 # 配置单卡,如果大家环境有多卡可以配置为 0,1,2,3

!python /home/lighthouse/Fire_Smoke/PaddleDetection/tools/train.py -c $config_path

下面是Tesla T4 与 Tesla V100 对比训练情况(都训练10 epchos,batchsize = 6)

train1.png
train2.png
end1.png
end2.png
  • T4用时(每轮喂1000个):2小时09分26秒; loss:36.82
  • V100用时(每轮喂500个):1小时52分09秒; loss:39.76
其中,Tesla V100是PaddlePaddle-GPU-2.1.3 Cuda10.1

7. 模型评价

weight_path = '/home/lighthouse/Fire_Smoke/output/ppyolov2_r50vd_dcn_voc/model_final.pdparams'

!python /home/lighthouse/Fire_Smoke/PaddleDetection/tools/eval.py -c $config_path -o weights=$weight_path

下面是Tesla T4 与 Tesla V100 对比评价情况

pred1.png
pred2.png
  • T4的mAp:16.16%
  • V100的mAp:15.03%
测试数据评价来看,普遍精度不高,而且V100甚至比T4还低

8. 用一张火灾图片做预测预测

img_path = '/home/lighthouse/Fire_Smoke/fire_work.png' # 待预测图片路径

thresh = 0.2 # 设置预测的阈值,可以根据实际情况进行调整,设置过大,可能预测结果为空,即图片没有任何的检测结果

!python /home/lighthouse/Fire_Smoke/PaddleDetection/tools/infer.py -c /home/lighthouse/Fire_Smoke/PaddleDetection/configs/ppyolo/ppyolov2_r50vd_dcn_voc.yml -o weights=$weight_path -o use_gpu=True --draw_threshold=$thresh --infer_img=$img_path

左边是Tesla T4 右边是Tesla V100预测情况

T4.png
V100.png

结论

  • 6万多的显卡比1万多的显卡:节省时间约20分钟
  • 6万多的显卡比1万多的显卡:训练精度更高
  • 6万多的显卡比1万多的显卡:评价精度更低
  • 6万多的显卡比1万多的显卡:多检测出一处火源