深度学习——Bounding Box预测

YOLO(You Only Look Once)是一种目标检测算法,通过在图像上划分网格并直接预测边界框和类别概率,解决了滑动窗口法的精度和效率问题。每个网格负责预测一个对象,如果对象中心落在网格内,则该网格负责输出边界框坐标和类别。YOLO是卷积实现的,因此速度快,能实时输出精确的边界框,适用于图像识别和自动驾驶等领域。
摘要由CSDN通过智能技术生成

Bounding Box

为什么要预测?

上一篇博客讲解了滑动窗口法的卷积实现,这个算法效率更高,但仍然存在问题,不能输出最精准的边界框,在滑动窗口法中,你取这些离散的位置集合,然后在它们上运行分类器,在这种情况下,这些边界框没有一个能完美匹配汽车位置。
在这里插入图片描述

其中一个能得到更精准边界框的算法是 YOLO 算法,YOLO(You only look once)意思是你只看一次,这是由 Joseph Redmon,Santosh Divvala,Ross Girshick 和 Ali Farhadi 提出的算法。
是这么做的,比如你的输入图像是 100×100 的,然后在图像上放一个网格。为了介绍起来简单一些,我用 3×3 网格,实际实现时会用更精细的网格,可能是 19×19。基本思路是使用图像分类和定位算法,将算法应用到 9 个格子上。(基本思路是,采用图像分类和定位算法,逐一应用在图像的 9 个格子中。)更具体一点,你需要这样定义训练标签,所以对于 9 个格子中的每一个指定一个标签𝑦,𝑦是 8 维的,和你之前看到的一样。
在这里插入图片描述
我们看看左上方格子,这里这个,里面什么也没有,所以左上格子的标签向量𝑦是[ 0???] 。然后这个格子的输出标签𝑦也是一样,这个格子(编号 3),还有其他什么也没有的格子都一样。
讲的更具体一点,这张图有两个对象,YOLO 算法做的就是,取两个对象的中点,然后将这个对象分配给包含对象中点的格子。所以即使中心格子(编号 5)同时有两辆车的一部分,我们就假装中心格子没有任何我们感兴趣的对象,所以对于中心格子,分类标签𝑦和这个向量类似,和这个没有对象的向量类似,即𝑦 = [ 0???] 。
绿色线框柱的格子和橙色先框柱的格子包含对象中点,对应的向量分别为最右边的绿色笔和蓝色笔写出的向量,𝑝𝑐 = 1,然后你写出𝑏𝑥、𝑏𝑦、𝑏ℎ和𝑏𝑤来指定边界框位置,然后还有类别 1是行人,那么𝑐1 = 0,类别 2 是汽车,所以𝑐2 = 1,类别 3 是摩托车,则数值𝑐3 = 0。在这里插入图片描述
所以对于这里 9 个格子中任何一个,你都会得到一个 8 维输出向量,因为这里是 3×3 的网格,所以有 9 个格子,总的输出尺寸是 3×3×8,所以目标输出是 3×3×8。
所以这个算法的优点在于神经网络可以输出精确的边界框,所以测试的时候,你做的是喂入输入图像𝑥,然后跑正向传播,直到你得到这个输出𝑦。

注意如何分配对象所在格子
把对象分配到一个格子的过程是,你观察对象的中点,然后将这个对象分配到其中点所在的格子,所以即使对象可以横跨多个格子,也只会被分配到 9 个格子其中之一,就是 3×3 网络的其中一个格子,或者 19×19 网络的其中一个格子。在 19×19 网格中,两个对象的中点(图中蓝色点所示)处于同一个格子的概率就会更低。

优点

  1. 它显式地输出边界框坐标,所以这能让神经网络输出边界框,可以具有任意宽高比,并且能
    输出更精确的坐标,不会受到滑动窗口分类器的步长大小限制。
  2. 这是一个卷积实现,你并没有在 3×3 网格上跑 9 次算法,或者,如果你用的是 19×19 的网格,19 平方是 361 次,所以你不需要让同一个算法跑 361 次。相反,这是单次卷积实现,但你使用了一个卷积网络,有很多共享计算步骤,在处理这 3×3 计算中很多计算步骤是共享的,或者你的 19×19 的网格,所以这个算法效率很高
  3. 因为这是一个卷积实现,实际上它的运行速度非常快,可以达到实时识别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值