Yolov3模型框架darknet研究(十三)ubuntu上搭建darknet环境

前言

讲darknet框架这么久了,竟然还没说过其环境搭建、编译及运行过程。其实这部分虽然没啥高深理论知识点,但是真正做起来还是蛮折腾的。昨天刚好在公司新买的训练服务器上搭建了darknet训练环境,所以这里总结一下。

系统安装

ubuntu16.0.4正式版是2015年release出来,已有四年历史了。系统装完后还得自己装网卡驱动等,挺麻烦的。相比之下,ubuntu18.0.4更新些,是不是意味着对新硬件驱动支持得更好?至少装完后网卡就能正常使用了,显示也正常。 所以果断选择ubuntu18.0.4 LTS。

系统安装最重要得一点就是分好区。 我们的机器是128G SSD和1T机械硬盘。工作相关的都放在机械硬盘,直接给它一个分区。系统OS装在SSD上,关键是要将它分好区。 一般地,SSD系统盘有如下四个分区:

/boot  系统启动区  500MB

/home  用户相关的东西  网上说要分给它很大空间,估计是针对只有一块硬盘的情况,这里用户资料都放在机械硬盘上,所以给它5GB足够了

/swap  相当于缓存。 网上说和内存相当,那是指内存很小的情况下。现在内存一般都至少16G,没必要分那么大。一般6~8G足矣。

/ 根目录  软件基本都安装这里 像/usr/include以及/lib等。随着软件安装越来越多,所占空间也就越来越大,所以该分区越大越好,这里讲剩余空间110多G都分配给给它

显卡驱动、cuda以及cudnn的安装

系统装好后,就可以开始安装显卡驱动了。

敲入命令: ubuntu-drivers devices看看都有哪些驱动推荐

从上图看出,它推荐的是430版本的。如果输入命令:sudo ubuntu-drivers autoinstall, 装的自然是430版本;这样意味着,将来cuda的版本也会比较高。 所以你也可以输入:sudo apt-get install nvidia-390来选择性的安装较低版本,将来会自动安装cuda9.当然如果事先安装了430,然后现在又想安装390,那么需要先敲命令:sudo apt-get remove nvidia-*。

安装完后,重启reboot,然后敲入nvidia-smi来确认是否安装正常。

显卡驱动安装好后,就可以开始装cuda了。  这里我就用一个简单命令:sudo apt install nvidia-cuda-toolkit来自动安装cuda。

如果前面驱动装的是390或430版本,这里会自动安装cuda9.0.但是如果前面版本是430以上,比如435,那么这里会自动安装成cuda10.0.  所以如果想安装指定版本的话,就得手动去官网下载cuda安装包,比如cuda_9.0.176.1_linux.run,并执行它,然后配置。

cudnn其实是指编译好的头文件cudnn.h以及库文件libcudnn*.so/a,直接去官网下载压缩包,无需编译。 有三个注意事项:1)一定要根据安装好的cuda版本来选择cudnn包 2)从官网下载时需要注册,而且很慢。一个trick是 可以搜索下别人有没有提供了网盘下载路径。3)要将cudnn.h以及库拷贝到对应得根目录,比如 /usr/include  /lib。

opencv安装

darknet里面有opencv选项,推荐使用它,毕竟intel cpu上运行效率更高些。 darknet貌似对opencv版本有要求,如果是3.4.3及以上得版本,会遇到编译错误。印象里面这个是可以解决得。 我手头刚好是opencv3.4.1源代码,所以没遇到类似问题。

由于darknet只是使用opencv基本功能,所以无需把contrib部分编译进来。此外,如果opencv编译在cuda安装之后,会自动进行opencv cuda部分的编译,这里面会遇到一个熟悉的错误,即它要求gcc6.0及以下的版本。但是在ubuntu18中,如果使用如下命令来安装gcc的话,缺省就是gcc7. 貌似装cuda9.0时会安装gcc6包,但不改变系统默认配置。即你先安装了gcc7,然后再安装cuda9,虽然看log是安装了gcc6,但最后使用gcc -v会看到仍然是gcc7.

sudo apt-get update
sudo apt install gcc
sudo apt install g++

关于上面那个编译错误的解决,网上资料大多说降低gcc版本。但其实更简单的办法就是直接注释掉那行啊:/usr/include/crt/host_config.h第121行。

当然opencv cuda部分编译太慢,而且即使编译进来对darknet训练也没啥提高,毕竟是只做了图片读取和resize等基本操作而已,如果想快速编译完opencv,大概3,4分钟吧,可以cmake时添加参数-DWITH_CUDA=OFF。此外,参数-DWITH_IPP=OFF 是来防止下载第三方包。最终cmake命令如下:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DWITH_IPP=OFF -DWITH_CUDA=OFF ..

darknet编译

opencv的make和make install成功完成后,最后一步就是编译darknet源代码。具体编译过程很简单,难点都在前面的步骤中。这里就提一点:Makefile的修改。如下图所示,重点都用红框标注出来了。

 

 

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ltshan139

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值