深入理解 YOLOv8:解析.yaml 配置文件目标检测、实例分割、图像分类、姿态检测
目录
yolov8导航
YOLOv8(附带各种任务详细说明链接)
引言
YOLOv8配置文件概览
yolov8.yaml
1. nc
2. scales
3. backbone
4. head
yolov8-seg.yaml
1. 参数部分
2. 骨架(Backbone)部分
3. 头部(Head)部分
关键区别
yolov8-cls.yaml
1. 参数部分
2. 骨架(Backbone)部分
3. 头部(Head)部分
关键区别
yolov8-pose.yaml
1. 参数部分
2. 骨架(Backbone)部分
3. 头部(Head)部分
关键区别
总结
yolov8导航
如果大家想要了解关于yolov8的其他任务和相关内容可以点击这个链接,我这边整理了许多其他任务的说明博文,后续也会持续更新,包括yolov8模型优化、sam等等的相关内容。
YOLOv8(附带各种任务详细说明链接)
引言
近年来,YOLO(You Only Look Once)系列在目标检测领域取得了巨大成功。YOLOv8,作为该系列的最新成员,以其卓越的性能和灵活的配置受到广泛关注。今天,我们将深入探讨YOLOv8的配置文件(.yaml
),这对于理解模型的内部工作机制至关重要。
YOLOv8配置文件概览
YOLOv8的配置文件定义了模型的关键参数和结构,包括类别数、模型尺寸、骨架(backbone)和头部(head)结构。这些配置决定了模型的性能和复杂性。
yolov8.yaml
# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8目标检测模型,具有P3-P5输出。使用示例请参见 https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # 类别数目scales: # 模型复合缩放常数,例如 'model=yolov8n.yaml' 将调用带有 'n' 缩放的 yolov8.yaml# [depth, width, max_channels]n: [0.33, 0.25, 1024] # YOLOv8n概览:225层, 3157200参数, 3157184梯度, 8.9 GFLOPss: [0.33, 0.50, 1024] # YOLOv8s概览:225层, 11166560参数, 11166544梯度, 28.8 GFLOPsm: [0.67, 0.75, 768] # YOLOv8m概览:295层, 25902640参数, 25902624梯度, 79.3 GFLOPsl: [1.00, 1.00, 512] # YOLOv8l概览:365层, 43691520参数, 43691504梯度, 165.7 GFLOPsx: [1.00, 1.25, 512] # YOLOv8x概览:365层, 68229648参数, 68229632梯度, 258.5 GFLOPs# YOLOv8.0n骨架
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8- [-1, 6, C2f, [256, True]]- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]] # 9# YOLOv8.0n头部
head:- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 6], 1, Concat, [1]] # 合并骨架P4- [-1, 3, C2f, [512]] # 12- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 4], 1, Concat, [1]] # 合并骨架P3- [-1, 3, C2f, [256]] # 15 (P3/8-小)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 12], 1, Concat, [1]] # 合并头部P4- [-1, 3, C2f, [512]] # 18 (P4/16-中)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 9], 1, Concat, [1]] # 合并头部P5- [-1, 3, C2f, [1024]] # 21 (P5/32-大)- [[15, 18, 21], 1, Detect, [nc]] # 检测(P3, P4, P5)
在这个配置文件中,定义了多个不同尺寸的YOLOv8模型,每个模型具有不同的深度、宽度和通道数,以适应不同的计算能力和性能需求。骨架部分(backbone)定义了模型的基本结构,包括卷积层、自定义C2f模块和空间金字塔池化层。头部(head)则包括上采样、连接和检测层,负责将提取的特征用于最终的目标检测。
在yolov8.yaml
配置文件中,每个关键词都扮演着特定的角色,下面是对这些关键词及其含义的详细解释:
1. nc
- 含义:
nc
代表"number of classes",即模型用于检测的对象类别总数。 - 示例中的值:
80
,表示该模型配置用于检测80种不同的对象。
2. scales
- 含义:
scales
用于定义模型的不同尺寸和复杂度,它包含一系列缩放参数。 - 子参数:
n
,s
,m
,l
,x
表示不同的模型尺寸,每个尺寸都有对应的depth
(深度)、width
(宽度)和max_channels
(最大通道数)。
3. backbone
- 含义:
backbone
部分定义了模型的基础架构,即用于特征提取的网络结构。 - 关键组成:
[from, repeats, module, args]
表示层的来源、重复次数、模块类型和参数。Conv
表示卷积层,其参数指定了输出通道数、卷积核大小和步长。C2f
可能是一个特定于YOLOv8的自定义模块。SPPF
是空间金字塔池化层,用于在多个尺度上聚合特征。
4. head
- 含义:
head
部分定义了模型的检测头,即用于最终目标检测的网络结构。 - 关键组成:
nn.Upsample
表示上采样层,用于放大特征图。Concat
表示连接层,用于合并来自不同层的特征。C2f
层再次出现,可能用于进一步处理合并后的特征。Detect
层是最终的检测层,负责输出检测结果。
这部分,我这边会详细的叙述每一个关键词和节点的含义,以这个为标准,后续我这边概述其他.yaml的时候,我会更侧重描述他们跟这个的区别。
yolov8-seg.yaml
在详细说明yolov8-seg.yaml
配置文件之前,让我们先了解一下它是用于什么的。这个配置文件专门为YOLOv8-seg模型设计,这是一个用于实例分割的模型。实例分割是计算机视觉中的一项高级任务,不仅需要识别图像中的对象(如目标检测),还要为每个对象的每个像素提供精确的分类。
# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8-seg instance segmentation model. For Usage examples see https://docs.ultralytics.com/tasks/segment# Parameters
nc: 80 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n-seg.yaml' will call yolov8-seg.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024]s: [0.33, 0.50, 1024]m: [0.67, 0.75, 768]l: [1.00, 1.00, 512]x: [1.00, 1.25, 512]# YOLOv8.0n backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8- [-1, 6, C2f, [256, True]]- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]] # 9# YOLOv8.0n head
head:- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 3, C2f, [512]] # 12- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 4], 1, Concat, [1]] # cat backbone P3- [-1, 3, C2f, [256]] # 15 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 12], 1, Concat, [1]] # cat head P4- [-1, 3, C2f, [512]] # 18 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 9], 1, Concat, [1]] # cat head P5- [-1, 3, C2f, [1024]] # 21 (P5/32-large)- [[15, 18, 21], 1, Segment, [nc, 32, 256]] # Segment(P3, P4, P5)
1. 参数部分
nc: 80
:表示模型用于检测的类别数目为80,与目标检测模型相同。scales
:定义模型的不同尺寸和复杂度,与目标检测模型相似,提供不同的缩放级别(n
,s
,m
,l
,x
)。
2. 骨架(Backbone)部分
- 这部分与
yolov8.yaml
非常相似,定义了模型的基础架构,包括多个卷积层(Conv)和自定义C2f层,用于特征提取。
3. 头部(Head)部分
- 在头部结构中,出现了上采样(
nn.Upsample
)、连接(Concat
)和C2f层,这与目标检测模型相似,用于处理和合并不同层次的特征。 - 最重要的区别在于最后的层:在实例分割模型中,使用的是
Segment
层而不是Detect
层。Segment
层的参数为[nc, 32, 256]
,其中nc
代表类别数,其余两个参数可能是特定于实例分割任务的配置,如用于分割的特定通道数和内部特征数量。
关键区别
- 任务类型:
yolov8-seg.yaml
针对的是实例分割任务,而yolov8.yaml
用于目标检测任务。实例分割不仅需要识别对象,还要为每个对象提供像素级的精确分类。 - 最后一层:
yolov8-seg.yaml
中使用的是Segment
层,专门用于实例分割,而yolov8.yaml
使用的是Detect
层,用于目标检测。
yolov8-seg.yaml
配置文件是YOLOv8-seg实例分割模型的核心,它在基本结构上与标准的YOLOv8目标检测模型相似,但在最后的层面上进行了调整,以适应实例分割的特殊需求。这种灵活性和调整能力展示了YOLOv8模型家族的多功能性和适应不同计算机视觉任务的能力。
yolov8-cls.yaml
yolov8-cls.yaml
配置文件专为YOLOv8-cls模型设计,这是一个面向图像分类任务的模型。与目标检测(YOLOv8)和实例分割(YOLOv8-seg)不同,图像分类的目的是为整个图像指定一个类别标签,而不是在图像中定位或分割特定对象。
# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8-cls image classification model. For Usage examples see https://docs.ultralytics.com/tasks/classify# Parameters
nc: 1000 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n-cls.yaml' will call yolov8-cls.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024]s: [0.33, 0.50, 1024]m: [0.67, 0.75, 1024]l: [1.00, 1.00, 1024]x: [1.00, 1.25, 1024]# YOLOv8.0n backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8- [-1, 6, C2f, [256, True]]- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32- [-1, 3, C2f, [1024, True]]# YOLOv8.0n head
head:- [-1, 1, Classify, [nc]] # Classify
1. 参数部分
nc: 1000
:表示模型用于分类的类别总数为1000。这比通常的目标检测或实例分割任务有更多的类别。scales
:与yolov8-seg.yaml
类似,定义了模型的不同尺寸和复杂度,通过提供不同的缩放级别(n
,s
,m
,l
,x
)来适应不同的计算能力和资源。
2. 骨架(Backbone)部分
- 这部分与
yolov8-seg.yaml
的骨架结构相似,包含多个卷积层(Conv)和自定义C2f层,用于提取图像特征。这表明无论是用于分类、检测还是分割,特征提取的基本原理是类似的。
3. 头部(Head)部分
- 这是与
yolov8-seg.yaml
最显著的不同之处。在图像分类模型中,头部结构相对简单,只包含一个Classify
层。Classify
层的参数[nc]
指定了类别的数量,这一层负责将提取的特征映射到类别标签上。
关键区别
- 任务类型:
yolov8-cls.yaml
是为图像分类任务设计的,而非目标检测或实例分割。这意味着模型的输出是整个图像的类别标签,而不是图像中各个对象的位置或分割掩码。 - 头部结构:与处理更复杂的任务(如实例分割)相比,图像分类模型的头部结构更加简单,只包含一个
Classify
层,直接对整个图像进行分类。
yolov8-cls.yaml
配置文件针对的是图像分类任务,它在结构上与目标检测和实例分割模型有共通之处,尤其是在特征提取的骨架部分。然而,头部结构的简化体现了图像分类任务的直接性和专注性。这种配置展示了YOLOv8模型家族的多功能性和在不同计算机视觉任务中的应用能力。
yolov8-pose.yaml
yolov8-pose.yaml
配置文件是专为 YOLOv8-pose 模型设计的,这是一个用于关键点/姿态估计的模型。关键点估计是计算机视觉中的一项高级任务,它涉及识别和定位图像中人体或其他对象的特定关键点。
# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8-pose keypoints/pose estimation model. For Usage examples see https://docs.ultralytics.com/tasks/pose# Parameters
nc: 1 # number of classes
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
scales: # model compound scaling constants, i.e. 'model=yolov8n-pose.yaml' will call yolov8-pose.yaml with scale 'n'# [depth, width, max_channels]n: [0.33, 0.25, 1024]s: [0.33, 0.50, 1024]m: [0.67, 0.75, 768]l: [1.00, 1.00, 512]x: [1.00, 1.25, 512]# YOLOv8.0n backbone
backbone:# [from, repeats, module, args]- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4- [-1, 3, C2f, [128, True]]- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8- [-1, 6, C2f, [256, True]]- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16- [-1, 6, C2f, [512, True]]- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32- [-1, 3, C2f, [1024, True]]- [-1, 1, SPPF, [1024, 5]] # 9# YOLOv8.0n head
head:- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 6], 1, Concat, [1]] # cat backbone P4- [-1, 3, C2f, [512]] # 12- [-1, 1, nn.Upsample, [None, 2, 'nearest']]- [[-1, 4], 1, Concat, [1]] # cat backbone P3- [-1, 3, C2f, [256]] # 15 (P3/8-small)- [-1, 1, Conv, [256, 3, 2]]- [[-1, 12], 1, Concat, [1]] # cat head P4- [-1, 3, C2f, [512]] # 18 (P4/16-medium)- [-1, 1, Conv, [512, 3, 2]]- [[-1, 9], 1, Concat, [1]] # cat head P5- [-1, 3, C2f, [1024]] # 21 (P5/32-large)- [[15, 18, 21], 1, Pose, [nc, kpt_shape]] # Pose(P3, P4, P5)
1. 参数部分
nc: 1
:表示模型用于检测的类别数目为1。在关键点估计任务中,通常关注的是单一类别(如人体)。kpt_shape: [17, 3]
:定义了关键点的数量和维度。在此例中,有17个关键点,每个关键点有3个维度(x, y坐标和可见性)。scales
:定义了模型的不同尺寸和复杂度,这与其他YOLOv8配置相似,提供不同的缩放级别(n
,s
,m
,l
,x
)。
2. 骨架(Backbone)部分
- 这部分与其他YOLOv8配置文件相似,包含多个卷积层(Conv)和自定义C2f层,用于提取图像特征。
3. 头部(Head)部分
- 头部结构与其他YOLOv8模型相似,包含上采样(
nn.Upsample
)、连接(Concat
)和C2f层,用于处理和合并不同层次的特征。 - 关键的不同之处在于最后的层:
Pose
层。这是专为关键点估计设计的层,其参数包括类别数(nc
)和关键点形状(kpt_shape
)。
关键区别
- 任务类型:
yolov8-pose.yaml
配置文件是为关键点/姿态估计任务设计的,与用于图像分类、目标检测或实例分割的模型有明显不同。关键点估计需要识别和定位图像中的特定点。 - 头部结构:最大的区别在于
Pose
层的使用,这是专门为关键点估计任务设计的,用于定位每个关键点的位置和可见性。
yolov8-pose.yaml
配置文件体现了YOLOv8模型在处理不同类型计算机视觉任务时的灵活性。它在基础结构上与其他YOLOv8模型相似,但通过特定于任务的头部结构调整,适应了关键点估计这一复杂的任务。这种配置展示了YOLOv8模型家族的多功能性,以及在不同计算机视觉任务中的应用能力。
总结
YOLOv8系列模型展示了其在多个计算机视觉任务中的适应性和高效性。通过其多样化的配置文件,YOLOv8不仅在目标检测领域表现出色,还成功扩展到实例分割、图像分类和关键点/姿态估计等领域。每个配置文件针对特定任务优化,从而确保模型在处理不同类型的视觉数据时保持高准确率和效率。这种灵活性和多功能性使得YOLOv8成为当前最先进的视觉识别系统之一,为未来的技术创新和应用提供了广阔的可能性。如果有哪里写的不够清晰,小伙伴本可以给评论或者留言,我这边会尽快的优化博文内容,另外如有需要,我这边可支持技术答疑与支持。
相关文章:
深入理解 YOLOv8:解析.yaml 配置文件目标检测、实例分割、图像分类、姿态检测
目录 yolov8导航 YOLOv8(附带各种任务详细说明链接) 引言 YOLOv8配置文件概览 yolov8.yaml 1. nc 2. scales 3. backbone 4. head yolov8-seg.yaml 1. 参数部分 2. 骨架(Backbone)部分 3. 头部(Head&…...

oracle与mysql的分析函数(窗口函数)
分析函数定义 在SQL语句中,很多查询语句需要进行GROUP BY分组汇总,但是一旦经过分组,SELECT返回的记录数就会减少。为了保留所有原始行记录,并且仍可以进行分组数据分析,分析函数应运而生。 Oracle 8i 版本开始支持窗…...
《微信小程序开发从入门到实战》学习六十五
6.4 交互API 6.4.5 页面滚动API 使用wx.pageScrollTo接口可使页面自动滚动到目标位置。该接口介绍Object参,该参支持属性如下所示: scrollTop:必填,滚动到页面的目标位置,单位为px duration:滚动动画的…...

开箱即用的企业级数据和业务管理中后台前端框架Ant Design Pro 5的开箱使用和偏好配置
Ant Design Pro 介绍 Ant Design Pro 是一个开箱即用的企业级前端解决方案,基于 Ant Design 设计体系,提供了丰富的组件和功能,帮助开发者更快速地开发和部署企业级应用。 Ant Design Pro 使用 React、umi 和 dva 这三个主要的前端开发技术…...

怎么用Facebook找客户?Facebook开发客户攻略分享
跨境人最了解的电商平台之一就是Facebook了,说到Facebook,它拥有超过20亿的活跃用户,所以你可以在这个平台上面找到更多的潜在客户。今天的文章就主要分享用Facebook开发客户的方法,全是干货,建议收藏! 一、…...

【Vue2+3入门到实战】(12)自定义指令的基本语法(全局、局部注册)、 指令的值、v-loading的指令封装 详细示例
目录 一、学习目标1.自定义指令 二、自定义指令1.指令介绍2.自定义指令3.自定义指令语法4.指令中的配置项介绍5.代码示例6.总结 三、自定义指令-指令的值1.需求2.语法3.代码示例 四、自定义指令-v-loading指令的封装1.场景2.需求3.分析4.实现5.准备代码 六、自定义指令总结 一、…...

Android studio socket客户端应用设计
一、XML布局设计: <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com…...
【UTC格式】Oracle低版本实现UTC格式转换
Oracle低版本实现UTC格式转换 文章目录 Oracle低版本实现UTC格式转换前言一、创建 FUNCTION(GET_UTC_DATE)二、使用步骤1.跨年日期2.跨月日期(判断 闰年 or 平年、用于计算2月天数,正常大小月)3.跨日日期3.正常日期 总…...

[BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
1.问题描述 使用yarn调度任务时,在CapacityScheduler页面上单击叶队列(或子队列)时,不会显示应用程序任务信息,root队列可以显示任务。此外,FairScheduler页面是正常的。 No matching records found2.原…...

Java 缓存中间件
Java 缓存中间件 关键词:Spring Cache、J2Cache、JetCache 一 、JSR 107 JSR107 中制订了 Java 缓存的规范。 因此,在很多缓存框架、缓存库中,其 API 都参考了 JSR 107 规范。 img Java Caching 定义了 5 个核心接口 CachingProvider - 定义…...

使用cmake配置matplotlibcpp生成VS项目
https://gitee.com/feboreigns/matplotlibcpp 这篇文章需要一些cmake基础,python基础,visualstudio基础 准备环境 注意如果在VS平台使用必须要手动下载python,不能使用conda里面的,比如3.8版本,因为conda里面没有py…...

Android : 画布绘制矩形和文字 让其居中显示简单应用
示例图: CenterView.java package com.example.demo;import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.Log; import android.view.View;public class Center…...

科研学习|论文解读——融合类目偏好和数据场聚类的协同过滤推荐算法研究
论文链接(中国知网): 融合类目偏好和数据场聚类的协同过滤推荐算法研究 - 中国知网 (cnki.net) 摘要:[目的/意义]基于近邻用户的协同过滤推荐作为推荐系统应用最广泛的算法之一,受数据稀疏和计算可扩展问题影响&#x…...

算法学习系列(十五):最小堆、堆排序
目录 引言一、最小堆概念二、堆排序模板(最小堆)三、模拟堆 引言 这个堆排序的话,考的还挺多的,主要是构建最小堆,并且在很多情况下某些东西还用得着它来优化,比如说迪杰斯特拉算法可以用最小堆优化&#…...

HCIA-Datacom题库(自己整理分类的)——OSPF协议多选
ospf的hello报文功能是 邻居发现 同步路由器的LSDB 更新LSA信息 维持邻居关系 下列关于OSPF区域描述正确的是 在配置OSPF区域正确必须给路由器的loopback接配置IP地址 所有的网络都应在区域0中宣告 骨干区域的编号不能为2 区域的编号范围是从0.0.0.0到255.255.255.255…...

elasticsearch-hadoop.jar 6.8版本编译异常
## 背景 重新编译 elasticsearch-hadoop 包; GitHub - elastic/elasticsearch-hadoop at 6.8 编译 7.17 版本时很正常,注意设置下环境变量就好,JAVA8_HOME/.... 编译 6.8 版本时(要求jdk8 / jdk9),出现…...
面试经典150题(50-53)
leetcode 150道题 计划花两个月时候刷完,今天(第二十二天)完成了4道(50-53)150: 50.(141. 环形链表)题目描述: 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个…...

Jetpack Compose中使用Android View
使用AndroidView创建日历 Composable fun AndroidViewPage() {AndroidView(factory {CalendarView(it)},modifier Modifier.fillMaxWidth(),update {it.setOnDateChangeListener { view, year, month, day ->Toast.makeText(view.context, "${year}年${month 1}月$…...

《MySQL》事务篇
事务特性 ACID Atomicity原子性:事务中的操作要么全部完成,要么全部失败。 Consistency一致性:事务操作前后,数据满足完整性约束。 Isolation隔离性:允许并发执行事务,每个事务都有自己的数据空间&…...
高阶组件和高阶函数是什么
高阶组件和高阶函数都是在函数式编程中常见的概念。 高阶组件(Higher-Order Component, HOC)是一种函数,接受一个组件作为参数,并返回一个新的组件。它可以用来增强现有的组件,给它添加额外的功能或属性。高阶组件在R…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...