• 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

  • 相关阅读:
    java基础高级
    Elasticsearch
    Nginx
    go语言基础
    elasticsearch启动失败
    redis基础
    数据结构(java版)
    mysql实现两个字段合并成一个字段查询
    StringBuffer 字符串截取从后往前,从前往后
    ERROR c.j.e.m.g.h.GatewayExceptionHandler [handle,52] [网关异常处理]请求路径
  • 原文地址:https://www.cnblogs.com/minsons/p/7905473.html
Copyright © 2020-2023  润新知