YOLO论文记之概述与实践

由于毕业论文方向选定为视频目标检测与跟踪,经过在paper池中查找,从rbg大神的R-CNN系列一直找到这篇最新的顶级paper,发现这篇论文的思路太棒了,而且该项目还自己写了一个开源的框架,论文的实验也开源了,故而准备以该研究为起点。(该部分属于自己瞎扯淡,大神可以直接忽略)
以下正式进入翻译阶段:

概述

我们提出一种叫YOLO新的目标检测方法。以前的目标检测的研究大多是改进分离器来进行检测。我们将目标检测的当做一种回归的问题来解决,通过空间的分割成边界框和相应类别的概率。我们采用单独的网络直接从整副图像来预测边界框和类别的概率。因为整个检测在一个网络内,所以它可以直接优化端到端的检测性能。(第一段大致这个意思,若有更准确的翻译,麻烦在下方回复,我会及时修改!)

感觉翻译论文有点麻烦,直接翻译大神的博客吧!哈哈!版权归属pj大神

YOLO是基于Pascal VOC2012数据集的目标检测系统。它能够检测到20种Pascal的目标类别,包括:

  • 鸟,猫,牛,狗,马,羊
  • 飞机,自行车,船,汽车,摩托车,火车
  • 瓶子,椅子,桌子,盆栽植物,沙发,电视或者显示器

YOLO是大神们开发的!哈哈!paper

YOLO是怎样运行的?

以前的检测系统大多是改进分类器或者改进定位器来进行检测。它们都将模型应用多个定位点和尺度。图片中得分高的区域就认为是检测到物体。

大神们使用不同的方法。他们单独使用神经网络来检测整张图片。网络能够将图片划分为不同的区域,然后预测边界框和每个区域的概率。这些区域框是通过预测的概率值来权重的(这段翻译的有点拗口,欢迎大家拍砖!!!)。
这地方感觉有点难理解,我们来看看大神的论文吧!

论文中第二部分(Unified Dectection)中说到:我们的系统将输入的图片分成一个 S×S 网格。如果目标的中心在网格的单元内,所对应的网格单元负责检测对应的目标。每一个网格单元预测 B 边界框和这些边界的置信的分数。它们的置信的分数表征了该边界包含该目标的模型得分,同事也可以给出模型对该边界的预测值。其中置信分数是通过如下计算公式得到的:

Pr(Object)IOUtruthpred

如果某网格单元中没有目标,则它的置信分数为 0 ,我们想要置信得分等于联合的交集(Intersection Over Union,IOU),该值是介于预测的框与真实的边框。
每一个边界框包括5各预测值: x,y,w,h,confidence .其中 (x,y) 坐标表示框的中心,w是边界框的宽,h是边界框的高,置信得分的预测表示IOU介于预测的边界与真实边界(有点不好理解,等我研究代码了,再回来修改该部分翻译吧!)
每个网格单元也预测C,类别的条件概率,即 Pr(Classi|Object) 。该概率值表示该网格单元包含某目标的可能性。同时这只预测每个网格单元某个类别集的概率,不考虑边界的数目.
在测试阶段,我们将类别的条件概率乘以某个边界置信的预测,
Pr(classi|Obejct)Pr(Object)IOUtruthpred=Pr(Classi)IOUtruthpred

该公式告诉我们每个边界属于某个类别置信得分。
YOLO论文记之概述与实践_第1张图片

如上图所示,我们的系统将检测作为一个回归问题。它将图片划分为 S×S 的网格,对于每个网格单元预测边界框(B)、边界框的置信度以及类别概率(C),因此这些预测值可以表示为 S×S×(B5+C) 的张量。

最后,我们可以设置一个检查的阈值,从而得到高得分的检查目标。

YOLO论文记之概述与实践_第2张图片

YOLO与以分类器为基础的系统有很多优势:

  1. 在测试时,它是使用整张图片来预测的,故而能够考虑整个图片的信息。
  2. 它使用唯一的网络来预测,而不像R-CNN使用上千个网络来预测一张图片。这样速度快了很多,比R-CNN快1000多倍,比Fast R-CNN快100多倍

使用训练好的模型进行目标检测

1. 安装Darknet

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

2. 下载已训练的模型权重文件

3. 运行yolo

./darknet yolo test cfg/yolo.cfg /yolo.weights 

注意:您也可以使用源码下的data目录中eagle.jpg、dog.jpg、person.jpg、horse.jpg。

多个图片进行检测

如下所示,您也可以不加指定的图片,从而可以检测多张图片。

./darknet yolo test cfg/yolo.cfg yolo.weights

使用更小的模型

原始的YOLO模型使用许多的GPU,如果你的图形显示卡比较小,您可以使用更小版本的YOLO模型,权重下载在此(359MB),运行命令如下:

./darknet yolo test cfg/yolo-small.cfg yolo-small.weights

使用微型模型

同时有更小的模型,模型权重下载在此(172MB),运行命令如下:

./darknet yolo test cfg/yolo-tiny.cfg yolo-tiny.weights

改变检测的阈值

YOLO默认只显示置信得分不小于0.2的检测目标。您可以使用-thresh 来改变。例如,您想显示所有的检测目标,可以使用如下命令:

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

你可能感兴趣的:(目标检测)