Ubuntu18.04下复现YOLOv4(YOLOv3亦可)

承接上文,复现一下Alexey Bochkovskiy的YOLOv4,本文先从环境配置开始,最后实现一帧图像的检测,如何训练自己的数据不在本文讨论范围(可能是下一篇),这里不得不佩服AB大佬,GitHub点开全是干货,无论是windows下还是linux下,操作流程非常详细,而且如果你之前已经成功复现了YOLOv3那么只需要改动一点参数就能使用YOLOv4,对接完美简直不要太方便。

项目地址:https://github.com/AlexeyAB/darknet

环境准备:Ubuntu18.04      1050TI     Anaconda(非必需)

Step1:github下载项目

可以直接github网页下载,也可以git命令下载,文件夹改名为darknet放在/home下

Step2:环境配置

看一下作者给出的配置要求,相比起很多代码,这个requirements其实只需要最基本的cuda、cudnn就行,opencv都不是必须要安装的(opencv是个坑,大坑。。。。)

需要强调的是,企图在anaconda虚拟环境用conda install来装cudatoolkit和cudnn是不成功的,必须本地编译安装CUDA和cuDNN才能成功。

Ubuntu18.04下复现YOLOv4(YOLOv3亦可)_第1张图片

简单说一下,gcc不用管,cmake、cuda、cudnn是需要安装的,opencv看情况,不装的话检测结果会以jpg文件的形式保存

那么,只要CUDA和cudnn安装完整个YOLO的环境配置就完成了

1. CUDA安装(前提条件:nvidia显卡驱动已安装)

官网下载CUDA10.0,或者以上版本,根据显卡驱动的版本来决定(可参考CUDA版本问题,cuda与cudnn匹配问题)

Ubuntu18.04下复现YOLOv4(YOLOv3亦可)_第2张图片

Ubuntu18.04下复现YOLOv4(YOLOv3亦可)_第3张图片

找到下载的run文件,执行命令:

sudo chmod a+x cuda_10.0.130_410.48_linux.run
sudo sh cuda_10.0.130_410.48_linux.run

然后多按按空格把声明读完,注意后面有一个位置会问你装不装驱动,由于这里我们提前安装了显卡驱动,一定要选N

安装完成后,还需要添加环境变量

sudo gedit ~/.bashrc

# 文件末尾添加以下内容
export CUDA_HOME=/usr/local/cuda 
export PATH=$PATH:$CUDA_HOME/bin 
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

# 保存修改后更新一下
source ~/.bashrc

最后测试一下CUDA是否安装成功,选择一个sample

cd /usr/local/cuda/samples/1_Utilities/deviceQuery 
sudo make
./deviceQuery

结果显示Resule=pass就是安装成功!

2. cuDNN安装(前提条件:nvidia显卡驱动已安装,CUDA已安装  官网下载需要nvidia账号)

cuDNN的版本问题可参考https://blog.csdn.net/hesongzefairy/article/details/104457091

 官网下载相应的版本,这里官方其实也贴心的给出了匹配的版本

Ubuntu18.04下复现YOLOv4(YOLOv3亦可)_第4张图片

下载完成之后解压,然后cd进文件夹执行以下拷贝命令:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ 
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ 
sudo chmod a+r /usr/local/cuda/include/cudnn.h 
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

完成之后,查看cuDNN的版本号,有版本号即是安装成功

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

3. cmake安装

这里我是在anaconda虚拟环境中直接conda install装的cmake,其他的安装方法可自行百度

Step3:在linux上编译Darknet

使用cmake生成CMakeLists.txt可以自动检测已经安装的依赖

mkdir build-release
cd build-release
cmake ..
make
make install

依次执行上面的命令即可编译darknet

github上给出各种各样的编译情况,不使用cmake的方法,可以自行查阅github网址

Step4:单帧测试

首先需要下载yolov4的权重文件,放在/darknet文件夹中即可

权重百度云链接:链接:https://pan.baidu.com/s/1ILfTuUrQxtNBU5DdNw7hoQ  提取码:ffm8

在/darknet/data文件夹中有几张图片可供测试,这里我们直接用这几张经典的图片

./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jpg

Ubuntu18.04下复现YOLOv4(YOLOv3亦可)_第5张图片Ubuntu18.04下复现YOLOv4(YOLOv3亦可)_第6张图片

./darknet detect cfg/yolov4.cfg yolov4.weights data/person.jpg

Ubuntu18.04下复现YOLOv4(YOLOv3亦可)_第7张图片

那么最后,yolov4的复现其实个v3没有什么区别,这就是大佬的厉害之处,yolov3可以完美对接上yolov4,如果你还想用yolov3来检测,那么同样只需要准备好v3的权重文件,然后将上面的命令改成v3即可运行

./darknet detect cfg/yolov3.cfg yolov3.weights data/person.jpg

这样就简单的实现了yolo最基本的检测功能,还有更多的功能大家可以自己去github上研究,Alexey Bochkovskiy大佬真的写的非常详细,还有很多功能如:视频检测、放在手机上运行等等,包括训练自己的数据都有很详细的步骤,后面如果有时间,我还会尝试用自己的数据集来训练看看,v4的性能确实十分有诱惑力!

你可能感兴趣的:(编程学习)