YOLO 算法框架的使用一(初级)

转载自:https://www.cnblogs.com/minsons/p/7905473.html

 

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

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

   YOLO 算法框架的使用一(初级)_第1张图片

     3)执行预测

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

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

 YOLO 算法框架的使用一(初级)_第2张图片

YOLO 算法框架的使用一(初级)_第3张图片

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

检测到狗的概率为82%

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

检测到kache的概率为64%

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

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

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

YOLO 算法框架的使用一(初级)_第4张图片

Predictions.png 就是生成预测图

我们看看图片:

YOLO 算法框架的使用一(初级)_第5张图片

至此,证明我们已经安装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,

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

YOLO 算法框架的使用一(初级)_第6张图片

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

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

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

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

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

结果为:

YOLO 算法框架的使用一(初级)_第7张图片

这是完全没有必要的。

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  默认为0 第一摄像头。

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

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

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

 

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

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

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

你可能感兴趣的:(YOLO 算法框架的使用一(初级))