YOLOv1:You Only Look Once: Unified, Real-Time Object Detection

一、前期知识

1.目标检测评价指标——mAP(平均准确率均值)

在这里插入图片描述
如上图所示,有7张图片,其中有15个ground-truth,用绿色边框表示,24个检测到的对象用红色框表示,每个检测到的对象由字母A,B,…,Y表示,并具有知信度confidence
在这里插入图片描述
上表为图中对应信息

TP和FP:

  1. True Positive (TP): IOU>=阈值的检测框
  2. False Positive (FP): IOU<阈值的检测框
  3. False Negative (FN): 未被检测到的GT
  4. True Negative (TN): 忽略不计

P r e c i s i o n = T P T P + F P = T P a l l    d e t e c t i o n s Precision=\frac{TP}{TP+FP}=\frac{TP}{all\;detections} Precision=TP+FPTP=alldetectionsTP

R e c a l l = T P T P + F N = T P a l l    g r o u n d − t r u t h s Recall=\frac{TP}{TP+FN}=\frac{TP}{all\;ground-truths} Recall=TP+FNTP=allgroundtruthsTP

按照置信度从大到小将框进行排序:
在这里插入图片描述
利用confidence给BBOX排序,对每个BBOX都计算对应的precision和recall值,例如:
对BBOX R, precision = 1/1 = 1, recall = 1/15=0.0666
对BBOX Y, precision = 1/2 = 0.5, recall = 1/15=0.0666
对BBOX J, precision = 2/3 = 0.6666, recall = 2/15=0.1333
在这里插入图片描述
根据每个框的召回率和精确率画出折线图,即上图左图
通过11点插值法,即以0.1为间隔计算召回率对应的准确率,得到右图

ρ i n t e r p ( γ ) = max ⁡ r : r ⩾ r ρ ( γ ~ ) \rho_{interp}(\gamma)=\max \limits_{r:r\geqslant r}\rho(\tilde\gamma) ρinterp(γ)=r:rrmaxρ(γ~),其中 ρ i n t e r p ( γ ) \rho_{interp}(\gamma) ρinterp(γ)表示当前插值召回率的准确率
公式整体表示:当前召回率对应的准确率等于所有大于等于当前召回率的召回率对应的准确率的最大值值

举例说明:
第一个插值点是0.0,从左图上可以看到,大于等于0的召回率中,R点对应准确率最大,是1,所以对应右图,当召回率为0,其准确率为1
第二个插值点是0.1,从左图上可以看出,大于等于0.1的召回率中,J点对应准确率最大,为0.6666,所以在右图中,召回率为0.1,其准确率为0.6666
依次类推计算后面的插值点的准确率

然后计算这11个点的平均准确率:
A P = 1 11 ∑ r ∈ { 0.0 , 0.1 , . . . , 1.0 } ρ i n t e r p ( γ ) AP=\frac{1}{11}\sum\limits_{r\in\{0.0,0.1,...,1.0\}}\rho_{interp}(\gamma) AP=111r{0.0,0.1,...,1.0}ρinterp(γ)

A P = 1 11 ( 1 + 0.6666 + 0.4285 + 0.4285 + 0.4285 + 0 + 0 + 0 + 0 + 0 + 0 ) = 26.84 % AP=\frac{1}{11}(1+0.6666+0.4285+0.4285+0.4285+0+0+0+0+0+0)=26.84\% AP=111(1+0.6666+0.4285+0.4285+0.4285+0+0+0+0+0+0)=26.84%
上面得到的只是针对一个类别的AP,要计算mAP,需要先按上述方式计算完其他所有类别相应的AP,然后再就求均值,得到的就是mAP

二、论文内容

1.论文结构

  • Abstract:介绍了yolo算法及其速度快的优点
  • 1.Introduction:1.yolo简单原理图 2.与R-CNN相比yolo的优点 3.与传统算法相比yolo的有点
  • 2.Unified Detection:one stage detection算法的原理和细节
    • 2.1Network Design:介绍yolo与fast yolo的网络结构
    • 2.2Training:yolo训练方法、损失函数及参数
    • 2.3Inference:yolo预测阶段细节
    • 2.4Limitations of YOLO:yolo的一些局限性
  • Comparasion to Other Detection Systems:与其他算法对比,包括相同点和不同点
  • Experiments:从速度和精度上与其他算法做对比
  • Real-Time Detection In The Wild:yolo连接摄像头时可以进行实时监测
  • Convolution:再次强调了yolo的优点——one stage、快速、鲁棒

2.yolo算法思想

2.1 yolo算法大致流程

在这里插入图片描述

  1. Resize image:将图片尺寸变为448*448
  2. Run convolutional network:输入图片到神经网络中
  3. Non-max suppression:使用非极大值抑制得到最后的结果

2.2 yolo算法细节

在这里插入图片描述

  1. 将图片隐式地分为SxS个网格
  2. 物体的中心落在哪个网格内,哪个网格就负责预测这个物体
  3. 每个网格需要预测B个框, C个类别
  4. 每个框包含了位置信息和置信度(x, y, w, h, confidence)

在这里插入图片描述

物体的中心落在哪个网格内,哪个网格就负责预测这个物体
比如图中狗的中心点落在了绿色的网格里, 那么这个网格就负责预测狗。
比如图自行车的中心点落在了蓝色的网格里, 那么这个网格就负责预测自行车。
在这里插入图片描述

每个网格需要预测B个框,C个类别(这B个框预测的为一个类别,一个物体)
x,y,w,h,c都是经过归一化处理的,他们的值都在0,1之间

因为一个网格里面预测的B个框都是一个类别,属于同一个物体,因此当出现下述情况就会出现问题:

  1. 如果一个网格内出现了两个物体的中心
  2. 一个网格里包含多个小物体(比如天空中的鸟群)

以上两种情况均只能检测出一个类和一个物体,所以yolo对于靠的很近的物体以及小目标群体的检测效果不是很好

每个框包含了位置信息和置信度(x. y, w, h, confidence)
x,y为中心点坐标, w,h为框的宽度(均经过归一化,值在0—1之间) confidence是置信度
所以一张图预测的信息一共有: SxSx(Bx5+C)

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

第一项为物体先验概率,如果框内包含物体值为1,否则为0。、
第二项为预测框与真实框的交并比(0——1)
所以Confidece的取值范围为0——1

由公式可以知道Confidence的大小反映了两个信息:

  1. 预测框内包含物体的置信度是多少
  2. 预测框预测的准确度

3. yolo网络结构

3.1 网络的总体结构

在这里插入图片描述

  • 组成:24个卷积层,2个全连接层
  • 输入:尺寸为448x448x3的图像
  • 输出:尺寸为7x7x30的向量

在这里插入图片描述
网络结构图中feature map上的一条红线,表示的就是原图被划分成7x7的网格中的某一格所预测的信息,在这里也就是2个Bounding Box和20类的信息,具体的对应过程可以从上图看出

feature map的尺寸,就是对应于上面的一张图所预测的信息——SxSx(Bx5+C),这里S=7,B=2,C=20

3.2 网络结构详细信息

在这里插入图片描述

4. 损失函数

在这里插入图片描述
说明:
由上述损失函数公式可以看到,所有的损失,都是由ground-truth值减去预测值,所以说,yolo把整个检测问题转换为了回归问题来处理
在这里插入图片描述
在这里插入图片描述
对于这张图而言boxes=7x7+2=98
仅有3个框参与坐标点损失、包含物体置信度损失、类别损失计算

有95个框参与不包含物体的置信度损失计算

对于每张图片,大多数格点单元不包含目标,其对应的置信度得分为0。目标存在与不存在框的比例失衡,将会影响最后loss的计算,从而影响包含目标的格点单元的梯度,导致模型不稳定,训练容易过早收敛甚至发散。

因此,我们增加bounding box坐标对应的loss,同时对于不包含目标的box,降低其置信度对应的loss。我们用 λ c o o r d 、 λ n o o b j \lambda_{coord}、\lambda_{noobj} λcoordλnoobj来实现这一功能,且: λ c o o r d = 5 ,    λ n o o b j = 0.5 \lambda_{coord}=5, \;\lambda_{noobj}=0.5 λcoord=5,λnoobj=0.5

在这里插入图片描述
对不同大小的bbox预测中,相比于大bbox预测偏一点,小box预测偏一点更不能忍受。而平方误差损失(sum-squared error loss)中对同样的偏移loss是一样。作者用了一个比较取巧的办法,就是将box的width和height取平方根代替原本的height和width。因为smal bbox的横轴值较小,发生偏移时,反应到y轴上的loss比big box要大

5.网络训练

5.1 预训练阶段

预训练分类网络:
训练数据集: ImageNet 1000类竞赛数据集
网络结构: yolo pre 20convs+averagepool+fully connected layer
训练结果: top-5 accuracy of 88% on ImageNet 2012 validation set
训练尺寸(分辨率): 224*224

5.2 训练阶段

训练检测网络:
训练数据集: PASCAL VOC 2007&2012 数据集
训练尺寸: 448*448

初始化方式:
预训练分类横型的卷积层初始化yolo的前20卷积层,其余层随机初始化

超参数设置:
btahcsize: 64 momentum: 0.9 decay: 0.0005 epochs: 135
learning rate:
第1个epoch学习率从0.001逐渐增长到0.01
第2-75个epoch学习率: 0.01
第76-105个epoch学习率: 0.001
第106-135个epoch学习率: 0.0001

三、论文总结

YOLO v1优点:

  1. 速度很快并且容易优化:
    只需读取一次图像,就可进行端对端优化,将检测问题转化为回归问题,可满足实时需求
  2. 背景误识别率低:
    对全图进行卷积学习,综合考虑了全图的上下文信息,背景误检测少
  3. 泛化性能好:
    也是由于综合考虑了图片全局,因此能够更好地学习数据集的本质表达,泛化性能更好

相较于Faster R-CNN , YOLO v1存在明显不足:

  1. 定位精度不够,尤其是小目标(网络较深细粒度特征及小物体特征不明显)
  2. 对密集目标的识别存在不足(因为一个gride cell只能预测一个物体)
  3. 异常宽长比的目标识别不佳(因为直接学习的框的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值