首页 > 其他分享 >(3)YOLOv1训练过程,新手入门

(3)YOLOv1训练过程,新手入门

时间:2024-12-12 10:31:32浏览次数:5  
标签:YOLOv1 训练 text IOU 新手入门 ij truth pred class

大家好,现在我们学习yolo11的训练过程,训练过程涉及到了YOLOv1的核心机制,包括网格划分、边界框预测、损失计算以及参数更新等关键步骤,这些步骤共同作用使得YOLOv1能够学习到从图像中检测目标的能力。

一、YOLOv1的训练过程

YOLOv1的训练过程可以分为以下几个步骤:

  1. 数据准备

    • 使用软件助手标出样本图像中目标的位置和类别信息。

    image-20241212094418898

    • 将目标矩形框的坐标和类别信息作为标签,标签保存的格式如式所示。
      label = [ x 1 , y 1 , x 2 , y 2 , P cat , x 3 , y 3 , x 4 , y 4 , P dog ] \text{label} = \left[\begin{array}{c} x_1, y_1, x_2, y_2, P_{\text{cat}}, x_3, y_3, x_4, y_4, P_{\text{dog}} \end{array} \right] label=[x1​,y1​,x2​,y2​,Pcat​,x3​,y3​,x4​,y4​,Pdog​​]

      其中, ( x 1 , y 1 ) (x_1, y_1) (x1​,y1​) 和 ( x 2 , y 2 ) (x_2, y_2) (x2​,y2​) 是目标矩形框的左上角和右下角坐标, P cat P_{\text{cat}} Pcat​和 P dog P_{\text{dog}} Pdog​是目标为猫和狗的概率。

  2. 图像输入与预处理

    • 将样本图像和样本标签输入到YOLOv1网络模型,并进行归一化处理。

    • 将输入的图片划分成SxS个网格,并对这些网格进行编号。

      网格编号:

    grid = [ 1 2 ⋯ S S + 1 S + 2 ⋯ 2 S ⋮ ⋮ ⋱ ⋮ S 2 − S + 1 S 2 − S + 2 ⋯ S 2 ] \text{grid} = \left[ \begin{array}{cccc} 1 & 2 & \cdots & S \\ S+1 & S+2 & \cdots & 2S \\ \vdots & \vdots & \ddots & \vdots \\ S^2-S+1 & S^2-S+2 & \cdots & S^2 \end{array} \right] grid= ​1S+1⋮S2−S+1​2S+2⋮S2−S+2​⋯⋯⋱⋯​S2S⋮S2​

    ​ 其中,S是网格的行数和列数。

  3. 网格预测

    • 每个网格预测B个边界框和C个类别概率。

    • 每个边界框包含5个参数:(x, y)代表边界框的中心坐标,(h, w)代表边界框的高度和宽度,score代表置信度。

    • 边界框预测:
      bounding box = ( x , y , w , h , score ) \text{bounding box} = (x, y, w, h, \text{score}) bounding box=(x,y,w,h,score)
      置信度计算:
      score = Pr ( Object ) × IOU pred truth \text{score} = \text{Pr}(\text{Object}) \times \text{IOU}_{\text{pred}}^{\text{truth}} score=Pr(Object)×IOUpredtruth​
      分类概率计算:
      P class = Pr ( class ∣ Object ) P_{\text{class}} = \text{Pr}(\text{class} | \text{Object}) Pclass​=Pr(class∣Object)
      其中, P class P_{\text{class}} Pclass​是目标属于某一类别的概率。

  4. 损失计算

    • 计算YOLOv1模型的预测值与标签真实值之间的误差,该误差包括分类误差 E c l a s s E_{class} Eclass​、置信度误差 E I O U E_{IOU} EIOU​和坐标误差 E c o o r d E_{coord} Ecoord​。
      E all = E class + E IOU + E coord E_{\text{all}} = E_{\text{class}} + E_{\text{IOU}} + E_{\text{coord}} Eall​=Eclass​+EIOU​+Ecoord​
    • 分类误差 E c l a s s E_{class} Eclass​计算预测类别概率与实际类别概率之间的差异。
      E class = ∑ i = 1 S 2 ∑ j = 1 B I i j obj ∑ c = 1 C ( P c pred − P c truth ) 2 E_{\text{class}} = \sum_{i=1}^{S^2} \sum_{j=1}^{B} \mathbb{I}_{ij}^{\text{obj}} \sum_{c=1}^{C} (P_{c}^{\text{pred}} - P_{c}^{\text{truth}})^2 Eclass​=i=1∑S2​j=1∑B​Iijobj​c=1∑C​(Pcpred​−Pctruth​)2
      其中, I i j obj \mathbb{I}_{ij}^{\text{obj}} Iijobj​ 是指示函数,当网格i和边界框j包含目标时为1,否则为0。
    • 置信度误差 E IOU E_{\text{IOU}} EIOU​计算预测的置信度与实际置信度之间的差异。
      E IOU = ∑ i = 1 S 2 ∑ j = 1 B I i j obj ( score i j pred − IOU i j truth ) 2 E_{\text{IOU}} = \sum_{i=1}^{S^2} \sum_{j=1}^{B} \mathbb{I}_{ij}^{\text{obj}} (\text{score}_{ij}^{\text{pred}} - \text{IOU}_{ij}^{\text{truth}})^2 EIOU​=i=1∑S2​j=1∑B​Iijobj​(scoreijpred​−IOUijtruth​)2
    • 坐标误差 E c o o r d Ecoord Ecoord计算预测的边界框坐标与实际边界框坐标之间的差异。
      E coord = ∑ i = 1 S 2 ∑ j = 1 B I i j obj ( ( x i j pred − x i j truth ) 2 + ( y i j pred − y i j truth ) 2 + ( w i j pred − w i j truth ) 2 + ( h i j pred − h i j truth ) 2 ) E_{\text{coord}} = \sum_{i=1}^{S^2} \sum_{j=1}^{B} \mathbb{I}_{ij}^{\text{obj}} \left( (x_{ij}^{\text{pred}} - x_{ij}^{\text{truth}})^2 + (y_{ij}^{\text{pred}} - y_{ij}^{\text{truth}})^2 + (w_{ij}^{\text{pred}} - w_{ij}^{\text{truth}})^2 + (h_{ij}^{\text{pred}} - h_{ij}^{\text{truth}})^2 \right) Ecoord​=i=1∑S2​j=1∑B​Iijobj​((xijpred​−xijtruth​)2+(yijpred​−yijtruth​)2+(wijpred​−wijtruth​)2+(hijpred​−hijtruth​)2)
      ​ 其中, x i j pred x_{ij}^{\text{pred}} xijpred​、 y i j pred y_{ij}^{\text{pred}} yijpred​、 w i j pred w_{ij}^{\text{pred}} wijpred​、 h i j pred h_{ij}^{\text{pred}} hijpred​是预测的边界框坐标, x i j truth x_{ij}^{\text{truth}} xijtruth​、 y i j truth y_{ij}^{\text{truth}} yijtruth​、 w i j truth w_{ij}^{\text{truth}} wijtruth​、 h i j truth h_{ij}^{\text{truth}} hijtruth​是实际的边界框坐标。
  5. 误差反向传播

    • 通过反向传播和梯度下降法对模型参数进行更新,使得模型的损失函数收敛到最小值,即总误差 E a l l E_{all} Eall​最小。
  6. 模型训练完成

    • 重复上述步骤,直到模型收敛,即损失函数达到最小值,此时YOLOv1模型训练完成。

二、yolo入门教程

视频教程点击:《吐血录制,yolo11猫狗实时检测实战项目,从零开始写yolov11代码》,视频全程25分钟,或B站搜“AI莫大猫”。

image-20241212090014863
​ 从零训练自己的数据集。

标签:YOLOv1,训练,text,IOU,新手入门,ij,truth,pred,class
From: https://blog.csdn.net/qq191513/article/details/144419003

相关文章

  • 【2024年华为秋招-12月11日-第二题(200分)- 服务器训练任务调度】(题目+思路+Java&C++&Py
    题目内容团队申请了一组服务器,用于机器学习训练,为了充分利用资源,需要你来完成任务调度算法的实现。一台服务器同一时间只能执行一个训练任务,每个训练任务有训练时间和优先级。当空闲服务器不足时,优先执行高优先级的训练任务;如果多个训练任务的优先级相同,优先执行训练时......
  • 基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - LoRA配置如何写
    基于Qwen2-VL模型针对LaTeXOCR任务进行微调训练-LoRA配置如何写flyfish基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_LoRA配置如何写基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_单图推理基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_原模型_单图推......
  • 转载:【AI系统】谷歌 TPUv2 训练芯片
    在2017年,谷歌更新了他们的TPU序列。谷歌将这一代TPU称之为“用于训练神经网络的特定领域超级计算机”,那么显而易见,相比于专注于推理场景的TPUv1,TPUv2将自己的设计倾向放到了训练相关的场景。如果回顾历史,在2017年前后,深度学习跨时代的工作如雨后春笋般涌现,也就是那年......
  • 攀山小队训练赛1208
    前言:一个真正的赌徒……考试中:T1看到题目的时候就想到了在Acwing上的一道类似的题目,于是立刻想到了贪心(虽然正解是DP),先跳过了。T2感觉是可做题目,但是写完以后没有大样例,所以也不知到对不对。T3是升级版本,但是我觉得是个贪心:先求出左右两个最长不降自学列每个点的位......
  • 在STM32上运行KWS之三 模型搭建与训练测试
    此篇文章在2023年2月6日被记录搭建一个怎样的模型KWS模型结构属于比较简单的模型结构,但是为了少走弯路,我计划使用现成的结构,我从这个演示视频参考而来:点击我跳转,这个KWS项目运行在AT32F403上,其网络模型结构为一个64个特征的普通卷积层,然后重复四次的DS-CNN卷积,在每次卷积后都......
  • 以Qwen2-VL为例说明模型训练过程
    以Qwen2-VL为例说明模型训练过程flyfish日志{"best_metric":null,"best_model_checkpoint":null,"epoch":0.8001066808907854,"eval_steps":500,"global_step":1500,"is_hyper_param_search":fals......
  • 如何使用aws的bedrock训练适合自己的模型
    使用Amazon Bedrock训练适合自己的模型是一个涉及多个步骤的过程,包括数据准备、模型选择、训练和部署。以下是九河云总结的详细的步骤指南,帮助您在AWSBedrock上训练和部署自定义模型。###1.**准备工作**在开始训练模型之前,您需要完成一些准备工作。####1.1创建AW......
  • Meta AI 推出革命性数据加载工具 SPDL:让 AI 训练提速三倍!
    在当今的人工智能领域,训练模型不仅仅是设计更好的架构,还需要高管理数据。现代AI模型需要大量数据,并且这些数据必须快速送达GPU和其他加速器。然而,传统的数据加载系统常常无法满足这一需求,导致GPU闲置、训练时间延长以及成本增加。尤其是在需要扩展或处理多种数据类型......
  • Unsloth更快训练大模型并导出GGUF - Windows
    环境搭建系统环境需要Nvidia显卡,至少8G显存,且专用显存与共享显存之和大于20G建议将非安装版的环境文件都放到非系统盘,方便重装或移植以Windows11为例,非安装环境文件都放在E盘下设置自定义Path文件夹创建E:\mypath文件夹,将其添加进用户环境变量Path中,之后会用CMake下载......
  • 代码随想录算法训练营第四十三天|LeetCode300.最长递增子序列、LeetCode674.最长连续
    前言打卡代码随想录算法训练营第49期第四十三天 (๑ˉ∀ˉ๑)首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。LeetCode300......