YOLO 算法系列总结对比 —— v1 - v3

目录

前言

YOLOv1

1. 技术路线

2. 关于如何通过设计网络来实现YOLOv1预测bbox的思想

3. 一些值得强调的实现细节

YOLOv2

1. 在精度上的改进

2. 在速度上的改进

YOLOv3

1. 网络结构的变化

2. 其他改进

卷积层代替池化层

置信度和分类变为分类任务


前言

YOLO系列是一种快速的目标检测算法,其目的是在满足一定的精度要求下尽量做到轻量快捷。这使得它非常适合部署在对检测速度要求比较高的场合。比如说视频中的目标实时检测,自动驾驶目标检测等。本文介绍了一下YOLO各个版本的特点对比。

YOLOv1

1. 技术路线

YOLOv1 提出了一种只用一个CNN网络就能实现端到端目标检测的方法。其技术路线的思路是首先将原图resize成448*448大小的图像,然后将这个图像切分成7*7个等份的cell。算法先验的假设了每个cell中只可能有某个一目标的bbox中心,算法的任务就是判定这个cell中是否是某一目标的中心,并且预测该目标的类别。因而如果有多个目标的bbox中心落到一个cell里,那么可能就会检测不出来或者检测的精度降低。实际上这个划分cell的操作并不是直接使用图形切分来实现的,而是通过设计网络和loss来实现的。

YOLOv1使用了一个有24层卷积,中间夹了4层池化的卷积网络来提取特征。并且用两个全连接层来输出7*7*30个预测值。

通过对这 7*7*30个预测值进行数据处理,就能得出我们想要的预测bbox框。

2. 关于如何通过设计网络来实现YOLOv1预测bbox的思想

首先我们注意到,模型的最后一层输出按理说虽然是个向量,但是实际上会被看做一个形状为7*7*30的参数图,其中7*7代表着cell的数目,30为每个cell需要预测出多少个参数。这些参数都是回归参数。我们可以看看在YOLOv1中是如何定义这30个参数的。首先对于每个cell,模型都要预测出两个不同的框框,不那么正确但是很直观的理解就是对于每个cell,模型都预测两遍bbox。每个bbox使用四个参数来定位,中心点坐标x,y和宽高w,h。最后为每个bbox添加一个参数C(confitence),代表着该bbox是前景的置信度。这样我们就为每个cell构造出了10个回归目标值。另外对于论文中当时使用的PASCAL VOC数据集,一共有20种目标类别,所以最后为每个gird预测一下这20个目标类别概率的预测值。这样如果预测出该cell包含一个目标bbox中心的话我们就可以进一步的对这个目标进行分类。

在介绍模型的loss之前,先要说明两个很重要也是最难理解的点,就是 1. 参数C(置信度)的意义。2. 如何定义背景前景的预测是“正确”的。我们知道,我们几乎不可能要求目标检测算法能够完美的100%预测出来一个与实际bbox一样的边框,我们其实在定义背景前景分类的正确与否的时候只需要要求预测的bbox和实际的bbox大致重合就行,并且我们可以把重合的程度作为我们的置信度。

1.关于参数C

作者将参数C赋予的意义是希望它能够尽量的去接近我们预测出的bbox与GT(ground truth)的IOU。请注意我这里使用的“尽量的去接近”这个表述,因为C毕竟也是个预测值,它也不可能完全的反映预测bbox与GT的IOU。只能说我们可以在训练阶段使用它与真实IOU的差值作为损失,来尽量让模型学习这一行为。实际在训练完成后使用这个模型的时候(习惯称为测试阶段),我们会利用参数C来评判预测的bbox是否为前景。

2. 关于如何定义预测的bbox是否为前景

由上面可以知道,在测试阶段我们可以根据预测的参数C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值