YOLOv1

1.前言

2.目标检测

  • YOLOv1是解决目标检测问题的计算机视觉算法
  • 计算机视觉能够解决很多问题——分类、检测、分割

在这里插入图片描述

  • 分类:输入一张图像,算法能够告诉我们图像中有什么类别,但是并不知道类别在图像中的位置,即输入图像,输出类别
  • 检测:图像中有多个类别的多个物体,我们要把每一个物体用矩形框框起来,并且标出框出的类别
  • 分割:像抠图一样,获得像素级别的各类物体,有语义分割(对每一个像素进行分类,不管像素是属于哪几个物体的,只管是属于什么类别的,如下图的Semantic Segmentation,将猫都框在一起了)和实例分割(把同一个类别的不同实例区分出来,如下图的Instance Segmentation)
    在这里插入图片描述
  • 区别:目标检测是画框框,而实例分割是抠图
  • 目标检测实际上分为两个流派,上面的分支叫One-stage detector单阶段模型,下面的分支叫Two-stage detector两阶段模型
  • YOLO就属于单阶段模型
  • 两阶段模型:先从图像中提取若干候选框,再逐一对候选框进行分类和甄别,最后得出结果
  • 单阶段模型:不提取候选框,直接将全图喂到模型里面,算法能够输出目标检测的结果,端到端的系统
    在这里插入图片描述

3.预测阶段(前向传播)

  • 训练阶段和预测阶段要分开理解
  • 预测阶段就是在模型已经训练成功之后,输入未知图片来对未知图片进行预测或者测试,这个时候就不需要训练,不需要反向传播了,而是只需要前向推断,运行这个模型
  • YOLOv1训练出来之后是一个深度卷积神经网络
    在这里插入图片描述
  • 上图是标准的YOLOv1模型,24层卷积层提取图像特征,2层全连接层回归得到7×7×30的tensor
  • 先将输入图像缩放成448×448的正方形图片,通过若干个卷积层,池化层
  • 再过1×1卷积层,3×3卷积层等等,一直到最后变成7×7×1024维度的特征图,把特征图拉平,喂到4096个神经元的全连接层中,输出4096维的向量,再把4096维的向量喂到1470神经元的全连接层中,输出1470维的向量,再将1470维的向量reshape成7×7×30的张量
  • 在这里插入图片描述
  • 上图是YOLO小模型

3.1细致讲解

在这里插入图片描述

  • 如上图,先将图片划分成s×s的网格(grid cell),其中s=7
  • 每个网格又能预测数b个预测框(bounding boxes),其中b=2
  • 预测框有的大有的小,但是只要这个预测框的中心点落在网格里,就认为预测框是由网格生成的
  • 预测框包含了 h , w , x , y h,w,x,y h,w,x,y四个定位坐标,也就是中心点的坐标和框宽高,还包含了 c c c,表示框的粗细,意思为是不是该物体的置信度,越粗置信度越高
  • 每个网格还能生成每个类别的条件概率(class probability map),假设在它包含物体的情况下,是该物体的概率
  • 预测框的置信度乘每个类别的概率就能获得每个预测框各类别的概率,就可以获得最后的预测结果(Final detections)

3.2立体图讲解

在这里插入图片描述

  • 7×7×30的张量中的30包含2个预测框,每个预测框有5个参数 x , y , w , h , c x,y,w,h,c x,y,w,h,c,所以一共有10个参数,再加上Pascal VOC里面包含20个类别,30维的向量就是一个网格(grid cell)的信息
  • 总共是7×7个网格,所以就是7×7×30维的张量,7×7×30=1470
  • 如上图紫色的是第一个预测框,绿色是第二个预测框,后面的白色是20维的条件概率,第一个白框假设是猫的概率,第二个白框假设是鸟的概率,以此类推

3.3举例讲解

在这里插入图片描述

  • 输入一张图像,YOLOv1就能输出7×7个网格,每一个网格包含两个预测框,和20个类别的条件概率
  • 每个预测框又包含5个参数
  • 比如说对其中一个网格预测出两个预测框,两个预测框其中一个置信度比较高,也就是框比较粗
  • 每一个网格只有一个条件概率最高的代表类别,所以最多预测49个类别

4.预测阶段-后处理

  • 对于YOLOv1就是将49×2=98个预测框进行筛选过滤,去除重复的预测框,只保留一个目标检测的结果,这个过程称为非极大值抑制
    -

  • 把上图蓝色小方块是第一个预测框的置信度×蓝色长方块(20个类别的概率)相乘得到下面橙色的框(20维的向量),相当于条件概率×条件本身发生的概率,就变成了全概率,该预测框包含物体的概率(置信度)×在它包含物体的概率条件下各个类别的概率=真正是什么类别的概率

  • 网上找的动图,方便大家更好的理解
    在这里插入图片描述

  • 将获得的98个向量,由概率从高到低排序

  • 将概率最高的框拿出来,然后接下来每一个都与概率最高的框作比较
    在这里插入图片描述

  • 比如橙色的框与绿色框的IoU大于某个阈值,那我们就认为这两个预测框是重复识别了一个物体,我们就将低概率的去除

5.训练阶段(反向传播)

  • 最难最重点的部分
  • 深度学习或者是监督学习的训练是通过梯度下降和反向传播方法迭代的去微调神经元中的权重,来使得损失函数最小化的过程
  • 目标检测是一个典型的监督学习,就是说在训练集上肯定有一个人已经用标注软件画出了一个标准框
  • 而我们的算法就是要让预测结果去尽量拟合标准框(ground truth),使得损失函数最小化
  • 标准框的中心点落在哪个网格(ground cell)里面,就应该由该网格预测出的预测框去拟合该标准框
  • 并且该网格输出的类别也应该是标准框的类别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simple_learning_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值