YOLOv1的检测原理是什么

问题1:YOLOv1的检测原理是什么?

      将图片分成S×S(论文中是7×7)的网格(grid),每一个具体的网格块(grid cell)就负责检测一个物体(object),所以YOLOv1在每张图片中最多能检测到S×S(论文中是49)个物体。对于大多数图片来说,这已经足够,通常在一张图片中能够有10个以上的主要目标就已经不常见了,但对于比较密集的人群或畜群来说,YOLOv1的检测能力就比较差。

      每个网格块(grid cell)都对物体预测了B(论文中是2)个矩形边框(bounding boxes),这个边框的大小是可以超出当前网格范围的,而且大部分情况下都是这样。对于每个边框都预测了(predictions)5个参数,分别是x,y,w,h,confidence.

      其中,(x,y,w,h)决定边框在图片中的位置,(x,y)表示边框的中心位置坐标,(w,h)则表示边框的宽度和高度,这4个参数值一旦确定,就可以在图中唯一地画出一个边框。confidence则是对每个边框预测的一个置信度分数(scores),代表这个边框预测的准确程度。

     对于confidence参数的含义,原文表述如下:These confidence scores reflect how confident the model is that the box contains an object and also how accurate it thinks the box is that it predicts.

       从图中看起来就会发现,有一些预测的边框比较细,另外一些则比较粗,但其实每一个边框的粗细都是一样的,出现这种情况的原因就是有多个网格块都预测到了这个物体,预测的边框重合之后看起来就比较粗。      

目标检测的任务分为两块,定位(在哪儿)与识别(是什么)。边框的预测只是解决了定位的问题,还需要对物体进行识别,也就是分类。

       YOLOv1采用的数据集为PASCAL VOC,这个数据集中一共有20个类别的物体,YOLOv1对每个类别都预测了一个条件概率(conditional class probabilities),一共有C(论文中为20,因为数据集有20个类别)个参数值,也就是在检测到物体的情况下,这个物体是数据集中每一个类别的概率为多大。

上图中一共有5种不同的颜色,代表一个预测到了5个不同的类别,相同的颜色代表一个类别。    

综上,对于每一个网格块(grid cell),YOLOv1的输出是S×S×(B*5+C)个张量(tensor),论文中的输出就是7×7×30的张 量。

YOLOv1的网络结构

 

网络的输入是448×448×3的彩色图片,输出就是7×7×30的张量

 

YOLOv1的检测结果如下: