当前位置: 首页 > news >正文

YOLO算法

YOLO介绍 

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

  • YOLO的网络结构受到了GoogLeNet的启发,包含24个卷积层和2个全连接层。在YOLO v1中,作者使用了1×1的降维层紧跟着3×3的卷积层来代替GoogLeNet的inception模块。
  • YOLO将输入图像分割成S×S的网格,每个网格单元负责检测中心点落在该单元内的目标。这种策略简化了目标的定位过程,并允许模型快速地对多个目标进行定位和分类。
  • YOLO的设计强调实时性能,通过一次前向传播就可以完成检测任务,这使得它非常适合用于视频流分析或其他需要快速响应的应用场合。

Yolo算法采用一个单独的CNN模型实现end-to-end的目标检测,核心思想就是利用整张图作为网络的输入,直接在输出层回归 bounding box(边界框) 的位置及其所属的类别:

首先将输入图片resize到448x448,然后送入CNN网络,最后处理网络预测结果得到检测的目标。相比R-CNN算法,其是一个统一的框架,其速度更快。

Yolo算法思想 :

Yolo模型采用预定义预测区域的方法来完成目标检测,具体而言是将原始图像划分为 7x7=49 个网格(grid),每个网格允许预测出2个边框(bounding box,包含某个对象的矩形框),总共 49x2=98 个bounding box。我们将其理解为98个预测区,很粗略的覆盖了图片的整个区域,就在这98个预测区中进行目标检测。

 Yolo的网络结构 

YOLO的结构非常简单,就是单纯的卷积、池化最后加了两层全连接,从网络结构上看,与前面介绍的CNN分类网络没有本质的区别,最大的差异是输出层用线性函数做激活函数,因为需要预测bounding box的位置(数值型),而不仅仅是对象的概率。YOLO的整个结构就是输入图片经过神经网络的变换得到一个输出的张量 

  • 网络的输入是原始图像,唯一的要求是缩放到448x448的大小。主要是因为Yolo的网络中,卷积层最后接了两个全连接层,全连接层是要求固定大小的向量作为输入,所以Yolo的输入图像的大小固定为448x448。
  • 网络的输出就是一个7x7x30 的张量。

根据YOLO的设计,输入图像被划分为 7x7 的网格(grid),输出张量中的 7x7 就对应着输入图像的 7x7 网格。

Yolo模型的训练 

 在进行模型训练时,需要构造训练样本和设计损失函数,才能利用梯度下降对网络进行训练。

将一幅图片输入到yolo模型中,对应的输出是一个7x7x30张量,构建标签label时对于原图像中的每一个网格grid都需要构建一个30维的向量。

  • 20个对象分类的概率

对于输入图像中的每个对象,先找到其中心点。上图中自行车,其中心点在黄色圆点位置,中心点落在黄色网格内,所以这个黄色网格对应的30维向量中,自行车的概率是1,其它对象的概率是0。所有其它48个网格的30维向量中,该自行车的概率都是0。这就是"中心点所在的网格对预测该对象负责"。

  • 2个bounding box的位置

训练样本的bbox位置应该填写对象真实的位置bbox,填哪一个需要根据网络输出的bbox与对象实际bbox的IOU来选择。

Yolo先使用ImageNet数据集对前20层卷积网络进行预训练,然后使用完整的网络,在PASCAL VOC数据集上进行对象识别和定位的训练。

Yolo的最后一层采用线性激活函数,其它层都是Leaky ReLU。训练中采用了drop out和数据增强来防止过拟合。

 yoloV4算法

YOLOv4是YOLO系列算法的第四代版本,它在YOLOv3的基础上进行了一系列改进和优化,以实现更高的检测精度和更快的处理速度,为了提高模型的泛化能力和防止过拟合,YOLOv4还引入了Dropblock正则化方法。这种方法在训练过程中逐渐增加遮挡的比例,迫使网络学习更加鲁棒的特征表示。

YOLOv4的网络结构由四个关键部分组成:Input、Backbone、Neck和Head

  1. Input部分:这是网络的输入端,负责接收待处理的图像数据。
  2. Backbone部分 (CSPDarknet53):这部分是整个网络结构的主干,主要负责对输入图像进行特征提取。CSPDarknet53是一种残差网络,它通过CSP(Cross Stage Partial)模块优化了梯度流和计算量,相较于DarkNet53,CSPDarknet53在保持准确率的同时减少了计算量。每个CSP模块都会使输出的特征图大小减半而通道数增倍,有利于提取更深层的特征。
  3. Neck部分 (SPP和PANet):Neck部分紧随Backbone,用于进一步加强特征提取。SPP(空间金字塔池化)可以融合不同尺寸的特征,增大模型的感受野,而PANet(路径聚合网络)则是FPN(特征金字塔网络)的加强版,它融合了自底向上和自顶向下的特征信息,反复提取特征,以增强模型的表征能力。
  4. Head部分 (YOLOv3):最后是Head部分,也就是预测头部,负责进行最终的边界框预测和类别概率输出。YOLOv4采用了YOLOv3作为其Head,利用前面提取的特征来执行实际的目标检测任务。

yoloV4网络的输入依然要求是32的倍数,但大小不是固定的,在yoloV4中默认是608×608,在实际项目中也可以根据需要修改,比如320×320,一般是32的倍数。 输入图像的大小和最后的三个特征图的大小也是对应的,比如416×416的输入,最后的三个特征图大小是13×13,26×26,52×52, 如果是608×608,最后的三个特征图大小则是19×19,38×38,76×76。

yoloV4在输入端除了采用常规的反转、裁切、旋转等方法外,主要采用了CutMix和马赛克数据增强,马赛克增强方式将4张训练图像按一定比例组合成1张。Mosaic增强方式使得模型能够学习如何识别尺寸小的物体,还能够帮助模型在图像的不同部分定位不同类型的目标。

模型训练 

yoloV4中的模型训练与预测和YoloV3几乎是一样的,包括正负样本的设置方式,损失函数的构成及训练过程。唯一不同是在计算回归值得损失时,V4中采用了IOU的损失。IOU损失非常简单,直接使用检测框与真实框的交并比并取对数作为回归的损失函数 

GIOU损失是为了缓解IOU损失的问题提出来的,这种方式存在的问题是当检测框在真实框内部或正式框在检测框内部时,无法衡量差集,损失函数退化为1-IOU。

  1. 系统环境配置:确保您的计算机系统满足训练YOLOv4的要求。常见的配置包括Windows或Linux操作系统,以及安装有CUDA和cuDNN的NVIDIA显卡。
  2. 获取YOLOv4代码:从GitHub上克隆YOLOv4的官方代码仓库,该仓库提供了训练YOLOv4所需的所有脚本和配置文件。
  3. 数据集准备:准备用于训练的目标检测数据集。如果是视频数据,需要先将视频帧提取为图片格式。此外,还需要对数据集进行标注,生成包含物体类别和位置信息的注释文件。
  4. 修改配置文件:根据您的数据集和训练需求,修改YOLOv4的配置文件。这些配置文件中定义了模型参数、训练参数以及数据加载方式等重要信息。
  5. 模型训练:使用准备好的数据集和配置文件开始训练YOLOv4模型。训练过程中,模型会学习识别和定位图像中的物体。
  6. 模型评估:在训练完成后,使用验证集对模型的性能进行评估,检查模型的准确率和召回率等指标。
  7. 模型部署:将训练好的模型部署到实际应用中,如监控系统、自动驾驶车辆或其他需要实时目标检测的场合。
  8. 优化调整:根据模型在实际应用场景中的表现,进一步调整模型参数或数据集,以提高模型的准确性和鲁棒性。

 我们还需要参考YOLOv4的官方文档、相关教程以及社区提供的经验分享。

相关文章:

YOLO算法

YOLO介绍 YOLO,全称为You Only Look Once: Unified, Real-Time Object Detection,是一种实时目标检测算法。目标检测是计算机视觉领域的一个重要任务,它不仅需要识别图像中的物体类别,还需要确定它们的位置。与分类任务只关注对…...

【Android】更改手机主题导致app数据丢失问题

情景:在使用app过程中更改系统主题(比如从浅色主题改为深色主题),这时activity销毁重建了(即走了onPause、onStop、onSaveInstanceState、onDestroy、onCreate、onRestoreInstanceState、onStart、onResume的生命周期&…...

Dell R730 2U服务器实践3:安装英伟达上代专业AI训练Nvidia P4计算卡

Dell R730是一款非常流行的服务器,2U的机箱可以放入两张显卡,这次先用一张英伟达上代专业级AI训练卡:P4卡做实验,本文记录安装过程。 简洁步骤: 打开机箱将P4显卡插在4号槽位关闭机箱安装驱动 详细步骤: 对…...

Nacos环境搭建 -- 服务注册与发现

为什么需要服务治理 在未引入服务治理模块之前,服务之间的通信是服务间直接发起并调用来实现的。只要知道了对应服务的服务名称、IP地址、端口号,就能够发起服务通信。比如A服务的IP地址为192.168.1.100:9000,B服务直接向该IP地址发起请求就…...

Linux了解

简介 Linux是一种自由和开放源代码的类UNIX操作系统,由芬兰的Linus Torvalds于1991年首次发布。Linux最初是作为支持英特尔x86架构的个人电脑的一个自由操作系统,现在已经被移植到更多的计算机硬件平台,如手机、平板电脑、路由器、视频游戏控…...

Keil新版本安装编译器ARMCompiler 5.06

0x00 缘起 我手头的项目在使用最新版本的编译器后,烧录后无法正常运行,故安装5.06,测试后发现程序运行正常,以下为编译器的安装步骤。 0x01 解决方法 1. 下载编译器安装文件,可以去ARM官网下载,也可以使用我…...

【基础训练 || Test-1】

总言 主要内容:一些习题。       文章目录 总言一、选择1、for循环、操作符(逗号表达式)2、格式化输出(转换说明符)3、for循环、操作符(逗号表达式、赋值和判等)4、if语句、操作符&#xff…...

Python读取hbase数据库

1. hbase连接 首先用hbase shell 命令来进入到hbase数据库,然后用list命令来查看hbase下所有表,以其中表“DB_level0”为例,可以看到库名“baotouyiqi”是拼接的,python代码访问时先连接: def hbase_connection(hbase…...

LeetCode41题:缺失的第一个正数(python3)

这道题写的时候完全没有思路,看了很久的题解,才总结出来。 class Solution:def firstMissingPositive(self, nums: List[int]) -> int:nums_set set(nums)n len(nums)for i in range(1, n 1):if i not in nums_set:return ireturn n 1...

C# DataTable 对象操作

实现DataTable按字段进行分类、按列数据汇总、序列化对象数组、所有字段转小写、动态对象数组、数据分页 分类DataTableClassfiy实体&#xff1a; /// <summary>/// 单个分类表/// </summary>public class DataTableClassfiy{/// <summary>/// 分类名称/// &…...

web运行时安全

1.输入验证 对传递的数据的格式、长度、类型&#xff08;前端和后端都要&#xff09;进行校验。 对黑白名单校验&#xff1a;比如前端传递了一个用户名&#xff0c;可以搜索该用户是否在白名单或者黑名单列表。 针对黑名单校验&#xff0c;比如&#xff1a; // 手机号验证…...

FPGA 与 数字电路的关系 - 这篇文章 将 持续 更新 :)

先说几个逻辑&#xff1a;&#xff08;强调一下在这篇文章 输入路数 只有 1个或2个&#xff0c;输出只有1个&#xff0c;N个输入M个输出以后再说&#xff09; 看下面的几个图&#xff1a; 图一&#xff08; 忘了 这是 啥门&#xff0c;不是门吧 &#xff1a;&#xff09;也就…...

18 SpringMVC实战

18 SpringMVC实战 1. 课程介绍2. Spring Task定时任务1. 课程介绍 2. Spring Task定时任务 package com.imooc.reader.task...

Rocky Linux 运维工具 dnf

一、dnf的简介 dnf​是用于在基于RPM包管理系统的包管理工具。用户可以通过 ​yum​来搜索、安装、更新和删除软件包&#xff0c;自动处理依赖关系&#xff0c;它是yum的继任者&#xff0c;旨在提供更快速、更现代化的软件包管理体验。。 二、dnf 的参数说明 序号参数描述1in…...

浅谈 Linux fork 函数

文章目录 前言fork 基本概念代码演示示例1&#xff1a;体会 fork 函数返回值的作用示例2&#xff1a;创建多进程&#xff0c;加深对 fork 函数的理解 前言 本篇介绍 fork 函数。 fork 基本概念 pid_t fork(void) fork 的英文含义是"分叉"&#xff0c;在这里就是 …...

golang 装饰器模式详解

前言 我一直以来对golang的装饰器模式情有独衷&#xff0c;不是因为它酷&#xff0c;而是它带给我了太多的好处。首先我不想说太多的概念&#xff0c;熟记这些概念对我的编程来说一点用处没有。我只知道它给我带来了好处&#xff0c;下面谈谈我的理解。 这种模式可以很轻松地…...

刷题笔记day27-回溯算法2

216. 组合总和 III 这个思路还是&#xff0c;三部曲&#xff1a; 终止条件处理单层节点回溯节点 题中说的是&#xff0c;1到9的数&#xff0c;不能有重复。 k个数&#xff0c;和为n。 那么只要 len(path) k 的时候&#xff0c;判断 n 为0&#xff0c;就可以入切片了。 fun…...

前端架构: 脚手架命令行交互核心实现之inquirer和readline的应用教程

命令行交互核心实现 核心目标&#xff1a;实现命令行行交互&#xff0c;如List命令行的交互呢比命令行的渲难度要更大&#xff0c;因为它涉及的技术点会会更多它涉及以下技术点 键盘输入的一个监听 (这里通过 readline来实现)计算命令行窗口的尺寸清屏光标的移动输出流的静默 …...

【C++初阶】内存管理

目录 一.C语言中的动态内存管理方式 二.C中的内存管理方式 1.new/delete操作内置类型 2.new和delete操作自定义类型 3.浅识抛异常 &#xff08;内存申请失败&#xff09; 4.new和delete操作自定义类型 三.new和delete的实现原理 1.内置类型 2.自定义类型 一.C语…...

《PyTorch深度学习实践》第十二讲循环神经网络基础

一、RNN简介 1、RNN网络最大的特点就是可以处理序列特征&#xff0c;就是我们的一组动态特征。比如&#xff0c;我们可以通过将前三天每天的特征&#xff08;是否下雨&#xff0c;是否有太阳等&#xff09;输入到网络&#xff0c;从而来预测第四天的天气。 我们可以看RN…...

一键构建25000+ASMR音频库:asmr-downloader高效下载与管理指南

一键构建25000ASMR音频库&#xff1a;asmr-downloader高效下载与管理指南 【免费下载链接】asmr-downloader A tool for download asmr media from asmr.one(Thanks for the asmr.one) 项目地址: https://gitcode.com/gh_mirrors/as/asmr-downloader 在数字化的放松体验…...

Pixel Language Portal 快速配置Ubuntu深度学习环境:CUDA与cuDNN安装指南

Pixel Language Portal 快速配置Ubuntu深度学习环境&#xff1a;CUDA与cuDNN安装指南 1. 前言&#xff1a;为什么需要配置GPU环境 如果你正在使用Pixel Language Portal这类大模型&#xff0c;配置GPU环境是提升性能的关键一步。相比CPU&#xff0c;GPU能提供数十倍的计算加速…...

小白友好:Qwen3-0.6B-FP8部署全流程,Chainlit让交互可视化

小白友好&#xff1a;Qwen3-0.6B-FP8部署全流程&#xff0c;Chainlit让交互可视化 1. 认识Qwen3-0.6B-FP8模型 Qwen3-0.6B-FP8是阿里巴巴通义千问系列中的轻量级语言模型&#xff0c;特别适合在资源有限的设备上快速部署和运行。这个版本采用了FP8&#xff08;8位浮点数&…...

PP-DocLayoutV3企业应用:政务公文智能预审系统中的标题层级+页眉页脚+印章识别

PP-DocLayoutV3企业应用&#xff1a;政务公文智能预审系统中的标题层级页眉页脚印章识别 1. 政务公文处理的智能化升级需求 政务公文处理一直是个技术活。传统的公文审核需要人工逐页检查格式规范&#xff0c;比如标题层级是否正确、页眉页脚是否完整、印章位置是否合规。这个…...

【CTF】【二进制分析】深入解析JPG文件结构:从段标识到霍夫曼编码

1. JPG文件结构基础&#xff1a;二进制视角下的图片解剖 第一次用WinHex打开JPG文件时&#xff0c;满屏的十六进制代码可能会让你头皮发麻。但别担心&#xff0c;这些看似杂乱的数据其实遵循着严格的规范。就像拆解乐高积木&#xff0c;只要找到关键连接点&#xff0c;整个结构…...

深入解析SyncE:以太网频率同步的关键技术与应用

1. SyncE技术初探&#xff1a;以太网频率同步的基石 想象一下城市交通信号灯系统&#xff0c;如果每个路口的红绿灯各自为政、节奏混乱&#xff0c;结果必然是交通瘫痪。SyncE&#xff08;同步以太网&#xff09;技术解决的正是类似问题——它让以太网设备像精准协调的交通信号…...

IndexTTS2 V23情感语音合成保姆级教程:一键启动WebUI界面

IndexTTS2 V23情感语音合成保姆级教程&#xff1a;一键启动WebUI界面 1. 从零开始&#xff1a;为什么你需要这个情感语音工具 想象一下&#xff0c;你正在为一个有声书项目寻找配音&#xff0c;或者想为你的视频内容配上更生动、更有感染力的旁白。传统的语音合成工具听起来总…...

从医学影像数据到三维可视化:MRIcroGL如何改变你的研究流程

从医学影像数据到三维可视化&#xff1a;MRIcroGL如何改变你的研究流程 【免费下载链接】MRIcroGL v1.2 GLSL volume rendering. Able to view NIfTI, DICOM, MGH, MHD, NRRD, AFNI format images. 项目地址: https://gitcode.com/gh_mirrors/mr/MRIcroGL 你是否曾经面对…...

CHORD-X代码生成能力展示:根据研报结论自动输出数据分析脚本

CHORD-X代码生成能力展示&#xff1a;根据研报结论自动输出数据分析脚本 最近在试用一个挺有意思的模型&#xff0c;叫CHORD-X。大家可能知道它在文本生成、对话方面挺强的&#xff0c;但我发现它还有个隐藏技能&#xff0c;或者说一个特别实用的能力延伸——它能看懂你写的分…...

RexUniNLU在电商场景实战:自动分析用户评论,提取产品属性与情感

RexUniNLU在电商场景实战&#xff1a;自动分析用户评论&#xff0c;提取产品属性与情感 1. 电商评论分析的痛点与解决方案 电商平台上每天产生海量用户评论&#xff0c;这些非结构化文本数据蕴含着宝贵的用户反馈。传统人工分析方式效率低下&#xff0c;而常规NLP方法又面临以…...