一、yolo是什么?
yolo是目标检测模型。目标检测是计算机视觉中比较简单的任务,用来在一张图片中找到特定的物体,目标检测不仅要求对物体的种类进行识别,同时要求我们对物体的位置进行标记。而且YOLO相比于以往的带有建议框的神经网络,速度大有提升。

类别是离散数据,位置是连续数据。

二、yolo的原理
目标
我们的目的是找出一张图片上物体的位置和种类,这其中包含5个信息:物体的中心位置(x,y),物体的长和宽(h,w),最后是 物体的种类。
YOLO 的预测是基于整个图片的,并且它会一次性输出所有检测到的目标信息,包括类别和位置。就好像捕鱼,yolo会将整张网撒下去,将所有的鱼都捞起来。
假设我们处理的照片是一个正方形的。

原理
YOLO的第一步是分割图片,它将图片分割为 S^2个grid,每个grid的大小都是相等的,像这样:

YOLO只要求这个物体的中心落在这个框框之中。

这意味着不用设计非常非常大的框,只需要让物体的中心在这个框中就可以了,而不是必须要让整个物体都在这个框中。

我们要让这个S^2 个框每个都预测出B个bounding box(边界框),这个bounding box有5个量,分别是物体的中心位置(x,y)和它的高(h)和宽(w),以及这次预测的置信度。

每个框框不仅只预测B个bounding box,它还要负责预测这个框框中的物体是什么类别的,这里的类别用one-hot编码表示。

注意,虽然一个框框有多个bounding boxes,但是只能识别出一个物体,因此每个框框需要预测物体的类别,而bounding box不需要。

也就是说,如果我们有 S^2 个框框,每个框框的bounding boxes个数为B,分类器可以识别出C种不同的物体,那么所有整个ground truth的长度为:

[公式]

先看这些bounding box显示出来是什么样的: