YOLO

  物体检测主要分为两大流派,之前介绍了以R-CNN为基础的一系列,它们把物体检测当做是一个分类问题。今天要介绍的是YOLO系列,它们把物体检测当做是一个单一的回归问题。

YOLO相对于R-CNN系列不同的地方主要是如下几点:

  1. YOLO无论是在训练还是检测过程,都是采用的一个单一的端到端的网络。它没有像R-CNN那样,去找一些region proposal。这样的好处是,网络输入的是一整个图像到卷积,卷积可以利用整个图像的上下文信息。而fast-CNN在预测的过程中会丢失一些上下文信息,这样会导致将一些背景误检;
  2. YOLO将物体检测作为一个单一的回归问题来做,图像经过一次inference,就可以输出所有的物体的bounding box以及所属类别的概率。而R-CNN系列有两个部分,一个是物体分类(分类问题),物体位置(回归问题);

网络结构

  YOLO将图片划分为s*s的网格,每个网格输出B个bounding box的坐标(x,y,w,h)、坐标的置信度以及该物体属于某一类的概率。网络输出的bounding box的中心落入到某个网格,那么就会由那个网格来输出检测结果,如下图所示:

![](https://i.imgur.com/0xejt6c.png)

上图中检测出的狗狗的bounding box的中心落入到了蓝色的网格中,那么该bounding box以及物体类别应该有蓝色的这个网格输出。

在YOLO中,每个网格输出B个bounding box的坐标,假设需要预测的类一共有C种。那么我们网络的输出结构应该是ss(B*5+C),其中5代表了bounding box的坐标4个点,以及置信度。

置信度confidence的定义如下

$confidence=P(obj)*IOU^{truth}_{pre}$

其中 $P(obj)$ 代表当前bounding box的物体输入obj类的概率,而 $IOU^{truth}_{pre}$ 代表预测的bounding box和ground truth的IOU。

yolo网络结构如下图所示: