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

YOLO v1目标检测

1. 计算机视觉解决的问题

        ① 图像分类         ② 目标检测        ③ 语义分割        ④ 实例分割

 2. 目标检测两个流派

        ① two-stage 两阶段模型:首先提取一些候选区域(Region Proposals),可能包含目标的位置。然后对每个候选区域使用 CNN 进一步进行分类(判断类别)和精确定位(边界框回归)。

        ② one-stage 单阶段模型:跳过了提取候选区域阶段,直接使用单个神经网络同时进行目标分类和位置回归,大幅提高了检测速度。是一种 End-ToEnd 端到端方法。

        one-stage 检测速度快,能满足实时性要求。但检测精度通常低于 two-stage 方法。同时对小目标和复杂背景的处理能力相对较弱。

3. YOLO v1 网络结构

        YOLO v1 网络由 ① Conv. Layer 卷积层(24层)  ②maxpool Layer 最大池化层  ③ Conn. Layer 全连接层(2层)组成。

        其输入为 448*448*3 的图像,输出为 7*7*30 的张量(Tensor)。

4. YOLO v1 测试阶段流程

  1.  首先将输入图像分为 S*S 个 grid cell (v1中S为7)。
  2.  每个 grid cell 都会预测 B 个 bounding box (v1中B为2),这 B 个 bounding box 的中心点落在该 grid cell 里。每个 bounding box 都包含5个参数  (x,y,h,w,c) ,其中包括4个定位信息和1个置信度分数(confidence score)。(bounding box 即为目标所在的矩形区域)。
  3. 置信度分数(confidence score)定义为:{P(obj~in~bbox)}*IOU_{pred}^{truth}。如果该 grid cell 中不存在目标( P(object in bbox)=0 ),则置信度分数为 0 。否则(P(object in bbox)=1),我们希望置信度分数等于预测框(predict box)与真实标签框(ground truth)之间的交集(IOU)。
  4. 每个 grid cell 还会预测 C 个类别的条件概率(v1中C为20)。
  5. C 个类别的条件概率为:P(obj~is~\text{class i}~|~obj~in~box)
  6. 将 置信度分数 和 条件概率 相乘,获得最终的预测结果,即每个 bounding box 的具体类别的 confidence score。
  7. P(obj~is~\text{class i}~|~obj~in~bbox)*{P(obj~in~bbox)}*IOU_{pred}^{truth} *=P(obj~is~\text{class i)}*IOU_{pred}^{truth}
  8. 注意:不管 B 的数量是多少,每个 grid cell 只负责预测一个目标。这也是导致 YOLO 对小目标和密集目标检测效果比较差的原因。如果输入图片极其密集,导致 grid cell 里有多个物体,但是YOLO 模型只能预测出来一个,就会忽略在本 grid cell 内的其他物体。

        综上,S*S 个 grid cell ,每个 grid cell 预测 B 个bounding box ,还要预测 C 个类别。将两图合并,网络输出就是一个 S*S *(5*B+C),v1 即为 7*7*30

对于每个 bounding box 包含的  (x,y,h,w,c)

  •  x,y: 是指 bounding box 的中心坐标相较于该 bounding box 归属的 grid cell 左上角的偏移量,归一化在0-1之间。

  • w,h: 是指该 bounding box 的宽和高,也归一化到了0-1之间,表示相较于原始图像的宽和高(即448个像素)。比如下图中的 bounding box 的宽是 44.8 个像素,高也是 44.8*2 个像素,则 w=0.1,h=0.2。

  • YOLO 中 bounding box 是人为选定的(2个不同长宽比)的 box,在训练开始时作为超参数输入 bounding box 的信息,随着训练次数增加,loss降低,bounding box 越来越准确。 

 7*7*30 的张量所包含的内容:

5. YOLO v1 测试阶段后处理

        将 置信度分数 和 条件概率 相乘得到 Score:

        共得到 49*2 = 98 组数据:

        设置阈值,过滤 Score 低的组别后,按照 Score 高低排序,然后进行 NMS:

        非极大值抑制(NMS):   

         IOU计算公式:

IOU=\frac{A\cap B}{A\cup B}

        最终保留的非0值的 Score 个数就是 该输入图片中该类别物体的数量。输出 Object Detect 结果:

6. YOLO v1 训练阶段流程

预训练分类网络 :

        首先使用前 20 个卷积层、1 个最大池化层、1 个全连接层,在 image-Net 数据集上训练一个分类网络,这个网络的输入为 224*224,该模型在 image-Net2012 的数据集上的 top 5 精度为 88%。

YOLO v1 训练阶段流程: 

       

YOLO v1 损失函数:

        对不同大小的 bbox 预测中,相比于大的 bbox,小的 bbox预测偏相同的尺寸对 IOU 的影响更大。为了缓和这个问题,作者用了一个巧妙的办法,就是将 bbox的 width 和 height 取平方根代替原本的 height 和 width 。 如下图:small bbox 的横轴值较小,发生偏移时,反应到 y 轴上的 loss(下图绿色)比 big bbox(下图红色)要大。 

参考:

        【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)

        【精读AI论文】YOLO V1目标检测,看我就够了

         YoLov1论文理解

        【pytorch】目标检测:YOLO的基本原理与YOLO系列的网络结构

        从YOLOv1到YOLOv8的YOLO系列最新综述【2023年4月】

        YOLO V1 网络结构分析


http://www.kler.cn/a/400112.html

相关文章:

  • ReactPress与WordPress:一场内容管理系统的较量
  • 基于YOLOv8深度学习的智慧课堂学生专注度检测系统(PyQt5界面+数据集+训练代码)
  • 定时器简介
  • Essential Cell Biology--Fifth Edition--Chapter one (8)
  • 关于强化学习的一份介绍
  • Python知识点精汇!字符串:定义、截取(索引)和其内置函数
  • 小程序中模拟发信息输入框,让textarea可以设置最大宽以及根据输入的内容自动变高的方式
  • Qt 日志文件的滚动写入
  • 聚类算法总结
  • win7系统下惠普测试打印页失败提示“系统不支持请求的命令”解决方法
  • FPGA通过MIPI CSI-2发送实时图像到RK3588,并HDMI显示
  • Maven的下载安装及配置
  • Postman之数据提取
  • R语言-快速对多个变量取交集
  • JavaWeb 开发面试题及参考答案
  • Python+Pyecharts重画基金净值曲线(全)
  • K8S资源限制之resources
  • 《大数据中的高级 SQL 技巧技》
  • LinuxWEB服务器的部署及优化
  • Jupyter Notebook 与 PyTorch 配置教程
  • 迷你游戏作为电子学习中的趋势工具
  • hadoop3.x 新特性
  • 学习threejs,使用TWEEN插件实现动画
  • 利用正则表达式批量修改文件名
  • Python读取prophesee相机输出的raw文件
  • java itext后端生成pdf导出