YOLO v1结构

它的核心思想就是利用整张图作为网络的输入,将目标检测作为回归问题解决,直接在输出层回归预选框的位置及所属的类别。输入图像大小为448448448*448,将其分割成了7×7=497×7=49个网络,每个网格要预测两个bounding boxbounding\ box(候选框)的坐标 (x,y,w,h)(x, y, w, h)boxbox内是否包含物体的置信度confidenceconfidence (每个bounding boxbounding\ box有一个confidenceconfidence),以及物体属于2020类别中每一类的概率(YOLO v1YOLO\ v1的训练数据集为 voc2012voc2012,它是一个2020分类的数据集)。所以一个网格对应一个 4×2+2+20=30(4×2+2+20)=30维的向量。

【深度学习YOLO系列】对YOLO v1的解读

如下图所示, 7×77×7网格内的每一个grid(红色框),对应两个大小形状不同的bounding boxbounding\ box (黄色框)。每个box的位置坐标为 (xywh)(x,y,w,h)xxyy 表示boxbox 中心点与该格子边界的相对值, wwhh表示预测boxbox的宽度和高度相对于整幅图像的宽度和高度的对比。xywh(x,y,w,h) 会限制在 [0,1][0,1] 之间。与训练数据集上标定的物体真实坐标 Gx,Gy,Gw,Gh(Gx,Gy,Gw,Gh) 进行对比训练,每个gridgrid 负责检查中心落在该格子的物体。

这个置信度只是为表达boxbox内有无物体的概率(类似于Faster RCNNFaster\ R-CNNRPNRPN层的softmaxsoftmax预测anchoranchor是前景还是背景的概率),并不预测box内物体属于哪一类。

【深度学习YOLO系列】对YOLO v1的解读【深度学习YOLO系列】对YOLO v1的解读
  • confidenceconfidence置信度

Pr(Object)IOUpredtruthPr(Object)*IOU^{truth}_{pred}

其中前一项表示有无人工标记的物体落入了网格内,如果有则为1,否则为0。第二项代表bounding box和真实标记的box之间的IOU。值越大则box越接近真实位置。

confidence是针对bounding box的,每个网格有两个bounding box,所以每个网格会有两个confidence与之对应。

YOLO v1预测工作流程

  • 1、每一个格子得到两个bounding boxes
  • 2、每个网格预测的class信息和bounding boxes预测的confidence信息相乘,得到每个bounding box预测具体物体的概率和位置重叠的概率PrIOU
    Pr(ClassiObject)Pr(Object)IOUpredtruth=Pr(classi)IOUpredtruthPr(Class_i|Object)*Pr(Object)*IOU^{truth}_{pred} = Pr(class_i)*IOU^{truth}_{pred}
  • 3、对于每一个类别,对PrIOU进行排序,去除小于阈值的PrIOU,然后做非极大值抑制。
【深度学习YOLO系列】对YOLO v1的解读

YOLO v1代价函数

YOLO v1的loss function如下所示,包含三部分:位置误差、confidence误差、分类误差。

【深度学习YOLO系列】对YOLO v1的解读

YOLO v1的图解如下所示:

【深度学习YOLO系列】对YOLO v1的解读
  • loss代价函数中ww 为什么要开根号 w\sqrt{w} ?

如下图所示:绿色为bounding box,红色为真实标注。如果w和h没有平方根,那么bounding box跟两个真实标注的位置loss是相同的,但是从面积看来B框是A框的25倍,C框是B框的81/25倍,B框跟A框的大小偏差更大,不应该得到相同的loss。

如果w和h加上平方根,那么B对于A的位置loss约为3.06,B对C的位置约为1.17,B对A的位置loss的值更大,更符合我们的实际判断。

【深度学习YOLO系列】对YOLO v1的解读
  • YOLO v1代价函数的weight(权重)说明

不同的任务重要程度不同,所以也应给予不同的loss weight:

1).每个网格两个预测框坐标比较重要,给这些损失前面赋予更大的loss weight,在pascal VOC取值为5。

2).对没有object的box的confidence loss,赋予小的loss weight,在pascal VOC训练中取0.5.

3).有object的box的confidence loss和类别的loss的loss weight正常取1。

YOLO v1的缺点

1、每个网格只对应两个bounding box,当物体的长款比不常见(也就是训练数据集覆盖不到时),效果较差。

2、原始图片只划分7×7的网格,当两个物体靠的很近时,效果比较差。

3、最终每个网格只对应一个类别,容易出现漏检(物体没有被识别到)。

4、每个图片中比较小的物体,效果比较差。


参考:
论文下载
darknet版的代码下载
tensorflow版本的代码下载

相关文章:

  • 2021-05-14
  • 2021-05-15
  • 2021-08-28
  • 2021-07-27
  • 2022-01-23
  • 2021-05-30
  • 2021-11-11
  • 2021-04-25
猜你喜欢
  • 2021-06-26
  • 2021-10-03
  • 2021-06-24
  • 2021-08-29
  • 2022-01-23
  • 2022-12-23
  • 2021-06-05
相关资源
相似解决方案