全网第一篇:DRRG代码的具体运行方法(亲测)


前言

经过三个星期的刻苦奋斗,终于成功运行出了DRRG,期间经历了无数的坑,我不敢说我是全网第一个跑出来的(肯定不是),但我绝对是第一个写出来教程的,本人也是一个小白,过程不易如果有帮到您请给一个赞,谢谢大家。

效果图

先上训练图,证明我跑了:在这里插入图片描述

准备

首先,附上代码网址:
https://github.com/GXYM/DRRG
然后我们做准备工作:
第一步下载代码:https://codeload.github.com/GXYM/DRRG/zip/master
第二步:下载数据集:
在这里插入图片描述点击代码网址这部分。有条件的小伙伴可以用谷歌云下载,实在不行我告诉你一种办法去淘宝找代下载。
第三步把数据集放到对应文件夹:在这里插入图片描述
放这里。至此我们就准备了所有的代码部分。

系统准备

首先我们在代码网址:https://github.com/GXYM/DRRG。看一下运行步骤,先是编译csrc文件(make命令),然后是编译/nmslib/lanms,最后bash tool文件夹下的train_CTW1500.sh文件。这里我解释一下这都是linux的命令,Windows也有办法用但是要下载git啥的比较复杂。所以我们要有一台linux真实机(注意虚拟机不可以,因为代码要用到cuda,虚拟机的显卡是cpu模拟出来的不能用的),真实机要是n卡,不能是AMD显卡,AMD装不了cuda。
本人只有一个N卡的win10系统,所以我的解决方案是:双系统。我装的第二系统是centos7.附上镜像网址:http://mirrors.aliyun.com/centos/7.8.2003/isos/x86_64/CentOS-7-x86_64-Everything-2003.iso
官网免费,大家可以放心下载。
至于双系统的安装,建议大家去淘宝找人安,我自己安安坏了,然后重做系统加安装花了110,桑心。。。。。。。。。
然后我们假设你有了双系统。我们进入下一步,软件准备.

软件准备

让我们看一下DRRG的要求文件:在这里插入图片描述
这就是代码中的README文件。大家可以自己去看,这里我要说一点,他有错误:GCC必须是8,9是不好使的。
下面我们说软件:首先python版本必须是3.7,这点很重要,因为pytorch只能用1.2.0,其他都不好使所以,python必须是3.7,然后centos自带的python是2,所以即使你安了3.7也是按在主环境里面但是后续安装pytorch的时候你可能不知道他具体安在哪个环境里面。所以我推荐是做一个虚拟环境,虚拟环境管理不易,推荐下载anaconda。下面我们进入下载环节。

安装anaconda

为了照顾初学者我们全程用命令安装:
首先右键打开终端,就是这个:
在这里插入图片描述
然后我们下载anaconda的安装文件,注意你在哪打开终端他就会下到哪,所以我推荐在桌面打开,方便删除,下载命令:

1
wget https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh

安装anaconda:

1
bash Anaconda3-2020.07-Linux-x86_64.sh

这里你要注意一点,由于网速问题你可能下的sh文件不完整,完整的文件应该是500m,如果下的不对多运行几次第一个代码就行了。但是每次下载的文件名字会在sh后面加上1、2、3什么的。所以你在运行第二条命令的时候也要做出更改,也即是说完整的sh文件叫什么,就bash什么。
然后是安装图形化界面步骤,这里推荐一个大神的安装步骤:
https://blog.csdn.net/qq_39431829/article/details/100165319
然后是安装python3.7。

制造python3.7虚拟环境

当我们安装完anaconda,我们就进入了图形化界面,然后我们点进去Environments,也就是这个界面:在这里插入图片描述
注意:为了安装3.7,我们得先点击一下升级数据:Update index,否则你是找不到3.7的。然后点击Create 制造虚拟环境,点完以后是这样在这里插入图片描述
的:其中name是随便取得是你虚拟环境的名字。随便取(最好取DRRG我去的这个方便你后面看教程),然后python选择3.7,其他不要动,点击Create(不是刚才那个是这个小框的),然后等,直到他安完(肯呢个时间比较长,因为是外国网站)按完以后如果base(root)下面出现了你取名字的那个名字,就说明成功了,否则是失败了,再来几遍。
接下来我们有了python3.7虚拟环境,然后是安库,比如pytorch啥的。

安库

我们要安得库有pytorch–1.2.0,opencv,matplotlib,shapely,sklearn,easydict,这些库虽然没有列出,但是你必须有,两个方法安装一个是你就用ananconda安当然最后一个不行而且比较慢,另外一个是用pycharm安装,比较快。先说ananconda:
只需要在搜索框搜索对应的软件名字,但是前提是你把install改成了uninstall,否则找不到,而且还有一点sklearn叫Scikit-learn,别搜错了。搜到了点小方框然后apply,直到安装完成,当搜不到就是完成了。第二种方法是下载pycham,然后运行,当然运行代码pychrm是必须的。所以下一步我们开始安装pycharm。

安装pycharm

同样我们为了方便初学者全程用命令安装。
同样我们先打开一个新的终端

1
wget https://download.jetbrains.8686c.com/python/pycharm-community-2020.2.3.tar.gz

然后解压安装包:

1
tar -xzvf pycharm-community-2020.2.3.tar.gz

同样因为网络问题有可能下载失败,安装包大概300多m,如果下载失败,安装要和anaconda做一样的处理改动命令tar -xzvf后面的内容。
然后我们就有了一个解压后的文件夹:应该叫:pycharm-community-2020.2.3文件夹,点进去,进入到bin文件夹,然后打开新的终端输入:

1
./pycharm.sh

然后一直下一步就行了,
然后我们要pycharm会在主文件夹下建一个PycharmProjects文件点进去,再点击pythonProject进去,把代码放进去就行了。然后我们要把anaconda环境导入,点这里:
在这里插入图片描述
然后,在这里插入图片描述
切记,我这里是我的虚拟环境取名叫DRRG,你要是别的就在路径的envs下找你的环境名字。然后ok,当这样:在这里插入图片描述
你有了这个就是导入成功了。然后我们运行程序。

安装cuda

在运行程序之前我们要先安装cuda10.1,其他版本不行,切记,因为要和pytorch版本对应,具体方法推荐大神的博客:网上有很多教程,大家自己搜一下,如果你成功禁用了原有驱动,你可以运行以下命令:

1
2
3
4
wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-rhel7-10-1-local-10.1.105-418.39-1.0-1.x86_64.rpm
sudo rpm -i cuda-repo-rhel7-10-1-local-10.1.105-418.39-1.0-1.x86_64.rpm
sudo yum clean all
sudo yum install cuda

这些命令会帮你安装cuda10.1,但是他同样会产生网速问题,所以你要做和anaconda一样的处理。切记完成以后要配置环境变量,然后重启。才能生效,然后做的是升级GCC版本这里有个问题,要求文档说GCC是9.0但是我测试后发现,只有8才好使大家别按错了,这里推荐大神的教程:CentOS完美升级gcc版本方法 - 吴昊博客 https://blog.whsir.com/post-4975.html
注意:同样要配置环境变量重启或者source。版本很重要这里再说一遍!!!

跑代码

接下来我们要去跑代码,首先我们要改tool下的train_CTW1500.sh文件,这里主要改两点,batch_size 和你的GPU有关他越大对你GPU要求越高,我设置为2,还有一个参数num_workers他和你的CPU有关,cpu核数越多打就可以设置越大,我设置为4,不要太大否则会卡死,初始文件是没有的,你要自己加上,在末尾后空格加:

1
--num_workers 4

否则会默认为8,可能和卡死,然后保存。
接着我们开始跑:
第一步打开terminal在pycharm的左下角点开它,应该是这样的:
在这里插入图片描述

首先我们要进入代码文件夹,在$后面输入:

1
cd DRRG-master

然后我们安装库,如果你在anaconda安了只需:

1
pip install easydict

否则依次运行以下命令:

1
2
3
4
5
6
pip intsall shapely
pip install sklearn
pip install easydict
pip install matplotlib
pip install opencv-contrib-python
pip install torchvision==0.4.0

最后一句就是安装pytorch1.2.0,切记版本不可错,错了第二步编译会报错。
然后就是跑代码。

跑代码

第一步:进入csrc文件并且编译

1
cd ./csrc
1
make

不报错就是成功,错误原因都是版本,改一下就好了,接着退回主文件夹:

1
cd ../

然后复制官网命令:

1
cd ./nmslib/lanms

记得要分开

1
make

无错误就是成功。接下来退出两级:

1
cd ../../

然后训练:进入tool:

1
cd tool

运行:

1
sh train_CTW1500.sh

运行,一般会出出两个错误一个是网络错误再执行以下上面命令就行了。
另外一个错误是没有对应文件夹:只要在代码主文件夹下建立相应文件夹就能解决。
然后就等训练了。

最后

写到这里,说明你的环境配置好了,接下来就等他训练完成吧,然后得测试只要用

1
cd ../

退回主文件夹然后复制官网命令就好了,这就是所有的运行方法了,本人亲测,希望能帮到您。如果有效记得点赞哦。