这是基于轻量级深度学习框架darknet的yolo3模型实践在ros平台下实现训练自己的数据集来进行目标识别的过程记录。本文主要手把手带你配置darknet框架需要的环境配置。
Darknet是一个轻量级深度学习框架,是一个完全基于C与CUDA的开源深度学习框架,其主要特点就是容易安装,在makefile里面选择自己的附加项(cuda cudnn opencv等)之后直接make就可以了,没有任何依赖项(OpenCV都可以不用),移植性非常好,支持CPU与GPU两种计算方式。
1.cuda(非必须,也可以用cpu)
2.opencv(ros自带即可)
3.1.验证自己的电脑是否有一个可以支持CUDA的GPU:
$lspci | grep -i nvidia
3.2.验证自己的Linux版本是否支持 CUDA:
$uname -m && cat /etc/*release
3.3.验证系统是否安装了gcc :
$gcc –v
3.4.验证系统是否安装了kernel header 和 package development:
$sudo apt-get install linux-headers-$(uname -r)
注意:尽量不要选择系统推荐安装,不然cuda的使用可能会出问题,系统使用可能没问题。
4.1.1.查看自己的显卡型号(如我的是GeForce GTX1660 super):
在nvidia官网查找自己显卡型号的linux64-bit系统驱动程序:
https://www.nvidia.cn/geforce/drivers/
4.1.2.安装一些nvidia依赖的软件:
$sudo dpkg --add-architecture i386
$sudo apt update
$sudo apt install build-essential libc6:i386
4.1.3.禁用nouverau:
Ubuntu系统默认安装了一个开源驱动:nouveau,但是这个驱动会和nvidia驱动不相容,需要禁用,不然nvidia驱动安装会报错。
方法如下:
1.禁用bios中的secure boot,因为secure boot会阻止第三方源安装的驱动,禁用不会带来多大隐患。
2.创建配置文件:
$sudo gedit /etc/modprobe.d/blacklist_nouveau.conf
文件中添加:
blacklist nouveau
options nouveau modeset=0
刷新内核:
$sudo update-initramfs -u
然后reboot重启,然后输入以下命令验证生效:
$lsmod | grep nouveau//没有输出,则禁用成功
禁用成功后就可以安装显卡驱动sudo sh 下载下来的.run文件,安装完成后就重启。
查看是否安装成功:
$nvidia-smi
可以看到显卡驱动的版本470.63.01和cuda的推荐版本11.4:
4.2.1.由上面$nvidia-smi命令看到推荐版本的cuda版本,到官网下载:https://developer.nvidia.com/cuda-downloads
4.2.2.以runfile(local)的方式安装会减少出错:
$wget https://developer.download.nvidia.com/compute/cuda/11.4.1/local_installers/cuda_11.4.1_470.57.02_linux.run
$sudo sh cuda_11.4.1_470.57.02_linux.run
安装项里不要选择安装驱动,因为之前已经安装过了,避免出错,其他都yes。
4.2.3.设置环境变量:
在~/.bashrc文件(用的zsh就是.zshrc文件)添加如下路径:
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.4/lib64
$export PATH=$PATH:/usr/local/cuda-11.4/bin
$export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.4
添加完之后source一下:
$sudo source ~/.bashrc //(用zsh改成.zshrc)
4.2.4.检查是否安装成功:
$cd /usr/local/cuda-11.4/samples/1_Utilities/deviceQuery
$sudo make
$./deviceQuery
result 为pass 则为成功:
到官网下载合适的cudnn版本:https://developer.nvidia.com/rdp/cudnn-download
需要注册登陆,然后解压,进入到相应目录,执行:
$sudo cp cuda/include/cudnn.h /usr/local/cuda-11.4/include
$sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.4/lib64
$sudo chmod a+r /usr/local/cuda-11.4/include/cudnn.h
$sudo chmod a+r /usr/local/cuda-11.4/lib64/libcudnn*
查看cudnn版本:
$cat /usr/local/cuda-11.4/include/cudnn.h | grep CUDNN_MAJOR -A 2
到此,darknet所需要的环境就准备就绪了,接下来是darknet包的安装、编译和测试使用。