目标检测系列:yolov1解析

接触目标检测一段时间,回过头来总结一下看过的论文。


深度学习听起来很高大上,其实就只有两种问题, 1. 分类问题, 2.回归问题,目标检测可以说是两种问题的结合。学过深度学习的人上手的第一个代码应该就是手写数字的分类,也就是对图像的分类问题,目标检测第一个任务也就是分类。
看下面这张图,yolov1就是在图像上画大量的默认框,这些框足以圈住所有的物体,如图中,加粗的边框包住了狗,汽车和自行车。我们对所有给出的默认框当成一幅独立的图片,那么这就变成一个和手写数字分类一样的图像分类问题,对所有的默认框进行分类,框中有物体的保留,没有物体的舍去,这样分类任务就结束了。
对上述得到的边框进行回归这样就会使结果框更准确。
yolov1执行过程总结如下:

  1. 给出大量默认框
  2. 对默认框中的物体进行分类,有物体的保留,没有舍去
  3. 对上述得到的边框进行回归,修正结果

所有的目标检测都是这个过程,所以在看论文的时候记住这个主线,就没什么难度了
在这里插入图片描述

1.生成默认边框

默认框的生成对检测的速度影响很大,r-cnn和fast-rcnn中使用selective serch生成默认框,这个过程很慢,对时效性影响太大,yolo使用了很简单,快速的方法,如上图,将一张图片分成sxs个grid(这里使用的s=7),在每个grid位置产生B(这里是2个)boxes,如下图所示,红圈为该grid的中心,然后为这个grid中心产生两个boxes,黄框所示。这个边框的选择可以根据不同的问题选择不同的尺寸,比如在VOC2007中的物体偏大,所以选择的默认框尺寸偏大。

在这里插入图片描述

2 物体分类

物体的分类其实分为两个阶段

  • 第一个阶段:判断方框内是否有物体
  • 第二阶段: 确定方框有物体后,判断属于哪个类别

在这里插入图片描述
先介绍一下IOU的概念,IOU其实很简单就是iou = A ⋂ B A ⋃ B \frac{A\bigcap B}{A\bigcup B} ABAB,这是干什么用的呢?用于第一阶段的分类,判断边框内是否有物体,若默认box和真实box之间的iou大于某阀值的时候,认为有物体,小于该阀值,认为没有物体a,如1中图所示,假设阀值为0.5,显然,box1和ground_truth之间的iou小于阀值,认为没有物体这里记为Pr(object)=0,box2与ground_truth之间的iou大于阀值,所以认为有物体,Pr(object)=1。
接下来,我们要对物体进行分类:
在这里插入图片描述
上述是输整个网络的结构,输入是224x224的图片,最后的输出是(7x7x30)的向量先分析一下这输出,然后封装训练数据。7x7是上述所说的将图片分为7x7的grid,一个一个grid处理。每个grid有(5x2+20)个输出值,可以看出来,两个boxes分别处理的,每个box预测x,y,w,h,confidence, 注意,这五个值是以box为单位进行预测的,20个类别是按grid进行预测的,confidence是判断boxes内是否有物体,要注意:x,y,w,h并不是直接预测边框的x,y,w,h,是对box的微调值,细节后面再讲

要对图片进行分类,那么必须要有标签,(x,y,w,h,confidence,20个类别),想,在ground_truth所在的grid内,confidence=1,而(x,y)是这个ground_truth所在grid的中心点,(w,h)是ground_truth的长宽,类别很简单,就是单纯的类别,voc2007有20个类别,每个类别之所以用20个数表示,是因为类别用one-hot表示的。

3 对分类后的边框进行回归

上面我们说预测的x,y,w,h并不是直接预测边框的x,y,w,h,x,y是相对该物体中心所在grid的左上角的偏移,w,h是对生成box的w,h的放缩,细节后面再讲我们之前说过,预测的confidence是指某个grid是否有物体,每个grid会有两个默认boxes,x,y,w,h就是在这个默认boxes进行微调,使得预测的box和真实box更加接近。下面分析一下损失函数。
在这里插入图片描述
λ c o o r d \lambda_{coord} λcoord, λ n o o b j \lambda_{noobj} λnoobj是两个系数,这是作者自己根据经验自己定义的,默认boxes有很多,但是和真实box相交的只占小部分,这是目标检测很严重的一个问题,成为正负样例不均衡,有很多论文就是针对这个问题提出的,这两个系数就是用来平衡误差的惩罚项。 S S S是指grid的个数, B B B是每个grid推荐的boxes的个数。 1 i , j o b j 1^{obj}_{i,j} 1i,jobj是指有物体的confidence, 1 i , j n o o b j 1^{noobj}_{i,j} 1i,jnoobj是指没有物体的confidence。
整个损失函数分为五个部分:

1.计算有物体中心位置的误差,(x,y)是confidence=1,即有物体的grid相对于左上角的偏移。
在这里插入图片描述
2. 计算confidence=1的grid,w,h的误差
在这里插入图片描述
3. 这是计算真实box中心所在grid的confidence的误差

4. 计算没有物体的grid的confidence误差
在这里插入图片描述
5. 计算有物体的grid的类别误差
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值