目标检测:YOLO-V3算法实验

目标检测:YOLO-V3算法实现

1. 引言

论文:You Only Look Once: Unified, Real-Time Object Detection

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

DarkNet源码下载地址:https://github.com/pjreddie/darknet

Tensorflow源码下载地址:https://github.com/hizhangp/yolo_tensorflow

2.实现(基于darknet)

这篇文章将指导您使用预训练的模型通过YOLO系统检测物体。如果尚未安装Darknet,则应先进行安装。
环境:Ubuntu16.04

1.主目录打开命令行,输入命令:

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

简单!
2.您已经在cfg/子目录中拥有YOLO的配置文件。可以离线下载预训练重量文件(237 MB)。或着只是运行此命令:
离线下载地址:
https://pjreddie.com/media/files/yolov3.weights
在线下载命令:

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

3.然后运行检测器

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

您将看到以下输出:

layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  32  0.299 BFLOPs
    1 conv     64  3 x 3 / 2   416 x 416 x  32   ->   208 x 208 x  64  1.595 BFLOPs
    .......
  105 conv    255  1 x 1 / 1    52 x  52 x 256   ->    52 x  52 x 255  0.353 BFLOPs
  106 detection
truth_thresh: Using default '1.000000'
Loading weights from yolov3.weights...Done!
data/dog.jpg: Predicted in 0.029329 seconds.
dog: 99%
truck: 93%
bicycle: 99%

在这里插入图片描述

Darknet会打印出它检测到的对象,其置信度以及找到它们所花费的时间。我们没有使用Darknet进行编译,OpenCV因此它无法直接显示检测结果。而是将它们保存在中predictions.png。您可以打开它以查看检测到的对象。由于我们在CPU上使用Darknet,因此每个图像大约需要6-12秒。如果我们使用GPU版本,它将更快。

另外,作者提供了一些示例图像,以备不时之需。尝试data/eagle.jpg,data/dog.jpg,data/person.jpg,或data/horses.jpg!

该detect命令是该命令的更通用版本的简写。它等效于命令:

./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg

如果只想对一个图像进行运行检测,就不需要知道这一点,但是了解是否要进行其他操作(例如在网络摄像头上运行)将很有用。

多张图片
您可以将其留为空白,以连续尝试多个图像,而不必在命令行上提供图像。相反,当配置和权重加载完成时,您将看到提示:

./darknet detect cfg/yolov3.cfg yolov3.weights
layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  32  0.299 BFLOPs
    1 conv     64  3 x 3 / 2   416 x 416 x  32   ->   208 x 208 x  64  1.595 BFLOPs
    .......
  104 conv    256  3 x 3 / 1    52 x  52 x 128   ->    52 x  52 x 256  1.595 BFLOPs
  105 conv    255  1 x 1 / 1    52 x  52 x 256   ->    52 x  52 x 255  0.353 BFLOPs
  106 detection
Loading weights from yolov3.weights...Done!
Enter Image Path:

输入一个图像路径,data/horses.jpg以使其预测该图像的框
在这里插入图片描述
完成后,它将提示您输入更多尝试不同图像的路径。完成后,使用Ctrl-C退出程序。

更改检测阈值
默认情况下,YOLO仅显示置信度为.25或更高的对象。您可以通过将-thresh 标志传递给yolo命令来更改此设置。例如,要显示所有检测,可以将阈值设置为0:

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

会产生所有的检测框。因此,这显然不是超级有用,但是可以将其设置为不同的值,以控制模型对阈值的限制。

4.微型的YOLOv3

对于受限环境,我们也有一个非常小的模型yolov3-tiny。要使用此模型,请首先下载权重:

wget https://pjreddie.com/media/files/yolov3-tiny.weights

5.网络摄像头上的实时检测
如果看不到结果,对测试数据运行YOLO并不是很有趣。不用在一堆图像上运行它,而是在网络摄像头的输入上运行它!

要运行此演示,将需要使用CUDA和OpenCV编译Darknet。然后运行命令:

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

YOLO将显示当前的FPS和预测的类别,以及在其顶部绘制边框的图像。

需要将网络摄像头连接到OpenCV可以连接到的计算机,否则它将无法正常工作。如果连接了多个网络摄像头,并且想要选择要-c 使用的网络摄像头0,则可以通过该标志进行选择(默认情况下,OpenCV使用网络摄像头)。

如果OpenCV可以读取视频,也可以在视频文件上运行它:

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <video file>

未完待续,之后将会进行yolo在VOC数据上训练,在自己的数据上训练~

您的支持,是我不断创作的最大动力~

欢迎点赞关注留言交流~

深度学习,乐此不疲~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章