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

DeepSeek引领目标检测新趋势:如何通过知识蒸馏优化模型性能

目录

一、知识蒸馏是什么?

二、知识蒸馏在目标检测中的重要性

提升实时性

跨任务迁移学习

三、如何使用知识蒸馏优化目标检测?

训练教师模型

生成软标签

训练学生模型

调节温度参数

多教师蒸馏(可选)

四、案例分享

定义教室模型和学生模型

定义分类损失函数

模拟数据和初始化模型

训练过程:计算追加并损失更新学生模型

五、Coovally AI模型训练与应用平台 

总结


DeepSeek的爆火不仅在国内引发广泛关注,也在国际上掀起热议。这款功能强大的AI工具迅速成为焦点,许多业内人士都在讨论其潜力和应用。随着DeepSeek的走红,知识蒸馏(Knowledge Distillation)这一经典技术也重回视野。DeepSeek团队通过创新的知识蒸馏技术,成功将DeepSeek-R1的推理能力迁移到更轻量的Qwen系列模型上,为模型的轻量化部署提供了重要参考。这一曾在深度学习领域大放异彩的技术,如今在目标检测等任务中再次展现出巨大潜力。

图片

那么,知识蒸馏到底是什么?它如何能在目标检测领域帮助我们提高效率,降低计算成本呢?让我们一起探讨。


一、知识蒸馏是什么?

知识蒸馏是一种通过训练“学生模型”模仿“教师模型”行为的技术。简单来说,它通过将大模型的“知识”传递给一个较小、计算量更低的模型,让后者在保持高精度的同时,减少计算资源的消耗。在目标检测任务中,这种技术尤其重要,因为目标检测通常需要在精度和速度之间找到平衡。

知识蒸馏的本质是通过迁移学习实现模型压缩,其数学基础可表述为:

图片

其中:

Lce:学生模型预测结果与真实标签的交叉熵损失

Lkl :教师与学生输出分布的KL散度损失

T:温度参数(Temperature),用于调节概率分布平滑度

α,β:权重系数(通常α+β=1)

screenshot_2025-02-20_10-32-50.png

就像学生通过模仿老师的思路来掌握知识一样,学生模型虽然资源有限,但通过模仿强大的教师模型,仍然能在精度和推理速度上做出出色表现。这在需要实时推理的目标检测应用中至关重要。


二、知识蒸馏在目标检测中的重要性

目标检测需要处理复杂图像信息,并对多个目标进行精确定位和分类。传统模型(如YOLOv4、Faster R-CNN)精度高但计算量大,难以在移动或边缘设备上部署。通过知识蒸馏,轻量级学生模型(如MobileNet、YOLOv5)能在保持精度的同时,显著减小模型体积和推理时间,适合资源有限的设备。

  • 提升实时性

在视频监控、自动驾驶等场景中,实时性至关重要。知识蒸馏将教师模型的高精度传递给轻量级学生模型,大幅提升推理速度,同时几乎不损失精度。

  • 跨任务迁移学习

教师模型可以是特定领域(如人脸、车辆检测)的专用模型,学生模型则通过蒸馏学习,迁移到其他任务(如行人检测),提升泛化能力。


三、如何使用知识蒸馏优化目标检测?

screenshot_2025-02-20_10-28-47.png

为实现知识蒸馏在目标检测中的应用,使用基于响应的蒸馏(Response-based Distillation),也叫做“软标签蒸馏”。需要以下几个步骤:

  • 训练教师模型

使用大规模、高精度的模型(如ResNet、Faster R-CNN)作为教师模型,生成高质量的检测结果。

  • 生成软标签

教师模型通过Softmax输出概率分布(软标签),包含类别间的潜在关系(如空间位置、类别模糊性),帮助学生模型学习更丰富的特征。

  • 训练学生模型

学生模型模仿教师模型,结合硬标签和软标签进行训练,使用KL散度衡量差异,在保持精度的同时减少计算量。

  • 调节温度参数

提高Softmax温度,使教师模型的输出更平滑,帮助学生模型捕捉更多细节(如空间信息和类别相关性)。

  • 多教师蒸馏(可选)

学生模型可从多个教师模型中学习,融合不同检测能力,提升复杂场景下的表现。


四、案例分享

在实际的目标检测应用中,YOLOv8尽管表现出了很强的能力,但仍面临如下挑战:

图片

  • 参数量:YOLOv8相较于YOLOv4和其他模型,参数量有所减少(约40M),但对于一些低功耗设备或移动设备而言,仍然显得过于庞大。因此,需要进一步压缩参数量,以满足实际需求,尤其是在资源受限的设备上。

  • 推理速度:尽管YOLOv8在GPU上的推理速度已达到60 FPS,但在CPU环境下,特别是低端设备上,其速度可能无法达到实时处理的需求。为了更好地适应这些设备,需要进一步优化推理速度。

  • 能耗:YOLOv8的能耗为25W,对于边缘设备或移动设备而言,仍然偏高。因此,优化能耗成为了进一步提升YOLOv8适用性的关键。

针对上述挑战,蒸馏技术提供了有效的解决方案。通过知识迁移,蒸馏技术能够将大模型的知识压缩到小模型中,从而在保持模型性能的同时,降低模型的复杂性、提升推理速度并减少能耗。

在YOLOv8的优化过程中,利用分类提升来提升学生模型的精度并减少计算量。以下是具体实现步骤:

  • 定义教室模型和学生模型

首先,我们定义教师模型(需要更大版本的YOLOv8)和学生模型(更小的版本)。这两者结构相似,但学生模型的参数很少。这里我们用简单的全连接层模拟YOLOv8模型。


import torch
import torch.nn as nn# 教师模型:较大版本的YOLOv8,假设输出10个类别
class TeacherModel(nn.Module):def __init__(self):super(TeacherModel, self).__init__()self.fc = nn.Linear(256, 10)  # 假设10个类别def forward(self, x):return self.fc(x)# 学生模型:较小版本的YOLOv8,结构与教师模型相似,但参数量较少
class StudentModel(nn.Module):def __init__(self):super(StudentModel, self).__init__()self.fc = nn.Linear(256, 10)  # 10个类别def forward(self, x):return self.fc(x)
  • 定义分类损失函数

在分类中,我们使用KL散度来最小化学生模型和教师模型输出的方差,同时使用交叉熵损失来确保学生模型能够正确预测实际标签。总损失是这两部分的加权和。


import torch.nn.functional as F# 分类蒸馏损失函数
def distillation_loss(y_true, y_pred, teacher_pred, T=3.0, alpha=0.7):# KL散度损失:衡量学生模型输出与教师模型软标签之间的差异soft_loss = nn.KLDivLoss()(F.log_softmax(y_pred / T, dim=1), F.softmax(teacher_pred / T, dim=1)) * (T * T)# 交叉熵损失:学生模型输出与真实标签之间的差异hard_loss = nn.CrossEntropyLoss()(y_pred, y_true)# 总损失:软标签损失和硬标签损失的加权和return alpha * soft_loss + (1. - alpha) * hard_loss
  • KL散度损失:通过温度系数T调节教师模型输出的软标签,使学生模型可以更好地学习教师模型的知识。

  • 交叉熵损失:计算学生模型与真实标签之间的图纸,确保学生模型对实际类别有较好的预测能力。

  • 总损失:alpha为了选择平衡的权重,通常会alpha增加软标签的影响力。

  • 模拟数据和初始化模型

接下来,我们输入模拟数据和目标标签,并初始化教师和学生模型。


# 初始化教师模型和学生模型
teacher_model = TeacherModel()
student_model = StudentModel()# 优化器
optimizer = torch.optim.Adam(student_model.parameters(), lr=0.001)# 模拟输入数据和目标标签
input_data = torch.randn(32, 256)  # 假设32个样本,每个样本256维
target_labels = torch.randint(0, 10, (32,))  # 随机生成10个类别的真实标签

input_data:32个样本,每个样本有256个特征。

target_labels:真实标签,属于10个类别之一。

  • 训练过程:计算追加并损失更新学生模型

在训练过程中,教师模型不参与逆向传播训练,只用于生成软标签。学生模型根据教师模型的输出进行优化。每个步骤包括以下几个操作:

  1. 计算教师模型和学生模型的输出。

  2. 计算财务损失。

  3. 逆向传播并更新学生模型参数。


# 训练步骤
for epoch in range(10):teacher_model.eval()  # 教师模型不参与梯度计算student_model.train()  # 学生模型参与训练optimizer.zero_grad()  # 清空优化器的梯度# 获取教师模型和学生模型的输出teacher_output = teacher_model(input_data)  # 教师模型输出student_output = student_model(input_data)  # 学生模型输出# 计算蒸馏损失loss = distillation_loss(target_labels, student_output, teacher_output)# 反向传播并更新学生模型参数loss.backward()optimizer.step()print(f'Epoch [{epoch+1}/10], Loss: {loss.item():.4f}')
  • teacher_model.eval():确保教师模型不参与逆向传播,只进行推理。

  • optimizer.zero_grad():清空上一步计算的渐变。

  • loss.backward():根据损失损失计算梯度。

  • optimizer.step():更新学生模型的参数。

以上采用了分类来优化YOLOv8模型,确保学生模型能够在减少计算量的同时,保持较高的精度。这种方法是上述平衡精度和推理速度的有效手段,尤其适用于对计算资源有严格要求的应用场景。

除此之外还可以通过定位蒸馏、特征蒸馏等方法,更好地平衡模型的精度和速度。


五、Coovally AI模型训练与应用平台 

如果你也想使用模型进行知识蒸馏,Coovally平台满足你的要求!

Coovally平台整合了国内外开源社区1000+模型算法各类公开识别数据集,无论是YOLO系列模型还是MMDetection框架下的模型算法,平台全部包含,均可一键下载助力实验研究与产业应用。

图片

并且,在Coovally平台上,无需配置环境、修改配置文件等繁琐操作,一键另存为我的模型,上传数据集,即可使用YOLO、Faster RCNN等热门模型进行训练与结果预测,全程高速零代码!而且模型还可分享与下载,满足你的实验研究与产业应用。

图片


总结

知识蒸馏是一种强大的技术,它通过从大型复杂模型中迁移知识来提高小型模型的性能。它已被证明在各种应用中都很有效,包括计算机视觉、自然语言处理和语音识别。

随着移动端、边缘计算等领域的快速发展,知识蒸馏将在目标检测等任务中发挥越来越重要的作用。未来,随着技术的不断成熟,知识蒸馏将为更多智能设备和实时系统提供支持,推动计算机视觉技术向更高效、更智能的方向发展。

相关文章:

DeepSeek引领目标检测新趋势:如何通过知识蒸馏优化模型性能

目录 一、知识蒸馏是什么? 二、知识蒸馏在目标检测中的重要性 提升实时性 跨任务迁移学习 三、如何使用知识蒸馏优化目标检测? 训练教师模型 生成软标签 训练学生模型 调节温度参数 多教师蒸馏(可选) 四、案例分享 定…...

“深入解析 SQL Server 子查询:从基础到应用”

目录 引言什么是子查询? 子查询的定义子查询的类型 子查询的使用 标量子查询多行子查询多列子查询相关子查询 子查询的性能优化子查询的实际案例总结 引言 在 SQL Server 中,子查询是一种强大的工具,允许我们在一个查询中嵌套另一个查询&am…...

375_C++_cloud手机推送,添加人脸告警信息到任务队列中,UploadAlarmPush是典型的工厂模式应用,为什么使用工厂模式完成这部分代码

一:AlarmFaceInfo的应用 让我帮你解析这个lambda表达式的实现: // ...................... .h ...........................// struct RsMsgPushTask_S : public Task{AlarmType_E mainAlarmType;unsigned int subAlarmType;DateTime alarmTime...

Vue进阶之AI智能助手项目(二)——项目评审与架构设计

AI智能助手项目 基于Vue的最佳实践main.tsApp.vue主应用给子应用下发功能语言language,theme设置及appStore状态管理状态管理router路由index.tspermission.ts基于Vue的最佳实践 src目录概览 api 接口,基于接口可以做 状态处理,interceptorassets/public 静态资源component…...

LambdaQueryWrapper在Mybatis-plus中的应用

LambdaQueryWrapper 是 MyBatis-Plus 中非常强大的工具,用于构建类型安全的查询条件。它利用 Java 的 Lambda 表达式,使得查询条件的编写更加简洁和直观。 public R getAppArticleCategoryPage(ParameterObject Page page,ParameterObject AppArticleCa…...

DeepSeek AI人工智能该如何学习?

人工智能(Artificial Intelligence, AI)是当今科技领域的热门话题,它涵盖了机器学习、深度学习、自然语言处理、计算机视觉等多个子领域。 作为中国科技发展的核心方向之一,AI在国家战略规划中占据了重要地位,特别是在…...

element ui的select选择框

我们首先先试一下&#xff0c;这个东西怎么玩的 <el-select v-model"select" change"changeSelect"><el-option value"香蕉"></el-option><el-option value"菠萝"></el-option><el-option value&quo…...

解决Value of type ‘AVCodecContext‘ has no member ‘channels‘ 的问题

在 FFmpeg 7.1 中,AVCodecContext 的 channels 和 channel_layout 字段已经被移除,取而代之的是 AVChannelLayout 结构。因此,代码需要进行调整以适应新的 API。 以下是如何正确设置 AVCodecContext 和 AVCodecParameters 的方法。 1. 问题分析 在 FFmpeg 7.1 中: AVCode…...

【STM32H743IIT6】STM32H7的ADC时钟频率设置问题 —— 网上大多文章未注意到的要点!

前言 我使用的是定时器触发ADC采样。最近在想达到ADC的最高采样率的时候&#xff0c;发现一直却卡在1Msps上不去&#xff0c;直到在硬汉嵌入式的论坛里才发现了答案&#xff1a;[ADC] STM32H743/H750的Y版和V版芯片ADC的主频区别 这篇文章就详细的讲一下这个问题&#xff0c;这…...

GGUF 文件格式全解析

在机器学习领域&#xff0c;模型的存储和部署一直是关键环节。随着大语言模型 (LLM) 的广泛应用&#xff0c;如何高效地存储和加载这些复杂的模型成为一个亟待解决的问题。GGUF&#xff08;GGML Universal Format&#xff09;作为一种新兴的二进制文件格式&#xff0c;旨在解决…...

剑指offer - 面试题11 旋转数组的最小数字

题目链接&#xff1a;旋转数组的最小数字 第一种&#xff1a;正确写法&#xff08;num[m]和nums[r]比较&#xff09; class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param nums int整型v…...

JNA基础使用,调用C++返回结构体

C端 test.h文件 #pragma oncestruct RespInfo {char* path;char* content;int statusCode; };extern "C" { DLL_EXPORT void readInfo(char* path, RespInfo* respInfo); }test.cpp文件 #include "test.h"void readInfo(char* path, RespInfo* respInfo…...

Typora的Github主题美化

[!note] Typora的Github主题进行一些自己喜欢的修改&#xff0c;主要包括&#xff1a;字体、代码块、表格样式 美化前&#xff1a; 美化后&#xff1a; 一、字体更换 之前便看上了「中文网字计划」的「朱雀仿宋」字体&#xff0c;于是一直想更换字体&#xff0c;奈何自己拖延症…...

计算机网络模型-TCP/IP协议簇

目录 1. OSI 参考模型 2. TCP/IP 5层协议簇 3. 数据传输过程 4. OSI模型vsTCP/IP模型 5. 工作设备和协议 1. OSI 参考模型 OSI 参考模型 OSI 参考模型 7层参考协议&#xff1a;同层使用相同协议&#xff0c;下层为上层提供服务 再往每一层填网络协议的时候&#xff0c;表…...

ros进阶——强化学习倒立摆的PG算法实现

项目地址&#xff1a;https://github.com/chan-yuu/cartpole_ws git clone https://github.com/chan-yuu/cartpole_ws依赖安装&#xff1a; xterm等 python3.8 torch等上一节中我们定义了很多ros工具&#xff0c;在这里我们将进行验证。 对于launch_robot_test.py来说&#x…...

BUU41 [GYCTF2020]FlaskApp1【SSTI】

题目&#xff1a; 加密处没啥事&#xff0c;但是解密的地方提交{{7*7}}就会返回报错界面&#xff0c;顺便把代码也爆出来了 text_decode base64.b64decode(text.encode()) 先将字符串 text编码为字节对象&#xff0c;然后使用 base64.b64decode 函数对这个字节对象进行 Base…...

pandas读取数据

pandas读取数据 导入需要的包 import pandas as pd import numpy as np import warnings import oswarnings.filterwarnings(ignore)读取纯文本文件 pd.read_csv 使用默认的标题行、逗号分隔符 import pandas as pd fpath "./datas/ml-latest-small/ratings.csv" 使…...

React + TypeScript 全栈开发最佳实践

React TypeScript 全栈开发最佳实践 一、环境搭建与项目初始化 node.js和npm的安装请参考我的文章。 1.1 脚手架选择与工程创建 # 使用Vite 5.x创建ReactTS项目&#xff08;2025年主流方案&#xff09; npx create-vitelatest my-app --template react-ts cd my-app npm in…...

RK3399 Android7双WiFi功能实现

在Android系统里面,WiFi功能STA和AP模式是互斥的,而现在越来越多的WiFi模组或者芯片能支持并发模式,即STA+P2P、STA+STA或者STA+AP模式组合。不管是单WiFi并发,还是双WiFi模组,想让STA和AP两个模式同时运行,对于Android7来说,是需要修改到系统源码,才能让APP层用Androi…...

前端包管理工具进化论:npm vs yarn vs pnpm 深度对比

前端包管理工具进化论&#xff1a;npm vs yarn vs pnpm 深度对比 一、工具定位与核心差异二、功能特性对比三、优缺点深度解析四、性能实测对比&#xff08;示例数据&#xff09;五、选型建议六、未来趋势 一、工具定位与核心差异 npm (Node Package Manager) Node.js 官方捆绑…...

绕过information_schema与order by注入以及seacsmv9注入

一:information_schema绕过 1,、sys数据库包含了许多视图&#xff0c;这些视图整合了来自information_schema和performance_schema的数据&#xff0c;攻击者可以利用这些视图来获取数据库结构信息。 -- 获取所有数据库名 SELECT DISTINCT table_schema FROM sys.schema_table_…...

在LangFlow中集成OpenAI Compatible API类型的大语言模型

一、背景与核心价值 从Dify换到这个langflow真的时各种的不适应啊。 就比如这个OpenAI Compatible API,这不应该是基本操作嘛? 算了,服了,习惯了就好了。咱闲言少叙,正片开始: LangFlow作为LangChain的可视化开发工具,其最大优势在于无需编写代码即可构建复杂的大模型…...

PING命令TTL解析

在 ping 命令中&#xff0c;TTL&#xff08;Time to Live&#xff0c;生存时间&#xff09; 是 IP 数据包的核心字段之一&#xff0c;用于控制数据包在网络中的生命周期。以下是针对 TTL 的简明解析&#xff1a; 1. TTL 的核心作用 防循环机制&#xff1a;TTL 是一个计数器&a…...

Hadoop 基础原理

Hadoop 基础原理 基本介绍Hadoop 的必要性Hadoop 核心组件Hadoop 生态系统中的附加组件 HDFSHDFS 集群架构HDFS 读写流程HDFS 写流程HDFS 读流程 NameNode 持久化机制 MapReduce底层原理示例 Hadoop 是一个由 Apache 基金会开发的分布式系统基础架构&#xff0c;主要解决海量数…...

蓝桥杯单片机基础部分——1.5基础模块代码升级

前言 之前的蓝桥杯单片机基础部分——1、基础模块代码发现有的同学不太会使&#xff0c;这样的话就给他们都封装一下函数&#xff0c;额外封装一下蜂鸣器和继电器&#xff0c;这就全了&#xff0c;到时候的逻辑只要没问题就没啥事了 LED灯模块 现在&#xff0c;给这里封装一个…...

PyTorch常用函数总结(持续更新)

本文主要记录自己在用 PyTorch复现经典模型 过程中遇到的一些函数及用法&#xff0c;以期对 常见PyTorch函数 更加熟练~ 官方Docs&#xff1a;PyTorch documentation — PyTorch 2.6 documentation 目录 数据层面 torch.sign(tensor) torch.tensor(np.eye(3)[y]) torch.on…...

Docker 常用命令大全

一、启动类 1. 启动 docker systemctl start docker 2. 关闭 docker systemctl stop docker 3. 重新启动 docker systemctl restart docker 4. docker 设置自启动 systemctl enable docker 5. 查看 docker 运行状态 systemctl status docker 6. 查看 docker 版本号等信息 docke…...

单片机裸机编程:状态机与其他高效编程框架

在单片机裸机编程中&#xff0c;状态机是一种非常强大的工具&#xff0c;能够有效管理复杂的逻辑和任务切换。除了状态机&#xff0c;还有其他几种编程模式可以在不使用 RTOS 的情况下实现高效的程序设计。以下是一些常见的方法&#xff1a; 1. 状态机编程 状态机通过定义系统…...

TCP,http,WebSocket

TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;和HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;都是网络通信中的重要协议&#xff0c;但它们在网络协议栈的不同层次上工作&#xff0c;各自负责不同…...

gotool在线工具集

1. 包含各种 sql 处理 2. 包含 json 处理 3. 包含 图片处理 4. 跨平台传输 gotool...

HBuilder X中,uni-app、js的延时操作及定时器

完整源码下载 https://download.csdn.net/download/luckyext/90430165 在HBuilder X中&#xff0c;uni-app、js的延时操作及定时器可以用setTimeout和setInterval这两个函数来实现。 1.setTimeout函数用于在指定的毫秒数后执行一次函数。 例如&#xff0c; 2秒后弹出一个提…...

ow rank decomposition如何用于矩阵的分解

1. 什么是矩阵分解和低秩分解 矩阵分解是将一个矩阵表示为若干结构更简单或具有特定性质的矩阵的组合或乘积的过程。低秩分解&#xff08;Low Rank Decomposition&#xff09;是其中一种方法&#xff0c;旨在将原矩阵近似为两个或多个秩较低的矩阵的乘积&#xff0c;从而降低复…...

2.3做logstash实验

收集apache日志输出到es 在真实服务器安装logstash&#xff0c;httpd systemctl start httpd echo 666 > /var/www/html/index.html cat /usr/local/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/httpd #系统内置变量 cd /usr/local/…...

JAVAweb之过滤器,监听器

文章目录 过滤器认识生命周期FilterConfigFilterChain过滤器执行顺序应用场景代码 监听器认识ServletContextListenerHttpSessionListenerServletRequestListener代码 过滤器 认识 Java web三大组件之一&#xff0c;与Servlet相似。过滤器是用来拦截请求的&#xff0c;而非处…...

IO进程 day05

IO进程 day05 9. 进程9. 9. 守护进程守护进程的特点守护进程创建步骤 10. 线程10.1. 线程的概念10.2. 进程和线程的区别10.2. 线程资源10.3. 线程的函数接口1. pthread_create-创建线程线程函数和普通函数的区别 2. pthread_exit3.线程资源回收函数join和detach的区别 获取线程…...

Mac 散热救星:Macs Fan Control,让你的苹果电脑“冷静”又安静!

各位果粉们&#xff0c;是不是经常遇到这样的烦恼&#xff1a;用着用着电脑&#xff0c;突然就发热卡顿&#xff0c;风扇狂转噪音大得跟拖拉机似的&#xff1f;别担心&#xff0c;今天给大家安利一款超实用的软件 —— Macs Fan Control&#xff0c;它可是让苹果电脑“冷静”又…...

警惕将“数据标注”岗位包装为“大数据工程师”充数

数据标注&#xff08;Data Annotation&#xff09;是人工智能和大数据产业链中的基础性工作&#xff0c;其核心任务是为原始数据添加标签或注释&#xff0c;使计算机能够识别和学习数据中的特征&#xff0c;从而训练出更精准的机器学习或深度学习模型。以下是具体解析及它与“大…...

C语言 —— 此去经年 应是良辰好景虚设 - 函数

目录 1. 函数的概念 1.1 库函数 1.2 自定义函数 2. 形参和实参 3. return 语句 4. 数组做函数参数 5. 嵌套调用和链式访问 5.1 嵌套调用 5.2 链式访问 6. 函数的声明和定义 6.1 单个文件 6.2 多个文件 7. static 和 extern 7.1 static 修饰局部变量 7.2 static 修…...

最新前端框架选型对比与建议(React/Vue/Svelte/Angular)

前端框架选型对比与建议&#xff08;React/Vue/Svelte/Angular&#xff09; 一、核心框架技术特性对比&#xff08;基于最新版本&#xff09; 维度React 19 25Vue 3.5 12Svelte 5 25Angular 19 5核心理念函数式编程、JSX语法、虚拟DOM渐进式框架、组合式API、模板语法编译时框…...

AOP基础-01.快速入门

一.AOP 对于统计每一个业务方法的耗时这一操作&#xff0c;如果再业务层的每一个方法前获取方法运行的开始时间&#xff0c;方法结束获取结束时间&#xff0c;然后计算执行耗时&#xff0c;那这样就太繁琐了。能不能定义一个模板方法&#xff0c;使得该方法能够在业务层的方法执…...

为什么MySQL选择使用B+树作为索引结构

B树是MySQL最常见的索引结构&#xff0c;大部分存储引擎都支持 B 树索引。 相对于其他竞争力强的数据结构&#xff0c;B树都有战胜它们成为大多时候MySQL选择使用索引结构的理由&#xff1a; 第一个强有力的竞争对手是B树&#xff1a; 1. B树每个节点都存储了完整的数据&…...

基于SSA-KELM-Adaboost(麻雀搜索优化的极限学习机自适应提升算法)的多输入单输出回归预测【MATLAB】

SSA-KELM-Adaboost 是一种结合了麻雀搜索算法&#xff08;SSA&#xff09;​、核极限学习机&#xff08;KELM&#xff09;​和Adaboost集成学习的复合回归预测模型。该模型通过参数优化与集成策略提升预测精度和鲁棒性&#xff0c;适用于复杂非线性回归问题。以下是其核心理论与…...

分享些常用的工具类

一、照片 1、Unsplash&#xff1a;https://unsplash.com/ 2、pixabay&#xff1a;https://pixabay.com/zh/ 二、壁纸 1、Wallpaper Engine 2、wallhaven&#xff1a;https://wallhaven.cc/ 3、极简壁纸&#xff1a;https://bz.zzzmh.cn/ 三、AI语音 1、微软Azure项目&…...

Apache SeaTunnel 构建实时数据同步管道(最新版)

文章作者 王海林 白鲸开源 数据集成引擎研发 Apache SeaTunnel Committer & PMC Member&#xff0c;Apache SkyWalking Committer&#xff0c;多年平台研发经验&#xff0c;目前专注于数据集成领域。 导读 在当今数字化快速发展的时代&#xff0c;数据已然成为企业决策…...

96.【C语言】解析预处理(4)

目录 5.条件编译 #ifdef 其他条件编译指令 #if 多个分支的条件编译 判断是否被定义 嵌套指令 6.头文件的包含方式 本地文件包含 库文件包含 嵌套文件包含 问题:头文件的重复包含 解决问题:避免头文件的重复包含 方法1:#pragma once 方法2:#ifndef、#define和#en…...

linux用户操作与权限

Linux的root用户 root用户&#xff08;超级管理员&#xff09; root用户拥有最大的系统操作权限。 普通用户的权限一般在其home目录内是不受限的&#xff0c;但是出来自己的home目录&#xff0c;仅有只读和执行权限。 su su命令切换到root账号 语法&#xff1a;su [-] [用户…...

Proof Beyond Boundaries: Hong Kong zkNight 活动精彩回顾

2 月 19 日&#xff0c;随着夜幕的降临&#xff0c;一场汇聚行业智慧与前瞻视野的高端主题活动 ——Proof Beyond Boundaries: Hong Kong zkNight&#xff0c;在香港铜锣湾 Vpoint 的 6/F 盛大启幕。本次活动由 ZEROBASE 主办&#xff0c;Techub News 承办&#xff0c;吸引了众…...

QT零基础学习之路(五)--自定义信号和槽

源码地址&#xff08;优先更新&#xff09;&#xff1a;点击此处...

Pytorch实现之GIEGAN(生成器信息增强GAN)训练自己的数据集

简介 简介:在训练数据样本之前首先利用VAE来推断潜在空间中不同类的分布,用于后续的训练,并使用它来初始化GAN。与ACGAN和BAGAN不同的是,提出的GIEGAN有一个分类器结构,这个分类器主要判断生成的图像或者样本图像属于哪个类,而鉴别器仅判断图像是来自于生成器还是真实样…...

HTTP 动态报错码的原因和解决方法

目录 1xx&#xff08;信息性状态码&#xff09; 2xx&#xff08;成功状态码&#xff09; 3xx&#xff08;重定向状态码&#xff09; 4xx&#xff08;客户端错误状态码&#xff09; 5xx&#xff08;服务器错误状态码&#xff09; 参考文章 以下是 HTTP 动态报错码的常见原…...