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

在YOLO系列中,YOLOv1是整个系列的基础,也是很经典的一种算法,同时我也完成了一些对v2和v3的解读:
YOLOv2的解读:《【深度学习YOLO系列】对YOLO v2的解读
YOLOv3的解读:《【深度学习YOLO系列】对YOLO v3的解读


YOLO v1结构

它的核心思想就是利用整张图作为网络的输入,将目标检测作为回归问题解决,直接在输出层回归预选框的位置及所属的类别。输入图像大小为 448 ∗ 448 448*448 448448,将其分割成了 7 × 7 = 49 7×7=49 7×7=49个网络,每个网格要预测两个 b o u n d i n g   b o x bounding\ box bounding box(候选框)的坐标 ( x , y , w , h ) (x, y, w, h) (x,y,w,h) b o x box box内是否包含物体的置信度 c o n f i d e n c e confidence confidence (每个 b o u n d i n g   b o x bounding\ box bounding box有一个 c o n f i d e n c e confidence confidence),以及物体属于 20 20 20类别中每一类的概率( Y O L O   v 1 YOLO\ v1 YOLO v1的训练数据集为 v o c 2012 voc2012 voc2012,它是一个 20 20 20分类的数据集)。所以一个网格对应一个 ( 4 × 2 + 2 + 20 ) = 30 (4×2+2+20)=30 4×2+2+20=30维的向量。

CSDN图标

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

这个置信度只是为表达 b o x box box内有无物体的概率(类似于 F a s t e r   R − C N N Faster\ R-CNN Faster RCNN R P N RPN RPN层的 s o f t m a x softmax softmax预测 a n c h o r anchor anchor是前景还是背景的概率),并不预测box内物体属于哪一类。

  • c o n f i d e n c e confidence confidence置信度

P r ( O b j e c t ) ∗ I O U p r e d t r u t h Pr(Object)*IOU^{truth}_{pred} Pr(Object)IOUpredtruth

其中前一项表示有无人工标记的物体落入了网格内,如果有则为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
    P r ( C l a s s i ∣ O b j e c t ) ∗ P r ( O b j e c t ) ∗ I O U p r e d t r u t h = P r ( c l a s s i ) ∗ I O U p r e d t r u t h Pr(Class_i|Object)*Pr(Object)*IOU^{truth}_{pred} = Pr(class_i)*IOU^{truth}_{pred} Pr(ClassiObject)Pr(Object)IOUpredtruth=Pr(classi)IOUpredtruth
  • 3、对于每一个类别,对PrIOU进行排序,去除小于阈值的PrIOU,然后做非极大值抑制。
CSDN图标

YOLO v1代价函数

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

CSDN图标

YOLO v1的图解如下所示:

CSDN图标
  • loss代价函数中 w w w 为什么要开根号 w \sqrt{w} 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的值更大,更符合我们的实际判断。

CSDN图标
  • 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版本的代码下载

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值