• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Yolov1、Yolov2、Yolov3学习笔记

武飞扬头像
富江!
帮助1

前言

目前可以将目标检测算法分为两类:一类是onestage,一类是twostage
onestage的目标检测算法是指在进行目标检测的时候不需要进行region proposal阶段,而是直接产生物体的类别概率位置坐标,因此onestage可以有相对较快的运算速度,但是其的检测精度相对较低,所以其常常被用作实时的目标检测。常用的onestage方法有:Yolo系列、SSD、Retina-Net等。
twostage的目标检测方法将检测问题划分为两个阶段,首先产生大量的候选框(region proposal),并对产生的候选框进行一定的修改和调整,因此twostage检测算法是按照两步来完成的。目前常用的twostage目标检测算法有:R-CNN系列,twostage的目标检测算法相对于onestage的目标检测算法,其牺牲了运算时间来换取运算精度

一、算法的前序知识

1.1 IOU——交并比

交并比(Intersection-over-Union, IOU),是目标检测中常用的一个衡量标准,它是指:产生的候选框(candidate bound)与原标记框(ground truth bound)之间的交叠率,换句话说交并比就是特么的交集与并集之比。
学新通
计算公式为:
学新通

1.2 NMS——非极大值抑制

非极大值抑制的算法思想可以分为3步:
1、将所有的候选框按照得分降序排序,选中最高分以及其所对应的候选框;
2、遍历其余所有的候选框,如果和当前的最高分的候选框的IOU大于一定的阈值,则可以将其删除;
3、从未处理的候选框种继续选择出一个得分最高的,重复上述过程。
非极大值抑制的过程:
学新通

1.3 K-means聚类

机器学习通常分为两种:有监督学习无监督学习
有监督学习是指:训练的样本数据是有标签的,通常有监督学习通常用来处理分类问题;无监督学习是指:训练的样本数据是没有标签的,无监督学习通常是用来处理聚类问题的。

1.3.1 聚类中的一些相关概念

质心:均值,即向量各维度求平均即可。
距离的度量:常用的距离的度量有欧几里得距离以及余弦相似度。
学新通
学新通
学新通

1.3.2 聚类的核心思想

给定一个有M个对象的数据集,构建一个K簇的模型,其中k<=M。满足以下的条件:
每簇至少包含一个对象;
每个对象属于且仅属于一个簇
将满足上述条件的k个簇成为一个合理的簇分类。
基本思想:对于指定类别的数目K,首先给定初始划分,通过迭代改变样本和簇的隶属关系,是的每次处理后得到的结果比上一次好。

1.3.3 K-means算法思想

学新通
学新通
从图中算法的迭代过程可知,每次迭代都需要重新计算质心,重新对样本对象进行划分,最终完成所有的样本信息的划分。

1.4 Leaky ReLU 与ReLU函数

Relu(Rectified linear unit ReLU)是深度学习中使用频率非常高的激活函数,而Leaky ReLU激活函数是ReLU函数的变体。而在Yolov3中则使用了Leaky ReLU作为神经网络的激活函数。Leaky ReLU函数的输出对于负值有很小的坡度,解决了ReLu函数在进入负区间后,神经元不学习的问题。
ReLU函数表达式如下:
a = max(0, z)
ReLU图像如下:
学新通

Leaky Relu激活函数的函数表达式如下图所示:
学新通
Leaky Relu激活函数的图像如下图所示:
学新通

二、Yolov1

2.1 Yolov1的网络框架

学新通
Yolov1采用448*448的图片大小作为输入,中间通过GoogLeNet神经网络来提取图片中的特征信息最后通过两个全连接层并经过reshape后得到Yolov1的输出结果,Yolov1的输出结果是7 * 7 * 30的tensor。

2.2 Yolov1算法核心思想

学新通
在Yolov1中,每个图片将被划分为7 * 7的网格,每个网格将生成两个bounding box 用来区分该网格中的图片信息是属于前景信息还是背景信息。每个bounding box中又包含5个参数下x,y,w,h,c。x,y,w这四个参数存储的是该网格所对应的位置信息,而参数c则存储的是该网格的置信度。在后期训练和测试过程中经通过IOU来选择使用那个bounding box。

2.2.1 算法的实现过程

1、将一个图片划分成s*s个网格(grid cell).如果某个object的中心点落在这个网格,则这个网格就负责检测这个object;
2、每个网格需要预测B个bounding box,每个bounding box 需要预测(x,y,h,w)和confidence5个参数值;
3、每个网格还要预测一个类别信息,记作C;
4、对于s*s个网格,每个网格要预测B个bounding box ,还要预测C个类别,所以网格的输出为s * s(5 * B C)个张量。
Yolov1中实际上有7 * 7个网格,20个类别,2个bounding box

2.2.2 损失函数

在Yolov1中的损失函数可以分为三种:位置坐标损失、置信度损失以及类别判断损失。
学新通
上图中第一部分是坐标预测的损失,因为定位误差比分类误差更大,因此要增加对定位误差的惩罚在论文中λcoord=5.
其中w和h带根号是为了平衡因为bounging box大小的不同而带来的损失不平衡。小的bounding box对位置信息的改变比大的bounding box对位置信心的改变更加敏感。
学新通
因为在一个图片中,我们所要检测的物体信息往往是远远少于背景信息的,因此为了减少背景信息对损失的影响,在论文中,作者对背景部分的信息增加了权重系数λnoobj=0.5,来减少背景与前景之间的差别。

2.3 Yolov1算法的局限性

1、Yolov1对相互靠近的物体检测效果相对较差,因为一个网格中生成的两个bounding box 只能预测一个物体,因此当一个网格中出现两个物体是会出现漏检的现象;
2、Yolov1对较小的物体的物体检测效果较差,因为Yolov1的输入数据经过神经网络之后生成的特征图的感受野是非常大的,这样就会使得小目标的特征信息在最后输出的特征图中无法表现出来;
3、Yolov1对于不常见的角度的目标泛化性能偏弱。

三、Yolov2

3.1 Yolov2的网络框架

学新通
上文提到的Yolov1使用的是GoogLeNet神经网络作为特征提取器,而与Yolov1不同的是,Yolov2使用的是Darknet-19作为自己的卷积神经网络。Darknet-19就如名字所描述的该网络中总共包含19个卷积层,并且舍弃了Yolov1中所使用的全连接层来实现多尺度图片的检测,在Darknet-19中有5次下采样使得最开始的输入网络的数据大小由416 * 416变为13 * 13.在Darknet-19中还使用了大量的1 * 1和3 * 3的卷积核来扩大感受野节约参数

3.2 Yolov2的改进点

学新通

3.2.1 增加了Batch Normalization

在Yolov2中在内一个卷积层前面都增加了Batch Normalization,用来约束卷积层的学习行为,防止神经网络将不好的特征信息学习成为本身数据集所具有的特征——即为了改善过拟合
在Yolov2中Batch Normalization的具体实现步骤如下图所示。
学新通
Yolov2中增加的Batch Normalization不仅增加了神经网络的收敛速度,还使得Yolov2的map值提升了约2%

3.2.2 使用了High Resolution Classifier

学新通
Yolov1和Yolo2都通过Imgenet来进行预训练,但不同的是,Yolov1训练时输入Imgenet的图片的分辨率为224*224,测试时图片的分辨率为448*448.Yolov2在Yolov1的基础上又增加了10次的448*448的微调,因此Yolov2在使用高分辨率分类器后,其map值提升了约4%

3.2.3 进行Mutli—Scale Training(多尺度训练)

学新通
因为Yolov2中所使用的网络结构为Darknet-19,上文中说到该网络中没有全连接层,因此该网络对输入图片的大小没有限制,并且该网络的最后输出为13*13。Yolov2中将高分辨的图像低分辨率的特征图联系在一起从而实现多尺度的检测。Yolov2中使用多尺度输入的方式进行训练,训练过程中每隔10个batch则会随机选择不同大小的图片作为输入进行训练。在Yolov2中有说到,该网络采用5次下采样,因此特征图的大小总共缩小了32倍数,因此在选择不同大小的图片作为输入时一般都会选择32的倍数作为输入。Yolov2中输入的图片最小尺寸为320*320(是32的10倍),Yolov2中输入图片的最大尺寸608*608(是32的19倍,刚好Darknet有19个卷积层).

3.2.4 Dimension Cluster

学新通
Yolov2借鉴了Faster R-CNN产生先验框的思想,在Faster R-CNN中也有3种不同大小的bounding box 而每一种bounding box 则有三种不同的先验框,但是Faster R-CNN种所产生的先验框的大小都是常规的,其先验框的大小比值为1:1,1:2,2:1,因此在Faster R-CNN中一共有九种先验框。但是这九种先验框不一定符合所有的数据集,因此作者在此基础上,提出了使用聚类的方法产生先验框。上文中所提到的K-means聚类就是作者产生先验框的方法,但是与一般的聚类方法不同,在论文中,作者提出小的先验框和大的先验框如果使用传统的方法去计算类间的距离,则会产生不平衡的显现。这是因为,通常而言,大的先验框一般产生的距离要比小的先验框产生的距离大 ,为了解决这一问题,作者提出使用IOU来平衡因先验框的大小不同而带来的误差。
采用的距离公式为:
学新通
公式中先计算先验框与中心点的交并比,然后在用1减去交并比,就得到了K-means中所要计算的距离。次距离最大为1,最小为0,当先验框与中心点相交时,此时交并比为1,则距离为0,当先验框与中心点不相交时,此时交并比为0距离为最大值1.上文中说到,K-means聚类,一般要先指定K的个数,在论文中作者在VOC2007数据集以及COCO数据集上对不同的K值所产生的效果取平均后进行了比较,实验证明,当K取5时,此时实验的效果有交大的提升,因此Yolov2中最后使用K-means聚类的方法产生了5种先验框。上图中还给出了几种不同的先验框的形状。

3.2.5 Direct location Prediction(绝对位置预测)

学新通
因为在进行生成预测框时,有时候生成的预测框会超出图片的边界线,因此为了解决这一个问题,作者提出了使用绝对位置预测来限制预测框出现的位置。图中给出了绝对位置预测的计算公式,下文中将对图中出现的公式做出一个一个地解释。cx,cy是中心点相对与特征图最左上角的偏移量,cx,cy会随着中心点位置的改变而产生相应的改变bx,by为预测狂相对于特征图中心点的坐标先验框的宽度和高度为pw和ph,真实框的坐标为tx,ty。为了限制预测的位置,因此对将真实框的坐标经过sigmod函数,使其的大小被限制在0和1之间,这样一来真实值的坐标将会被限制在特征图的一个放歌中,从而避免了预测狂会超出特征图边界的情况。我们在生成预测框后,要将其在特征图上的坐标映射为原始图片上的坐标,因为Yolov2经过了5次下采样,因此原始图片中所有的参数将会缩小32倍,所以原始图片中的坐标位置为特征图上的坐标位置*32.

3.2.6 Fine——Grained Features(细粒度特征)

学新通从上文中可知,Yolov2中有19层卷积,这样一来最后一层卷积层输出的特征图的感受野将会非常大,这样则会得原始图片中的小目标检测非常不友好,可能会存在小目标篇丢失的情况,而为了解决这一问题,作者在论文中提出,可以通过将前几层卷积层所产生的特征图与最后一层卷积层所产生的特征图进行融合,这样可以及检测小的目标又可以检测大的目标了。上图中给出了特征图融合的过程。因为Yolov2最后的输出结果是13 * 13的,因此在进行特征融合的时候也要将前几层产生的特征图划分为几个13 * 13 * n的小的特征图。这就是上图中为什么最后融合的结果是13 * 13 * 3072的原因。但是在进行特征图划分时不是随机划分的,它的划分方式如下图所示。
学新通

四、Yolov3

4.1 Yolov3的改进点

4.1.1 多scale

学新通
为了进一步检测不同大小的物体,Yolov3输出图片的大小从Yolov2的13*13个网格5种bounding box变为13 * 13、26 * 26以及52 * 52,并且针对不同数量的输出网格分别产生了三种不同大小的boundingbox,因此在Yolov3中有9种不同的bounding box。下同中给出了Yolov3的三种不同的bounding box的大小。
学新通
13 * 13、26 * 26以及52 * 52的网格划分情况与bounding box展示。
学新通

4.1.2 Softmax层替代

学新通
Yolov3与Yolov2不同,它还实现了对一个对一个物体进行多标签检测,在Yolov3中不仅可以检测出一个动物是猫还是狗还可以检测出该猫是大猫还是小猫,是白猫还是花猫。多标签的实现依靠与使用了softmax进行了替代,将每一个分类问题转化成为了二分类,然后在使用Logistic激活函数来完成对每一个类别进行预测。

4.2.Yolov3的网络结构

4.2.1 残差连接——为了更好的特征

学新通
Yolov3中也借鉴了Resnet中残差连接的思想,从而叠加更多的层来进行特征提取,因此Yolov3与Yolov2虽然都使用Darknet网络,但其卷积层的个数从19层变为了53层

4.2.2 Yolov3的网络结构

学新通
从图中可知,Yolov3的核心网络是Darknet-53,但是其与Darknet又有不同的是,在Yolov3中作者舍弃了Darknet—53的全连接层,并且为了减少池化层对于特征信息的压缩,在论文中作者也舍弃了池化层,同时为了加深神经网络的卷积层数,在论文中作者也使用了残差连接的思想。在Yolov3中作者使用了大量的步长为2的卷积层来实现下采样。于此同时,为了加强对于小目标的检测精度,Yolov3中还是用了上采样以及特征融合的方式来实现26 * 26与52 * 52的多种scale。其核心思想为:先对输入的图片进行下采样生成13 * 13大小的scale,然后再将13 * 13scale的网格进行上采样,来分别生成52 * 52与26 * 26的scale。

4.2.3 Yolov3的核心网络结构

学新通
Yolov3网络的输入为416 * 416 * 3,中间经过Darknet-53神经网络进行步长为2的下采样,生成13*13的特征图,13 * 13的特征图在经过上采样分别得到26 * 26与52 * 52大小的特征图。对于13 * 13的特征图其在COCO数据集上的输出为13 * 13 * 3(4 1 80)维的tensor。其中13 * 13是特征图中划分的网格数,3是指每个网格会产生三种不同的预测框,4是指x,y,w,h四个坐标参数,1是指每个单元格生成confidence,80是指,在COCO数据集上有80个不同的类别。

总结

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhghfgfk
系列文章
更多 icon
同类精品
更多 icon
继续加载