图解目标检测 之 YOLO 算法 最全原理详解

人工智能算法前沿
专栏收录该内容
¥29.90
¥99.00
24 篇文章

YOLO

一.背景

YOLO(You Only Look Once: Unified, Real-Time Object Detection),是Joseph Redmon和Ali Farhadi等人于2015年提出的基于单个神经网络的目标检测系统。在2017年CVPR上,Joseph Redmon和Ali Farhadi又发表的YOLO 2,进一步提高了检测的精度和速度。
在这里插入图片描述

二.YOLO算法的网络结构

网络结构借鉴了 GoogLeNet 。24个卷积层,2个全链接层。(用1×1 reduction layers 紧跟 3×3 convolutional layers 取代Goolenet的 inception modules )。在这里插入图片描述
在这里插入图片描述

三.YOLO算法流程 与 步骤

在这里插入图片描述
Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,整个系统如图5所示:首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。相比R-CNN算法,其是一个统一的框架,其速度更快,而且Yolo的训练过程也是end-to-end的。

在这里插入图片描述
作者在YOLO算法中把物体检测(object detection)问题处理成回归问题,用一个卷积神经网络结构就可以从输入图像直接预测bounding box和类别概率。

流程
  1. 将图片resize到448*448大小。
  2. 将图片放到网络里面进行处理。
  3. 进行非极大值抑制处理得到结果。

3.1 图像分割

Yolo的CNN网络将输入的图片分割成S×S网格,然后每个单元格负责去检测那些中心点落在该格子内的目标,如图所示,可以看到狗这个目标的中心落在左下角一个单元格内,那么该单元格负责预测这个狗。
在这里插入图片描述
(图片来自网络)

YOLO图像分割流程

假设图像的大小是100∗100,然后在图像上放一个网格,为了描述的简洁,在此使用3∗3的网格,实际中会使用更加精细复杂的网格,可能是19∗19.

  1. 基本思想是使用图像分类和定位算法(image classification and Localization algorithm)然后将算法应用到九个格子上
  2. 然后需要对每个小网格定义一个5+k(k为预测类别个数)维向量的目标标签
  3. YOLO算法使用的是取目标对象边框中心点的算法,即考虑边框的中心点在哪个格子中

3.2 图片在网格中的处理在这里插入图片描述

每个单元格会预测B个边界框(bounding box)以及边界框的置信度(confidence score)。所谓置信度其实包含两个方面,一是这个边界框含有目标的可能性大小,二是这个边界框的准确度。前者记为Pr(object),当该边界框是背景时(即不包含目标),此时Pr(object)=0。而当该边界框包含目标时,Pr(object)=1。边界框的准确度可以用预测框与实际框(ground truth)的IOU(intersection over union,交并比)来表征,记为IOUtruthpredI。因此置信度可以定义为Pr(object)∗IOUtruthpred。很多人可能将Yolo的置信度看成边界框是否含有目标的概率,但是其实它是两个因子的乘积,预测框的准确度也反映在里面。边界框的大小与位置可以用4个值来表征:(x,y,w,h),其中(x,y)是边界框的中心坐标,而w和h是边界框的宽与高。还有一点要注意,中心坐标的预测值(x,y)是相对于每个单元格左上角坐标点的偏移值,并且单位是相对于单元格大小的,单元格的坐标定义如图6所示。而边界框的w和h预测值是相对于整个图片的宽与高的比例,这样理论上4个元素的大小应该在[0,1]范围。这样,每个边界框的预测值实际上包含5个元素:(x,y,w,h,c),其中前4个表征边界框的大小与位置,而最后一个值是置信度。
还有分类问题,对于每一个单元格其还要给出预测出C个类别概率值,其表征的是由该单元格负责预测的边界框其目标属于各个类别的概率。但是这些概率值其实是在各个边界框置信度下的条件概率,即Pr(classi|object)。值得注意的是,不管一个单元格预测多少个边界框,其只预测一组类别概率值,这是Yolo算法的一个缺点,在后来的改进版本中,Yolo9000是把类别概率预测值与边界框是绑定在一起的。同时,我们可以计算出各个边界框类别置信度(class-specific confidence scores):Pr(classi|object)∗Pr(object)∗IOUtruthpred=Pr(classi)∗IOUtruth。边界框类别置信度表征的是该边界框中目标属于各个类别的可能性大小以及边界框匹配目标的好坏。

每个单元格需要预测(B∗5+C)个值。如果将输入图片划分为S×S网格,那么最终预测值为S×S×(B∗5+C)大小的张量。整个模型的预测值结构如下图所示。对于PASCAL VOC数据,其共有20个类别,如果使用S=7,B=2S=7,B=2,那么最终的预测结果就是7×7×307×7×30大小的张量。
在这里插入图片描述

3.3用非极大值抑制得到结果

在这里插入图片描述
非极大值抑制算法(non maximum suppression, NMS),这个算法不单单是针对Yolo算法的,而是所有的检测算法中都会用到。NMS算法主要解决的是一个目标被多次检测的问题,如图中人脸检测,可以看到人脸被多次检测,但是其实我们希望最后仅仅输出其中一个最好的预测框,比如对于美女,只想要红色那个检测结果。那么可以采用NMS算法来实现这样的效果:首先从所有的检测框中找到置信度最大的那个框,然后挨个计算其与剩余框的IOU,如果其值大于一定阈值(重合度过高),那么就将该框剔除;然后对剩余的检测框重复上述过程,直到处理完所有的检测框。Yolo预测过程也需要用到NMS算法

四.YOLO算法网络的训练过程

yolo的基础网络灵感来源于GoogLeNet,但是并没有采取其inception的结构,而是简单的使用了1×1的卷积核。base model共有24个卷积层,后面接2个全连接层

在训练网络的时候,作者首先用ImageNet预训练前20个卷积层,作者训练的结果是top-5 accuracy = 88%

训练好分类网络后,进行检测的训练,由于检测一般需要较大的分辨率,所以作者将输入图像大小修改为448*448

另外yolo并没有使用Relu激活函数,而是使用了leaky rectified linear激活函数,如下:

在这里插入图片描述

五.损失函数

5.1 bounding box的(x, y, w, h)的坐标预测误差。

缩进在检测算法的实际使用中,一般都有这种经验:对不同大小的bounding box预测中,相比于大box大小预测偏一点,小box大小测偏一点肯定更不能被忍受。所以在Loss中同等对待大小不同的box是不合理的。为了解决这个问题,作者用了一个比较取巧的办法,即对w和h求平方根进行回归。从后续效果来看,这样做很有效,但是也没有完全解决问题。

5.2 bounding box的confidence预测误差

缩进由于绝大部分网格中不包含目标,导致绝大部分box的confidence=0,所以在设计confidence误差时同等对待包含目标和不包含目标的box也是不合理的,否则会导致模型不稳定。作者在不含object的box的confidence预测误差中乘以惩罚权重λnoobj=0.5。

缩进除此之外,同等对待4个值(x, y, w, h)的坐标预测误差与1个值的conference预测误差也不合理,所以作者在坐标预测误差误差之前乘以权重λcoord=5(至于为什么是5而不是4,我也不知道T_T)。

5.3 分类预测误差

缩进即每个box属于什么类别,需要注意一个网格只预测一次类别,即默认每个网格中的所有B个bounding box都是同一类。

综上所述,YOLO的最终误差为下:

Loss = λcoord * 坐标预测误差 + (含object的box confidence预测误差 + λnoobj * 不含object的box confidence预测误差) + 类别预测误差
在这里插入图片描述

六.YOLO 算法 的 不足

在这里插入图片描述

参考:
复旦大学 《深度学习》

VIPYOLO系列算法 目录YOLO系列算法yolo算法Yolo算法思想Yolo的网络结构网络输入网络输出7X7网格30维向量Yolo模型的训练训练样本的构建损失函数模型训练模型预测yolo总结yoloV2预测更准确(better)batch normalization使用高分辨率图像微调分类模型采用Anchor Boxes聚类提取anchor尺度边框位置的预测细粒度特征融合多尺度训练速度更快(Faster)识别对象更多yoloV3算法简介多尺度检测网络模型结构先验框logistic回归yoloV3模型的输入与输出yoloV4总结 开通可读全文·3.1w 阅读·46 点赞·358 收藏 阅读全文

相关推荐

YOLO详解

本文参考知乎 https://zhuanlan.zhihu.com/p/25236464 1. YOLO的创新点 YOLO将物体检测作为回归问题求解。基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出。 从网络设计上,YOLO与two steps的目标检测方法如RCNN、Fast RCNN和Faster RCNN的区别如下: YOLO训练和检测均是在一个单独网...

UnknownPlayer的博客 9806

图解目标检测 之 【YOLO v2】算法 最全原理详解(含详细代码)

YOLO v2是目标检测领域的重要突破,通过引入Batch Normalization、锚框机制和多尺度训练等创新技术,在保持实时检测速度的同时显著提升了检测精度。其Darknet-19骨干网络采用19层卷积结构,结合维度聚类、直接位置预测和Passthrough层等关键技术,在PASCAL VOC 2007数据集上达到78.6%的mAP和40 FPS的速度,性能优于同期算法。本文详细解析了YOLO v2的核心原理、网络架构和实现方法,为研究者和开发者提供了全面参考。

DFCED的博客 329

YOLO算法

YOLO,全称为You Only Look Once: Unified, Real-Time Object Detection,是一种实时目标检测算法目标检测计算机视觉领域的一个重要任务,它不仅需要识别图像中的物体类别,还需要确定它们的位置。与分类任务只关注对象是什么不同,目标检测需要同时处理离散的类别数据和连续的位置数据。YOLO算法基于深度学习的回归方法,它将目标检测问题转化为一个回归问题,使用单个卷积神经网络(CNN)直接从输入图像预测边界框(bounding box)和类别概率。

小森的博客 1万+

YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍 !!

本文详细介绍了从YOLOv1-YOLOv9的网络结构,以及各个版本之间的迭代。YOLOv1-YOLOv8之间的对比ModelAnchorInputBackboneNeckYOLOv1锚框(训练是224*224,测试是448*448;GoogLeNet;Dropout防止过拟合;最后一层使用线性激活函数,其余层都使用ReLU激活函数无;一个网格只预测了2个框,并且都属于同一类;全连接层直接预测bbox的坐标值;YOLOv2锚框(通过k-means选择先验框。

不要给自己设限,尝试更多可能(思所向 皆可往) 7万+

目标检测|YOLOv2原理与实现(附YOLOv3)

转发:https://zhuanlan.zhihu.com/p/35325884前言在前面的一篇文章中,我们详细介绍了YOLOv1的原理以及实现过程。这篇文章接着介绍YOLOv2的原理以及实现,YOLOv2的论文全名为YOLO9000: Better, Faster, Stronger,它斩获了CVPR 2017 Best Paper Honorable Mention。在这篇文章中,作者首先在Y...

何进的博客 1万+

深度学习YOLO核心原理介绍

YOLO目标检测模型采用三级网络结构(骨干-颈部-头部)协同工作,通过锚框匹配、多尺度预测和NMS筛选实现高效检测。调试时需重点关注:1)锚框需针对数据集聚类优化;2)NMS参数根据场景复杂度调整置信度和IOU阈值;3)多尺度训练增强模型鲁棒性。不同场景(小目标/大目标/遮挡场景)需采用差异化参数组合,通过验证集mAP指标验证优化效果。建议调试顺序:先优化锚框匹配,再调整NMS参数,最后优化多尺度策略。

棒棒的皮皮 2277

通俗易懂:YOLO模型原理详解,从零开始理解目标检测

你是否曾经好奇过,为什么手机拍照时能够自动识别照片中的人脸?为什么自动驾驶汽车能够识别道路上的车辆和行人?这背后都离不开一个强大的技术——**目标检测**。而YOLO(You Only Look Once)就是目标检测领域中最著名的算法之一。

石头的博客 5421

从零开始掌握YOLO——实时目标检测的技术详解

在当今的计算机视觉领域,目标检测技术扮演着至关重要的角色,随着深度学习技术的迅速发展,目标检测在安防监控、自动驾驶、医疗影像等多个领域得到了广泛应用。传统的目标检测方法通常需要复杂的手工特征设计和分类器训练,不仅效率较低,还存在难以推广的瓶颈。近年来,基于卷积神经网络(CNN)的目标检测方法,尤其是YOLO(You Only Look Once),彻底改变了这一现状。

iShare_Carlos的博客 5万+

YOLO系列详解YOLO1-YOLO5)

YOLO系列是one-stage且是基于深度学习的回归方法,而R-CNN、Fast-RCNN、Faster-RCNN等是two-stage且是基于深度学习的分类方法。

weixin_45303602的博客 2万+

图解目标检测 之 【YOLOv9】 算法 最全原理详解

YOLOv9 是 YOLO(You Only Look Once)系列实时目标检测系统的最新版本。它建立在以前的版本之上,融合了深度学习技术和架构设计的进步,以在对象检测任务中实现卓越的性能。YOLOv9将可编程梯度信息 (PGI) 概念与通用 ELAN (GELAN)架构相结合而开发,代表了准确性、速度和效率方面的重大飞跃。计算机领域顶会论文,CCF,SCI,EI,专利竞赛软著等1v1论文辅导!👇【立即咨询】一站式服务,短期快速投稿💥个性化的指导和顶尖的科研团队支持,助您攀登科研高峰。

DFCED的博客 1万+

硬核图解,再填猛男,YOLO详解

目标检测算法YOLOv1的超详细解析,一文看懂YOLO

Jack-Cui 2万+

目标检测YOLO系列——YOLOv1详解

本篇是关于目标检测算法YOLOv1的学习笔记。网上的博客大多是摘抄翻译论文中的重点内容加上自己的理解,或者是梳理论文的大致思路,在没看过原文的情况下可能总会有些看不懂的地方。所以强烈建议博客搭配原文食用。 原文链接:You Only Look Once: Unified, Real-Time Object Detection 一、YOLOv1的创新点及优势 YOLOv1是CVPR2016的文章, 相比于当时比较优秀的目标检测算法(如R-CNN、DPM), YOLO有如下创新点和优势: 1. 主要创新点:

qq_43673118的博客 1万+

学习YOLO系列的个人总结

最近这段时间学习了YOLO系列原理,也跑了pytorch_yolov4、darknet框架yolov4、pytorch_yolov3、dakrnet框架yolov3等模型。这里要感谢网上大佬们的博文,没有你们,自己要走很多弯路。 本篇博客主要是记录自己学习YOLO系列的历程,方便以后自己需要时及时地查询与巩固,内容包括YOLO原理、windows系统下的yolo模型搭建、用yolov3和yolov4训练自己的数据集去检测目标以及网上我认为不错的博文。 推荐一个CV领域的相关论文下载网址:http.

boss-dog 6573

[ 目标检测 ] 经典网络模型5——YOLO-v1 详解与复现

[ 目标检测 ] 经典网络模型5——YOLO-v1 详解与复现 1、You Only Look Once; 2、YOLO-v1详解;特点、网络结构:网络设计 结构框图 损失函数 局限性 性能比较 ; 3、YOLO-v1复现; 在此之前目标检测都有着多阶段的过程,并采用单独的分类器来进行分类 ; 如 R-CNN 利用一系列 SVMs 对生成的 Region proposals 进行分类预测,存在着 检测速度慢、优化难 的问题 ; YOLO 算法目标检测作为一个单一的回归问题,直接对输入图像进行边界框与类别.

A_John 的博客 2204

【R-CNN系列目标检测】(5)YOLO算法

YOLO【1】是RBG挂名的目标检测算法YOLO不再套用R-CNN的思路,而是将目标检测转换为回归问题,极大提升了检测速率:标准版达到45fps,简化版达到155fps

zizi7的专栏 2175

DETR中的匈牙利算法:结合图文例子详解

摘要:本文系统介绍了匈牙利算法在DETR目标检测器中的关键应用。首先阐述了DETR需要匹配机制的原因:通过固定数量的预测框与真实目标建立最优对应,替代传统NMS后处理。详细解析了匈牙利算法的核心原理,包括行减、列减、最小覆盖线等矩阵操作步骤,并通过示例图解说明匹配过程。特别指出DETR中未匹配的预测会被自动归类为"noobject",实现端到端训练。最后总结了该算法对DETR架构的重要意义及其在各改进模型中的持续应用价值。

weixin_44115575的博客 1801

目标检测-yolo系列

接下来就是Yolo系列 1. YOLO v1 论文:You Only Look Once: Unified, Real-Time Object Detection 代码: 一. Tensorflow: hizhangp/yolo_tensorflow 二. Darknet:darknet/yolo 代码解析:YOLO源码解析 论文解析: 知乎:图解YOLO CSDN:YOLO(You Onl...

暮日落流年的博客 505

YOLO模型结构图解:Backbone、Neck与Head详解

深入剖析YOLO系列模型的Backbone、Neck与Head设计原理,揭示其在真实场景中实现高效检测的工程智慧。从CSPDarknet的梯度优化到PAN的双向融合,再到解耦检测头的任务分离,展现速度与精度平衡背后的技术细节与落地经验。

weixin_29443363的博客 1052

YOLO v3入门图解

先回顾下面这个图,看看是否了解每个步骤的含义。然后再用一个图来总结一下流程,接下来根据输出的目标置信度淘汰一大批包围盒,在使用非极大值抑制继续淘汰一批,最后剩下检测到的目标,下图是这些步骤的简化版本演示图。

githubcurry,985cs博士在读 1492
上一篇: 图解目标检测 之 Faster-RCNN 原理 详解
下一篇: 图解 生成对抗网络GAN 原理 超详解
DFCED
博客等级 码龄8年 2609粉丝 189原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DFCED

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

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

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

打赏作者

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

抵扣说明:

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

余额充值