Yolo:实时目标检测实战(上)

YOLO:Real-Time Object
Detection

你只看一次(YOLO)是一个最先进的实时物体检测系统。在帕斯卡泰坦X上,它以每秒30帧的速度处理图像,在COCO test-dev上有57.9%的mAP。

与其他探测器的比较,YOLOv3非常快速和准确。在0.5 IOU处测得的mAP中,YOLOv3与焦距损失相当,但速度快了约4倍。此外,可以轻松地权衡速度和准确性之间的简单改变模型的大小,无需再训练!

COCO数据集的性能

How it works

先前的检测系统重新利用分类器或定位器来执行检测。他们将模型应用于多个位置和比例的图像。图像的高分区域被认为是检测。

我们使用完全不同的方法。我们将单一的神经网络应用于完整的图像。该网络将图像分为多个区域,并预测每个区域的包围盒和概率。这些边界框由预测的概率加权。

与基于分类器的系统相比,我们的模型有几个优点。它在测试时查看整个图像,因此它的预测由图像中的全局上下文通知。与R-CNN这样的系统不同,R-CNN需要数千张图片才能得到一张图片。这使得它非常快,比R-CNN快1000倍,比R-CNN快100倍。有关完整系统的更多详细信息,请参阅我们的论文。

What is New in Version 3?

YOLOv3使用了一些技巧来改进训练和提高性能,包括:多尺度预测、更好的主干分类器等等。

Detection Using A Pre-Trained Model

这篇文章将指导你通过使用一个预先训练好的模型用YOLO系统检测物体。如果你还没有安装Darknet,你应该先安装。或者不去阅读所有的东西:

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

cd darknet

make

容易的!

在cfg/子目录中已经有YOLO的配置文件。你必须在这里下载预先训练的权重文件(237MB)。或者运行这个:

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

Then run the detector!

可以看到下面的输出信息:

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打印出它检测到的物体,它的可信度,以及找到它们所花的时间。我们没有用OpenCV编译Darknet,因此它不能直接显示检测结果。相反,它将它们保存在predictions.png中。您可以打开它来查看检测到的对象。因为我们在CPU上使用Darknet,所以每张图像大约需要6-12秒。如果我们使用GPU版本,速度会快得多。

我已经包括了一些例子图片,以防你遇到困难。尝试

data/eagle.jpg, data/dog.jpg,
data/person.jpg, or data/horses.jpg!

detect命令是命令的更通用版本的简写。它相当于命令:

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

如果您只想在一个图像上运行检测,则不需要知道这一点,但知道是否要执行其他操作(如在网络摄像头上运行)(稍后将看到)会很有用。

Multiple Images

不要在命令行上提供图像,您可以将其留空以尝试一行中的多帧图像。相反,当配置和权重完成加载时,您将看到一个提示:

./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

产生:

![][all]

所以这显然不是非常有用,但是可以将其设置为不同的值来控制模型设置的阈值。 yolov3 tiny

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

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

然后使用微型配置文件和权重运行检测:

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

网络摄像头的实时检测

如果看不到结果,在测试数据上运行YOLO就不是很有趣了。与其在一堆图片上运行,不如在网络摄像头的输入上运行!

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

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

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

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

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

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

这就是我们制作上述YouTube视频的方式。

训练YOLO学习VOC

如果你想使用不同的训练模式、超参数或数据集,你可以从头开始训练YOLO。下面是如何让它在Pascal VOC数据集上工作。

获取Pascal VOC数据

要训练YOLO,您需要2007年至2012年的所有VOC数据。你可以在这里找到数据的链接。要获取所有数据,请创建一个目录来存储所有数据,然后从该目录运行:

wget
https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar

wget
https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar

wget
https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar

tar xf VOCtrainval_11-May-2012.tar

tar xf VOCtrainval_06-Nov-2007.tar

tar xf VOCtest_06-Nov-2007.tar

现在将有一个VOCdevkit/子目录,其中包含所有VOC训练数据。

为VOC生成标签

现在我们需要生成Darknet使用的标签文件。Darknet希望为每个图像创建一个.txt文件,并为图像中的每个地面真实对象创建一条线,如下所示:

其中x、y、宽度和高度与图像的宽度和高度相关。要生成这些文件,我们将在Darknet的script s/目录中运行voc_label.py脚本。我们再下载一次吧,因为我们很懒。

wget
https://pjreddie.com/media/files/voc_label.py

python voc_label.py

Yolo:实时目标检测实战(上)相关推荐

  1. Yolo:实时目标检测实战(下)

    Yolo:实时目标检测实战(下) YOLO:Real-Time Object Detection After a few minutes, this script will generate all ...

  2. YOLO:实时目标检测

    北京 | 深度学习与人工智能研修 12月23-24日 再设经典课程 重温深度学习阅读全文> 一瞥(You Only Look Once, YOLO),是检测Pascal VOC(http://h ...

  3. 目标检测实战必会!4种基于YOLO目标检测(Python和C++两种版本实现)

    目标检测实战必会!4种基于YOLO目标检测(Python和C++两种版本实现) AI算法修炼营 1周前 以下文章来源于极市平台 ,作者CV开发者都爱看的 极市平台 专注计算机视觉前沿资讯和技术干货,官 ...

  4. 目标检测实战:4种YOLO目标检测的C++和Python两种版本实现

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨nihate 审稿丨邓富城 编辑丨极市平台 导读 本文作者使用C++编写一套基于OpenCV的Y ...

  5. 【深度学习】目标检测实战:4种YOLO目标检测的C++和Python两种版本实现

    作者丨nihate 审稿丨邓富城 编辑丨极市平台 导读 本文作者使用C++编写一套基于OpenCV的YOLO目标检测,包含了经典的YOLOv3,YOLOv4,Yolo-Fastest和YOLObile ...

  6. 【目标检测】54、YOLO v7 | 又是 Alexey AB 大神!专为实时目标检测设计

    文章目录 一.背景 二.方法 2.1 结构 2.2 Trainable bag-of-freebies 三.效果 论文:YOLOv7: Trainable bag-of-freebies sets n ...

  7. 手把手用YOLO做目标检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自 | 新机器视觉 作为目前机器学习领域最火热的研究方向之一 ...

  8. 算力限制场景下的目标检测实战浅谈

    作者:张钊宁 本文为极市原创,转载请注明作者和出处. 原文:算力限制场景下的目标检测实战浅谈 本篇文章为张博19年1月18日在极市直播分享的文字详细整理. 算力限制场景主要是指在嵌入式设备,也就是算力 ...

  9. python交通标志识别_YOLOv3目标检测实战:交通标志识别

    在无人驾驶中,交通标志识别是一项重要的任务.本项目以美国交通标志数据集LISA为训练对象,采用YOLOv3目标检测方法实现实时交通标志识别. 具体项目过程包括包括:安装Darknet.下载LISA交通 ...

最新文章

  1. c++驱动键鼠源码,C++ 驱动打印机源码
  2. vlc rtsp流 转 http播放视频
  3. CSDN安全设置需改进
  4. 阿里云服务器如何安装memcached
  5. [学习笔记]Hadoop 配置调试错误收集
  6. wince中BIB文件的详细介绍
  7. Halcon算子学习:surface_normals_object_model_3d
  8. java 回溯_java 实现迷宫回溯算法示例详解
  9. 不干胶设计用什么软件制作_用什么软件制作抖音短视频会比较好?
  10. 3dmax软件怎么贴图
  11. 使用微信同声传译插件开发一款翻译类的小程序
  12. go——垃圾回收机制(GC)
  13. 《天才在左疯子在右》读后感
  14. 个人空间岁末大回报活动12月30日获奖名单
  15. 11月20日云栖精选夜读:围观阿里总部:边喝茶边搞技术是一种怎样的体验?
  16. 科学计算器按键功能汇总
  17. 在eclipse中使用subclipse
  18. 中金财富后台开发一面经验分享
  19. 天龙手游角色删除服务器还有显示,天龙八部手游怎么删除角色_角色删除方法详解_玩游戏网...
  20. 【亲测 | 004】趣味测试小程序源码各种测试(趣味测试、爱情测试、缘分测试、性格测试) | 极致技术工厂

热门文章

  1. 2022-2028年中国硅酸钙板行业市场研究及前瞻分析报告
  2. 2022-2028年中国石油钻井井下工具行业市场研究及前瞻分析报告
  3. 关于python 中的__future__模块
  4. 禁用GPU版本TensorFlow,切换到CPU版本TensorFlow。
  5. 迭代是人,递归是神(迭代与递归的总结:比较)
  6. 人工智能AI Boosting HMC Memory Chip
  7. AI+IoT+电池应用
  8. ad 卡尔曼_卡尔曼滤波剪影__Kalman Filtering · Make Intuitive
  9. Tablayout 修改默认选项页,或者跳转到指定的选项页
  10. Tomcat内存溢出解决方法