YOLO---多个版本的简单认识

YOLOv3 有好几个经典版本了:
一、YOLOv3 (Darknet)官网 @ https://github.com/pjreddie/darknet
二、YOLOv3(darknet优化了)@ https://github.com/AlexeyAB/darknet
三、YOLOv3 with OpenCV官网 @ https://github.com/JackKoLing/opencv_deeplearning_practice/tree/master/pracice3_opencv_yolov3

四、其他github上有tensorflow、caffe、keras、pytorch等版本,略。

引用:
windows版本:请参考 https://github.com/AlexeyAB/darknet
linux版本:请参考 https://pjreddie.com/darknet/yolo

简介
一、YOLOv3 (Darknet)官网 @ https://github.com/pjreddie/darknet
  一开始github上最热的开源项目,在linux系统下做的,现在各个大神改版也有在windows下使用了。
下载并备齐:darknet、选配yolov3.weights + yolov3.cfg、...
依赖环境:C++、OpenCV、python、...
编译情况:下载源文件,需要make进行编译后,才能使用
支持:linux系统(最先支持) + windows + CPU + GPU(可适用于英伟达)
(1)源码的常用执行命令:

u@u1604:~/darknet$
()测试一张图片---detect
./darknet detect cfg/yolov3.cfg weights/yolov3.weights data/person.jpg
./darknet detector test cfg/coco.data cfg/yolov3.cfg weights/yolov3.weights data/person.jpg ()测试本地视频---demo
./darknet detector demo cfg/coco.data cfg/yolov3.cfg weights/yolov3.weights wp_video/person002.mp4 ()测试usb视频---
./darknet detector demo cfg/coco.data cfg/yolov3.cfg weights/yolov3.weights ()测试rstp视频---
./darknet detector demo ./cfg/coco.data ./cfg/yolov3.cfg weights/yolov3.weights rtsp://admin:admin12345@192.168.?.??/H.264/ch1/sub/av_stream -i 0 -thresh 0.25 ./darknet detector demo ./cfg/coco.data ./cfg/yolov3.cfg weights/yolov3.weights rtsp://admin:admin12345@192.168.?.??/H.264/ch1/sub/av_stream -i 0 -----------to test many pics------------------------
./darknet detect cfg/yolov3.cfg weights/yolov3.weights -i #CPU enter
Enter Image Path: ./darknet detect cfg/yolov3.cfg weights/yolov3.weights -i #GPU enter
Enter Image Path:

(2)自写python接口文件,执行:

python2 xx.py
python3 xx.py

二、YOLOv3(darknet优化了)@ https://github.com/AlexeyAB/darknet
  一开始github在windows系统下做的,现在各个大神改版也有在linux下使用了。
下载并备齐:darknet、选配yolov3.weights + yolov3.cfg、...
依赖环境:C++、OpenCV、python、...
编译情况:下载源文件,需要make进行编译后,才能使用
支持:windows系统(最先支持) + linux  + CPU + GPU(可适用于英伟达)
基本使用命令同《一、YOLOv3 (Darknet)官网》,但部分有少许差别

.  AlexeyAB改进项

    提供window支持

    相较于原版pjreddie版本darknet提升了训练速度

    添加了二值化网络,XNOR(bit) ,速度快,准确率稍低https://github.com/AlexeyAB/darknet/blob/master/cfg/yolov3-tiny_xnor.cfg

    提升7%通过将卷积层和BN层合并为一个(*_*)不太懂。

    多GPU训练提升

    修补了[reorg]层

    添加了mAP, IOU,Precision-Recall计算

    darknet detector map...

    可以在训练过程中画loss图像

    添加了根据自己数据集的anchor生成

    提升视频检测,网络摄像头,opencv相关问题

    提出了一个INT8的网络,提升了检测速度,但是准确率稍有下降

    https://github.com/AlexeyAB/yolo2_light

@  https://www.cnblogs.com/pprp/p/10204480.html#alexeyab%E6%94%B9%E8%BF%9B%E9%A1%B9

三、YOLOv3 with OpenCV官网 @ https://github.com/JackKoLing/opencv_deeplearning_practice/tree/master/pracice3_opencv_yolov3
下载并备齐:yolov3.weights权重文件、yolov3.cfg网络构建文件、coco.names、xxx.jpg、xxx.mp4文件、object_detection_yolo.cpp、object_detection_yolo.py等文件;
依赖环境:C++的编译环境(如G++/VScode)、OpenCV3.4.2+(记住安装目录)
编译情况:下载源文件,无需复杂的编译,直接修改进行应用
支持:windows + linux  + CPU + GPU(只适用于英特尔)
(1)在OpenCV中使用YOLOv3, 可以在windows下+ ubuntu下使用。
(2)windows下,之前做,object_detection_yolo.cpp是在Visual Studio(VS)下编译的。
(3)ubuntu下,这次,object_detection_yolo.cpp是g++编译的。
(3)OpenCV的DNN,GPU仅使用英特尔的GPU进行测试,因此如果没有英特尔GPU,代码会将您切换回CPU。
使用:
(1)object_detection_yolo.cpp,执行:
编译,g++ `pkg-config opencv --cflags` object_detection_yolo.cpp -o object_detection_yolo `pkg-config opencv --libs` -std=c++11
测试,a single image:
    ./object_detection_yolo --image=./data/1.jpg
     a video file:
    ./object_detection_yolo --video=./data/run.mp4

(2)object_detection_yolo.py,执行:
a single image:
    python3 object_detection_yolo.py --image=bird.jpg
a video file:
    python3 object_detection_yolo.py --video=run.mp4

  最后,三者的区别,还没太细细研究。pjreddie/darknet、AlexeyAB/darknet  、YOLOv3 with OpenCV三者的计算效率和准确率,还未做对比。这几天,本来想对比一下运行时间,但没太注意时间函数的放置位置,测试的时间貌似没有可比性。整个工程的运行时间,可能对工程最具时间说服价值,太耗时,以后有机会有需要在细细研究。

  从运行的直观观测上,GPU > CPU,C++ > Python,耗时的具体数值暂不做研究。附上:这几天的测试时间,作对比可能不具有太大的价值;网上网友分享的资源。

  测试环境:ubuntu16.04 + Intel® Core™ i7-8700K CPU @ 3.70GHz × 12  + NVIDIA GTX 2080 TI

YOLO---多个版本的简单认识的更多相关文章

  1. GlideDemo【Glide3.7.0版本的简单使用以及圆角功能】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 本Demo主要记录Glide3.7.0版本的简单运用和实现圆角方案. 效果图 代码分析 Glide的centerCrop()和fit ...

  2. JavaSwing 版本的简单扫雷游戏

    JavaSwing 版本的简单扫雷游戏 一.扫雷游戏的基本规则 1.扫雷游戏分为初级.中级.高级和自定义四个级别. 单击游戏模式可以选择"初级"."中级".&q ...

  3. 比之前那个版本更简单的C语言实现的比较大小

    之前那个是输入一堆数据,找最大那个,这次是更简单的版本,求两个数的最大值. #include "stdafx.h" #include <stdio.h> int Get ...

  4. GlideNewDemo【Glide4.7.1版本的简单使用以及圆角功能】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 简单记录下Glide4.7.1版本的使用和实现圆角方案. 注意:关于详细使用请仔细阅读<官方指南>. 效果图 使用步骤 ...

  5. webpack 4.0 版本的简单使用

    webpack 4.0 学习指南 最近前端又要变天了,vue作者推出了vue-cli 3版本,并且里面使用了webpack 4. 但是webpack 3 和webpack 4 二者的使用方式完全不一样 ...

  6. kubernetes版本apiversion简单说明

    在使用yaml文件部署Deployment项目时,出现过 error: error validating "xx-Deployment.yaml": error validatin ...

  7. 【ADO.NET】2、各种版本的 简单登录验证

    一.简单登录验证(防SQL注入) GetString(序号) 返回某一列的值(当用户不记得列名序号时,可使用GetOrdinal()获取到序号)GetInt32(序号) 针对的是 int 字段,返回i ...

  8. python版本的简单贪吃蛇

    先看看效果,白色的条是蛇(简单勿怪,有研究的同学请告知做的美观点),做了一个笑脸是糖果,背景弄了一个图, 代码也是从其他人那边弄来的,改了一部分直接可以在window上直接运行 代码如下: #codi ...

  9. SecureCRT Win免安装版本,简单好用

    SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件. 这个简单好用,程序员必备. 下载地址:SecureCRT. ...

随机推荐

  1. GitHub上9月份最火的开源项目TOP10,你都用过哪些?

    1.tensorflow TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow 的表现比第一代的 DistBelief 快了 2 倍.TensorFl ...

  2. 使用django进行大文件的上传下载

    下载 基于Django建立的网站,如果提供文件下载功能,最简单的方式莫过于将静态文件交给Nginx等处理,但有些时候,由于网站本身逻辑,需要通过Django提供下载功能,如页面数据导出功能(下载动态生 ...

  3. Ubuntu18.04命令行安装mysql未提示输入密码,修改mysql默认密码

    Ubuntu18.04命令行安装mysql未提示输入密码,修改mysql默认密码 mysql默认密码为空 但是使用mysql -uroot -p 命令连接mysql时,报错ERROR 1045 (28 ...

  4. 部门innercode刷新

    最近遇到一个小需求,就是刷新部门的innercode.在导入数据的时候,innercode乱了,所以需要刷新.那先说说innercode是什么吧. 大家都知道部门是一个树形结构,但是有时候想知道一个部 ...

  5. 数值类型与std::string的相互转换

    1.使用std::stringstream: //将in_value值转换成out_type类型 template<class out_type, class in_value> out_ ...

  6. python学习--12 基本数据类型

    数字 int -int  功能 1.转换 例如: a = '123' # 字符串print(type(a),a)b = int(a) # 将字符串转换成intprint(type(b),b) 运算结果 ...

  7. 利用Python进行数据分析 第4章 IPython的安装与使用简述

    本篇开始,结合前面所学的Python基础,开始进行实战学习.学习书目为<利用Python进行数据分析>韦斯-麦金尼 著. 之前跳过本书的前述基础部分(因为跟之前所学的<Python基 ...

  8. PAT(B) 1017 A除以B(Java)

    题目链接:1017 A除以B 分析 读取输入的A和B后,保存为字符串.模拟除法运算过程. 不要用BigInteger,因为会超时. 另外字符串经常要扩展(例如:append())的话,不要用Strin ...

  9. GBDT笔记

    GBDT笔记 GBDT是Boosting算法的一种,谈起提升算法我们熟悉的是Adaboost,它和AdaBoost算法不同: 区别如下: AdaBoost算法是利用前一轮的弱学习器的误差来更新样本权重 ...

  10. linux程序设计--进程相关的各种ID

    1.调用exec函数时,目标可执行文件没有设定设置用户id. 2.调用exec函数时,目标可执行文件设定设置用户id.