zoukankan      html  css  js  c++  java
  • YOLO 算法框架的使用一(初级)

    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
        0 conv     32  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  32
        1 max          2 x 2 / 2   416 x 416 x  32   ->   208 x 208 x  32
        .......
       29 conv    425  1 x 1 / 1    13 x  13 x1024   ->    13 x  13 x 425
       30 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 0

    结果为:

    这是完全没有必要的。

    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

  • 相关阅读:
    CSUFT 1002 Robot Navigation
    CSUFT 1003 All Your Base
    Uva 1599 最佳路径
    Uva 10129 单词
    欧拉回路
    Uva 10305 给任务排序
    uva 816 Abbott的复仇
    Uva 1103 古代象形文字
    Uva 10118 免费糖果
    Uva 725 除法
  • 原文地址:https://www.cnblogs.com/minsons/p/7905473.html
Copyright © 2011-2022 走看看