YOLOv5目标检测学习(4):YOLOV5源码的文件结构解析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
    • ①py、cpp、java后缀的文件
    • ②md、txt、yml后缀的文件
    • ③yaml后缀的文件
  • 一、.github文件夹
    • 1.1 workflows文件夹:该文件夹通常包含GitHub Actions 的工作流程配置文件。
    • 1.2 ISSUE_TEMPLATE文件夹:该文件用于定义GitHub 仓库的 Issue 模板,可以规范化用户提交的 Issue 内容,提高 Issue 的质量和可读性。
  • 二、classify文件夹
  • 三、data文件夹
    • 3.1 hyps文件:模型训练时存放yaml格式的超参数配置文件
      • ①. hyps.scratch-high.yaml #数据增强高,适用于大型型号,即v3、v3-spp、v5l、v5x. hyps.scratch-low.yaml #数据增强低,适用于较小型号,即v5n、v5s. hyps.scratch-med.yaml #数据增强中,适用于中型型号。即v5m
    • 3.2. images文件:存放着官方给的两张测试图片
    • 3.3 . scripts #存放数据集和权重下载shell脚本
      • 这些数据集的yaml文件有什么用?
  • 四、models文件夹:神经网络构建的配置文件和一些函数
    • 4.1 hub文件夹
    • ①anchors.yaml # cOCo数据的默认锚点
    • ②yolov5m6.yaml #yolov5的版本6的神经网络配置
    • 4.2 segment文件夹
    • 4.3 同级的几个py文件
  • 五、runs文件夹:运行后输出一个模型的相关结果
  • 六、utils文件夹
  • 七、其他一级目录的文件
  • 八、总结一下


前言

先看一下

在这里插入图片描述
这里我想先介绍一些关于yolo源码中不同.后缀文件的区别:

①py、cpp、java后缀的文件

.py、.cpp 和 .java 是常见的文件后缀名,分别代表Python、C++ 和 Java 编程语言的源代码文件。

.py 文件:是Python编程语言的源代码文件后缀名。Python源代码文件通常以 .py 结尾,可以使用Python解释器来执行这些文件中的代码。

.cpp 文件:是C++编程语言的源代码文件后缀名。C++源代码文件通常以 .cpp 结尾,可以使用C++编译器将这些文件编译成可执行程序。

.java 文件:是Java编程语言的源代码文件后缀名。Java源代码文件通常以 .java 结尾,可以使用Java编译器将这些文件编译成字节码文件,然后在Java虚拟机上运行。

②md、txt、yml后缀的文件

.md、.txt 和 .yml 是常见的文件后缀名,分别代表Markdown、文本文件和YAML文件。这些文件后缀名通常用于标识不同类型的文本文件,让计算机系统和应用程序能够识别并正确处理这些文件。

.md 文件:是Markdown文件的后缀名。Markdown是一种轻量级标记语言,用于简单而直观地排版文本,常用于编写文档、博客文章、README 文件等。Markdown文件通常以 .md 结尾,可以使用各种Markdown编辑器或在线编辑器来编辑和预览这些文件。

.txt 文件:是文本文件的后缀名。文本文件是一种纯文本格式的文件,通常包含人类可读的文本内容,不包含格式化样式或特殊的编码。文本文件可以使用任何文本编辑器打开和编辑,是最简单的文件格式之一。

.yml 文件:是YAML文件的后缀名。YAML是一种人类可读的数据序列化格式,常用于配置文件、数据传输等场景。YAML文件通常以 .yml 或 .yaml 结尾,可以使用各种编程语言的YAML解析库来读取和处理这些文件。

③yaml后缀的文件

.yaml 文件是一种常见的文件格式后缀名,代表 YAML(YAML Ain’t Markup Language)文件。YAML是一种人类可读的数据序列化格式,旨在成为一种简洁、直观的数据表示方式,适用于配置文件、数据传输、文档等多种应用场景。

YAML 文件通常以 .yaml 或 .yml 结尾,使用一种类似于缩进的方式来表示数据结构,包括标量值、列表、字典等。YAML 文件常用于配置文件、数据传输、API 接口定义等场景,被广泛应用于软件开发和系统管理中。许多编程语言都提供了对 YAML 文件的解析和生成库,方便开发人员读取和处理 YAML 格式的数据。

一、.github文件夹

在一个GitHub仓库中,.github文件夹通常用于存放与GitHub仓库管理和GitHub Actions 相关的配置文件和设置。
在这里插入图片描述
具体来说,.github文件夹中可能包含以下内容:

1.1 workflows文件夹:该文件夹通常包含GitHub Actions 的工作流程配置文件。

1.2 ISSUE_TEMPLATE文件夹:该文件用于定义GitHub 仓库的 Issue 模板,可以规范化用户提交的 Issue 内容,提高 Issue 的质量和可读性。

总的来说,.github文件夹中的内容主要用于规范化GitHub 仓库的管理流程,提高团队协作效率,以及利用GitHub Actions 实现自动化构建和部署。这些配置文件和设置有助于提升项目的质量和可维护性。

所以这个文件夹一般来说不重要,可以不看。

二、classify文件夹

三、data文件夹

在这里插入图片描述
data文件夹主要是存放一些超参数的配置文件(如.yaml文件),是用来配置训练集和测试集还有验证集的路径的,其中还包括目标检测的种类数和种类的名称;还有一些官方提供测试的图片。

YOLOv5有大约30个超参数用于各种训练设置。更好的初始猜测会产生更好的最终结果,因此在演化之前正确初始化这些值很重要。
如果是训练自己的数据集的话,那么就需要修改其中的yaml文件。不过要注意,自己的数据集不建议放在这个路径下面,建议把数据集放到YOLOv5项目的同级目录下面。

详解:

3.1 hyps文件:模型训练时存放yaml格式的超参数配置文件

①. hyps.scratch-high.yaml #数据增强高,适用于大型型号,即v3、v3-spp、v5l、v5x. hyps.scratch-low.yaml #数据增强低,适用于较小型号,即v5n、v5s. hyps.scratch-med.yaml #数据增强中,适用于中型型号。即v5m

比如med文件:
在这里插入图片描述
lr0:初始学习率,控制模型参数的更新速度。在这个示例中,初始学习率为0.01。
lrf:OneCycleLR学习率的最终值,通常是初始学习率乘以一个系数。在这里,最终学习率为初始学习率的10倍。
momentum:SGD动量或Adam优化器的beta1参数,用于加速优化过程。
weight_decay:优化器的权重衰减参数,用于控制模型的复杂度。
warmup_epochs:预热训练的轮数,用于在训练初期逐渐增加学习率。
box、cls、obj:损失函数中不同部分的权重,用于平衡不同损失项的重要性。
iou_t:IoU训练阈值,用于目标检测中的真实框和预测框匹配。
mosaic、mixup、flipud等:数据增强技术的概率,用于增加训练数据的多样性。

这些超参数是干嘛的呢?

这些超参数通常用于训练深度学习模型时进行调优和优化,以影响模型的训练过程和性能。以下是这些超参数在训练过程中的作用和含义:
学习率(learning rate):控制模型参数更新的速度,过大的学习率可能导致模型不稳定,而过小的学习率可能导致训练过慢或陷入局部最优解
动量(momentum):对于优化算法(如SGD、Adam)来说,动量可以帮助加速收敛过程,避免陷入局部最优解。
权重衰减(weight decay):用于控制模型的复杂度,防止过拟合。通过惩罚较大的权重值,可以使模型更加简单且泛化能力更强。
损失函数中不同部分的权重:在多任务学习或复杂损失函数中,不同部分的权重可以调整损失函数中各项的重要性,以平衡不同损失项的影响。
数据增强技术的概率:数据增强可以增加训练数据的多样性,提高模型的泛化能力。通过调整数据增强的概率,可以控制不同的数据增强技术在训练中的应用程度。
预热训练轮数(warmup epochs):在训练初期逐渐增加学习率,有助于稳定训练过程,避免模型在初始阶段出现不稳定的情况。

3.2. images文件:存放着官方给的两张测试图片

在这里插入图片描述
在这里插入图片描述

公交车和齐达内

3.3 . scripts #存放数据集和权重下载shell脚本

在这里插入图片描述
①. Argoverse.yaml #Argoverse数据集的配置文件
②. coco.yaml # cOCO数据集配置文件
③. coco128.yaml# cOCo128数据集配置文件
④GlobalWheat2020.yaml 数据集
⑤imageNet.yaml 数据集
⑥object365.yaml
⑦SKU-110K
⑧VisDrone.yaml
⑨VOC.yaml
⑩Xview.yaml

这些基本就是一些数据集的配置文件,下面介绍一下这些数据集:

Argoverse:Argoverse数据集是专为自动驾驶领域设计的数据集,包含了大规模的自动驾驶场景数据,如高清地图、传感器数据、车辆轨迹等。这些数据可用于自动驾驶系统的训练、测试和评估。

COCO:COCO数据集是一个用于目标检测、图像分割和关键点检测的大规模数据集,包含了超过33万张图像和80个不同类别的物体实例标注。

COCO128:COCO128是COCO数据集的一个子集,包含了128个类别的物体实例标注,适用于小规模目标检测和分类任务。

GlobalWheat2020:Global Wheat Detection 2020数据集是专为小麦检测任务设计的数据集,包含了各种小麦植株的图像和标注信息,用于推动农业领域的图像识别技术。

ImageNet:ImageNet是一个用于图像分类任务的大规模数据集,包含了超过1400万张图像和1000个类别,是深度学习领域中常用的基准数据集之一。

Object365:Object365数据集包含365个类别的目标检测数据,用于更广泛的目标检测任务和多类别物体识别。

SKU-110K:SKU-110K数据集是一个用于商品识别和检测的数据集,包含了11万个SKU(库存单位)的商品图像和标注信息。

VisDrone:VisDrone数据集是专为无人机视觉任务设计的数据集,包含了各种场景下的无人机图像和标注信息,用于目标检测、跟踪和行为分析。

VOC:VOC数据集是一个常用的目标检测和图像分割数据集,包含了20个类别的物体标注信息,用于评估目标检测和分割算法的性能。

xView:xView数据集是一个用于灾害响应和地理信息分析的数据集,包含了各种自然灾害场景的高分辨率图像和标注信息,用于灾害监测和应急响应。

这些数据集的yaml文件有什么用?

这些数据集的 YAML 文件通常用于存储数据集的配置信息,包括数据集的路径、类别标签、数据预处理方式等。具体来说,YAML 文件在计算机视觉领域的数据集中扮演着以下几个重要的作用:

数据集配置信息:YAML 文件可以包含数据集的元数据信息,如数据路径、类别标签、数据划分方式等。这些信息对于加载和处理数据集非常重要。

数据预处理参数:YAML 文件可以定义数据预处理的参数,如图像大小、归一化方式、数据增强方式等。这些参数在训练和评估模型时需要用到。

训练参数设置:有时候,YAML 文件还可以包含训练过程中的超参数设置,如学习率、优化器类型、批量大小等。这些参数可以帮助用户灵活地调整训练过程。

数据集统计信息:YAML 文件中可能还包含数据集的统计信息,如数据样本数量、类别分布情况等。这些信息有助于用户了解数据集的特点。

四、models文件夹:神经网络构建的配置文件和一些函数

4.1 hub文件夹

在这里插入图片描述
models是模型文件夹。里面主要是一些网络构建的配置文件和函数,其中包含了该项目的四个不同的版本,分别为是s、m、l、x.
从名字就可以看出,这几个版本的大小。他们的检测速度分别都是从快到慢,但是精确度分别是从低到高。如果训练自己的数据集的话就需要修改这里面相对应的yaml文件来训练自己模型。

详解:

. hub#存放yolov5各版本目标检测网络模型配置文件
. anchors.yaml # cOCo数据的默认锚点
. yolov3-spp.yaml # 带spp的yolov3. yolov3-tiny.yaml #精简版yolov3. yolov3.yaml # yolov3
. yolov5-bifpn.yaml#带二值fpn的yolov5l. yolov5-fpn.yaml # 带fpn的yolov5
. yolov5-p2.yaml # (P2,P3,P4,P5)都输出,宽深与large版本相同,相当于比large版本能检测更小物体. yolov5-p34.yaml #只输出(P3,P4),宽深与small版本相同,相当于比small版本更专注于检测中小物体. yolov5-p6.yaml #(P3,P4,P5, P6)都输出,宽深与large版本相同,相当于比large版本能检测更大物体
. yolov5-p7.yaml #(P3,P4,P5,P6,P7)都输出,宽深与large版本相同,相当于比large版本能检测更更大物体. 
yolov5-panet.yaml # 带PANet的yolov5l
. yolov5n6.yaml #(P3,P4,P5,P6)都输出,宽深与nano版本相同,相当于比nano版本能检测更大物体,anchor已预定义。 yolov5s6.yaml #(P3, P4,P5,P6)都输出,宽深与small版本相同,相当于比small版本能检测更大物体,anchor已预定义. yolov5m6.yaml#(P3, P4,P5,P6)都输出,宽深与middle版本相同,相当于比middle版本能检测更大物体,anchor已预定义.
yolov5l6.yaml #(P3,P4,P5,P6)都输出,宽深与large版本相同,相当于比large版本能检测更大物体,anchor已预定义
推测是作者做实验的产物
yolov5x6.yaml#(P3,P4,P5,P6)都输出,宽深与Xlarge版本相同,相当于比Xlarge版本能检测更大物体,anchor已预定义. yolov5s-ghost.yaml # backbone的卷积换成了GhostNet形式的yolov5s,anchor已预定义
.yolov5s-transformer.yaml # backbone最后的C3卷积添加了Transformer模块的yolov5s,anchor已预定义

①anchors.yaml # cOCo数据的默认锚点

anchors.yaml文件通常用于目标检测任务中的目标检测器(如YOLO、Faster R-CNN等)中,用于定义目标检测器的anchor boxes(锚框)的大小和比例。锚框是一种预定义的边界框,用于在图像中生成候选目标区域,以便目标检测器可以预测目标的位置和类别。

在anchors.yaml文件中,通常会包含以下信息:
Anchor Box的数量:定义了目标检测器使用的anchor boxes的数量。
Anchor Box的尺寸和比例:指定每个anchor box的宽度、高度以及宽高比,通常以像素为单位。
Anchor Box的缩放因子:有时候还会包含anchor box的缩放因子,用于在不同尺度的特征图上生成不同大小的anchor boxes。

②yolov5m6.yaml #yolov5的版本6的神经网络配置

# Parameters
nc: 80 # number of classes
depth_multiple: 0.67 # model depth multiple
width_multiple: 0.75 # layer channel multiple
anchors:- [19, 27, 44, 40, 38, 94] # P3/8- [96, 68, 86, 152, 180, 137] # P4/16- [140, 301, 303, 264, 238, 542] # P5/32- [436, 615, 739, 380, 925, 792] # P6/64# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2[-1, 1, Conv, [128, 3, 2]], # 1-P2/4[-1, 3, C3, [128]],[-1, 1, Conv, [256, 3, 2]], # 3-P3/8[-1, 6, C3, [256]],[-1, 1, Conv, [512, 3, 2]], # 5-P4/16[-1, 9, C3, [512]],[-1, 1, Conv, [768, 3, 2]], # 7-P5/32[-1, 3, C3, [768]],[-1, 1, Conv, [1024, 3, 2]], # 9-P6/64[-1, 3, C3, [1024]],[-1, 1, SPPF, [1024, 5]], # 11]# YOLOv5 v6.0 head
head: [[-1, 1, Conv, [768, 1, 1]],[-1, 1, nn.Upsample, [None, 2, "nearest"]],[[-1, 8], 1, Concat, [1]], # cat backbone P5[-1, 3, C3, [768, False]], # 15[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, "nearest"]],[[-1, 6], 1, Concat, [1]], # cat backbone P4[-1, 3, C3, [512, False]], # 19[-1, 1, Conv, [256, 1, 1]],[-1, 1, nn.Upsample, [None, 2, "nearest"]],[[-1, 4], 1, Concat, [1]], # cat backbone P3[-1, 3, C3, [256, False]], # 23 (P3/8-small)[-1, 1, Conv, [256, 3, 2]],[[-1, 20], 1, Concat, [1]], # cat head P4[-1, 3, C3, [512, False]], # 26 (P4/16-medium)[-1, 1, Conv, [512, 3, 2]],[[-1, 16], 1, Concat, [1]], # cat head P5[-1, 3, C3, [768, False]], # 29 (P5/32-large)[-1, 1, Conv, [768, 3, 2]],[[-1, 12], 1, Concat, [1]], # cat head P6[-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge)[[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6)]

Parameters:这部分包含了模型的一些参数设置,如类别数量(nc: 80)、模型深度倍数(depth_multiple: 0.67)、层通道倍数(width_multiple: 0.75)以及每个输出层对应的锚框信息。在这里,每个输出层都有自己的一组锚框,用于目标检测。

YOLOv5 v6.0 backbone:这部分描述了模型的主干网络(backbone),包括了一系列卷积层(Conv)、C3块(C3)和SPPF块(SPPF),用于提取图像特征

YOLOv5 v6.0 head:这部分描述了模型的头部结构(head),包括了一系列卷积层(Conv)、上采样层(nn.Upsample)、拼接层(Concat)和C3块(C3),用于生成目标检测的输出

Detect:最后一部分是Detect层,用于在不同尺度的特征图上进行目标检测,生成最终的检测结果。这里的锚框信息会被传递给Detect层,用于目标检测。

整个代码段描述了一个完整的目标检测模型的结构,包括了主干网络、头部结构和检测层的设置。

4.2 segment文件夹

在这里插入图片描述

4.3 同级的几个py文件

在这里插入图片描述
. int.py#空的,里面什么都没有

. common.py #放的是一些网络结构的定义通用模块,包括autopad、Conv、DWConv、TransformerLayer等,这个文件比较复杂,总共一千多行,后面再慢慢分析。

. experimental.py#实验性质的代码,包括MixConv2d、跨层权重Sum等

. tf.py # tensorflow版的yolov5代码

. yolo.py # yolo的特定模块,包括BaseModel,DetectionModel,ClassificationModel,parse_model等

这几个py文件其实都很有深意,后面专门写一篇来进行分析。

五、runs文件夹:运行后输出一个模型的相关结果

在这里插入图片描述
这里由于我还没有开始训练一个自己的模型,因此就暂时不写这部分的内容,等后续再补充吧

六、utils文件夹

在这里插入图片描述
utils存放的是工具类的函数,里面有loss函数, metrics函数, plots函数等等。
详解:
●aws #恢复中断训练, 和aws平台使用相关的工具
●flask_ rest api #和flask相关的工具
●google
app engine #和谷歌app引擎相关的工具
●loggers #日志打印.
● init_ .py # notebook的初始化, 检查系统软件和硬件
●activations.py #激活函数
●augmentations #存放各种图像增强技术
●autoanchor.py # 自动生成锚框
●autobatch.py #自动生成批量大小
●benchmarks.py #对模型进行性能评估(推理速度和内存占用上的评估)
●callbacks.py #回调函数,主要为logger服务
●datasets # dateset和dateloader定义代码
,downloads.py #谷歌云盘内容下载
●general.py #全项目通用代码,相关实用函数实现
●loss.py #存放各种损失函数
●metrics.py #模型验证指标,包括ap,混淆矩阵等
●plots.py #绘图相关函数,如绘制loss、 ac曲线, 还能单独将一 个bbox存储为图像
,torch
_utils.py #辅助函数

七、其他一级目录的文件

在这里插入图片描述
.dockerignore # docker的ignore文件
.gitattributes#用于将.ipynb后缀的文件剔除GitHub语言统计.
.gitignore# docker的ignore文件
.CONTRIBUTING.md # markdown格式说明文档
. detect.py#目标检测预测脚本
. export.py #模型导出
. hubconf.py # pytorch hub相关
.LICENSE#证书
README.md # markdown格式说明文档
. requirements.txt #可以通过pip install requirement进行依赖环境下载
. setup.cfg # 项目打包文件
. train.py#目标检测训练脚本
. tutorial.ipynb #目标检测上手教程. val.py #目标检测验证脚本
. yolov5s.pt # coco数据集模型预训练权重,运行代码的时候会自动从网上下载

这里面最重要的几个文件是:
①推理部分:detect.py
②训练部分:train.py
③验证部分:val.py

由于代码量比较大,所以我会放到下一节进行分析。

八、总结一下

我认为yolov5的源码基本以两个部分的文件为核心,一个是.yaml文件,另一个是.py文件
yaml文件一个是关于数据集的配置,一个是关于神经网络结构的配置。
.py文件一个是关于一些工具类的配置,一个是关于推理、训练、验证方面的配置

后续几篇文章将深入解析这些文件的内容:

①推理部分:detect.py
②训练部分:train.py
③验证部分:val.py
④配置文件:yolov5s.yaml‘
⑤网络结构之:yolo.py
⑥网络结构之:common.py

为了完成一个深度学习目标检测的全过程,会按照以下顺序进行:

①配置部分(yolov5s.yaml):用于确定yolov5的网络结构和参数,包括模型的架构、数据预处理方式、训练参数等重要信息

②工具部分(yolo.py、common.py):提供一些函数,用于辅助后续部分,包括定义网络结构、损失函数、激活函数等

③训练部分(train.py):首先,使用训练部分的代码(train.py)来训练模型。在训练过程中,模型会根据训练数据集进行参数更新,以便更好地识别目标物体。

④验证部分(val.py):在训练过程中,通常会使用验证部分的代码(val.py)来评估模型在验证数据集上的性能。这有助于监控模型的泛化能力和避免过拟合。

⑤推理部分(detect.py):最后,在完成训练和验证后,可以使用推理部分的代码(detect.py)来对新的图像或视频进行目标检测。推理部分通常用于实际应用场景中使用训练好的模型进行预测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/278357.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能如何撬动新质生产力发展?

全国两会期间,“新质生产力”成为高频词,引发高度关注。新质生产力是由技术革命性突破、生产要素创新性配置、产业深度转型升级催生的当代先进生产力。而人工智能被视为形成新质生产力的重要引擎。 随着人工智能(AI)技术跨越奇点…

软件工程-第3章 软件需求与软件需求规约

3.1 需求与需求的获取 需求发现技术:自悟、交谈、观察、小组会、提炼。 3.2 需求规约SRS及其格式 3.3 本章小结

Java 根据IP获取IP地址信息(离线)

<!-- https://mvnrepository.com/artifact/org.lionsoul/ip2region --><dependency><groupId>org.lionsoul</groupId><artifactId>ip2region</artifactId><version>2.7.0</version></dependency> 地址&#xff1a;http…

YOLOV5 部署:QT的可视化界面推理(创建UI,并编译成py文件)

1、前言 之前用YOLOV5 做了一个猫和老鼠的实战检测项目,本章将根据之前训练好的权重进行部署,搭建一个基于QT的可视化推理界面,可以检测图片和视频 本章使用的数据集和权重参照:YOLOV5 初体验:简单猫和老鼠数据集模型训练-CSDN博客 可视化界面如下: 2、安装Pyside6 本…

Windows,MacOS,Linux下载python并配置环境图文讲解

Windows 打开python官网 点击download 点击黄色按钮 另存为 打开文件 全选 配置安装路径 安装中 关闭路径长度限制 完成 验证 同时按住winr(win就是空格键左边的东西) 输入cmd 键入python,如果出现版本(红框)即安装成功 MacOS 同理打开python官网 点击最新版本 拖…

在AI创业热潮下,如何抓住AI赚钱机会,实现人生逆袭

随着人工智能技术的迅猛发展,AI创业热潮正席卷全球。这不仅为科技领域的专业人士提供了无限的商机,也为普通人开辟了全新的赚钱途径。本文将为您揭示在AI创业热潮下,普通人如何抓住AI赚钱机会,实现人生逆袭,同时探讨哪些行业适合应用AI技术。 一、普通人如何抓住AI赚钱机…

基于单片机的灭火机器人设计

目 录 摘 要 I Abstract II 引 言 1 1 系统方案设计 4 1.1 方案论证 4 1.2 灭火机器人系统工作原理 4 2 系统硬件设计 6 2.1 单片机 6 2.2 火焰探测系统设计 8 2.3 灭火系统设计 8 2.4 循迹模块设计 9 2.5 电机驱动模块 10 3 系统软件设计 12 3.1 系统软件开发环境 12 3.2 系统…

java入门 -输入和输出

输入输出 开发中大量会使用输入和输出&#xff0c;今天来总结一下Java语法阶段常使用的输入和输出。 输出 System.out 控制台输出信息。 不换行显示一行&#xff1a; System.out.print( ); System.out.print("hello "); System.out.print("java!");运行结…

EMQX 4.0和EMQX 5.0集群架构实现1亿MQTT连接哪些改进

EMQX 5.0水平扩展能力得到了指数级提升&#xff0c;能够更可靠地承载更大规模的物联网设备连接量。 在EMQX5.0正式发布前的性能测试中&#xff0c;我们通过一个23节点的EMQX集群&#xff0c;全球首个达成了1亿MQTT连接每秒100万消息吞吐&#xff0c;这也使得EMQX 5.0成为目前为…

阿里云-云服务器ECS新手如何建网站?

租阿里云服务器一年要多少钱&#xff1f; 不同类型的服务器有不同的价格。 以ECS计算型c5为例&#xff1a;2核4G-1年518.40元&#xff0c;4核8G-1年948.00元。 阿里云ECS云服务器租赁价格由三部分组成&#xff1a; 也就是说&#xff0c;云服务器配置成本磁盘价格网络宽带价格…

Vue.js+SpringBoot开发企业项目合同信息系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 合同审批模块2.3 合同签订模块2.4 合同预警模块2.5 数据可视化模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 合同审批表3.2.2 合同签订表3.2.3 合同预警表 四、系统展示五、核心代码5.1 查询合同…

vue3动态组件未渲染问题

渲染问题 component动态组件写法与vue2写法一致&#xff0c;代码如下&#xff1a; <component :is"componentName"/><script setup>import { ref } from vueimport account from ./user/account.vue// 组件名称const componentName ref(account)// 点击…

算法详解——Dijkstra算法

Dijkstra算法的目的是寻找单起点最短路径&#xff0c;其策略是贪心加非负加权队列 一、单起点最短路径问题 单起点最短路径问题&#xff1a;给定一个加权连通图中的特定起点&#xff0c;目标是找出从该起点到图中所有其他顶点的最短路径集合。需要明确的是&#xff0c;这里关心…

【Leetcode-21合并两个有序链表】

题目详情&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 […

程序人生——Java中基本类型使用建议

目录 引出Java中基本类型使用建议建议21&#xff1a;用偶判断&#xff0c;不用奇判断建议22&#xff1a;用整数类型处理货币建议23&#xff1a;不要让类型默默转换建议24&#xff1a;边界、边界、还是边界建议25&#xff1a;不要让四舍五入亏了一方 建议26&#xff1a;提防包装…

【Hadoop】Hadoop的运行模式

目录 Hadoop 的运行模式1.本地模式1.1官方 Grep 案例1.2官方 WordCount 案例 2.伪分布式运行模式2.1启动 HDFS 并运行 MapReduce 程序2.1.1 配置集群&#xff0c;修改 Hadoop 的配置文件&#xff08;/hadoop/hadoop-2.7.7/etc/hadoop 目录下&#xff09;2.1.2 启动集群2.1.3 查…

结构体成员访问操作符

1.结构体成员的直接访问&#xff1a; 结构体变量.成员名&#xff1a; 2.结构体成员的间接访问: 间接访问应用于指向结构体变量的指针&#xff1a;如下

提升零售行业竞争力的信息抽取技术应用与实践

一、引言 在当今快速发展的零售行业中&#xff0c;沃尔玛、家乐福等大型连锁超市为消费者提供了丰富的日常食品和日用品。为了进一步提升客户体验和优化库存管理&#xff0c;这些零售巨头纷纷开始探索和应用先进的信息抽取技术。 本文将深入探讨一个成功的信息抽取项目&#…

【Android】工厂测试中 局部 字体显示重叠 问题分析与解决(Android14)

继上一篇【Android】工厂模式中 字体大小/显示重叠/显示不完整 相关 问题分析与解决 的分析与解决&#xff0c;可以实现调整所有字符整体的宽高。 但在局部&#xff0c;如果只希望修改局部的某一行字符的样式&#xff0c;且这一行字符没有直接的资源布局控制文件&#xff0c;而…