当前位置: 首页 > news >正文

彻底搞懂YOLOv1模型!

0 前言

在上一篇文章中,我们已经学习了目标检测发展简史,从R-CNN到YOLO模型,是从单阶段检测到双阶段检测的跨越。

同时介绍了YOLOv1的模型结构,并留下一个疑问,YOLO模型仅通过CNN如何就能实现检测任务?今天这篇文章我们就来仔细学习YOLO如何实现前向传播和反向优化网络,进而做到目标检测。

1 前向传播

1.1 全连接层的输出

我们使用YOLOv1中的实际数据来进行描述:我们的输入是一张448×448像素大小的RGB图像,在经过Backbone后,不断通过卷积、池化以及激活函数,来到了最后一层全连接层,得到了1×1470维的向量:

再将1470维度向量进行维度转化,将数据的维度大小转化为7×7×30的立方体。

我们从7×7×30立方体的正面来看,将一个柱子拿出来,包含30个数据。

关键点来了,以往我们卷积神经网络中全连接层得到的最终输出,我们一般不会把输出特征中的某一部分单独拿出来进行分析,而是默认这些数据是有关联的、是不可拆分的特征。

而YOLOv1能够完全使用CNN做检测的关键就在这里,这30个数据是有具体含义的:包含了20个类别概率(VOC数据集的类别为20)、2个预测框的位置参数(tx,ty)、预测框中心点(w,h)以及置信度(C)。

其中(tx,ty)不是绝对坐标,而是边界框中心相对于其所属网格单元左上角的偏移量;

(w,h)不是绝对宽高,而是相对于整张图片(448x448) 的宽高比例。

计算一下:20个概率+2×(tx ty w h C)=30。

在这里有一个需要仔细理解的地方,我们将最终的7×7×30立方体数据可以看成是将原始图像448×448进行了7×7=49个网格的划分:

一定要注意区分,我们并不是将原始图像一开始就处理成7×7模式,而是在通过CNN得到7×7×30数据之后,把这些数据看作是原始图像浓缩版的信息。

因此,YOLO最后一层这种将1470维向量处理成7×7×30立方体的做法,其实是将448×448的图像,降采样64倍(448/7),得到特征图7×7×30,然后用7×7立方体每个小柱子背后的30维数据,来代表这个网格内的信息,这个网格内有要检测的物体,我可以给出两个预测框:

  • 第一个框存在物体的置信度(C)

  • 第一个框位置参数是(tx,ty)

  • 第一个框中心点是(w,h)

  • 第二个框存在物体的置信度(C)

  • 第二个框位置参数是(tx,ty)

  • 第二个框中心点是(w,h)

  • 预测它们是20个类别的概率是(p1,p2,p3......p20) 总共30个数据。 我们在一幅图上来说明这些数据分别代表什么:

1.2 解码预测值

注意我们得到的(tx,ty)和(w,h)都是相对坐标,我们现在对它们进行还原:

比如在上图中,预测到的中心点坐标距离网格左上角的坐标为(tx,ty),它所在的网格位置为(dx,dy),刚才我们说过图像降采样64倍(stride),那么将tx ty映射到原图中的坐标cx cy计算公式为:

cx=(dx + tx) × stride

cy=(dy + ty) × stride

这里就不做出推导了,感兴趣的可以自己尝试计算看看验证一下,比较简单。

还原(w,h)更简单,因为是占据整个图像的比例,所以直接乘以图像大小就可以了。这样我们就确定可框的中心点,并且确定了框的大小,自然也就确定了框的位置。

1.3 两次筛选

1、得分阈值筛选:

我们首先计算出每个框对应类别得分score计算公式为:

score= C×p

相当于是用框的置信度去乘以每个类别对应的概率,如果这个得分低于某个值,我们直接筛选掉这个边界框。

2、非极大值抑制(NMS):

  • 非极大值抑制首先对于某一类别目标的所有边界框,先挑选出得分最高的那个:

假设得到6个边界框A B C D E F预测为狗: [A(0.92), B(0.88), C(0.85), D(0.82), E(0.78), F(0.70)]

  • 依次计算其他边界框与这个得分最高的边界框的IOU,超过 设定的IOU阈值的边界框则被认为是重复检测,将其剔除:

首先A分数最高,可以保留;

然后计算A与所有其他框的IoU,并抑制IoU>0.6的框:

假设IoU(A, B) = 0.85 > 0.6 → 抑制B

IoU(A, C) = 0.55 < 0.6 → 保留C

IoU(A, D) = 0.40 < 0.6 → 保留D

IoU(A, E) = 0.25 < 0.6 → 保留E

IoU(A, F) = 0.80 > 0.6 → 抑制F

移除被抑制的框:B和F被移除

再计算[C(0.85), D(0.82), E(0.78)]

C分数最高,可以保留;

然后计算C与所有其他框的IoU,并抑制IoU>0.6的框:

假设IoU(C, D) = 0.75 > 0.6 → 抑制D

IoU(C, E) = 0.30 < 0.6 → 保留E

移除被抑制的框:D被移除

只剩下E,没有框可以继续来计算,保留E。

对所有类别的边界框都进行上述操作,直到无边界框可剔除为止: 只剩下E了,因此最终得以幸存的是[A C E],也得到了前向传播的结果。

2 损失函数

给出公式:

  • 第一行和第二行表示的是边界框的位置参数(tx ty)的损失,其余是一些指示函数和权重

  • 第三行和第四行表示的是边界框的置信度的损失

  • 后一行就是正样本处的类别的损失

每个类别的损失都是L2损失,而不是交叉熵。

置信度损失

置信度表示的是一个预测框内有无物体的把握,但是我们不仅希望置信度能表征网格是否有目标中心点,同时也希望置信度能表征所预测的边界框的定位精度。

相当于置信度的意义包含两部分:

  • 有无目标的把握;

  • 预测框的定位精度有多高。

而边界框的定位精度,通常使用可以使用IOU来衡量,IOU的计算原理十分简单:

其实就是预测框和目标框的交并比。

我们需要额外讨论一下置信度的标签,在这里正样本和负样本是有区别的。

假设我们一个网格有两个预测框,B0和B1,它们和真实框的IoU分别为0.7和0.5,那么0.7>0.5,我们希望IoU越大,预测框便给更加精确,,因此我们把B0视为正样本,B1视为负样本。

我们将IoU作为正样本置信度分标签,则标签为0.7,然而负样本我们希望它后面不要再出现了,标签则是0。

事实上,置信度本身就是表示一个把握,是直接从网络输出得到的,但是网络输出的其实并不准确。真实置信度的值其实就是IoU的值:预测框和目标框重叠程度。这才是切实的真实把握。

有人可能会困惑正样本的标签不应该为1吗?IoU应该越大越接近于1越好啊。

就像预测框和目标框的IoU是0.7,这个目标框说,我觉得有0.7的把握这个框内有目标,你不能强行按着它的头说,我不要你觉得,我要我觉得,你要有1的把握。这不符合实际。至于置信度怎么到1,那是坐标的事,坐标训练好了,置信度自然就到1了。

欢迎大家关注我的gzh:阿龙AI日记

http://www.cnnetsun.cn/news/176701.html

相关文章:

  • 基于DWA的动态环境下多智能体自主避障路径优化,MATLAB代码
  • Excalidraw手绘风格太惊艳!AI加持后更适合产品原型设计
  • Excalidraw实时协作白板上线AI插件,绘图效率翻倍
  • 计算机Java毕设实战-基于springboot的物业报修系统的设计与实现物业工程报修系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Excalidraw用户停留时间优化:内容黏性提升
  • 基于Excalidraw的AI绘图解决方案,现可免费试用GPU资源
  • Excalidraw移动端适配meta设置:viewport优化
  • cesium126,240506,Ce for Ue 建筑单体高亮的实现P2 - 下 - 多色染色和控制切换染色效果:
  • Excalidraw内容更新频率建议:保持活跃度
  • 41、系统性能问题排查案例解析
  • 13.5 扩散模型:前向过程、反向过程与得分匹配
  • Java毕设项目:基于springboot的游泳用品专卖店系统的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 39、Windows XP 辅助功能使用指南
  • 图片自适应缩放实战指南:从算法到多端实现与优化
  • 基于Java+SpringBoot+SSM钱币收藏交流系统(源码+LW+调试文档+讲解等)/钱币收藏平台/钱币交流社区/收藏交流软件/钱币收藏论坛/收藏系统介绍/钱币交易系统/古钱币收藏/钱币知识交流
  • Excalidraw Discord社区运营成功经验复制
  • Excalidraw产品截图拍摄规范:美观一致
  • Excalidraw竞品对比表格制作:差异化呈现
  • Excalidraw免费额度设置:吸引个人用户
  • Excalidraw技术支持响应时间承诺:分级处理
  • Excalidraw GDPR合规性检查:用户数据权利响应
  • Excalidraw SSO单点登录实现路径探讨
  • 腾讯开源混元0.5B:轻量化AI的高效部署新选择
  • Excalidraw缩放和平移功能技术实现细节
  • Excalidraw审计日志功能设计:操作追溯需求
  • Excalidraw企业合作案例:某银行内部部署实例
  • 9、Windows 10实用应用与微软应用商店使用指南
  • Ming-flash-omni:100B稀疏MoE多模态新标杆
  • ERNIE 4.5开放21B-A3B-Base模型
  • ERNIE-4.5轻量版PT模型开源:0.36B参数文本生成新选择