YOLOv1论文主要内容总结

YOLO(目标检测回归问题)

特点:

YOLO相较于其他神经网络,就是快,在保持mAP的同时,也有很高的FPS值,所以YOLO非常适合实时监测,但是YOLO的对于小物体的物体定位更容易出错,但是再背景上预测出不存在的物体的情况会少一点。综合以上特点,YOLO是一种牺牲准确率而加强速度方面的模型。

步骤:

1)将输入图像的大小调整为448 x 448

2)在图像上运行单个卷积网络

3)根据模型的置信度对得到的检测进行阈值化

发展方向

YOLO的精确性仍然落后于最先进的检测系统,虽然能够快速识别图像中的物体,但是在识别物体的准确性方面仍有巨大的进步空间。

统一性检测

将对象检测的分离组件统一为单个神经网络。网络使用来自整个图像的特征来预测每个bounding box。同时可以预测图像中所有类的bounding box,YOLO网络对整个图像和图像中的所有目标进行全局推理。YOLO设计实现端到端训练和实时速度,同时保持高的精准度。

系统将输入图像划分为SxS网格,若一个物体的中心落入一个网格单元中,该网格单元负责检测该物体。

每个网格预测B个bounding boxes和这些boxes置信度分数。置信度分数反映了模型对box包含目标的自信程度,以及认为box预测的准确性。在形式上将置信度定义为
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

参数解释
P r ( O b j e c t ) : b o u n d i n g b o x 包含物体则: P r ( O b j e c t ) = 1 ;否则 P r ( O b j e c t ) = 0 Pr(Object):bounding box包含物体则:Pr(Object)=1;否则Pr(Object)=0 Pr(Object)boundingbox包含物体则:Pr(Object)=1;否则Pr(Object)=0

I O U p r e d t r u t h : 交并比,是预测 b o u n d i n g b o x 与真实区域的交集面积 / 并集面积 IOU^{truth}_{pred}:交并比,是预测bounding box与真实区域的交集面积/并集面积 IOUpredtruth:交并比,是预测boundingbox与真实区域的交集面积/并集面积

每个bounding box由5个预测值组成:x,y,w,h和置信度。

(x,y)坐标表示相对于网格单元边界内的box的中心坐标。

宽度和高度是相对于整个图像进行预测的。

置信度预测:预测狂和真实框的IOU。

置信度的两层含义:

  1. bounding box中含有目标的概率
  2. 预测所属类别的概率

P r ( C l a s s i ∣ O b j e c t ) : 在 b o u n d i n g    b o x 含有目标的条件下,预测该目标所属类别的概率,与 b o u n d i n g    b o x 的数量无关。 Pr(Class_i|Object):在bounding\;box含有目标的条件下,预测该目标所属类别的概率,与bounding\;box的数量无关。 Pr(ClassiObject):boundingbox含有目标的条件下,预测该目标所属类别的概率,与boundingbox的数量无关。

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

该乘积既包含了bounding box中预测的class的预测值,也反映了bounding box是否含有Object和bounding box坐标的准确性。

对于PASCAL VOC数据集的YOLO评估,YOLO使用S=7,B=2,该数据集有20个标记类,最终预测出7x7x2x5+20)的张量。

网络设计

YOLO网络的卷积层从图像中提取特征,全连接层预测输出概率和坐标。

YOLO模型网络架构受到了GoogLeNet(用于图像分类模型)模型启发,YOLO由24层卷积层,2层全连接层组成。简单的使用了1x1卷积核,以及3x3卷积层。

1x1卷积核的作用:

  1. 增加网络深度(增加非线性映射次数)
  2. 升维/降维
  3. 跨通道的信息交互(YOLO中的作用)
  4. 较少卷积核参数(简化模型)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fZ6qcOtO-1683168958028)(typoraJPG\1681377870846.png)]

训练

通过图像的宽和高标准化bounding box的宽和高,使之介于0~1之间。同时将bounding box的x和y坐标参数化为特定网格单元位置的偏移,使之介于0~1之间。

对最后一层使用线性激活函数,所有其他层使用Leaky ReLU激活函数
Φ ( x ) = { x    , i f    x > 0 0.1 x    , o t h e r w i s e \Phi(x)=\begin{cases}x\;,if\;x>0\\0.1x\;,otherwise\end{cases} Φ(x)={x,ifx>00.1x,otherwise
平方和误差的问题1:平方和误差将定位误差与分类误差同等加权,这可能并不理想,此外,在每个图像中,许多网格单元都不包含任何对象,导致这些单元格的置信度分数为零,通常会超过包含对象的单元格的梯度,可能导致模型不稳定,导致训练在早期出现分歧。

解决方法:增加了bounding box坐标预测的损失,并减少了不包含对象的框的置信度损失。
λ c o o d r d a 和 λ n o o b j 来实现 λ c o o d r d a = 5 λ n o o b j = 0.5 \lambda_{coodrda}和\lambda_{noobj}来实现\\\lambda_{coodrda}=5\qquad\lambda_{noobj}=0.5 λcoodrdaλnoobj来实现λcoodrda=5λnoobj=0.5

平方和误差的问题2:平方和误差也相等地加权大方框和小方框中的误差。误差度量应该反映出,大方框中的小偏差比小方框中的偏差更重要。

解决方法:预测边界框宽度和高度的平方根,而不是直接预测宽度和高度。

YOLO在每个网格中预测多个bounding boxes。在训练时,希望每个目标只有一个bounding box负责预测。与真实值IOU最大的bounding box负责预测该目标。这种做法叫做bounding box 预测器的专职化。每个预测器会对(certain sizes,aspect ratio or class of object),从而提高整体召回率。

损失函数
λ c o o r d    Σ i = 0 S 2    Σ j = 0 B    1 i j o b j    [ ( x i − x ^ i ) 2    +    ( y i − y ^ i ) 2 ] + λ c o o r d    Σ i = 0 S 2    Σ j = 0 B    1 i j o b j    [ ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] + Σ i = 0 S 2    Σ j = 0 B    1 i j o b j    ( C i − C ^ i ) 2 + λ n o o b j    Σ i = 0 S 2    Σ j = 0 B    1 i j n o o b j    ( C i − C ^ i ) 2 + Σ i = 0 S 2 1 i o b j    Σ c ∈ c l a s s e s ( p i ( c ) − p ^ i ( c ) ) 2 \lambda_{coord}\;\Sigma^{S^{2}}_{i=0}\;\Sigma^B_{j=0}\;1^{obj}_{ij}\;[(x_i-\widehat{x}_i)^2\;+\;(y_i-\widehat{y}_i)^2] \\+\lambda_{coord}\;\Sigma^{S^{2}}_{i=0}\;\Sigma^B_{j=0}\;1^{obj}_{ij}\;[(\sqrt{w_i}-\sqrt{\widehat{w}_i})^2+(\sqrt{h_i}-\sqrt{\widehat{h}_i})^2]\\+\Sigma^{S^{2}}_{i=0}\;\Sigma^B_{j=0}\;1^{obj}_{ij}\;(C_i-\widehat{C}_i)^2\\+\lambda_{noobj}\;\Sigma^{S^{2}}_{i=0}\;\Sigma^B_{j=0}\;1^{noobj}_{ij}\;(C_i-\widehat{C}_i)^2\\+\Sigma^{S^2}_{i=0}1^{obj}_i\;\Sigma_{c\in{classes}}(p_i(c)-\widehat{p}_i(c))^2 \\ λcoordΣi=0S2Σj=0B1ijobj[(xix i)2+(yiy i)2]+λcoordΣi=0S2Σj=0B1ijobj[(wi w i )2+(hi h i )2]+Σi=0S2Σj=0B1ijobj(CiC i)2+λnoobjΣi=0S2Σj=0B1ijnoobj(CiC i)2+Σi=0S21iobjΣcclasses(pi(c)p i(c))2

损失函数参数介绍:
i :表示 g r i d    c e l l 的下标,在 Y O L O v 1 中最大为 49 j :表示 b o u n d i n g    b o x 的下标,在 Y O L O v 1 中最大为 2 1 i o b j : 对象是否出现在网格 i 中,若出现则为 1 ;否则为 0. 1 i j o b j : 网格 i 的第 j 个 b o u n d i n g    b o x 预测器对该预测“负责” ( 与真实框 I O U 最大 ) λ c o o r d : 包含目标的 b o u n d i n g    b o x 所占权重 λ n o o b j : 不包含目标的 b o u n d i n g    b o x 所占权重 λ c o o r d 和 λ n o o b j 作用: 减少不包含目标的 b o u n d i n g    b o x 在模型中所占的比重, 加强包含目标的 b o u d n i n g    b o x 在模型中的作用,使得预测更加准确。 i:表示grid\;cell的下标,在YOLOv1中最大为49\\ j:表示bounding\;box的下标,在YOLOv1中最大为2\\ 1^{obj}_{i}:对象是否出现在网格i中,若出现则为1;否则为0.\\ 1^{obj}_{ij}:网格i的第j个bounding\;box预测器对该预测“负责”(与真实框IOU最大)\\\lambda_{coord}:包含目标的bounding\;box所占权重\\\lambda_{noobj}:不包含目标的bounding\;box所占权重\\ \lambda_{coord}和\lambda_{noobj}作用:\\减少不包含目标的bounding\;box在模型中所占的比重,\\加强包含目标的boudning\;box在模型中的作用,使得预测更加准确。 i:表示gridcell的下标,在YOLOv1中最大为49j:表示boundingbox的下标,在YOLOv1中最大为21iobj:对象是否出现在网格i中,若出现则为1;否则为0.1ijobj:网格i的第jboundingbox预测器对该预测负责(与真实框IOU最大)λcoord:包含目标的boundingbox所占权重λnoobj:不包含目标的boundingbox所占权重λcoordλnoobj作用:减少不包含目标的boundingbox在模型中所占的比重,加强包含目标的boudningbox在模型中的作用,使得预测更加准确。
坐标预测:
λ c o o r d    Σ i = 0 S 2    Σ j = 0 B    1 i j o b j    [ ( x i − x ^ i ) 2    +    ( y i − y ^ i ) 2 ] + λ c o o r d    Σ i = 0 S 2    Σ j = 0 B    1 i j o b j    [ ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] ( x i − x ^ i ) 2 、 ( y i − y ^ i ) 2 、 ( w i − w ^ i ) 2 、 ( h i − h ^ i ) 2 : b o u n d i n g    b o x 得真实值与预测值之间的差异,关于 w 和 h 使用根号得原因是 解决 b o u n d i n g    b o x 较小时偏移量不敏感问题 以下是    y = x    的图像不难看出 x 越小时 y 越大; x 越大时 y 越小。 \\\lambda_{coord}\;\Sigma^{S^{2}}_{i=0}\;\Sigma^B_{j=0}\;1^{obj}_{ij}\;[(x_i-\widehat{x}_i)^2\;+\;(y_i-\widehat{y}_i)^2] \\+\lambda_{coord}\;\Sigma^{S^{2}}_{i=0}\;\Sigma^B_{j=0}\;1^{obj}_{ij}\;[(\sqrt{w_i}-\sqrt{\widehat{w}_i})^2+(\sqrt{h_i}-\sqrt{\widehat{h}_i})^2]\\(x_i-\widehat{x}_i)^2、(y_i-\widehat{y}_i)^2、(\sqrt{w_i}-\sqrt{\widehat{w}_i})^2、(\sqrt{h_i}-\sqrt{\widehat{h}_i})^2:\\ bounding\;box得真实值与预测值之间的差异,关于w和h使用根号得原因是\\解决bounding\;box较小时偏移量不敏感问题\\\\以下是\;y = \sqrt{x}\;的图像不难看出x越小时y越大;x越大时y越小。 λcoordΣi=0S2Σj=0B1ijobj[(xix i)2+(yiy i)2]+λcoordΣi=0S2Σj=0B1ijobj[(wi w i )2+(hi h i )2](xix i)2(yiy i)2(wi w i )2(hi h i )2boundingbox得真实值与预测值之间的差异,关于wh使用根号得原因是解决boundingbox较小时偏移量不敏感问题以下是y=x 的图像不难看出x越小时y越大;x越大时y越小。
img

含有bounding box的置信度预测(去除有ground truth box 的中心点落入grid cell中预测与ground truth box的IOU较小的bounding box):
Σ i = 0 S 2    Σ j = 0 B    1 i j o b j    ( C i − C ^ i ) 2 C ^ i ( 标签值、真实值 ) : 计算这个 b o u n d i n g    b o x 与 g r o u n d    t r u t h    b o x 的 I O U \Sigma^{S^{2}}_{i=0}\;\Sigma^B_{j=0}\;1^{obj}_{ij}\;(C_i-\widehat{C}_i)^2\\\\\widehat{C}_i(标签值、真实值):计算这个bounding\;box与ground\;truth\;box的IOU Σi=0S2Σj=0B1ijobj(CiC i)2C i(标签值、真实值):计算这个boundingboxgroundtruthboxIOU
不含bounding box的置信度预测(去除没有ground truth box 的中心点落入grid cell的bounding boxes):
λ n o o b j    Σ i = 0 S 2    Σ j = 0 B    1 i j n o o b j    ( C i − C ^ i ) 2 \lambda_{noobj}\;\Sigma^{S^{2}}_{i=0}\;\Sigma^B_{j=0}\;1^{noobj}_{ij}\;(C_i-\widehat{C}_i)^2 λnoobjΣi=0S2Σj=0B1ijnoobj(CiC i)2
类别预测:
Σ i = 0 S 2 1 i o b j    Σ c ∈ c l a s s e s ( p i ( c ) − p ^ i ( c ) ) 2 \Sigma^{S^2}_{i=0}1^{obj}_i\;\Sigma_{c\in{classes}}(p_i(c)-\widehat{p}_i(c))^2 Σi=0S21iobjΣcclasses(pi(c)p i(c))2

注意:如果一个目标出现在网格中损失函数仅仅惩罚分类错误(因此条件分类概率会更早的讨论)。如果预测器对真实框负责,它也仅仅惩罚bounding box坐标错误。(即具有该网格中任何预测器中的最高IOU)

损失函数产生作用的条件:

  1. 目标出现在网格中,对分类错误产生作用。
  2. 预测器对真实框负责(预测出的bounding box与真实框有最高IOU),对bounding box坐标错误产生作用。

避免过度拟合,使用了dropout(指在深度学习网络的训练过程中,按照一定的概率将一部分神经网络单元暂时从网络中丢弃,相当于从原始网络中找到一个更瘦的网络)和广泛的数据增加。在第一个连接层之后使用速率为0.5的dropout层来防止层之间的协同适应/共同作用。对于数据增强,引入了高达原始图像大小20%的随机缩放和平移。还可以在HSV颜色空间中随机调整图像的曝光和饱和度,调整系数高达1.5。

非极大值抑制(NMS

作用:确保算法对每个对象只检测一次,消除冗余。

情况:在YOLO中可能出现一个目标有多个bounding boxes,非极大值抑制的作用是使最终结果是一个目标有且仅有一个bounding box

前提:目标bounding box列表及其对应的置信度得分列表,设定阈值。(阈值:用来删除重叠较大的边界框)

流程:

  1. 根据置信度得分(即Pr(Class_i)*IOU^{truth}_{pred})进行排序,选出置信度最高分机器对应的bounding box。
  2. 遍历其余的bounding boxes,并将每个bounding box与最高分的bounding box分别求IOU,若大于设定的阈值,则删除该bounding box。
  3. 从未删除的bounding boxes中继续选一个的得分最高的bounding box,重复上述操作。

问题:为什么大于一定阈值的bounding boxes要删除?

超过一定阈值,则认为两个框中的物体属于同一个类别。

若要加强NMS可以将阈值设置的低一些。

YOLO的局限性
  1. 对于一些靠的很近的目标识别效果不好。
  2. bounding box很难将物体泛化到新的或者不常见的宽高比或者结构上的目标。还使用相对粗糙的特征来预测bounding boxes。由于架构具有来自输入图像的多个下层采样。
  3. 损失函数同等对待了小的bounding boxes和大的小的bounding boxes的误差。对于大的bounding boxes来说小的误差对于IOU的影响不大,但对于小的bounding boxes来说小的误差对于IOU有很大影响。虽然使用了根号,但并不能在本质上解决该问题。

与其他检测系统比较

总结

预测阶段(前向推断)

模型训练成功之后,输入未知图片来对位置图片进行预测和测试。预测(x,y,w,h,c)

  1. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DWNUijiz-1683168958029)(typoraJPG\1681377870846.png)]输入448x448x3RGB图片,经过若干个卷积层,经过池化层,经过1x1卷积层、3x3卷积层,最后变成7x7x1024维的feature map(特征图谱),将该数据拉平,给到神经元的全连接层中,输出4096维的向量,再将向量给到1470个神经元的全连接层中输出1470维向量,再将1470维向量reshape7x7x30feature map(特征图谱)。
  2. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zfCCJUOO-1683168958029)(typoraJPG\1681801721323.png)]将图像划分成7x7grid cell,每个grid cell会预测出Bbounding box(x,y,w,h,c),在图中置信度的大小由框的粗细表示,粗的置信度高,细的置信度低。每个gird cell也会预测一组条件类别概率,将每个bounding box的置信度乘以条件类别概率就能够获得每个bounding box的各类别的概率。
  3. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mPc6MJkA-1683168958030)(typoraJPG\1681802733524.png)]模型输出7x7x30的结果(注意是一个grid cell),输出紫色部分是第一个bounding box的(x,y,w,h,c),绿色部分是第二个bounding box的(x,y,w,h,c),后面第11到第30是20个条件类别概率(在含有目标的情况下是猫、狗等等的概率)。
  4. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ww1DvT8j-1683168958030)(typoraJPG\1681803242615.png)]将7x7x30的输出结果中的置信度与条件类别概率相乘[一个grid cell的两个bounding box会产生两个不同的20x1的向量(置信度与条件类别概率相乘)],最终产生98个20x1的向量即产生中间图的效果(颜色表示类别,粗细表示置信度的大小),再将中间的图进行后处理(过滤低置信度,NMS去除掉重复的预测框)。
后处理

img

  1. 设置阈值,如果概率小于阈值的概率改为0。Set zero if score < ``thresh1(0.2),注意是横向,每个20x1`的向量的第一个元素表示同一个类别。
  2. 对概率进行降序排序。
  3. 对排序后的结果进行非极大值抑制(NMS
训练阶段(反向传播)

深度学习或监督学习的训练是通过梯度下降和反向传播方法迭代的去微调神经元中的权重,来使得损失函数最小化的过程。

  1. 在训练集上通过labelmelabelImg人工标注出数据的ground truth box。(算法是要预测结果 尽量拟合ground truth box使得损失函数最小化)。
  2. ground truth box的中心点落到哪个grid cell则由哪个grid cell预测出的一个bounding box去负责拟合ground truth box,并且grid cell输出的类别也应该是ground truth box 的类别(每个grid cell只能预测出一个类别,7x7grid cell最多只能预测出49个类别,这也是yolov1的缺陷,预测小、密集目标性能差的原因 )。
    grid cell则由哪个grid cell预测出的一个bounding box去负责拟合ground truth box,并且grid cell输出的类别也应该是ground truth box 的类别(每个grid cell只能预测出一个类别,7x7grid cell最多只能预测出49个类别,这也是yolov1`的缺陷,预测小、密集目标性能差的原因 )。
  3. bounding boxground truth box的IOU大者负责拟合ground truth box。若没有ground truth box的中心点落入的grid cell则预测出的2个bounding box的置信度接近0。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值