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 算法框架的使用一(初级)-LMLPHP

3)执行预测

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

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

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

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

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

检测到狗的概率为82%

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

检测到kache的概率为64%

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

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

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

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

Predictions.png 就是生成预测图

我们看看图片:

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

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

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

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

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

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

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

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

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

结果为:

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

这是完全没有必要的。

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

05-11 18:09