目标检测算法—YOLO-V1

为什么会叫YOLO呢?

YOLO:you only look once。只需要看一眼,就可以检测识别出目标,主要是突出这个算法 快 的特点。(原文:Yolo系列之前的文章:主要是rcnn系列的,他们的基本思想都是通过产生大量的 region proposal,然后再用分类器去判断分类和对bounding box进行修正。为检测一个对象,在检测图像上的各个位置、不同尺度进行评估。

yolo系列的文章提出了一个不一样的思路。大致思想就是将物体检测任务当做一个回归问题来处理,在输出层对bounding box 的位置和所属类别进行回归。

1. yolo v1 的基本思想

we frame  object detection as a regressionproblem to spatially separated boundind boxes and associated classprobabilities.

我们设计将目标检测作为一个回归问题来处理空间分隔的边界框和相关的类概率

rcnn系列算法慢的原因:each individual component must be trainedseparately.

 

pipeline

使用YOLO来检测物体,其流程是非常简单明了的: 

1、将图像resize到448 * 448作为神经网络的输入 

2、运行神经网络,得到一些bounding box坐标、box中包含物体的置信度和class probabilities 

3、进行非极大值抑制,筛选Boxes

问题:怎么产生box的?(带着问题去阅读)

Unified Detection(统一检测)

l 将输入图片划分成 S*S 的网格。如果目标的中心落入到网格内(我怎么知道目标的中心是否在网格内,注意是有监督的训练,给出的数据集会给出目标中心坐标),则这个网格就负责进行这个目标的检测

l 置信项反映包含目标的置信度和预测位置的准确度,相应的公式为  confidence = Pr(Object) * IOU

l 每个grid cell同时预测B个bounding box的位置和一个置信度。(这里的B个怎么理解:猜测意思就是每一个grid cell对应多个不同尺度比例的bbox

l 每个bounding box要预测(x,y, w, h)和confidence共5个值,每个网格还要预测一个类别信息,记为C类。

(x,y)表示框的中心相对于网格单元的边界的尺度;

(w,h)预测框相对于整个图像。

没有目标,则confidence就是零;有目标,confidence就是预测框与ground truth的IOU。

则SxS个网格,每个网格要预测B个bounding box还要预测C个categories。输出就是S x S x (5*B+C)的一个tensor。 

上面这个公式表明了在box内类别出现的可能性和预测框匹配目标的好坏程度。

注意:class信息是针对每个网格的,confidence信息是针对每个bounding box的。

l 得到每个box的class-specificconfidence score以后,设置阈值,滤掉得分低的boxes,对保留的boxes进行NMS处理,就得到最终的检测结果。

根据图片描述整个算法过程

1.      输入一张图片,首先划分成 7*7 的网格grid cell。(接下来是每一个网格提取feature map,以便进行分类预测)

2.      将整张图片送进CNN网络,原图尺寸为448*448*3,经过CNN后变成了7*7*1024;

    原来在原图上的一个grid cell, 大小是7*7*3(RGB图像,3通道),经过CNN后变成了 1*1*1024(也就是说原图上的一个7*7小格,对应的feature map 上 的一个像素点)

3. 最终448*448*3的图像,输出7*7*30的向量,30个通道的意思是(2*5+ 20)(20个通道,不同的通道提取出不同的信息,以便后面的处理)

20:使用Pascal VOC20数据集,分类种类数是20

2 :每一个grid cell对应两种不同尺度的bbox

5 :  bbox的5中信息,中心坐标x,y,宽和高w,h,置信度评分confidence

已知输入和输出,如何设计中间的卷积层?

2. Loss function

猜你喜欢

转载自www.cnblogs.com/wemo/p/10356189.html