yolo应用(一)--YOLO算法框架的简单使用

版权声明:本样板的所有内容,包括文字、图片,均为原创。对未经许可擅自使用者,本人保留追究其法律责任的权利。 https://blog.csdn.net/qq_29893385/article/details/81261339

YOLO即You Only Look Once,,是检测Pascal VOC(http://host.robots.ox.ac.uk:8080/pascal/VOC/) 2012数据集内对象/目标的系统,能够检测出20种Pascal对象:

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摄像头实时识别的视频,如果感兴趣可以翻墙去浏览。

本节内容会知道你如何使用YOLO预训练好的模型进行目标检测

第一步: 下载安装包并编译,(可以参考官网,文章下方有链接哦!)

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

第二步:下载预训练的超参数,也是权重


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

我们可以在终端输入ll,查看一下目录:

扫描二维码关注公众号,回复: 2901920 查看本文章

cfg/文件夹下包含一些网络模型的配置文件,yolo.weights则为刚下载好的权重。

第三步:执行检测

如果安装DarkNet的时候,没有使用OpenCV,上面的测试不会直接显示出图片结果,你需要自己手动打开predictions.png. 打开你会看到类似于下图的预测结果。

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

data目录下是自带的示例图片,结果如下:

我们可以看到检测到马的输出概率为91%,狗的概率为85%,另外他会生成一张图片,如下:

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

二、图片检测

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

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

你可以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://www.cnblogs.com/minsons/p/7905473.html

https://blog.csdn.net/leadai/article/details/78662039?locationNum=9&fps=1

darknet官网:https://pjreddie.com/darknet/

猜你喜欢

转载自blog.csdn.net/qq_29893385/article/details/81261339