windows系统离线搭建darknet

news2025/1/18 14:02:13

没有网的情况下采用将安装包全部都下载下来,再安装的方式。darknet在windows上编译问题比较多,经历了3天的踩坑,终于搭建好。。。下面简单记录一下安装过程。

1.下载cuda,cudnn,anaconda,opencv,opencv_python,vs。安装顺序:anaconda->opencv_python->opencv->vs->cuda->cudnn。

本机环境:Windows版本:Windows Servel 2016, GPU:Nvidia Tesla V100。

2.anaconda安装

根据下面的教程,下载好exe文件,拷贝到离线主机上进行安装。我安装的版本是Anaconda3-2023.03.0-Windows-x86_64.exe。python版本为3.10。

Windows下的Anaconda详细安装教程_windows安装anaconda-CSDN博客

anaconda和python版本的对照:

Anaconda版本和Python版本对应关系(持续更新...)_anaconda python版本-CSDN博客

anaconda的卸载:

Win10下面正确卸载Anaconda方法_彻底卸载anaconda win10-CSDN博客

Anaconda彻底卸载及重安装_anaconda卸载-CSDN博客

3.opencv_python安装

针对python版本选择适合的opencv_python(Links for opencv-python)进行下载。采用pip安装。我安装的版本是:opencv_python-4.5.4.60-cp310-cp310-win_amd64.whl

pip install opencv-python版本

教程:pip和Anaconda中安装opencv-python_opencv-python conda-CSDN博客

4.opencv库的安装,后面用于VS编译使用。其实就是一个opencv包的解压,再进行环境变量的配置。

OpenCV 最新版windows下安装教程_releases - opencv-CSDN博客

5.vs的安装

最开始安装的2022版,但是darknet编译出错,提示版本不匹配,采用2019版安装成功。这里下载的2019社区版。下载链接:Visual studio 2019 社区版下载和安装_vs2019社区版下载-CSDN博客

安装步骤:

下载好vs_community_2019.exe后,打开cmd,输入命令:

vs_community_2019.exe --layout C:\Users\win\Desktop\vs2019_offline --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --lang en-US zh-CN

--layout为离线包下载位置,这里仅安装:“.NET 桌面开发” 、“C++ 桌面开发” 。安装包下载完后将安装包拷贝到离线主机上,然后进入安装包,利用vs_community_2019.exe或者vs_setup.exe输入下面命令进行安装。

vs_community_2019.exe --noWeb --add Microsoft.VisualStudio.Workload.ManagedDesktop --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended

注意:--noWeb表示无网安装。安装界面右下载选在下载后安装。安装的插件根据自己的系统选择,例如,我的系统是Windows Servel 2016,则取消掉win10和win11的插件,如下图是windows11系统,则勾选掉windows10.

选完之后就可以进行安装了。

参考:

VS2022(Visual Studio 2022)最新安装教程_vs2022安装教程-CSDN博客

离线环境下安装微软Visual Studio 2022 生成工具_vs2022离线安装-CSDN博客

Visual studio 2019 社区版下载和安装_vs2019社区版下载-CSDN博客

Visual Studio 2019离线安装教程(脱机安装、局域网安装)_vs2019离线安装教程-CSDN博客
​​​​​​https://www.cnblogs.com/sailJs/p/16864697.html

创建脱机安装 - Visual Studio (Windows) | Microsoft Learn

6.cuda的安装

在终端中输入:

nvidia-smi

根据显示的cuda的版本号下载适合自己显卡的cuda文件,根据cuda文件选择合适的cudnn文件进行下载。具体的安装步骤,可以参考:

最详细!Windows下的CUDA与cuDNN详细安装教程_windows安装cuda和cudnn-CSDN博客

注意,因为前面已经安装了VS,因此注意将Visual Studio Integration勾选上。

7.cudnn的安装

根据cuda的版本,选择适配的cudnn版本。下载链接:Log in | NVIDIA Developer

安装教程:

最详细!Windows下的CUDA与cuDNN详细安装教程_windows安装cuda和cudnn-CSDN博客

上述安装完成后就可以编译darknet了。

8.darknet的编译

打开build文件夹下的darknet文件夹,并用写字板打开darknet.vcxproj,用搜索功能查找CUDA ,并修改为自己CUDA的版本号,我的CUDA版本是12.0,所以修改为CUDA 12.0(一共有两处需要修改的)并保存,如下图,将9.0改成12.0

  • 确认C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations文件夹里面是否有下面这几个文件(因为我的是CUDA12.0,所以文件名中需带有12.0,也就是说自己CUDA的版本号)。

修改算力为自己显卡的算力,如V100的算力是70。则进行如下修改:

<CodaCompile>
    <TargetMachinePlatform>64</TargetMachinePlatform>
    <CodeGeneration>compute_35,sm_35;compute_86,sm_86</CodeGeneration>
</CodaCompile>

修改为:

<CodaCompile>
    <TargetMachinePlatform>64</TargetMachinePlatform>
    <CodeGeneration>compute_70,sm_70</CodeGeneration>
</CodaCompile>

注意compute_70,sm_70前面不要有其他的版本,否则会编译不通过。

然后使用vs2019打开darknet.sln文件,vs2019会弹出:

直接点确定即可

首先将Vs2019上方调成release x64

然后点击工具栏的项目->属性进入darknet的属性页。

首先选择VC++目录中的包含目录和库目录

点击链接器 → 输入 → 附加依赖项
添加opencv\build\x64\vc16\lib目录下的opencv_worldXXXX.lib,带d的是debug文件,我们是release模式所以选择不带d的,我的是opencv_world490.lib,不同版本的opencv后面数字不一样

最后右键项目点击生成即可
在x64目录下可找到darknet.exe

依次按上面方法编译C文件和yolo_console_dll.sln文件(yolo_console_dll.sln文件我没编译,现在还没啥影响)。编译yolo_cpp_dll.sln会生成yolo_cpp_dll.dll文件,采用darknet_images.py文件生成预测时会用到。

将darknet.exe, pthreadVC2.dll, yolo_cpp_dll.dll放到任意文件夹即可训练,测试。

安装教程参考:

https://zhuanlan.zhihu.com/p/45845454

Windows搭建Darknet框架环境-Yolov4-GPU_darknet windows-CSDN博客

【全网最全最完整】windows下darknet安装搭建与模型训练方法【亲测有效】_darknet在windows下的安装-CSDN博客

https://medium.com/geekculture/yolov4-darknet-installation-and-usage-on-your-system-windows-linux-8dec2cea6e81

9.问题总结:

9.1.Could not locate zlibwapi.dll. Please make sure it is in your library path

解决:解决问题:Could not locate zlibwapi.dll. Please make sure it is in your library path!-CSDN博客

9.2.编译时出现算力不匹配:

解决:在网址CUDA GPU | NVIDIA 开发者中查找算力。并且 在vcxproj中进输入<CodeGeneration>compute_自己的算力,sm_自己的算力</CodeGeneration>,不要在前面输入其他的算力。

如果这个方法没有效果,可参考下面解决方案:

解决:Darknet编译时报MSB3721错误 | 蓝伟洪的博客

9.3.could not find module 'darknet.dll'

解决:

编译yolo_cpp_dll.sln生成yolo_cpp_dll.dll,然后将darknet.py文件中的darknet.dll改成yolo_cpp_dll.dll。接着可能还报错,网上说因为python版本的问题,可以在darknet.py的Import库后添加两句话来解决:

os.add_dll_directory('c:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.1/bin')
os.add_dll_directory(os.path.dirname(__file__))

解决参考:


链接:

Issues · AlexeyAB/darknet · GitHub

【SOLVED】 Python `darknet.py` ERROR : `Could not find module 'darknet.dll'`, *** NO NEED *** to downgrade to py 3.7 on Windows 11 · Issue #8846 · AlexeyAB/darknet · GitHub

Python 3.8 issues with yolo_cpp_dll.dll · Issue #4956 · AlexeyAB/darknet · GitHub

python - Import darknet FileNotFoundError: Could not find module - Stack Overflow

https://medium.com/geekculture/yolov4-darknet-installation-and-usage-on-your-system-windows-linux-8dec2cea6e81



 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2132539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Redis] Redis中的Hash类型和List类型

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

CISP-PTE CMS sqlgun靶场渗透测试

1.打开靶场 2.在搜索框尝试xss <script>alert(1)</script> 发现此处存在xss漏洞 3.在搜索框尝试sql注入 -1 union select 1,2,3# 发现页面有回显 4.查询数据库名 -1 union select 1,database(),3# 5.查询数据库的所有表 -1 union select 1,(select group_conc…

Matlab做二阶函数

关于解答&#xff1a; >> % Expert PID Control % 二阶传递函数的阶跃响应 % 位置式 clc; clear all; close all;n500; % 设置离散点的个数 Ts0.001; % 设置离散的采样时间 epsilon0.001; …

剪辑视频怎么放慢速度?6种方法可以轻易做到

在这个快节奏的短视频时代&#xff0c;视频编辑中的慢动作效果往往能吸引观众的眼球&#xff0c;赋予画面以独特的艺术感和情感深度。但是很多小伙伴不知道该怎么将视频播放速度放缓&#xff0c;今天&#xff0c;给大家分享6种剪辑视频放慢速度的高效方法&#xff0c;一起来学习…

【物理编程】解决物理压力的正确画法

这里写自定义目录标题 压力的画法 压力的画法 该程序是一个交互式的教育工具&#xff0c;它通过可视化的方式帮助学生和教师理解多边形的几何特性以及力的表示方法。以下是该程序的一些优点和对教师的帮助&#xff0c;用专业的语言进行总结&#xff1a; 增强理解力&#xff1a…

98、RS485全自动收发电路入坑笔记

因为RS485采用叉分信号&#xff0c;只支持半双工。正常的RS485芯片驱动电路是需要GPIO来切换发送和接收模式。如下图所示&#xff0c;一般的RS485电平转换芯片都有RE/DE脚&#xff0c;用来切换收发模式。 例如这篇推荐&#xff1a;芯片RS485自动收发电路常见问题与应对策略 但…

【kubernetes】Ingress和Ingress-Controller介绍,高可用应用案例

一&#xff0c;Ingress介绍 Ingress是k8s中一种重要的资源对象&#xff0c;它主要用于定义从集群外部到集群内部服务的HTTP(S)路由规则。用于管理代理 Ingress-Controller的配置文件。 kubectl explain ingress二&#xff0c;Ingress-Controller介绍 Ingress Controller 是 …

[ESP32]:如何在micropython中添加C库

[ESP32]&#xff1a;如何在micropython中添加C库 本文将描述如何在micropython中添加一个基于c语言的led模块。 1.编写c驱动 选择一个目录&#xff1a;examples/usercmodule&#xff0c;建立对应的驱动文件hw_led&#xff1a; . ├── cexample │ ├── examplemodule…

RAG 在企业应用中落地的难点与创新分享

在2024稀土开发者大会-AI Agent与应用创新分会上&#xff0c;我有幸分享了我们团队在企业应用中实施RAG&#xff08;检索增强生成&#xff09;的难点与创新。希望通过这篇文章&#xff0c;与大家探讨我们在实践中遇到的问题和解决方案&#xff0c;为从事相关工作的朋友提供一些…

Spring2-入门

目录 入门案例 案例分析 Log4j2日志框架 Log4j2日志概述 引入依赖 加入日志配置文件 使用日志 入门案例 1.引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi&qu…

技术速递|VS Code Java 8月更新 - 重要 Gradle 更新!用户体验与入门向导增强

作者&#xff1a;Nick Zhu 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎来到 Visual Studio Code for Java 八月更新&#xff01;在这篇博客中&#xff0c;我们将涵盖重要 Gradle 更新、更多用户体验改进以及更好的入门体验&#xff0c;马上开始吧&#xff01; Gradle 更…

eclipse配置maven

eclipse配置maven 启动 Eclipse&#xff0c;转到 Window > Preferences 在左侧导航栏中&#xff0c;展开 Maven 节点。 在 User Settings 下&#xff0c;单击 Add。 浏览到 Maven 安装目录中 conf/settings.xml 文件。 在 Global Settings 下&#xff0c;单击 Add。 浏览到…

详解Diffusion扩散模型:理论、架构与实现

本文深入探讨了Diffusion扩散模型的概念、架构设计与算法实现&#xff0c;详细解析了模型的前向与逆向过程、编码器与解码器的设计、网络结构与训练过程&#xff0c;结合PyTorch代码示例&#xff0c;提供全面的技术指导。 关注TechLead&#xff0c;复旦AI博士&#xff0c;分享A…

【三】TDengine 3.3.2 生产级别集群搭建

TDengine 3.3.2 集群搭建 集群规划 一、主机名和端口规划 修改主机信息&#xff1a;修改hosts信息&#xff0c;TDEngine是通过FQDN进行访问&#xff0c; 规划好三个节点对应的hostname。 vi /etc/hosts 追加以下信息 192.168.90.131 node1 192.168.90.132 node2 192.168.90.133…

IV转换放大器原理图及PCB设计分析

【前言】 今天给大家分享一下关于IV转换放大器的相关电路设计心得。IV转换使用的场合非常之多&#xff0c;尤其是电流型输出的传感器&#xff0c;比如光敏二极管、硅光电池等等&#xff0c;这些传感器输出的电流信号非常微弱&#xff0c;我们如果需要检测它们&#xff0c;首先得…

springboot013基于SpringBoot的旅游网站的设计与实现

&#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345; 一 、设计说明 1.1 课题开发的背…

android 老项目中用到的jar包不存在,通过离线的方法加载

1、之前的项目用的jar包&#xff0c;已经不在远程仓库中&#xff0c;只能手工去下载&#xff0c;并且安装。 // implementation com.github.nostra13:Android-Universal-Image-Loader // implementation com.github.lecho:hellocharts-android:v1.5.8 这…

Java-数据结构-二叉树-习题(一) (✪ω✪)

文本目录&#xff1a; ❄️一、习题一(检查两颗树是否相同)&#xff1a; ▶ 思路&#xff1a; ▶ 代码&#xff1a; ❄️二、习题二(另一棵树的子树)&#xff1a; ▶ 思路&#xff1a; ▶ 代码&#xff1a; ❄️三、习题三(翻转二叉树)&#xff1a; ▶ 思路&#xff1a; ▶ 代…

【C++】STL容器-string的遍历

1.引言 C STL&#xff08;Standard Template Library&#xff09;作为C标准库的核心部分&#xff0c;其重要性不言而喻。它提供了一系列高效、灵活且可复用的数据结构和算法&#xff0c;极大地提升了开发效率&#xff0c;并使得代码更加易于阅读和维护。 在STL中&#xff0c;…

​中国版Sora:Vidu发布“主体参照”功能,支持让任意主体保持一致

OpenAI发布Sora模型后&#xff0c;掀起了AI视频生成热潮&#xff0c;一段60秒的视频不仅让ai领域的从业者兴奋不已&#xff0c;也让全世界的资本聚集在了这个领域上。 国内玩家在这个赛道也是卷了又卷。字节跳动的即梦AI&#xff0c;快手的可灵AI&#xff0c;智谱AI的CogVideoX…