YOLO算法学习第1天(摘要+私货)

本文的写作来源于以下这篇稿子的学习:

YOLO系列算法精讲:从yolov1至yolov8的进阶之路(2万字超全整理)-优快云博客

西部延时,我们开始吧!

一、yolo v1版本的出现

(1)首先,我们可以看到yolo的结构

YOLOv1的网路结构非常明晰,是一种传统的one-stage的卷积神经网络。

  • 网络输入:448×448×3的彩色图片。
  • 中间层:由若干卷积层最大池化层组成,用于提取图片的抽象特征。
  • 全连接层:由两个全连接层组成,用来预测目标的位置和类别概率值。
  • 网络输出:7×7×30的预测结果。

(2)具体实现过程如下:

        ①将一幅图像分成 S×S个网格(grid cell),如果某个 object 的中心落在这个网格中,则这个网格就负责预测这个object。(可以看到这时候的“先验框”还只是随机的)
        ②每个网格要预测 B 个bounding box,每个 bounding box 要预测 (x, y, w, h) 和 confidence 共5个值。
        ③每个网格还要预测一个类别信息,记为 C 个类。
        总的来说,S×S 个网格,每个网格要预测 B个bounding box ,还要预测 C 个类。网络输出就是一个 S × S × (5×B+C) 的张量。

               

   实际采用7 * 7 的网格,有2个box,20个类别,也就是7 * 7 * 30的张量。                     

(3)目标损失函数

建议直接AI解决嘿嘿😄

由3个误差组成:

坐标预测损失、置信度预测损失、类别预测损失。

采用的是数学的差方和误差。

二、yolo v2的加强

出现原因:重点解决YOLOv1召回率定位精度方面的不足

解决方案:

(1)采用了Darknet-19作为特征提取的方法,

总结如下:

        ①与VGG相似,使用了很多3×3卷积核;

        ②并且每一次池化后,下一层的卷积核的通道数 = 池化输出的通道 × 2。
        ③在每一层卷积后,都增加了批量标准化(Batch Normalization)进行预处理。

        如下图所示:


        ④采用了降维的思想,把1×1的卷积置于3×3之间(类似特征融合Fine-Grained Features,用来压缩特征。

          添加一个Passthrough Layer,把高分辨率的浅层特征连接到低分辨率的深层特征(把特征堆积在不同Channel中)而后进行融合和检测。

        具体操作是:先获取前层的26×26的特征图,将其同最后输出的13×13的特征图进行连接,而后输入检测器进行检测(而在YOLOv1中网络的FC层起到了全局特征融合的作用),以此来提高对小目标的检测能力。

        ⑤在网络最后的输出增加了一个global average pooling层。

        ⑥引入 Anchor Box 机制:采用K-means聚类算法,提前筛选得到的具有代表性先验框Anchors,使得网络在训练时更容易收敛

           与传统K-means聚类算法不同的是,这里的距离度量公式用:

                        

同时,根据原文做出的数据实验来看,采用K = 5是最优解。

如图,蓝色的是要预测的,黑色虚线是先验框。

        ​​​​​​​        

那么,引入Anchor Box 机制后,通过间接预测得到的 bounding box 的位置的计算公式为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

置信度ot 的计算公式为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​       ​​​​​​​        

⑦总体上,变化还有如下图所示,即Convolution With Anchor Boxes


三、yolo v3的巅峰神作

(1)网络结构再次升级

YOLOv3 将原来的 darknet-19 改进为 darknet-53:

        ​​​​​​​        ​​​​​​​        

        Darknet-53主要由1×1和3×3的卷积层组成,每个卷积层之后包含一个批量归一化层和一个Leaky ReLU,加入这两个部分的目的是为了防止过拟合。        

        卷积层、批量归一化层以及Leaky ReLU共同组成Darknet-53中的基本卷积单元DBL

        因为在Darknet-53中共包含53个这样的DBL,所以称其为Darknet-53。

        具体结构如下图所示:

借由作者的分析,与darknet-19对比可知,darknet-53主要做了如下改进:

①不采用最大池化层,采用步长为2的卷积层进行下采样
②为了防止过拟合,在每个卷积层之后加入了一个BN层和一个Leaky ReLU。
③引入了残差网络的思想,目的是为了让网络可以提取到更深层的特征,同时避免出现梯度消失或爆炸。
④将网络的中间层和后面某一层的上采样进行张量拼接,达到多尺度特征融合的目的。

(2)多尺度预测

采用了3种每种3个anchor:

        ​​​​​​​        ​​​​​​​      

(3)损失函数

               

        上面提到过损失函数由3种损失组成,这里,位置损失没有改变计算方式,但是置信度损失类别预测均由原来的sum-square error改为了交叉熵的损失计算方法。

(4)多标签分类

具体来说,就是将YOLOv2中用于分类的softmax层修改为逻辑分类器。

softmax是将向量转化为类似概率的输出。

逻辑回归则是解决二分类问题。

从而使得网络可以对一个物体进行多分类而不局限于单一类别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值