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

YOLOv8模型调参---数据增强

目录

1.数据预处理

2.数据增强

2.1 数据增强的作用

 2.2 数据增强方式与适用场景

2.2.1离线增强(Offline Augmentation)

2.2.2 在线增强(Online Augmentation) 

3. 数据增强的具体方法

4. YOLOv8的数据增强

4.1 YOLOv8默认使用的增强方式策略 

4.2 YOLOv8未使用的增强方式策略

 4.3 YOLOv8数据增强的源码位置


 

1.数据预处理

当数据顺利导入数据后,我们就可以依据图像的具体情况对图像进行预处理了。与机器学习中较为固定的预处理流程不同,图像的预处理基本完全与数据本身有关。从数据采集的瞬间开始,我们就需要考虑预处理的事项。如果我们的数据是自行从网络爬取或搜索引擎采集,我们可能需要对图像进行去重、删除无效样本等操作,如果数据是自行拍摄、实验提取,那可能也需要根据实验要求进行一些删除、增加的处理。当我们将所有有效数据导入后,至少需要确保:

1)全部样本的尺寸是一致的(同时,全部样本的通道数是一致的)

2)图像最终以Tensor形式被输入卷积网络

3)图像被恰当地归一化

其中,前两项是为了卷积神经网络能够顺利地运行起来,第三项是为了让训练过程变得更加流畅快速。在PyTorch中,所有的数据预处理都可以在导入数据的时候,通过transform参数来完成,我们通常在transform参数中填写torchvision.transforms这个模块下的类。在预处理时,我们需要使用的常规类如下所示:

Compose     transforms专用的,类似于nn.Sequential的打包功能,可以将数个transforms下的类                        打包,形成类似于管道的结构来统一执行。

CenterCrop  中心裁剪。需要输入最终希望得到的图像尺寸。

Resize           尺寸调整。需要输入最终希望得到的图像尺寸。注意区别于使用裁剪缩小尺寸或使                           用填充放大尺寸。

Normalize     归一化(Tensor Only)。对每张图像的每个通道进行归一化,每个通道上的每个像素 

                      会减去该通道像素值的均值,并除以该通道像素值的方差。

ToTensor       (PIL Only)将任意图像转变为Tensor

       无论使用怎样的卷积网络,我们都倾向于将图像调整到接近28x28或224x224的尺寸。当原图尺寸与目 标尺寸较为接近时,我们可以使用“裁剪”功能。裁剪是会按照我们输入的目标尺寸,将大于目标尺寸的 像素点丢弃的功能,因此使用裁剪必然会导致信息损失,过多的信息损失会导致卷积网络的结果变差。 当需要检测或识别的对象位于图像的中心时,可以使用中心裁剪。中心裁剪会以图像中心点为参照,按照输入的尺寸从外向内进行裁剪,被裁剪掉的像素会被直接丢弃。如果输入的尺寸大于原始图像尺寸, 则在原始图像外侧填充0,再进行中心裁剪。

       当图像的尺寸与目标尺寸相差较大,我们不能接受如此多的信息被丢弃的时候,就需要使用尺寸调整的类Resize。Resize是使用像素聚类、像素插补等一定程度上对信息进行提取或选择、并按要求的尺寸重排像素点的功能。一般来说,Resize过后的图片会呈现出与原图较为相似的信息,但图片尺寸会得到缩放。如果原始图像尺寸很大,目标尺寸很小,我们一般会优先使用Resize将图像尺寸缩小到接近目标尺寸的程度,再用裁剪让图片尺寸完全等于目标尺寸。例如,对于600*800的图像,先Resize将尺寸降到 256x256,再裁剪至224x224。

2.数据增强

2.1 数据增强的作用

在目标检测模型的训练过程中,进行数据增强是非常关键的一个步骤,其主要作用体现在以下几个方面:

增加训练数据的多样性:
数据增强通过应用一系列随机变换(如翻转、裁剪、旋转、缩放、颜色调整、平移等)到原始训练图像上,生成大量具有不同视点、尺寸、光照条件和背景的新样本。这些变换模拟了现实世界中物体可能出现的各种形态和环境变化,使得模型在训练阶段就能接触到更多样化的场景,从而提高了模型对不同情况的适应性。
提高模型的泛化能力:
增加训练数据的多样性有助于防止模型过度拟合训练集,即避免模型对训练数据中的特定细节或噪声过于敏感,而忽视了更普遍、更本质的特征。通过数据增强,模型被迫学习更为通用的特征表示,使其在面对未见过的测试数据时,仍能准确地检测出目标物体,进而提高整体的泛化性能。
增强模型的鲁棒性:
数据增强引入的噪声和变化有助于模型在训练中应对各种潜在干扰因素。例如,添加轻微的模糊、亮度变化或色彩失真,可以使模型在实际应用中对图像质量的变化、光照条件的波动以及相机成像偏差等具有更强的抵抗能力。这样,即使在复杂或非理想的环境下,模型也能稳定地进行目标检测。
缓解样本不均衡问题:
在许多目标检测任务中,不同类别或不同大小的目标样本可能存在数量上的显著差异,导致训练过程中的类别不平衡问题。数据增强可以通过复制、合成或优先增强少数类样本的方法,帮助平衡各类别的数据分布,确保模型对所有目标类别都能给予适当的重视,提高整体检测性能,特别是对稀有类别或小目标的检测准确性。
优化模型对尺度变化的适应性:
特别是在目标检测任务中,物体的实际大小和距离摄像头的距离会导致目标在图像中呈现出不同的尺度。数据增强通过应用多尺度训练策略(如随机缩放、多尺度输入、多分辨率训练等),使模型能够更好地理解和处理不同尺度下的目标,提升对不同大小目标的检测效果。
减少对大量标注数据的依赖:
在实际应用中,获取大规模、高质量标注的目标检测数据集成本高昂且耗时。数据增强通过有效利用现有数据生成新的训练样本,能够在一定程度上弥补数据量不足的问题,使得有限的数据资源得以充分利用,降低对大规模标注数据集的硬性需求。

 2.2 数据增强方式与适用场景

常见的数据增强方式主要有两种:在线增强(Online Augmentation)离线增强(Offline Augmentation)
以下是这两种方式的定义、增强方式以及适用场景的详细解释: 

2.2.1离线增强(Offline Augmentation)

定义:
离线增强是指在模型训练前在计算机上一次性完成所有数据增强操作,将原始数据集转化为包含多种增强版本的扩充数据集,并将增强后的样本保存到磁盘或内存中,然后使用这个固定的扩充数据集进行训练。

适用场景:
离线增强适用于以下场景:

计算资源受限:离线增强只需在训练前进行一次计算,后续训练可以直接使用已增强好的数据,减少了实时计算需求,适合计算资源有限的环境。
模型对数据分布稳定有要求:对于需要保持训练数据分布稳定的模型或算法(如某些基于统计特征的模型),离线增强提供了固定且一致的数据分布。


训练时间紧张:当训练时间有限,需要快速启动训练过程时,离线增强避免了每次迭代时的实时增强计算,可以显著加快训练初期的速度。
数据集较小:对于小型数据集,离线增强可以生成大量多样化的样本,有效扩充数据集规模,有助于提高模型泛化能力。

2.2.2 在线增强(Online Augmentation) 

定义:
在线增强是指在模型训练过程中模型会实时进行数据增强操作。每次迭代时,从原始数据集中抽取一个样本后,立即对其进行一系列随机的变换处理,生成新的增强样本,然后使用该增强样本进行当前批次的训练。

适用场景:
在线增强适用于以下场景:

计算资源充足:在线增强需要在训练过程中实时生成增强样本,可能会增加计算负担,因此更适合在计算资源充足的环境中使用。
模型对数据变化敏感:对于需要精细调整超参数或对数据分布变化敏感的模型,实时数据增强可以即时反馈增强效果,便于调整和优化。
实时性要求不高:在线增强适用于训练时间相对充裕、对预处理速度要求不高的场景。


总结来说,选择在线增强还是离线增强主要取决于计算资源状况、模型特性、训练时间要求以及数据集规模等因素。在线增强具有更高的灵活性和即时反馈优势,而离线增强则更适合资源有限、要求数据分布稳定的场景,并能节省训练初期的时间。实际应用中,有时也会结合两者的特点,采用混合策略进行数据增强。

3. 数据增强的具体方法

数据增强的具体方法包括但不限于:

几何变换:如水平/垂直翻转、随机裁剪、旋转、缩放、平移、透视变换等,改变目标物体的位置、方向和大小。
颜色空间变换:如亮度调整、对比度变化、饱和度调整、色调偏移、添加高斯噪声、椒盐噪声等,模拟光照条件、相机白平衡和图像质量的变化。
混合变换如图像混合(如CutMix、MixUp)、样本拼接(如GridMask、RandomErasing)等,将多个样本的部分内容组合在一起,或随机擦除部分区域。
特定领域的增强:针对特定任务或数据类型设计的增强技术,如深度估计中的视点变换、医学影像中的纹理合成等。
 

4. YOLOv8的数据增强

4.1 YOLOv8默认使用的增强方式策略 

1.1、 hsv_h
通过色轮的一小部分调整图像的色调,引入颜色可变性。帮助模型在不同的照明条件下进行概括。

默认数值为0.015,范围是0.0~1.0。

1.2、hsv_s
将图像的饱和度更改一小部分,从而影响颜色的强度。适用于模拟不同的环境条件。

默认数值为0.7,范围是0.0~1.0。

1.3、hsv_v
将图像的值(亮度)修改一小部分,有助于模型在各种照明条件下表现良好。

默认数值为0.4,范围是0.0~1.0。

1.4、translate
将图像水平和垂直方向平移图像的一小部分,有助于学习检测部分可见对象。

默认数值为0.1,范围是0.0~1.0。

1.5、translate
按增益因子缩放图像,模拟与摄影机相距不同距离的对象。

默认数值为0.5,范围是大于等于0.0都可以。

1.6、fliplr
以指定的概率将图像从左向右翻转(类似于左右镜像),这对于学习对称对象和增加数据集的多样性非常有用。

默认数值为0.5,范围是0.0~1.0。

1.7、mosaic
将四个训练图像组合为一个,模拟不同的场景组成和对象交互。YOLO最经典的数据增强方式。对复杂场景的理解非常有效。

默认数值为1.0,范围是0.0~1.0。

1.8、auto_augment
面向分类任务,自动应用预定义的增强策略(randaugment、autoaugment和augmix),通过使视觉特征多样化来优化分类任务。

默认数值为randaugment,范围是(randaugment、autoaugment和augmix)。

1.9、erasing
在分类训练过程中随机擦除图像的一部分,鼓励模型专注于不太明显的特征进行识别。

默认数值为0.4,范围是0.0~0.9。

1.10、crop_fraction
将分类图像裁剪到其大小的一小部分,以强调中心特征并适应对象比例,从而减少背景干扰。 

默认数值为1.0,范围是0.1~1.0。

4.2 YOLOv8未使用的增强方式策略

2.1、degrees
在指定的度数范围内随机旋转图像,提高模型识别不同方向对象的能力。选择旋转角度后,在选择的旋转角度范围内进行数据随机旋转。 

范围是-180~+180。

2.2、shear
以指定的角度剪切图像,模仿从不同角度观看对象的效果。选择角度后,在选择的角度范围内进行数据随机剪切。 

范围是-180~+180。

2.3、perspective
将随机透视变换应用于图像,增强模型理解三维空间中对象的能力。

范围是0.0~0.001。

2.4、flipud
以指定的概率将图像倒置,在不影响对象特性的情况下增加数据的可变性。

范围是0.0~1.0。

2.5、bgr
以指定的概率将图像通道从RGB翻转到BGR,这有助于提高对不正确通道排序的鲁棒性。

范围是0.0~1.0。

2.6、mixup
混合两个图像及其标签,创建合成图像。通过引入标签噪声和视觉可变性来增强模型的泛化能力。

范围是0.0~1.0。

2.7、copy_paste
将对象从一个图像中复制并粘贴到另一个图像上,这对于增加对象实例和学习对象遮挡非常有用。

范围是0.0~1.0。

在进行训练时,直接加相对应的参数即可!例如添加使用flipud 增强策略:

 

model = YOLO(r"yolov8m-pose.pt")  # 用于迁移训练的权重文件路径results = model.train(data=r"E:\ultralytics-main\datasets\key-points.yaml",imgsz=640, epochs=100, batch=4, flipud = 0.5, device = 0)

 

 4.3 YOLOv8数据增强的源码位置

YOLOv8进行数据增强的源码位置在ultralytics/data/augment.py中的v8_transforms函数中: 

 

 

因此,在YOLOv8模型训练时:自己数据集数量不是特别少的情况下。一般为了节省训练时间,我们无需额外对数据集进行离线数据增强。YOLOv8模型会自动帮我们在训练时进行数据的在线数据增强主要包括:马赛克增强(Mosaic)、混合增强(Mixup)、随机扰动(random perspective )以及颜色扰动(HSV augment)等。以确保模型数据集的多样性与泛化能力。

 

 以上数据增强策略均可用于目标检测,分割,骨干提取和分类等。有可能加了之后会导致结果指标下降,需要实际实验进行选取。

相关文章:

YOLOv8模型调参---数据增强

目录 1.数据预处理 2.数据增强 2.1 数据增强的作用 2.2 数据增强方式与适用场景 2.2.1离线增强(Offline Augmentation) 2.2.2 在线增强(Online Augmentation) 3. 数据增强的具体方法 4. YOLOv8的数据增强 4.1 YOLOv8默认…...

【Nginx】docker运行Nginx及配置

Nginx镜像的获取 直接从Docker Hub拉取Nginx镜像通过Dockerfile构建Nginx镜像后拉取 二者区别 主要区别在于定制化程度和构建过程的控制: 直接拉取Nginx镜像: 简便性:直接使用docker pull nginx命令可以快速拉取官方的Nginx镜像。这个过程…...

tensorflow和numpy的版本

查看cuda版本 dpkg -l | grep cuda i libcudart11.0:amd64 11.5.117~11.5.1-1ubuntu1 amd64 NVIDIA CUDA Runtime Library ii nvidia-cuda-dev:amd64 11.5.1-1ubuntu1 …...

二维Gamma分布的激光点云去噪

目录 1、Gamma 分布简介2、实现步骤 1、Gamma 分布简介 Gamma 分布在合成孔径雷达( Synthetic Aperture Radar,SAR) 图像分割中具有广泛应用,较好的解决了SAR 图像中相干斑噪声对图像分割的影响。采用二维Gamma 分布对…...

鸿蒙笔记导航栏,路由,还有axios

1.导航组件 导航栏位置可以调整,导航栏位置 Entry Component struct t1 {build() {Tabs(){TabContent() {Text(qwer)}.tabBar("首页")TabContent() {Text(发现内容)}.tabBar(发现)TabContent() {Text(我的内容)}.tabBar("我的")}// 做平板适配…...

Spring 框架中都用到了哪些设计模式:单例模式、策略模式、代理模式

Spring 框架是一个功能强大的企业级应用开发框架,它使用了多种设计模式来提高代码的可维护性、可扩展性和可重用性。以下是 Spring 框架中常见的几个设计模式,并简要说明它们的应用场景: 1. 单例模式(Singleton Pattern) 定义:确保一个类只有一个实例,并提供全局访问点…...

阶段总结——基于深度学习的三叶青图像识别

阶段总结——基于深度学习的三叶青图像识别 文章目录 一、计算机视觉图像分类系统设计二、训练模型2.1. 构建数据集2.2. 网络模型选择2.3. 图像数据增强与调参2.4. 部署模型到web端2.5. 开发图像识别小程序 三、实验结果3.1. 模型训练3.2. 模型部署 四、讨论五、参考文献&#…...

深度解析Java世界中的对象镜像:浅拷贝与深拷贝的奥秘与应用

在Java编程的浩瀚宇宙中,对象拷贝是一项既基础又至关重要的技术。它直接关系到程序的性能、资源管理及数据安全性。然而,提及对象拷贝,不得不深入探讨其两大核心类型:浅拷贝(Shallow Copy)与深拷贝&#xf…...

Python | Leetcode Python题解之第218题天际线问题

题目: 题解: class Solution:def getSkyline(self, buildings: List[List[int]]) -> List[List[int]]:buildings.sort(keylambda bu:(bu[0],-bu[2],bu[1]))buildings.append([inf,inf,inf])heap [[-inf,-inf,-inf]]ans []for l,r,h in buildings:i…...

使用Spring Boot构建RESTful API

使用Spring Boot构建RESTful API 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入探讨如何使用Spring Boot构建RESTful API。通过这篇…...

Spark快速大数据分析PDF下载读书分享推荐

《Spark 快速大数据分析》是一本为 Spark 初学者准备的书,它没有过多深入实现细节,而是更多关注上层用户的具体用法。不过,本书绝不仅仅限于 Spark 的用法,它对 Spark 的核心概念和基本原理也有较为全面的介绍,让读者能…...

Centos7离线安装mysql-5.7.44bundle包

在 CentOS 7 上安装 mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar(这里假设这是一个包含多个 RPM 包的 tar 归档文件)的步骤通常涉及解压归档文件、安装 RPM 包以及配置 MySQL 服务。以下是一个详细的步骤指南: 1. 下载和解压 RPM 包 首先&am…...

ROS melodic版本卸载---Ubuntu18.04

sudo apt-get remove ros-melodic-desktop-fullsudo apt-get remove gazebo* 删除依赖关系 sudo apt autoremove删除与ros关联的所有文件 sudo apt-get purge ros-* sudo rm -rf /etc/ros找到.bashrc文件删除含ros的环境配置语句 全部删除完毕,可以去计算机下的…...

Java面试之Java多线程常见面试题

1、什么是线程? 定义:线程是程序中的执行路径,是操作系统进行调度的基本单位。它允许程序并发执行多个任务,提高程序的响应速度和资源利用率。 2、为什么需要线程? 1、提高并发性:线程允许程序同时执行多…...

Java [ 基础 ] Java面向对象编程 (OOP) ✨

目录 ✨探索Java基础 Java面向对象编程 (OOP) ✨ 引言 1. 类和对象 2. 封装 3. 继承 4. 多态 5. 抽象 结论 ✨探索Java基础 Java面向对象编程 (OOP) ✨ 引言 Java是一门以面向对象编程(OOP)为基础的编程语言。OOP的核心概念包括类和对象、封装…...

敏捷开发笔记(第9章节)--开放-封闭原则(OCP)

目录 1:PDF上传链接 9.1 开放-封闭原则(OCP) 9.2 描述 9.3 关键是抽象 9.3.1 shape应用程序 9.3.2 违反OCP 糟糕的设计 9.3.3 遵循OCP 9.3.4 是的,我说谎了 9.3.5 预测变化和“贴切的”结构 9.3.6 放置吊钩 1.只受一次…...

苹果电脑清理app垃圾高效清理,无需专业知识

在我们的日常使用中,苹果电脑以其优雅的设计和强大的功能赢得了广泛的喜爱。然而,即便是最高效的设备,也无法免俗地积累各种不必要的文件和垃圾,特别是app垃圾。所以,苹果电脑清理app垃圾高效清理,对于大多…...

【算法】(C语言):快速排序(递归)、归并排序(递归)、希尔排序

快速排序(递归) 左指针指向第一个数据,右指针指向最后一个数据。取第一个数据作为中间值。右指针指向的数据 循环与中间值比对,若大于中间值,右指针往左移动一位,若小于中间值,右指针停住。右…...

模型驱动开发(Model-Driven Development,MDD):提高软件开发效率与一致性的利器

目录 前言1. 模型驱动开发的原理1.1 什么是模型驱动开发1.2 MDD的核心思想 2. 模型驱动开发的优势2.1 提高开发效率2.2 确保代码一致性2.3 促进沟通和协作2.4 方便维护和扩展 3. 实现模型驱动开发的方法3.1 选择合适的建模工具3.1.1 UML3.1.2 BPMN3.1.3 SysML 3.2 建模方法3.2.…...

记录discuz修改用户的主题出售价格

大家好,我是网创有方的站长,今天遇到了需要修改discuz的主题出售价格。特此记录下 方法很简单: 进入用于组-》选择论坛-》批量修改...

WGAN(Wassertein GAN)

WGAN E x ∼ P g [ log ⁡ ( 1 − D ( x ) ) ] E x ∼ P g [ − log ⁡ D ( x ) ] \begin{aligned} & \mathbb{E}_{x \sim P_g}[\log (1-D(x))] \\ & \mathbb{E}_{x \sim P_g}[-\log D(x)] \end{aligned} ​Ex∼Pg​​[log(1−D(x))]Ex∼Pg​​[−logD(x)]​ 原始 GAN …...

Maven基本使用

1. Maven前瞻 Maven官网:https://maven.apache.org/ Maven镜像:https://mvnrepository.com 1.1、Maven是什么 Maven是一个功能强大的项目管理和构建工具,可以帮助开发人员简化Java项目的构建过程。 在Maven中,使用一个名为 pom.…...

在Linux系统中配置GitHub的SSH公钥

在Linux系统中配置GitHub的SSH公钥,可以让您无需频繁输入密码即可与GitHub仓库进行交互,提高工作效率。以下是配置步骤: 第一步: 检查SSH密钥是否存在 首先,检查您的用户目录下的.ssh文件夹中是否已有SSH密钥。打开终端&#xff0…...

小酌消烦暑|人间正清欢

小暑是二十四节气之第十一个节气。暑,是炎热的意思,小暑为小热,还不十分热。小暑虽不是一年中最炎热的时节,但紧接着就是一年中最热的节气大暑,民间有"小暑大暑,上蒸下煮"之说。中国多地自小暑起…...

C语言结构体的相关知识

前言 从0开始记录我的学习历程,我会尽我所能,写出最最大白话的文章,希望能够帮到你,谢谢。 1.结构体类型的概念及定义 1.1、概念: 结构体是一种构造类型的数据结构, 是一种或多种基本类型或构造类型的数…...

RabbitMQ入门教程(精细版二带图)

目录 六 RabbitMQ工作模式 6.1Hello World简单模式 6.1.1 什么是简单模式 6.1.2 RabbitMQ管理界面操作 6.1.3 生产者代码 6.1.4 消费者代码 6.2 Work queues工作队列模式 6.2.1 什么是工作队列模式 6.2.2 RabbitMQ管理界面操作 6.2.3 生产者代码 6.2.4 消费者代码 …...

IO、零拷贝、多路复用、connection、池化

目录 一、IO 模型 二、什么是网络IO 三、什么是零拷贝 四、多路复用 五、java程序、mysql JDBC connection关系 六、connection怎么操作事务 七 、java里面的池化技术 八、线程池7个核心参数 九、线程的状态 一、IO 模型 BIO :同步阻塞io,单线程 内存上下…...

Lua 错误处理

Lua 错误处理 Lua是一种轻量级的编程语言,广泛用于游戏开发、脚本编写和其他应用程序中。在编程过程中,错误处理是一个重要的方面,它可以帮助开发者创建更健壮和可靠的程序。本文将详细介绍Lua中的错误处理机制。 错误类型 在Lua中&#x…...

二刷力扣——单调栈

739. 每日温度 单调栈应该从栈底到栈顶 是递减的。 找下一个更大的 ,用递减单调栈,就可以确定在栈里面的每个比当前元素i小的元素,下一个更大的就是这个i,然后弹出并记录;然后当前元素i入栈,仍然满足递减…...

elementPlus-vue3-ts表格单选和双选实现方式

记录在vue3、ts、element-plus环境下表格单选和多选的实现方式 单选 html部分 <el-table...reftaskTableRefselect"selectClick"... ><el-table-column type"selection" width"50" />... </el-table>ts部分 const taskTabl…...

Linux系统中卸载GitLab

在Linux系统中卸载GitLab&#xff0c;主要可以通过包管理器&#xff08;如apt、yum、rpm等&#xff09;来实现&#xff0c;但具体步骤可能会因GitLab的安装方式&#xff08;如使用包管理器安装、从源代码安装、使用Docker等&#xff09;和Linux发行版的不同而有所差异。以下是一…...

基于STM32F407ZG的FreeRTOS移植

1.从FreeRTOS官网中下载源码 2、简单分析FreeRTOS源码目录结构 2.1、简单分析FreeRTOS源码根目录 &#xff08;1&#xff09;Demo&#xff1a;是官方为一些单片机移植FreeRTOS的例程 &#xff08;2&#xff09;License&#xff1a;许可信息 &#xff08;3&#xff09;Sourc…...

【IT领域新生必看】Java编程中的神奇对比:深入理解`equals`与`==`的区别

文章目录 引言什么是操作符&#xff1f;基本数据类型的比较示例&#xff1a; 引用类型的比较示例&#xff1a; 什么是equals方法&#xff1f;equals方法的默认实现示例&#xff1a; 重写equals方法示例&#xff1a; equals与的区别比较内容不同示例&#xff1a; 使用场景不同示…...

WEBHTTP

目录 理解HTTP协议请求流程 1 1 Web基础 2 Hosts文件 1 1 2网页与HTML 2 HTML概述 1 1 3静态网页与动态网页 1.2HTTP协议 1 2 1 HTTP协议概述 1 2 2 HTTP方法 HTTP支持几种不同的请求命令&#xff0c;这些命令被称为HTTP方法(HTTP method 表1一3 HTTP方法 表1&#…...

nodejs 获取客服端ip,以及获取ip一直都是127.0.0.1的问题

一、问题描述 在做登录日志的时候想要获取客户端的ip, 网上查了一下 通过 req.headers[x-forwarded-for] || req.connection.remoteAddress; 获取&#xff0c; 结果获取了之后不管是开发环境&#xff0c;还是生产环境获取到的一直都是 127.0.0.1&#xff0c;这是因为在配置N…...

微软与OpenAI/谷歌与三星的AI交易受欧盟重点关注

近日&#xff0c;欧盟委员会主管竞争事务的副主席玛格丽特维斯塔格(Margrethe Vestager)在一次演讲中透露&#xff0c;欧盟反垄断监管机构将就微软与OpenAI的合作&#xff0c;以及谷歌与三星达成的AI协议寻求更多第三方意见。这意味着微软与 OpenAI、谷歌与三星的 AI 交易及合作…...

微信小程序毕业设计-学生实习与就业管理系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…...

spring boot 接口参数解密和返回值加密

spring boot 接口参数解密和返回值加密 开发背景简介安装配置yml 方式Bean 方式 试一下启动项目返回值加密参数解密body 参数解密param和form-data参数解密 总结 开发背景 虽然使用 HTTPS 已经可以基本保证传输数据的安全性&#xff0c;但是很多国企、医疗、股票项目等仍然要求…...

C语言自定义类型——联合体、枚举

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、联合体&#xff08;一&#xff09;、联合体的声明&#xff08;二&#xff09;、联合体的特点&#xff08;三&#xff09;、联合体大小的计算&#xff01;&a…...

【trition-server】pytorch 文档:使用 Triton 提供 Torch-TensorRT 模型

Serving a Torch-TensorRT model with Triton pytorch 的官方文档: Serving a Torch-TensorRT model with Triton 在有关机器学习基础设施的讨论中,优化和部署是密不可分的。一旦完成网络级优化以获得最大性能,下一步就是部署它。 然而,提供这种优化模型也有其自身的一系列…...

wps 表格如何实现vlookup高级模糊搜索

一、VLOOKUP 模糊搜索 在 WPS 表格中&#xff0c;可以通过使用 VLOOKUP 函数和通配符来实现高级模糊搜索。这里有一个具体的示例来帮助你理解如何进行这些操作。 示例&#xff1a;实现 VLOOKUP 高级模糊搜索 假设我们有以下数据集&#xff1a; AB产品编号产品名称001苹果00…...

第一天(点亮led灯+led灯闪烁)——Arduino uno R3 学习之旅

​ 常识: 一般智能手机的额定工作电流大约为200mA Arduino Uno板上I/0(输入/输出)引脚最大输出电流为40 mA Uno板控制器总的输出电流为200 mA 点亮LED灯 发光二极管介绍 发光二极管(Light Emitting Diode&#xff0c;简称LED)是一种能够将电能转化为光能的固态的半导体器件…...

【C++题解】1561. 买木头

问题&#xff1a;1561. 买木头 类型&#xff1a;省赛、数组问题、二分答案、贪心、2015江苏省青少年信息学奥林匹克竞赛复赛 题目描述&#xff1a; 有 n 个木材供应商&#xff0c;每个供货商有长度相同一定数量的木头。长木头可以锯短&#xff0c;但短木头不能接长。有一个客…...

解决android native包webview,webview中的请求blocked by CORS policy

在stack overflow查&#xff0c;差不多查到的都是些webView.getSettings().setxxx&#xff0c;没用。在github上找别的类似的android native包webview运行pwa的项目&#xff0c;把它们的webView.getSettings().setxxx全搬过来&#xff0c;写了有一页多&#xff0c;一个有用的都…...

链篦机回转窑球团生产工艺

生球在回转窑氧化焙烧&#xff0c;回转窑头部设有燃烧器&#xff0c;燃料可以采用气体、固体、液体。 来自环冷机一冷却段的高温废气作为二次风进入窑内参与燃烧&#xff0c;烧成成品球进入环冷机。 环冷机采用鼓风冷却&#xff0c;热风风箱分为四段&#xff1a; 一段气体引至…...

查看电脑ip地址快捷键是什么?是哪个

在网络世界中&#xff0c;IP地址是每个网络设备的唯一标识&#xff0c;无论是我们的电脑、手机还是其他联网设备&#xff0c;都需要一个独特的IP地址来进行通讯。在日常生活和工作中&#xff0c;我们有时需要查看电脑的IP地址&#xff0c;以便进行网络设置、故障排查或远程连接…...

面试专区|【54道Spring Cloud高频题整理(附答案背诵版)】

什么是Spring Cloud&#xff1f; Spring Cloud是一个基于Spring Boot的开源框架&#xff0c;它提供了在分布式系统中集成各种服务治理功能的工具&#xff0c;如配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态等。其主要目…...

Shopee(虾皮)怎么获取流量?

店铺流量的高低会直接关联到卖家店铺单量&#xff0c;也关系到一个店铺的营业情况和利润&#xff0c;那么Shopee的流量从哪里来呢&#xff1f; Shopee的平台流量可分为五个部分&#xff1a; 1.自然流量 2.关键字广告流量 3.平台活动流量 4.营销流量 5.粉丝流量 怎么提升…...

Java启动虚拟机默认字符集编码

-Dfile.encodingUTF-8 java程序启动默认字符集编码参数 // 这里会创建一个Charset.defaultCharset().name()的流&#xff0c;在Windows命令行窗口启动&#xff0c;会出现字符编码为GBK的情况 // 导致乱码输入、输出都会有影响 // 解决办法流的读取指定编码new InputStreamRead…...

【单片机编程模式】状态机编程

状态机编程是一种编程模式&#xff0c;它基于有限状态机&#xff08;Finite State Machine&#xff0c;简称FSM&#xff09;的概念。以下是状态机编程的清晰解释&#xff0c;分点表示和归纳&#xff1a; 基本概念&#xff1a; 状态机是一个有向图形&#xff0c;由一组节点&…...