# 背景
五一放假的最后一天我也凑了个热闹,试一下新鲜出炉的yolo v4,
由于没有装CUDA和CUDNN,只试了一下在CPU上的速度和效果,电脑环境及编译依赖如下:
* deepin 15.11桌面版
* opencv 3.4.3(应该也是需要编译安装的,最低要求2.4,详情可以看《deepin(linux)编译安装opencv3.4.3》)
* cmake 3.17.2(最低要求3.12,需要手动更新,详情可以看《deepin手动更新cmake到官网最新版》)
# 安装
## 下载代码权重
首先从作者的Github仓库下载代码
git clone https://github.com/AlexeyAB/darknet.git
# 或 指定下载目录
git clone https://github.com/AlexeyAB/darknet.git /media/lc/Data/env_linux/yolov4
下载预训练权重,yolov4的权重只有 yolov4.weights 一个文件,百度云链接里还有 yolov3 的权重,按需下载
## 编译安装
作者已经把代码都写在了 build.sh 文件里,只需要在终端中运行此文件即可,默认的编译安装目录就是解压后的文件夹。
然后把下载的预训练权重复制到根目录下。
# 运行编译安装
bash build.sh
## 测试
在安装目录右击终端打开,然后在终端运行以下代码,变化其中的 yolov4.cfg yolov4.weights 名称即可调用yolov3网络,前提是你下载了 yolov3 的预训练权重,测试了一下命令,但是发现检测图片序列时一直报错 Cannot load image data/train.txt,弄了个两个小时还是无法解决,详细的可以研究作者给出的 how-to-use-on-the-command-line
# 检测单张图片,默认在根目录下保存检测结果
./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25
# 检测视频,只显示结果
./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output test.mp4
# 检测视频,保存视频结果
./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights test.mp4 -out_filename output.avi
## 以下代码报错无法运行
# 检测图片序列
./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25 -dont_show data/train.txt
# 检测图片序列,并输出 TXT 格式的结果
./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25 -dont_show -ext_output data/train.txt output/result.txt
# 检测图片序列,并输出可以用来训练的数据格式
./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25 -dont_show -save_labels data/new_train.txt
# 总结
由于使用原作者C和CUDA编写的Darknet实现,而我只会一点皮毛的python,只能进行简单的测试了,从效果看,个人感觉对于目标重叠和远小目标效果有一定的提升,误检也有一定的提高,速度没有作者论文里说的快,难道是CPU的锅,静等各路大神的Pytorch版本。