目标检测YOLO算法,先从yolov1开始

这篇具有很好参考价值的文章主要介绍了目标检测YOLO算法,先从yolov1开始。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习资源

有一套配套的学习资料,才能让我们的学习事半功倍。

yolov1论文原址:You Only Look Once: Unified, Real-Time Object Detection

代码地址:darknet: Convolutional Neural Networks (github.com)

深度学习经典检测方法

  • one-stage(单阶段):YOLO系列

最核心的优势:速度非常快,适合做实时检测任务! 但是缺点也是有的,效果通常情况下不会太好!

  • two-stage(两阶段):Faster-rcnn Mask-Rcnn系列

速度通常较慢(5FPS),但是效果通常还是不错的! 非常实用的通用框架MaskRcnn,可以去学习一下。

应用:

二者算法流程不同,一阶段检测一步到位,直接预测类别和坐标。两阶段检测会先生成建议框,再进行分类和回归。所以两阶段更适合对精度要求高的场景,如工业质检;而单阶段更适合要求速度的场景,如视频监控。

YOLO 核心思想

YOLO采用直接回归的思路,将目标定位和目标类别预测整合于在单个神经网络模型中。

目标检测YOLO算法,先从yolov1开始,目标检测,目标检测,YOLO,人工智能

由于不像Faster-rcnn那样提取region proposal,YOLOv1的检测流程很简单:

  1. Resize image:将输入图片resize到448x448。
  2. Run ConvNet:使用CNN提取特征,FC层输出分类和回归结果。
  3. Non-max Suppression:非极大值抑制筛选出最终的结果。

目标检测逻辑

这个部分是一个难点,就是我没有建议框,那要怎么定位那些包含目标的区域并固定输出呢?

YOLOv1就将图像分成SxS个网格,每个网格预测B个边界框。这样就利用网格划分了空间,使每个网格单元负责预测自己所包含的目标。

目标检测YOLO算法,先从yolov1开始,目标检测,目标检测,YOLO,人工智能

这里的S x S我们就按照如图所示认为是7 x 7,每个网格预测B个Bbox(边界框) ,以及每个边界框的confidence值,confidence就是置信度。 所以每个边界框对应5个参数:[x,y,w,h,c]。

  • (x,y) 表示边界框中心相对于网格的坐标;
  • w,h 表示边界框相对于整张图像的宽和高(意思是边界框的中心坐标必须在网格内,但其宽和高不受网格限制、可以随意超过网格大小);
  • c即为confidence,其定义为:当预测的边界框内不存在目标时,置信度(Confidence)应该置为0。当预测的边界框内存在目标时,置信度应该置为该预测边界框和真值框的IoU(Intersection over Union,交并比)。

每个网格还会预测C个条件类别概率值,它表示当有目标的中心位置“落入”该网格中时,这一目标属于C个类别的概率分布。

网络结构设计

目标检测YOLO算法,先从yolov1开始,目标检测,目标检测,YOLO,人工智能

 YOLOv1的网络结构很简单,借鉴了GooLeNet设计,共包含24个卷积层,2个全链接层(前20层中用1×1 reduction layers 紧跟 3×3 convolutional layers 取代GooLeNet的 inception modules)。

目标检测YOLO算法,先从yolov1开始,目标检测,目标检测,YOLO,人工智能

  • 输入:448 x 448 x 3,由于网络的最后需要接入两个全连接层,全连接层需要固定尺寸的输入,故需要将输入resize。
  • Conv + FC:主要使用1x1卷积来做channle reduction,然后紧跟3x3卷积。对于卷积层和全连接层,采用Leaky ReLU激活函数:,最后一层采用线性激活函数。
  • 输出:最后一个FC层得到一个1470 x 1的输出,将这个输出reshap一下,得到 7 x 7 x 30 的一个tensor,即最终每个单元格都有一个30维的输出,代表预测结果。

YOLO输入图像的尺寸为448 × 448,经过24个卷积层和2个全连接层,最后在reshape操作,输出的特征图大小为7 × 7 × 30,那这个值是怎么得出来的呢?

实际上输出的是目标检测YOLO算法,先从yolov1开始,目标检测,目标检测,YOLO,人工智能的tensor张量,刚刚也说了要有B个预测框,每个预测框包括了5个信息[x,y,w,h,c],C表示分类预测(通常是20类左右)。

  • SxS为7x7网格
  • B=2,也就是每个格子有2个预测框
  • C=20,PASCAL VOC数据集有20个分类

损失函数

位置误差

主要是计算bbox的和对应的ground truth box的之间的sum-squared error,需要注意的是并不是所有的bbox都参与loss的计算,首先必须是第i个单元格中存在object,并且该单元格中的第j个bbox和ground truth box有最大的IoU值,那么这个bbox才参与loss的计算,其他的不满足条件的bbox不参与。此外,因为误差在小的box上体现的更明显,就是一点点小的位置上的偏差可能对大的box影响不是很大,但是对小的box的影响就比较明显了,所以为了给不同size的box的位置loss赋予不同的‘权重’,需要对w和h开方后才进行计算。

目标检测YOLO算法,先从yolov1开始,目标检测,目标检测,YOLO,人工智能

我们知道,当x较小时,x的一点小的变化都会导致y大的变化,而当x较大的时候,x的一点儿小的变化不会让y的变化太大。这个方法只能减弱这个问题,并不能彻底解决这个问题。

置信度误差

置信度分成了两部分,一部分是包含物体时置信度的损失,一个是不包含物体时置信度的值。其中前一项表示有无人工标记的物体落入网格内,如果有,则为1,否则为0。第二项代表预测框box和真实标记的box之间的IoU。值越大则box越接近真实位置。

分类误差

当作回归误差来计算,使用sum-squared error来计算分类误差,需要注意的是只有包含object的单元格才参与分类loss的计算,即有object中心点落入的单元格才进行分类loss的计算,而这个单元格的ground truth label就是该物体的label。

总的来说就是:

对于有目标的单元格(cell):

  1. 计算单元格的分类误差,即目标类别的预测误差。
  2. 计算单元格中两个边界框(bbox)的置信度误差,即预测的边界框是否包含目标的置信度误差。
  3. 找到与单元格中的ground truth box(真实边界框)具有最大IoU的边界框,并计算其位置误差,即边界框的坐标和尺寸误差。

对于没有目标的单元格:

  1. 仅计算单元格中两个边界框的置信度误差,因为没有目标存在。

这个目标检测过程中的误差计算主要用于训练过程中的损失函数计算,以便通过反向传播来更新模型的参数,使其能够更好地预测目标的位置和类别。

YOLOv1算法的缺点

YOLOv1算法存在一些缺陷,这些缺陷在原文中进行了讨论。

  1. 目标数量限制:YOLOv1每个网格只能预测2个边界框和1个类别。这限制了对于相近目标的检测数量,尤其是在包含大量小物体的场景中(如鸟群)。这可能导致YOLOv1在这些情况下的检测结果不够准确。

  2. 泛化能力有限:由于YOLOv1是通过从数据中学习来进行目标检测的,它的泛化能力可能受到一些限制。特别是在面对具有不寻常长宽比或配置的目标时,模型可能无法很好地适应。这可能导致YOLOv1在这些情况下的检测性能下降。

  3. 损失函数设计:YOLOv1使用的损失函数在一些方面可能不够合理,特别是在处理定位误差和大小物体时。由于YOLOv1将边界框的位置和大小信息与类别预测结合在一起进行训练,误差的影响可能不够平衡,尤其是对于小物体的处理。这可能导致YOLOv1在定位小物体时的性能较差。

这些缺陷是YOLOv1算法的一些局限性,随后的YOLO版本(如YOLOv2、YOLOv3等)对这些问题进行了改进和优化,以提高检测性能和泛化能力。

参考文章

【0】 You Only Look Once: Unified, Real-Time Object Detection

【1】【目标检测】YOLO系列——YOLOv1详解_yolov1网络结构图详解_本初-ben的博客-CSDN博客

【2】 yolov1详解_Fighting_1997的博客-CSDN博客 

【3】【目标检测论文阅读】YOLOv1 - 知乎 (zhihu.com)

【4】 搞懂YOLO v1看这篇就够了_yolov1_Antrn的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-700271.html

到了这里,关于目标检测YOLO算法,先从yolov1开始的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 经典目标检测YOLO系列(一)YOLOV1的复现(1)总体架构

    实现原版的YOLOv1并没有多大的意义,因此,根据 《YOLO目标检测》(ISBN:9787115627094) 一书,在不脱离YOLOv1的大部分核心理念的前提下,重构一款较新的YOLOv1检测器,来对YOLOV1有更加深刻的认识。 书中源码连接:GitHub - yjh0410/RT-ODLab: YOLO Tutorial 对比原始YOLOV1网络,主要改进点如下:

    2024年02月03日
    浏览(36)
  • 目标检测——Yolo系列(YOLOv1/2/v3/4/5/x/6/7/8)

    什么是目标检测? 滑动窗口(Sliding Window) 滑动窗口的效率问题和改进 滑动窗口的效率问题:计算成本很大 改进思路 1:使用启发式算法替换暴力遍历 例如 R-CNN,Fast R-CNN 中使用 Selective Search 产生提议框 ( 区域提议 ) 依赖外部算法,系统实现复杂,难以联合优化性能 改进

    2024年02月09日
    浏览(28)
  • 【目标检测——YOLO系列】YOLOv1 —《You Only Look Once: Unified, Real-Time Object Detection》

    论文地址:1506.02640] You Only Look Once: Unified, Real-Time Object Detection (arxiv.org) 代码地址:pjreddie/darknet: Convolutional Neural Networks (github.com) YOLOv1是一种end to end目标检测算法,由Joseph Redmon等人于2015年提出。它是一种基于单个神经网络的实时目标检测算法。 YOLOv1的中文名称是\\\"你只看一

    2024年02月08日
    浏览(33)
  • 浅析目标检测入门算法:YOLOv1,SSD,YOLOv2,YOLOv3,CenterNet,EfficientDet,YOLOv4

    本文致力于让读者对以下这些模型的创新点和设计思想有一个大体的认识,从而知晓YOLOv1到YOLOv4的发展源流和历史演进,进而对目标检测技术有更为宏观和深入的认知。本文讲解的模型包括:YOLOv1,SSD,YOLOv2,YOLOv3,CenterNet,EfficientDet,YOLOv4。         候选区域         和R-CNN最

    2024年02月07日
    浏览(32)
  • 【1】从零开始学习目标检测:YOLO算法详解

    在过去的十年中,深度学习技术的发展引起了极大的关注,并成为人工智能领域中不可或缺的技术之一。深度学习在计算机视觉领域的应用越来越广泛,其中目标检测是备受关注的领域之一。目标检测是指在图像或视频中检测出目标的位置和边界框,然后对目标进行分类或识

    2023年04月15日
    浏览(31)
  • 计算机视觉的应用14-目标检测经典算法之YOLOv1-YOLOv5的模型架构与改进过程详解,便于记忆

    大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用14-目标检测经典算法之YOLOv1-YOLOv5的模型架构与改进过程详解,便于记忆。YOLO(You Only Look Once)是一种目标检测深度学习模型。想象一下,传统的目标检测方法就像侦探一样,需要仔细观察整个场景,逐个研究每个细

    2024年02月07日
    浏览(43)
  • YOLO系列目标检测算法-YOLOv6

    YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6 - 文章链接 YOLOv7- 文章链接 PP-YOLO- 文章链接 PP-YOLOv2- 文章链接 YOLOR- 文章链接 YOLOS- 文章链

    2023年04月08日
    浏览(36)
  • 【目标检测系列】YOLOV1解读

    从R-CNN到Fast-RCNN,之前的目标检测工作都是分成两阶段,先提供位置信息在进行目标分类,精度很高但无法满足实时检测的要求。 而YoLo将目标检测看作回归问题,输入为一张图片,输出为S*S*(5*B+C)的三维向量。该向量结果既包含位置信息,又包含类别信息。可通过损失函数,

    2024年02月13日
    浏览(30)
  • YOLO学习笔记(2):YOLOV1算法详解

    SAY YOU ONLY LOOK ONCE AGAIN!!! SAY YOU ONLY LOOK ONCE AGAIN!!! SAY YOU ONLY LOOK ONCE AGAIN!!! 本文章主要参考up主同济子豪兄的视频的基础上整理的笔记,建议读者务必观看原视频,受益匪浅 注:在文章中大量使用,所以注解较为全面,可以在阅读文章前只大致浏览,在正文部分不断回顾

    2024年04月22日
    浏览(24)
  • 目标检测YOLO实战应用案例100讲-基于改进YOLOv4算法的自动驾驶场景 目标检测

    目录 前言 国内外目标检测算法研究现状  传统目标检测算法的发展现状 

    2024年02月06日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包