【论文泛读】 YOLO v1:统一、实时的目标检测框架

简介: 【论文泛读】 YOLO v1:统一、实时的目标检测框架

【论文泛读】 YOLO v1:统一、实时的目标检测框架


这次来讲解一下YOLO v1算法(CVPR2016的文章)。YOLO是目前比较流行的object detection算法,速度快且结构简单,其他的object detection算法如faster RCNN(之前已经解读了一下)。YOLO模型指标准化、实时的目标检测。有了YOLO,不需要一张图像看一千次,来产生检测结果,你只需要看一次,这就是我们为什么把它叫"YOLO"物体探测方法(You only look once)


摘要 Abstract


作者提出了YOLO,一种新的目标检测方法。以前的目标检测工作重新利用分类器来执行检测。相反,我们将目标检测框架看作回归问题从空间上分割边界框和相关的类别概率。单个神经网络在一次评估中直接从完整图像上预测边界框和类别概率。由于整个检测流水线是单一网络,因此可以直接对检测性能进行end-to-end(端到端)的优化。


我们的统一架构非常快。我们的基础YOLO模型以45帧/秒的速度实时处理图像。网络的一个较小版本,快速YOLO,每秒能处理惊人的155帧,同时实现其它实时检测器两倍的mAP。相较于其他的state-of-the-art (先进的物体检测系统),YOLO在物体定位时更容易出错,但是在背景上预测出不存在的物体(false positives)的情况会少一些。而且,YOLO比DPM、R-CNN等物体检测系统能够学到更加抽象的物体的特征,这使得YOLO可以从真实图像领域迁移到其他领域,如艺术。


介绍 Introduction


这里就简单介绍一下,在传统的目标检测中,一般是传统两阶段的目标检测模型two-stage,而YOLO是一个单阶段的模型one-stage。


在之前介绍了DOM和Faster RCNN都是传统两阶段目标检测模型,一般包含两个阶段


提取潜在的候选框(Region Proposal)

用分类器足以筛选候选框

所以说这需要两个阶段,常常就会花更多的时间,从而导致不能达到实时检测的结果,并且这些复杂的流程很慢,很难优化,因为每个单独的组件都必须单独进行训练。


论文中提出的YOLO就很简单,我们可以将其看作一个单一的回归问题,直接从图像像素到边界框坐标和类概率。只需要在图像上看一次(YOLO),就可以预测出现的目标和位置。并且YOLO利用了卷积神经网络,用单个卷积网络同时预测这些盒子的多个边界框和类概率


73065ddc9cfa49a5bfc21e11fdce968b.png


YOLO算法有较为明显的优点:


1、YOLO的速度非常快。在Titan X GPU上的速度是45 fps(frames per second),加速版的YOLO差不多是150fps。


2、YOLO是基于图像的全局信息进行预测的。这一点和基于sliding window以及region proposal等检测算法不一样。与Fast R-CNN相比,YOLO在误检测(将背景检测为物体)方面的错误率能降低一半多。


3、YOLO可以学到物体的generalizable representations。可以理解为泛化能力强。


4、准确率高,有实验证明。


统一的目标检测框架


算法首先把输入图像划分成S*S的格子,然后对每个格子都预测B个bounding boxes,每个bounding box都包含5个预测值:x,y,w,h和confidence。x,y就是bounding box的中心坐标,与grid cell对齐(即相对于当前grid cell的偏移值),使得范围变成0到1;w和h进行归一化(分别除以图像的w和h,这样最后的w和h就在0到1范围)。


另外每个格子都预测C个假定类别的概率。在本文中作者取S=7,B=2,C=20(因为PASCAL VOC有20个类别),所以最后有7*7*30个tensor。如下图所示



image.png



除此之外,每个bounding box都对应一个confidence score,如果grid cell里面没有object,confidence就是0,如果有,则confidence score等于预测的box和ground truth的IOU值。


image.png

我们还需要判断一个grid cell中是否包含object如果一个object的ground truth的中心点坐标在一个grid cell中,那么这个grid cell就是包含这个object,也就是说这个object的预测就由该grid cell负责。


除此之外每个grid cell都预测C个类别概率,表示一个grid cell在包含object的条件下属于某个类别的概率 Pr(Class_i|Object)


在测试时,我们乘以条件类概率和单个盒子的置信度预测,


image.png

它为我们提供了每个框特定类别的置信度分数。这些分数编码了该类出现在框中的概率以及预测框拟合目标的程度。


为了在Pascal VOC上评估YOLO,我们使用S = 7 ,B = 2 。Pascal VOC有20个标注类,所以C = 20 。我们最终的预测是7 × 7 × 30 的张量。


YOLO v1网络架构


YOLO1的网络架构受到GoogLeNet图像分类模型的启发。我们的网络有24个卷积层,后面是2个全连接层。我们只使用1 × 1 降维层,后面是3 × 3 卷积层,而不是GoogLeNet使用的Inception模块,具体如下图所示


1b805c062c8822af8666914e372472db.png



我们网络的最终输出是7 × 7 × 30 的预测张量。


损失函数的设计


我觉得很重要的一个点就是这个损失函数,对于这个网络来说本质上是一个回归问题,所以我们可以用平方和误差来进行优化我们的模型,但是这会出现一个问题,我们可能会对分类误差和定位误差都一视同仁,对大框和小框都一视同仁,这样就有可能会导致一些问题,特别是如果碰见数据集比较单一的时候,很有可能导致不稳定,最后模型发散,


为了补偿改进,我们增加了边界框坐标预测损失,并减少了不包含目标边界框的置信度预测损失。我们使用两个参数λ coord  和λ noobj来完成这个工作。我们设置λ coord = 5 和λ noobj = . 5


平方和误差也可以在大框和小框中同样加权误差。我们的错误指标应该反映出,大框小偏差的重要性不如小框小偏差的重要性。为了部分解决这个问题,我们直接预测边界框宽度和高度的平方根,而不是宽度和高度。


YOLO每个网格单元预测多个边界框。在训练时,每个目标我们只需要一个边界框预测器来负责。我们指定一个预测器“负责”根据哪个预测与真实值之间具有当前最高的IOU来预测目标。这导致边界框预测器之间的专业化。每个预测器可以更好地预测特定大小,方向角,或目标的类别,从而改善整体召回率。


在训练期间,我们优化以下多部分损失函数:


cc6ee4a22bde41118972a615ed76fdb5.png



我在图中标了一下各个损失函数意义,希望对你有帮助。


最后提一下作者在论文中说,对Pascal VOC 2007和2012的训练和验证数据集进行了大约135个迭代周期的网络训练。在Pascal VOC 2012上进行测试时,我们的训练包含了Pascal VOC 2007的测试数据。在整个训练过程中,我们使用了64 的批大小,0.9的动量和0.0005 的衰减。


我们的学习率方案如下:对于第一个迭代周期,我们慢慢地将学习率从1 0 − 3提高到1 0 − 2 如果我们从高学习率开始,我们的模型往往会由于不稳定的梯度而发散。我们继续10 − 2 的学习率训练75个迭代周期,然后用1 0 − 3 的学习率训练30个迭代周期,最后用1 0 − 4 的学习率训练30个迭代周期。


为了避免过度拟合,我们使用丢弃和大量的数据增强。在第一个连接层之后,丢弃层使用= . 的比例,防止层之间的互相适应。对于数据增强,我们引入高达原始图像20 大小的随机缩放和转换。我们还在HSV色彩空间中使用高达1.5的因子来随机调整图像的曝光和饱和度。


YOLO的缺陷


YOLO对边界框预测强加空间约束,因为每个网格单元只预测两个盒子,只能有一个类别。这个空间约束限制了我们的模型可以预测的邻近目标的数量。


1、位置精确性差,对于小目标物体以及物体比较密集的也检测不好,比如一群小鸟。

2、YOLO虽然可以降低将背景检测为物体的概率,但同时导致召回率较低。


从图中也可以看奥,对于小的物体,YOLO的准确率较低

7cc7bdb002c70ce62d5883f2001a1b17.png


比较性能


最后论文中对YOLO与各个目标检测模型进行比较,最后发现Fast RCNN + YOLO模型会有一个比较大的提高。虽然YOLO的准确率没有Fast RCNN准,但是它比Fast RCNN快,他可以说是又快又准,可以达到实时的预测,从而对我们的生活也造成了一些影响,比如我们可以通过此进行一个追踪的功能,视频的目标检测,并且现在的技术也已经很成熟了。当连接到网络摄像头时,其功能类似于跟踪系统,可在目标移动和外观变化时检测目标。


7a734cccde63b8ad0be0ea172a50979d.png


总结


作者介绍了YOLO,一种统一的目标检测模型。我们的模型构建简单,可以直接在整张图像上进行训练。与基于分类器的方法不同,YOLO直接在对应检测性能的损失函数上训练,并且整个模型联合训练。

快速YOLO是文献中最快的通用目的的目标检测器,YOLO推动了实时目标检测的最新技术。YOLO还很好地泛化到新领域,使其成为依赖快速,强大的目标检测应用的理想选择。

现在的YOLO也已经出现了YOLO v5,之后也会对其论文进行研究,并且实现其代码,还请持续关注。

相关文章
|
机器学习/深度学习 人工智能 自然语言处理
满足不同下游任务特征需求!Sea AI Lab 提出多粒度自监督学习框架Mugs,刷新多项SOTA(2)
满足不同下游任务特征需求!Sea AI Lab 提出多粒度自监督学习框架Mugs,刷新多项SOTA
172 0
|
1月前
|
并行计算 算法 物联网
LLM 大模型学习必知必会系列(六):量化技术解析、QLoRA技术、量化库介绍使用(AutoGPTQ、AutoAWQ)
LLM 大模型学习必知必会系列(六):量化技术解析、QLoRA技术、量化库介绍使用(AutoGPTQ、AutoAWQ)
LLM 大模型学习必知必会系列(六):量化技术解析、QLoRA技术、量化库介绍使用(AutoGPTQ、AutoAWQ)
|
1月前
|
存储 并行计算 算法
大模型量化技术解析和应用
眼看人工智能含智能量越来越高含人量越来越低,是否开始担心自己要跟不上这趟高速列车了?内心是否也充满好奇:大模型背后的奥秘是什么?为何如此强大?它能为我所用吗?哪种技术最适合我的需求?
|
30天前
|
机器学习/深度学习 数据可视化 计算机视觉
【YOLOv8改进】MCA:用于图像识别的深度卷积神经网络中的多维协作注意力 (论文笔记+引入代码)
YOLO目标检测专栏介绍了YOLO的创新改进和实战案例,包括多维协作注意力(MCA)机制,它通过三分支架构同时处理通道、高度和宽度注意力,提高CNN性能。MCA设计了自适应组合和门控机制,增强特征表示,且保持轻量化。该模块适用于各种CNN,实验证明其在图像识别任务上的优越性。此外,文章还展示了如何在YOLOv8中引入MCA层的代码实现和相关任务配置。
|
机器学习/深度学习 人工智能 算法
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头
780 0
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头
|
机器学习/深度学习 自动驾驶 计算机视觉
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点
184 0
|
计算机视觉
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点(二)
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点(二)
129 0
|
机器学习/深度学习 自动驾驶 计算机视觉
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点(一)
目标检测提升技巧 | 结构化蒸馏一行代码让目标检测轻松无痛涨点(一)
127 0
|
Go 网络架构 计算机视觉
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头(二)
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头(二)
815 0
|
机器学习/深度学习 人工智能 算法
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头(一)
目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头(一)
413 0