YOLO官方框架使用C写的,性能杠杠的,YOLO算法,我就不做过多介绍了。先简单介绍一下这个框架如何使用。这里默认是yolo2,yolo1接近过时。
环境 推荐ubuntu 或者centos

YOLO是一个近实时的框架,在1核cpu下,对一张图片的识别大概在6s-12s之间,其实还是在没有缓存的环境下运行的,如果是在摄像头实时采集识别估计也能达到10s左右的处理速度。如果用GPU来处理,当然时间短很多了。在看官网的信息时,有些名词看不太懂,但号称在titanX 上的处理速度是每秒40-60张图片,识别精度为78.6% ;在coco 开发测试集上的voc 2007 上的识别精度为48.1%。这样看来,速度确实很快。

在https://www.youtube.com/上有yolo摄像头实时识别的视频,你可以上去搜索,对于国内的高墙,略表无奈。

1,YOLO原理
关于yolo论文相对复杂,要有足够的耐心去看。这里地址先贴出来:
https://arxiv.org/abs/1612.08242

2,yolo安装
1,安装预备库
      1)安装git 工具
                Yum install git
       2)安装 bunzip2
               yum install -y bzip2
       3 )  安装gcc
              yum install "gcc-c++.x86_64"

2,下载安装包

1)下载安装包并编译

git clone https://github.com/pjreddie/darknet
cd darknet
make

2)下载预训练的超参数,也是权重

wget https://pjreddie.com/media/files/yolo.weights

接下来,我们看一下目录:

3)执行预测

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg

data目录下是图片,输出结果:

图片有点重复了,我们看到结果了:

检测到狗的概率为82%

检测到车的概率为28*,其实没有车

检测到kache的概率为64%

检测到自行车的概率为85%

当然概率高的是正确,概率低的确实没有

其实他会生成一张图片,并标识所识别到的物体

Predictions.png 就是生成预测图

我们看看图片:

至此,证明我们已经安装yolo成功了!

3,图片检测

1)单图片检测

单图片检测,我们的已经演示过了:

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg

一般服务运行比较慢6s-12s,开启GPU会快速很多,会生成predictions.png,图中会标识出识别的物体。

dog.jpg 就是要检测的图片,可以换成其余的试试。

   2)多图片检测

./darknet detect cfg/yolo.cfg yolo.weights
layer filters size input output
conv x / x x -> x x
max x / x x -> x x
.......
conv x / x x1024 -> x x
detection
Loading weights from yolo.weights ...Done!
Enter Image Path:

多图片检测跟单图片检测是差不多的,只是会不断的提示你输入图片路径进行检测

你可以data/hourses.jpg,

检测完,他继续提示你继续输入图片路径:

终止输入:ctrl + c 就可以退出

3)设置检测的窗口的阈值

这个一般没有必要设置,默认阈值是在.25或者以上,当可以通过

-thresh  <val> 来设置,如果设置为0,则:

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg -thresh 

结果为:

这是完全没有必要的。

4,tiny yolo

Tiny yolo 是更快的yolo模型,但是准确度很低下,可以慎重考虑使用,参考链接为:

https://pjreddie.com/darknet/imagenet/#reference

你可以试着去用tiny的权重voc集去测试一下:

wget https://pjreddie.com/media/files/tiny-yolo-voc.weights
./darknet detector test cfg/voc.data cfg/tiny-yolo-voc.cfg tiny-yolo-voc.weights data/dog.jpg

虽然精度差了,但是处理速度高度200张每秒

5,通过摄像头实时监测

通过摄像头实时监测识别,这样可以实时查看测试的结果是怎么样的,但是需要相应的设备来支持,硬件必须有摄像头,同时还要编译CUDA和OPENCV,可以执行以下的命令:

./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights

这样就会在展示每一帧上标识出识别的物体。

需要用openv连接到你电脑的摄像头上,摄像头是否能用不是很大问题;如果你有多个摄像头的话,就必须指定一个摄像头:-c <num>  默认为0 第一摄像头。

如果你有video文件,openCV能够读取video的话,那么可以:

./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights <video file>

可以动态监测,这里建议去翻一下墙,在youtube 看看yolo的视频。

参考地址:https://pjreddie.com/darknet/yolo/

论文地址 :https://arxiv.org/abs/1612.08242

推荐链接:http://blog.csdn.net/qq_14845119/article/details/53589282

YOLO 算法框架的使用一(初级)的更多相关文章

  1. yolo算法框架使用二

    6,voc数据集训练模型 1)下载数据集 官网提供一些voc数据,是基于2007年到2012年的,你可以通过以下地址下载到: wget https://pjreddie.com/media/files ...

  2. 第三十五节,目标检测之YOLO算法详解

    Redmon, J., Divvala, S., Girshick, R., Farhadi, A.: You only look once: Unified, real-time object de ...

  3. 目标检测算法YOLO算法介绍

    YOLO算法(You Only Look Once) 比如你输入图像是100x100,然后在图像上放一个网络,为了方便讲述,此处使用3x3网格,实际实现时会用更精细的网格(如19x19).基本思想是, ...

  4. 强化学习(十七) 基于模型的强化学习与Dyna算法框架

    在前面我们讨论了基于价值的强化学习(Value Based RL)和基于策略的强化学习模型(Policy Based RL),本篇我们讨论最后一种强化学习流派,基于模型的强化学习(Model Base ...

  5. [DeeplearningAI笔记]卷积神经网络3.1-3.5目标定位/特征点检测/目标检测/滑动窗口的卷积神经网络实现/YOLO算法

    4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1目标定位 对象定位localization和目标检测detection 判断图像中的对象是不是汽车--Image clas ...

  6. Python遗传和进化算法框架(一)Geatpy快速入门

    https://blog.csdn.net/qq_33353186/article/details/82014986 Geatpy是一个高性能的Python遗传算法库以及开放式进化算法框架,由华南理工 ...

  7. 知识图谱+Recorder︱中文知识图谱API与工具、科研机构与算法框架

    目录 分为两个部分,笔者看到的知识图谱在商业领域的应用,外加看到的一些算法框架与研究机构. 文章目录 @ 一.知识图谱商业应用 01 唯品金融大数据 02 PlantData知识图谱数据智能平台 03 ...

  8. 【58】目标检测之YOLO 算法

    YOLO 算法(Putting it together: YOLO algorithm) 你们已经学到对象检测算法的大部分组件了,在这个笔记里,我们会把所有组件组装在一起构成YOLO对象检测算法.   ...

  9. 7、滑动窗口套路算法框架——Go语言版

    前情提示:Go语言学习者.本文参考https://labuladong.gitee.io/algo,代码自己参考抒写,若有不妥之处,感谢指正 关于golang算法文章,为了便于下载和整理,都已开源放在 ...

随机推荐

  1. 安装Sublime Text 3插件的方法:

    安装Sublime Text 3插件的方法: 朋友们,小站活着不容易,全靠广告费养着了,如果本文对你有帮助.麻烦动下手点下页面的广告吧,谢谢! 直接安装 安装Sublime text 2插件很方便,可 ...

  2. visual Studio 无法调试,提示程序跟踪已退出

    今天在打码出现了vs无法调试,我在网上查了很久没有发现一个方法. vs点击启动时,出现了一下提示 程序"[12648] *.vshost.exe: 程序跟踪"已退出,返回值为 0 ...

  3. [JAVA第二课] java命名规则

    Java良好的命名规则以及代码风格可以看出来一个程序员的功底,好多公司也会注重这方面,他们招聘员工在有些时候往往就是根据一个人的代码风格来招人,所以下面就就我知道的代码风格作简要的说明一下.Java命 ...

  4. Spring Cloud官方文档中文版-Spring Cloud Config(上)

    官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...

  5. Memcached存储命令

    Memcached各个存储命令的语法格式都类似,且有相同的参数和参数含义,先将可能出现的各个参数的意义说明如下: key:    键值 key-value 结构中的 key,用于查找缓存值. flag ...

  6. 扩展Spring切面功能

    概述 Spring的切面(Spring动态代理)在Spring中应用十分广泛,例如还有事务管理,重试等等.网上介绍SpringAop源码很多,这里假设你对SpringAop有基本的了解.如果你认为Sp ...

  7. vue 起步走 --“安装篇”

    在说明之前,溶解得在这说一句 ,菜鸟开始安装这些东西真是不容易,各种疯狂的百度,搜索.(找的我眼泪都快流下来了),不说废话,开始正经. 第一步:环境的搭建 : vue推荐开发环境: Node.js: ...

  8. position,display,float,overflow,margin,padding之间的相互影响

    1.元素分为块级元素和行内元素, 块级元素可以设置宽高,会自动换行,并且会发生相邻margin的合并问题.行内元素设置宽和高无效,以水平方向排列,(行内元素,绝对定位,浮动元素不会发生外边距合并)并且 ...

  9. spark join操作解读

    本文主要介绍spark join相关操作,Java描述. 讲述三个方法spark join,left-outer-join,right-outer-join 我们以实例来进行说明.我的实现步骤记录如下 ...

  10. MSSQL 备份数据库还原

    -- 完整还原RESTORE DATABASE XXXX FROM DISK = 'd:\XXXX.bak' WITH MOVE 'XXXX' TO 'D:\MSSQL\Data\XXXX.mdf', ...