1、前言

  Yolo V3已经体验了,接下来是V4版本。

  关于V4版本,学术界褒贬不一。从工业界实际应用角度看,V4做了不少的优化,精度提升了10%,速度提升了12%。详细参见:

  因此,V4必须要体验和研究一下。

2、下载和安装

  关于windows环境下,使用yolo V4,参考了网上的几篇文章,大同小异,如:https://blog.csdn.net/weixin_43723614/article/details/105772081

  V4版本最好有GPU,奈何我的笔记本电脑配置的显卡是:Intel(R) UHD Graphics 620,没法用GPU。

  因此我只能用CPU版本。于是cuda10.0和cuDNN7的安装就省略了。

2.1、下载v4代码

  代码地址:https://github.com/AlexeyAB/darknet

  Download zip或git clone方式都可以(我都试过一遍)。

2.2、安装OpenCV

  到官网下载,我下载的是open 4.2.0版本,win10系统,支持VS2015。(opencv-4.2.0-vc14_vc15.exe)。

  这个实际是个压缩包,exe执行解压缩。

  然后按照引用网文的做法,配置OPENCV_DIR环境变量,在Path中增加:opencv\build\x64\vc14\bin的路径(其它路径可不加)。

2.3、使用gcc编译的问题

  一开始,我按照V3的编译的方法,即使用cygwin来编译。

  用cygwin64 terminal工具,直接在代码的根目录下,输入make,编译OK,生成了darknet.exe。

  执行图片检测:

darknet.exe detect cfg/yolov3.cfg yolov3.weights test.jpg

  可以的。

  再下载一个yolov4.weights文件,执行:

darknet.exe detect cfg/yolov4.cfg yolov4.weights test.jpg

  也是可以的。

  但opencv没有用起来,提示:

OpenCV isn't used - data augmentation will be slow.

Not compiled with OpenCV, saving to predictions.png instead

  于是修改makefile文件,将第4行的:OPENCV=0改为OPENCV=1。

  于是问题来了。

  1)首先是,pkg-config命令不能识别(makefile文件的第90行),通过更新cygwin的安装,增加pkg-config项,得以解决。

  2)其次,提示:需要将包含opencv.pc文件的目录,配置到环境变量PKG_CONFIG_PATH。我上网查了一下,这是linux的opencv版本才有的文件。

  折腾了一番,还是搞不定opencv。不得已,使用网上的CMake的方法。

2.4、使用CMake

  参考之前引文的方法,先到官网下载CMake,然后类似配置。

  配置VS2015 VC14。

  关于配置,我的电脑不支持GPU,因此ENABLE_CUDA、ENABLE_CUDANN、ENABLE_CUDANN_HALF不勾选。

  一个小坑:USE_INTEGRATED_LIBS必须勾选,我一不小心去掉勾选,结果报了一堆下列错误:

错误  C2011   “timespec”:“struct”类型重定义    darknet E:\workspace\darknet\3rdparty\pthreads\include\pthread.h    320

  配置(configure)完成后,然后generate,没有问题。然后再点击open project,打开VS2015。

  选择:release、x64,build all。

  OK。

  将编译生成的darknet.exe复制到:\build\darknet\x64\目录下。此为darknet.exe的运行环境。

3、效果体验

  图片检测:

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

  视频检测:

darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output test.mp4

  由于只使用CPU,没有GPU,openCV显示视频非常卡顿(FPS=0.2)。网上说,2G内存都没法试验,会内存溢出。我的电脑内存有16G,故只是慢一些。

YOLO V4 :win10+cpu环境的体验的更多相关文章

  1. YOLO V4的模型训练

    1.YOLO V4模型训练的基本思路 所有机器学习涉及模型训练,一般都有训练集.验证集.测试集,因此需要准备数据集.有了数据集,再调用训练的算法,获取训练的结果.v3.v4模型训练方法相同. 2.YO ...

  2. 如何将Win10 的环境变量页面设置用在win7上面?

    如何将Win10 的环境变量设置用在win7上面? Win7一般是如下设置: Win10 是如下设置: 解决办法: 注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentContr ...

  3. mpstat---用于多CPU环境下,显示各个可用CPU的状态

    mpstat命令指令主要用于多CPU环境下,它显示各个可用CPU的状态系你想.这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU ...

  4. TensorFlow CPU环境 SSE/AVX/FMA 指令集编译

    TensorFlow CPU环境 SSE/AVX/FMA 指令集编译 sess.run()出现如下Warning W tensorflow/core/platform/cpu_feature_guar ...

  5. YOLO v4分析

    YOLO v4分析 YOLO v4 的作者共有三位:Alexey Bochkovskiy.Chien-Yao Wang 和 Hong-Yuan Mark Liao.其中一作 Alexey Bochko ...

  6. YOLO v1到YOLO v4(下)

    YOLO v1到YOLO v4(下) Faster YOLO使用的是GoogleLeNet,比VGG-16快,YOLO完成一次前向过程只用8.52 billion 运算,而VGG-16要30.69bi ...

  7. YOLO v1到YOLO v4(上)

    YOLO v1到YOLO v4(上) 一.  YOLO v1 这是继RCNN,fast-RCNN和faster-RCNN之后,rbg(RossGirshick)针对DL目标检测速度问题提出的另外一种框 ...

  8. 目标检测中特征融合技术(YOLO v4)(下)

    目标检测中特征融合技术(YOLO v4)(下) ASFF:自适应特征融合方式 ASFF来自论文:<Learning Spatial Fusion for Single-Shot Object D ...

  9. 目标检测中特征融合技术(YOLO v4)(上)

    目标检测中特征融合技术(YOLO v4)(上) 论文链接:https://arxiv.org/abs/1612.03144 Feature Pyramid Networks for Object De ...

随机推荐

  1. Nmap浅析(2)——端口发现

    端口发现 ​ 每台网络设备最多有216(65536)个端口,端口的作用是实现"一机多用".操作系统分了65536个端口号,程序在发送的信息中加入端口号,操作系统在接收到信息后按照端 ...

  2. react+antd 使用脚手架动态修改主题色

    最近做了一个需求,后台管理系统添加一个可以动态修改ant-design主题色.查询了大多数的文章,发现基本都是抄来抄去,而且文章记录的也一点也不详细.刚刚把这个功能做完了,顺便记录一下如何去修改主题色 ...

  3. BUAA软件工程热身作业

    写在前面 项目 内容 所属课程 2020春季计算机学院软件工程(罗杰 任健) (北航) 作业要求 热身作业(阅读) 课程目标 培养软件开发能力 本作业对实现目标的具体作用 深入认识自己,总结过往并展望 ...

  4. [网络编程之Socket套接字介绍,套接字工作流程,基于TCP协议的套接字程序]

    [网络编程之Socket套接字介绍,套接字工作流程,基于TCP协议的套接字程序] 为何学习socket套接字一定要先学习互联网协议: 1.首先:要想开发一款自己的C/S架构软件,就必须掌握socket ...

  5. 如何实现一个简易版的 Spring - 如何实现 AOP(上)

    前言 本文是「如何实现一个简易版的 Spring 系列」的第五篇,在之前介绍了 Spring 中的核心技术之一 IoC,从这篇开始我们再来看看 Spring 的另一个重要的技术--AOP.用过 Spr ...

  6. MySQL之数据定义语言(DDL)

    写在前面 本文中 [ 内容 ] 代表啊可选项,即可写可不写. SQL语言的基本功能介绍 SQL是一种结构化查询语言,主要有如下几个功能: 数据定义语言(DDL):全称Data Definition L ...

  7. 深入源码,深度解析Java 线程池的实现原理

    java 系统的运行归根到底是程序的运行,程序的运行归根到底是代码的执行,代码的执行归根到底是虚拟机的执行,虚拟机的执行其实就是操作系统的线程在执行,并且会占用一定的系统资源,如CPU.内存.磁盘.网 ...

  8. java基础——循环结构

    循环结构 while 循环 只要表达式成立,循环就一直持续 我们大多数情况会让循环停下来,我们需要一个让表达式失效的方式,来结束循环    public static void main(String ...

  9. x小结:certutil -hashfile D:\1.exe MD5

    在Win7上,MD5不要使用小写,在Win10上没有这个问题 x小结:certutil -hashfile D:\1.exe MD5certutil -hashfile D:\1.exe SHA1ce ...

  10. Django Admin后台管理功能使用

    前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: 1 2 3 4 5 from django.contrib im ...