GPU服务器上的FasterRCNN-tf版配置和demo运行

本文详细记录了在GPU服务器上配置FasterRCNN-tf的过程,包括SSH连接服务器、环境配置、项目布置与修改、安装COCO数据库、下载预训练模型并运行DEMO。在DEMO运行中,由于服务器命令行环境,对matplotlib进行了特殊处理,以保存而非显示结果图片。最后,通过FileZilla进行文件管理,下载测试结果。
摘要由CSDN通过智能技术生成

在服务器上配置FSRCNN的运行

之前的工作以及demo以及实验都是在实验室的PC上完成的,由于硬件的限制,缺少GPU,无法进行接下来的工作,所以进行项目迁移,对整个项目迁移到GPU服务器上进行,在此记录整个的迁移和配置过程

服务器连接

由于安全性保护问题,实验室的GPU服务器连接只能使用ssh登录的方式来进行。ssh登录的方式并不对本机的操作系统作任何要求,无论是Win10,Linux还是MacOS都可以直接使用,相当于通过ssh远程连接到服务器的操作系统当中。当然前提是服务器和本机已经配置了ssh。
在Win10中为开发者准备了最基础的命令行工具,通过右击左下角的win标志,选择Windows PowerShell即可打开
在Linux(Ubuntu)或者MacOS中,直接打开终端\命令行,输入ssh登录指令即可
通过ssh登录的方式如下:
ssh -p [port] root@233.233.233.233
以上的登录命令中,ssh是登录方式,-p [port] 是指定ssh的登录窗口,root是登录用户名,视自己情况修改,233.233.233.233为服务器IP,视情况修改。比如需要ssh登录,用名为sshuser的用户身份到101.10.10.1的23端口,就输入
ssh -p 23 sshuser@101.10.10.1
在第一次登录服务器时会选择是否将其ssh加入到信任名单中,输入yes即可完成连接。之后就进入了服务器的操作系统中。

服务器基本配置

实验室提供的服务器的操作系统为Ubuntu16.04,安装的GPU为NVIDIA GTX 1080Ti,已经安装好了CUDA(Ver 9.2)和CUDNN,此处不做重复工作,而剩下的各种软件环境还没有完成配置。
在开始部署项目前,先做好以下软件配置
1.anaconda3的安装:
下载安装anaconda,同时新建环境tensorflow,为了保证和git源码一致,在服务器上该环境的安装使用了python2.7版本,在该环境中安装tensorflow,cython,opencv,pillow,同时通过pip的方式安装easydict(pip安装时要将tensorflow环境激活)
配置anaconda路径
vim ~/.bashrc
在文件末尾添加
export PATH=/anaconda3/bin:$PATH

2.CUDA路径配置
在部署项目前对CUDA进行测试发现无法查找到对应路径,所以需要配置好环境
vim ~/.bashrc
在文件末尾添加
export PATH=$PATH:/usr/local/cuda/bin
如果是CUDA的默认安装方式的话,其bin目录就应该是如上。如果进行了修改那么选中对应的CUDA目录即可
在修改保存.bashrc之后输入source ~/.bashrc来完成路径配置

更详细的环境配置方式可以参考 https://blog.csdn.net/zzyincsdn/article/details/83989606 这一篇文章

项目布置和修改

1.setup.py修改

新建一个目录eng_practice,进入该目录然后通过git将要使用的项目从GitHub上clone下来
git clone https://github.com/endernewton/tf-faster-rcnn.git
该项目为使用tensorflow的FasterRCNN版本
进入项目目录下的lib文件夹,对setup.py文件进行修改。修改存在于Extension模块中的一个参数extra_compile_args={'gcc': ["-Wno-unused-function"], 'nvcc': ['-arch=sm_61', '--ptxas-options=-v', '-c', '--compiler-options', "'-fPIC'"]},
将参数-arch修改为服务器的GPU对应的型号参数,对应表格如下

GPU modelArchitecture
TitanX (Maxwell/Pascal)sm_52
GTX 960Msm_50
GTX 1080 (Ti)sm_61
Grid K520 (AWS g2.2xlarge)sm_30
Tesla K80 (AWS p2.xlarge)sm_37
本实验服务器使用的是1080Ti所以修改为sm_61
2.编译cython模块

还是在项目目录下的lib模块,执行
make clean
make
cd ..
如果cython安装成功且cuda和cudnn配置没有问题,那么应该可以完成顺利完成编译。在编译过程中发现一些warning信息,但最终没有影响到结果所以未进行处理。
在这里插入图片描述

3.安装coco数据库

由于代码中需要使用到coco数据库,所以进入到项目文件下的data文件夹,执行指令:

cd data
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../../..
4.下载预训练模型和配置软连接

这一部分内容和CPU环境下的配置没有变化,可以参考https://blog.csdn.net/zzyincsdn/article/details/83989606 这一篇文章

5.使用GPU运行DEMO

在data目录下,执行指令

GPU_ID=0
CUDA_VISIBLE_DEVICES=${GPU_ID} 
./tools/demo.py

在这一步会产生plt.show()函数的错误。由于使用的是服务器的命令行,所以在matplotlib的使用中无法显示出完成训练的图片,所以对demo.py文件进行修改,将结果图片的显示改成结果图片的存储,把训练的结果以png的形式展现出来。但是在实际修改的过程中发现plt.savefig()每次只能对最后生成的一张图片进行修改,仅仅是在demo.py结尾处修改掉plt.show()和添加plt.savefig()并不能解决问题,经过重读demo代码最终解决了结果图片的存储问题。
总共修改三处代码,首先是import部分,修改

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt

在函数vis_detections()定义前,添加全局变量fig_count_i=0作为计数器来用于对结果图片按顺序命名,在vis_detections()定义中,在plt.draw()后修改代码为

    plt.draw()
    global fig_count_i
    plt.savefig("%s.png"%fig_count_i)
    fig_count_i=fig_count_i+1

在结尾处,防止plt.show报错,可以修改为

    plt.savefig("final.png")
    plt.show()

或者直接将结尾处的plt.show注释。
这样,每次绘制图片后都执行一次保存,就可以按照顺序将结果图片保存下来了。
最后的运行结果会在data目录下生成一系列png图片,如图所示
在这里插入图片描述

测试结果下载

由于在命令行中还是无法查看生成的结果文件,而使用scp将文件进行拷贝又非常麻烦,所以此处通过filezilla软件,使用sftp协议方便地进行项目文件管理
打开filezilla,点击左上角文件->站点管理器->新站点
此处我们在主机中填入IP地址,端口使用我们ssh登录的端口,使用协议在下拉栏中选择SFTP协议,登录方式正常,并填入登录的用户名和密码,点击连接就可以直接连接到服务器中进行文件管理了。
在这里插入图片描述
选择右边需要下载的图片,右键再选择下载,就可以下载到左边的本地目录当中了
在这里插入图片描述
之后在本地的系统(我这里是Win10)就可以进行图片的查看或者其他处理了
在这里插入图片描述

下一步计划

学习对项目的数据集通过VGG16模型或者RES101来在服务器上训练自己的模型,尽快实现初步的功能。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值