建外贸企业网站,国际新闻快报社,红河优才网站建设,建设银行网站会员基本信息系列文章地址
YOLO系列基础#xff08;一#xff09;卷积神经网络原理详解与基础层级结构说明-CSDN博客
YOLO系列基础#xff08;二#xff09;Bottleneck瓶颈层原理详解-CSDN博客
YOLO系列基础#xff08;三#xff09;从ResNet残差网络到C3层-CSDN博客
YOLO系列基础…系列文章地址
YOLO系列基础一卷积神经网络原理详解与基础层级结构说明-CSDN博客
YOLO系列基础二Bottleneck瓶颈层原理详解-CSDN博客
YOLO系列基础三从ResNet残差网络到C3层-CSDN博客
YOLO系列基础四归一化层BN层的前世今生-CSDN博客
YOLO系列基础五从神经元共适应性到模型Dropout层-CSDN博客
YOLO系列基础六YOLOv1原理详解原理如此清晰-CSDN博客
目录
系列文章地址
背景
YOLOv1的网络结构
YOLOv1原理的高层级理解
YOLO算法流程
YOLOv1原理详解
YOLOv1网格详解
针对每一个grid_cell
输出结构内容详解
YOLOv1损失函数详解
第一行损失函数详解
第二行损失函数详解
第三、四行损失函数详解
第五行损失函数详解 背景 随着YOLOv11版本的发布YOLO算法在视觉检测领域独领风骚本系列旨在从小白出发给大家讲解清楚视觉检测算法的前世今生并讲清楚YOLOv11版本算法的所有模块功能 经过前面几个栏目的学习与掌握我们已经具备理解和掌握YOLOv1的基本能力。今天我们来精讲YOLOv1的原理
YOLOv1的网络结构
YOLOv1网络结构图
YOLOv1的网络结构图很简单主要的需要注意的点如下
输入图像大小为448*448。经过若干个卷积层与池化具体是24个卷积层和4个最大池化层变为7*7*1024张量图一中倒数第三个立方体。最后经过两层全连接层输出张量维度为7*7*30。在第一个连接层之后还有一层dropout层其丢弃率设置为0.5。除了最后一层使用了线性激活函数外其余层的激活函数为 Leaky ReLU 。 这就是Yolo v1的整个神经网络结构。没有BN层等后续复杂的层级结构在那个年代神经网络还很清晰单纯…… 下图为整个结构图的说明解释官方给的图有点容易让人混淆了特别是上面的立方体和下面的层不对应……也是有点无语了…… YOLOv1原理的高层级理解 如果一上来就把原理揉碎了开始长篇大论个人感觉效果会很不好听者也会云里雾里。所以我们先从YOLOv1的高层级理解开始先给自己一个大致的感觉~ YOLOv1网络将输入的图片resize成480*480之后再把这个图片分割为7*7的格网也称grid_cell如下图所示。想必大家都已经看腻下面的图片了吧笑。在代码中下图的 S 7。 在该图片中假设我们需要检测狗、自行车、和白车。我人工标注了一下三个检测框和中心点。白色框框选狗白色小圆圈标记框的中心点以此类推…… YOLO算法流程
首先获取每一个检测框的中心点也就是上图中的白色、红色、蓝色圆圈坐标。获取到坐标之后该坐标点对应的grid_cell也就是对应的格子就需要负责该类别的检测一共需要获取三个内容中心点坐标、检测框坐标、类别IDYOLO的训练策略为非中心点所在的cell需要极力让自己格子内检测框的置信度C降低中心点所在的cell则需要让自己的检测框的置信度上升、中心点的坐标和检测框的IoU要极力去拟合当然还有类别的概率。 也就是说无论是检测中心点还是检测框都是由中心点所在的cell来预测的和其他的cell没有任何关系。但是每个cell都需要进行中心点、检测框、类别的预测然后在训练过程中将预测置信度不断提高有物体 or 降低无物体 显然以cell为检测单位导致每一个cell仅能针对一个类别进行预测若两个类别的中心点位同一个cell那么YOLOv1就会直接开摆~ 有了上诉的一些概念我们进行原理详解与论文精读
YOLOv1原理详解
传统的视觉识别算法分两步走
检测中心和检测框的回归问题目标对象的分类问题 在YOLO中我们把对象的分类问题也看成回归问题去解决使得整个网络大为精简端到端直接全部输出类别、检测框……
YOLOv1网格详解 我们已知YOLO会将输入图像分成S×S其中S7的网格如果一个物体的中心点落入到一个cell中那么该cell就要负责预测该物体一个格子只能预测一个物体并生成B个检测框其中B2意味着每次检测都会尝试两次。
针对每一个grid_cell
我们会输出B个(B2)检测框大小、高度都无所谓但是检测框的中心点坐标一定是落于该cell内的我们针对每一个检测框都会输出检测框的置信度代表该处存在物体的可能性以及IoU 注意每一个检测框的置信度是由该处存在物体的可能性和检测框的IoU决定的公式如下 表示预测框内存在物体的概率 表示预测框与真实框之间的交并比。 所以每个检测框包含5个元素xywhc分别代表中心点坐标xy检测框大小wh以及置信度。每个格子一共两个检测框所以一共有10个值输出。 图例如下 注意上面的x,y,w,h均是归一化到01的值和整个图像大小之间进行归一化。有的博主认为中心点坐标xy是和网格cell之间的偏移量进行归一化但是私以为应该还是和原图像进行的归一化。 若有错漏请指正 输出结构内容详解 我们已知YOLOv1的输出结构为7*7*30这里的7*7指的是输出特征的大小是由原图像480*480通过4层最大池化层和一层卷积层步长均为2来进行缩减的也就是说每一个格子对应64*64的原像素区域。 在YOLOv1的官方示例中官方采用了20种标签来进行训练。由于YOLOv1采用回归的方式解决分类问题所以输出的结果还有该网格中所有类别的分类置信度一共20个。 所以输出结构就很清晰了
7*7代表7*7的格子30代表两个检测框的xywhc和20个类别的分类置信度
举个例子以下就是30的含义
第一个检测框第二个检测框所有类别的置信度x1y1w1h1c1x2y2w2h2c2cls1cls2……cls19cls20 至此YOLOv1的输出结构已经说明完毕。
到此为止YOLOv1的网络结构都已经解构完成我们只缺损失值的计算。
YOLOv1损失函数详解
直接先给出YOLOv1损失函数 看着头晕晕没关系其实很简单我们一行行来
第一行损失函数详解 这一行主要是针对中心点进行差距损失的计算。
其中等于5是一个参数暂时没啥特别的后面详解用以遍历所有的格子用以遍历每一个格子中的检测框
以我们普遍的理念看来假设我们需要针对中心点进行拟合我们能想出来的损失函数应当如下所示 这是我们好理解的可是剩下的 是个什么东西
这表明在第 i 个格子存在待测物体的中心点。且单元i中的第j个边界框预测器“负责”该预测。
这个部分最重要的就是确保该检测框正确召回了物体也就是说确保该检测框检测出了待测物体尽管可能IOU不高、类别不精准。
大家可以想象若没有这个条件约束后面的计算就毫无意义。
第二行损失函数详解 简单和第一行一样这次计算的是检测框宽和高的损失。 第三、四行损失函数详解 此为检测框置信度的损失值计算但是这里出现了 和 这是为什么呢实际上和上面的含义刚好相反表示该检测框成功召回了物体则表示该检测框没有召回物体。显然这里的损失函数的两面的
针对成功召回的检测框我们需要计算检测框和目标检测框的IOU之间的差距来表示损失值。针对没有召回的检测框此时的目标置信度为0我们需要将这些失败的检测框的置信度下降。
第五行损失函数详解 显然这里的意思就是
遍历所有的检测框如果检测框内存在目标物体的中心点则针对该检测框内的分类结果对所有的类别的目标进行损失的计算并求和。 至此YOLOv1的全部内容详解完毕
总结
YOLOv1虽然已经是将近10年前的算法了但是作为目标检测之王的初代版本依旧有很多可以学习和借鉴的内容实际上博主光是准备此篇博客就花费了整整两天的时间。恳请广大读者不要吝啬手中的点赞哦