Windows 10搭建基于Darknet的 Yolov4目标检测平台

原文地址:https://blog.lanweihong.com/p...

环境配置

硬件环境:CPU Ryzen 1600X;显卡:GTX 1050Ti

软件环境:Windows 10 64位、Visual Studio 2015、CUDA 11.3 、cuDNN v8.2.0 、 OpenCV 3.4

Darknet 地址:https://github.com/AlexeyAB/darknet

安装 CUDA

  1. 下载 CUDA,链接:https://developer.nvidia.com/...

CUDA

安装 CUDA 前请先安装好 VS 2015;安装 CUDA 时会设置临时解压目录,保持默认即可,第二次才会设置安装目录,临时解压目录和安装目录不能设置为一样的,否则找不到安装。

  1. 设置临时目录

设置临时目录

  1. 选择自定义,取消 Visual Stiudio Integration

取消Visual Stiudio Integration

  1. 配置环境变量(这步可跳过,安装过程中已配置好环境变量,如果没有自己参考以下添加)。

配置环境变量

  1. 使用 win + R测试,输入命令查看 nvcc -V
C:\Users\lanweihong>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_May__3_19:41:42_Pacific_Daylight_Time_2021
Cuda compilation tools, release 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0

说明安装成功。

安装 cuDNN

  1. 下载 cuddn,链接:https://developer.nvidia.com/... ,下载对应 CUDA 版本:

cuddn

  1. 下载完成后解压压缩包,将文件夹下的全部文件拷贝至 cuda 的安装目录下;

拷贝至cuda安装目录

至此,安装完成。

安装 OpenCV

下载地址:https://opencv.org/releases/

  1. 下载完成后直接安装,配置环境变量,添加系统变量,变量名为 "OPENCV_DIR",值为安装目录,我这里是 D:\Downloads\opencv\build

配置OpenCV环境变量

  1. 在系统变量Path后添加 OpenVC 的bin目录;

配置环境变量

编译 darknet

  1. 使用 Git 下载:
git clone https://github.com/AlexeyAB/darknet.git

或直接下载源码压缩包,下载完成后解压,目录结构如下;

darknet目录结构

  1. 进入 build\\darknet 目录,使用 VS 2015 或其他编辑器打开文件 darknet.vcxproj,将 CUDA 版本修改为自己 CUDA 的版本号:
<ImportGroup Label="ExtensionSettings">
    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 11.3.props" />
</ImportGroup>

还有一处:

<ImportGroup Label="ExtensionTargets">
    <Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 11.3.targets" />
</ImportGroup>

这里需要注意:要确保 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations 目录下有这几个文件:

BuildCustomizations

如果没有,则需要把 CUDA 安装路径下的 extras\visual_studio_integration\MSBuildExtensions 目录下这四个文件拷贝到上述目录中。

但我的 extras 目录下没有 visual_studio_integration 这个文件夹,我们需要再次打开 CUDA 安装程序,勾选之前没有安装的 visual_studio_integration

重装

重新安装完成后,在 CUDA 安装目录下的 extras 文件夹能看到 visual_studio_integration 文件夹了,拷贝这四个文件至 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations 目录中。

visual_studio_integration

  1. 使用 VS2015 打开源码目录下的 build\darknet\darknet.sln,我们需要在 VS 2015 中配置 OpenCV;
  2. 配置包含目录

在 VS 2015 中,右键项目名称,选择 "属性",在弹出的 darknet 属性页窗口中选择 VC++ 目录,展开 "包含目录",单击 "编辑";

注意:在 darknet 属性页窗口中,确保选择的配置的为 Release,平台为 x64,因为后面我们是基于这个配置和平台编译的。

编辑

在"包含目录" 窗口中添加 open cv 的路径:

配置包含目录

"包含目录":

  • OpenCV安装目录下的 build\include目录;
  • OpenCV安装目录下的 build\include\opencv目录
  • OpenCV安装目录下的 build\include\opencv2目录
  1. 配置库目录

同样的,在 darknet 属性页窗口,选择 VC++ 目录,展开 "库目录",单击 "编辑";

配置库目录

输入 OpenCV 安装目录下的 build\x64\vc14\lib 目录:

添加build\x64\vc14\lib

  1. 配置连接器

同样的,在 darknet 属性页窗口,选择 "链接器" - "输入",在"附加依赖性"中单击"编辑";

配置连接器

添加 OpenCV 安装目录下的库,如 opencv_world340.lib

添加opencv_world340.lib

至此,VS 2015 配置 OpenCV 工作完成,接下来要编译 darknet 了。

  1. 在 VS 2015 工具栏中,找到以下属性并配置,选择 Release,平台选 x64

编译选项

  1. 在 VS 2015 菜单栏中,单击"生成",选择"生成解决方案"进行编译。

生成解决方案

测试

下载 yolov4.weightsyolov4.weights需要fq才能下载,我已放到网盘中。链接:https://pan.baidu.com/s/1ReOI...
提取码:2l7u),并将 yolov4.weights 放到和 darknet.exe 同等目录下,使用以下命令测试:

darknet.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output data/dog.jpg

测试结果1

我又去百度找了张图来测试:

测试结果2

至此,darknet 编译完成,接下来准备搭建视频检测平台了。当然,这是后续了。

Darknet 常用命令

图片检测和识别

darknet.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output data/dog.jpg
# 或者
darknet.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights data/dog.jpg

视频检测和识别

darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output test.mp4
# 保存视频
darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output test.mp4 -out_filename res.mp4
# 网络摄像头
darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -c 0
darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights http://192.168.0.80:8080/video?dummy=param.mjpg

更多的命令可查看官方介绍:https://github.com/AlexeyAB/d...

错误

1. MSB3721

在使用 VS 2015 编译 darknet 时,就报了 MSB 3721 错误,为解决此错误我还找了很多资料,为此我写了另一篇文章 解决:Darknet编译时报MSB3721错误 来描述,有需要的可去查看。

参考文档

  1. darknet
  2. windows下darknet之yolo(gpu版本)安装
249 声望
4 粉丝
0 条评论
推荐阅读
使用Vue+DataV+ECharts打造新冠肺炎疫情数据大屏(可动态刷新)
原文地址:使用Vue+DataV+Echarts打造新冠肺炎疫情数据大屏(可动态刷新)源码查看:[链接]效果图演示仅适配 1080P 屏幕,使用浏览器访问后按 F11 进入全屏可看最佳显示效果。疫情真实数据演示地址:演示地址-真实...

lanweihong2阅读 3.9k

封面图
视频清晰度优化指南
随着移动互联网的深入发展,视频消费场景逐渐变成主流,早期由于手机硬件的限制问题,导致生产出来的视频画质、清晰度存在较大的问题,用户体验不太好,当时的网络也处于4G的发展阶段,网络的限制也无法持续支持...

得物技术2阅读 845

“3D 元宇宙技术”在汽车新零售领域的应用与实践
随着不久前汽车之家新零售项目震撼发布,我们直击用户看车选车痛点首次提出 ABC 新体验模式,以元宇宙科技打造沉浸式交互服务,开放元宇宙能源空间站体验店,为用户打造更“有用”的体验。

之家技术阅读 5.1k

封面图
AIGC神器CLIP:技术详解及应用示例
编者按:上一期,我们介绍了Diffusion模型的发展历程、核心原理及其对AIGC发展的推动作用。本期,我们将共同走进另一项AI重要突破——CLIP,著名的DALLE和Stable Diffusion均采用了CLIP哦。

Baihai_IDP1阅读 872

封面图
Physics-Informed DeepONet:无穷维空间映射
&emsp;&emsp;深度学习在CV上大获成功之后,也开始在更多的领域攻城掠地,不断地挑战各种传统方法。神经网络展现出了强大的魔力,能够克服传统算法的运行速度较慢的困难,但是也确实相应的理论分析和长期的实践验证。

饥饿的盛世阅读 2.9k评论 3

封面图
DeepMind 发布强化学习通用算法 DreamerV3,AI 成精自学捡钻石
内容一览:强化学习是多学科领域的交叉产物,其本质是实现自动决策且可做连续决策。本文将介绍 DeepMind 最新研发成果:扩大强化学习应用范围的通用算法 DreamerV3。关键词:强化学习 DeepMind 通用算法

超神经HyperAI1阅读 389

封面图
一文详解AI模型部署策略
编者按:模型部署是AI开发生产流程中的重要步骤。对于许多组织而言,选择最佳的模型部署策略以扩展到生产级系统,都是一项复杂且具有挑战的工作。今天IDP将和大家一同,跟随Yashawi Nayak,全面了解模型部署策略...

Baihai_IDP1阅读 513

封面图
249 声望
4 粉丝
宣传栏