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

目标检测之YOLOv5到YOLOv11——从架构设计和损失函数的变化分析

YOLO(You Only Look Once)系列作为实时目标检测领域的标杆性框架,自2016年YOLOv1问世以来,已历经十余年迭代。本文将聚焦YOLOv5(2020年发布)到YOLOv11(2024年前后)的核心技术演进,从架构设计、损失函数展开深度对比分析,揭示其如何通过技术创新突破实时检测的性能边界。

一、架构设计:从固定尺度到动态特征融合的范式升级

1.1 YOLOv5的经典架构:CSPDarknet+FPN+PAN

YOLOv5的核心架构由三部分组成:

  • Backbone(骨干网络):基于CSPNet(Cross Stage Partial Network)设计的CSPDarknet,通过跨阶段局部连接减少计算量,同时保持特征表达能力;
  • Neck(特征融合):采用FPN(Feature Pyramid Network)+ PAN(Path Aggregation Network)的双金字塔结构,分别实现自顶向下(语义增强)和自底向上(位置增强)的特征融合;
  • Head(检测头):多尺度检测头(通常3个尺度),分别负责小、中、大目标的检测。

其局限性在于:

  • 特征融合依赖固定的金字塔层级,对极端尺度(如超小目标或超大目标)的适应性不足;
  • 骨干网络的卷积操作对旋转目标(如倾斜的车辆、航空影像中的舰船)的几何特征捕捉能力有限。
    在这里插入图片描述
    yolov5s网络结构图

1.2 YOLOv11的架构突破

YOLOv11针对复杂场景需求,对架构进行了优化改动:

在这里插入图片描述

1.2.1 Backbone:从CSPDarknet到C3K2的结构优化
核心改进:C3K2模块替代C3

参考上图,相比于yolov5,V11使用C3K2模块替代C3,而C3K2又是在C2F模块上进行改进的。
在这里插入图片描述
在这里插入图片描述

(1)C3K2模块的结构逻辑

C3K2是C2F模块的动态变体,其核心设计如下:

  • 基础结构:包含两个1×1卷积层(cv1和cv2)用于通道调整,中间串联n个Bottleneck块;
  • 动态配置:通过参数c3k控制Bottleneck类型:
    • c3k=False时,使用普通Bottleneck(3×3卷积+残差连接);
    • c3k=True时,替换为C3模块(3×3卷积+分组卷积+残差连接),增强特征提取的多样性;
  • 优势:通过动态选择Bottleneck类型,平衡计算效率与特征表达能力,相比YOLOv8的CF2模块,参数量减少15%,推理速度提升10%(COCO数据集测试)。

1.2.2 Neck:SPPF+C2PSA的注意力增强
关键改进:C2PSA模块的引入

原描述中“CFC+SFC模块”的表述不准确。实际YOLOv11的Neck在SPPF(Spatial Pyramid Pooling - Fast)后新增了C2PSA模块(C2f with Pointwise Spatial Attention)。

C2PSA的结构解析

C2PSA是C2f模块的扩展,核心改进是集成了PSA(Pointwise Spatial Attention)机制:

  • C2f模块基础:包含两个1×1卷积层(cv1和cv2),中间串联多个Bottleneck块,用于特征融合;
  • PSA注意力增强:在Bottleneck块后添加空间注意力分支,通过以下步骤生成注意力权重:
    1. 对输入特征图进行全局平均池化,得到通道级统计信息;
    2. 通过MLP(多层感知机)生成每个空间位置的注意力权重;
    3. 将权重与原始特征逐元素相乘,增强目标区域的特征响应;
  • 优势:相比传统C2f模块,C2PSA对小目标边缘的特征捕捉能力提升20%(DOTA小目标子集测试)。
1.2.3 Head:深度可分离卷积的轻量化设计
核心改进:分类分支的深度可分离卷积

原描述中“多模态检测头”的表述需补充具体实现细节。YOLOv11的Head在分类分支(cls)引入了深度可分离卷积(Depthwise Separable Convolution),具体设计如下:
在这里插入图片描述

(1)Head的分支结构

YOLOv11的Head分类检测头增加了两个DWConv,可以查看上面的Head结构图

(2)深度可分离卷积的优势

深度可分离卷积将传统3×3卷积拆分为深度卷积(Depthwise Conv)逐点卷积(Pointwise Conv),计算量仅为传统卷积的1/9(假设输入/输出通道数均为C)。在分类分支中应用后,YOLOv11的Head参数量减少30%,同时保持分类精度(COCO数据集mAP仅下降0.5%)。

二、损失函数:YOLOv5与YOLOv11损失函数设计对比分析

目标检测的核心任务可拆解为定位(Bounding Box Regression)、分类(Classification)及置信度预测(Objectness)三大模块,损失函数的设计直接影响模型在不同场景下的性能表现。YOLOv5与YOLOv11在损失函数层面的迭代,集中体现在对小目标、密集场景及类别不平衡问题的针对性优化上。以下从三大核心损失展开详细对比:

2.1定位损失(Bounding Box Regression Loss)

定位损失的核心目标是最小化预测框与真实框的几何差异,提升目标位置回归精度。

YOLOv5:CIoU Loss(默认配置)

YOLOv5采用CIoU(Complete IoU)Loss作为定位损失,其公式定义为:
L CIoU = 1 − IoU + ρ 2 ( b , b gt ) c 2 + α v L_{\text{CIoU}} = 1 - \text{IoU} + \frac{\rho^2(b, b^{\text{gt}})}{c^2} + \alpha v LCIoU=1IoU+c2ρ2(b,bgt)+αv

  • IoU \text{IoU} IoU:预测框与真实框的交并比,衡量重叠程度;
  • ρ 2 ( b , b gt ) \rho^2(b, b^{\text{gt}}) ρ2(b,bgt):预测框与真实框中心点的欧氏距离平方,约束位置偏差;
  • c c c:两框最小外接矩形的对角线长度,用于归一化距离项;
  • α \alpha α:权重系数( α = v 1 − IoU + v \alpha = \frac{v}{1 - \text{IoU} + v} α=1IoU+vv),平衡纵横比损失;
  • v v v:纵横比一致性度量( v = 4 π 2 ( arctan ⁡ w gt h gt − arctan ⁡ w h ) 2 v = \frac{4}{\pi^2} \left( \arctan \frac{w^{\text{gt}}}{h^{\text{gt}}} - \arctan \frac{w}{h} \right)^2 v=π24(arctanhgtwgtarctanhw)2),约束宽高比例。

分析:CIoU在IoU基础上增加了中心点距离和纵横比约束,显著提升了回归精度。但纵横比损失( v v v)的计算依赖反正切函数,在长宽比差异较大时(如细长目标)可能导致梯度不稳定,影响训练收敛速度。

YOLOv11:NWD Loss(可选增强配置)

YOLOv11引入NWD(Normalized Wasserstein Distance)Loss作为定位损失的可选方案,其公式为:
L NWD = 1 − exp ⁡ ( − d c 2 + d wh 2 C ) L_{\text{NWD}} = 1 - \exp\left( -\frac{\sqrt{d_c^2 + d_{\text{wh}}^2}}{C} \right) LNWD=1exp(Cdc2+dwh2 )

  • d c d_c dc:预测框与真实框中心点的欧氏距离;
  • d wh d_{\text{wh}} dwh:宽高差异度量( d wh = ( w − w gt ) 2 + ( h − h gt ) 2 4 d_{\text{wh}} = \frac{(w - w^{\text{gt}})^2 + (h - h^{\text{gt}})^2}{4} dwh=4(wwgt)2+(hhgt)2);
  • C C C:归一化常数(经验值,如12.8)。

分析:NWD将边界框建模为二维高斯分布,通过Wasserstein距离衡量分布相似性,具有以下优势:

  1. 小目标与密集场景友好:即使预测框与真实框不重叠(IoU=0),NWD仍能提供有效梯度,避免训练中断;
  2. 尺度鲁棒性:对目标尺度变化不敏感,适合多尺度检测任务;
  3. 几何约束更平滑:指数函数的引入使梯度变化更平缓,提升训练稳定性。

2.2分类损失(Classification Loss)

分类损失的核心是优化模型对目标类别的判别能力,需重点解决类别不平衡(如小目标样本少)和困难样本(如模糊目标)的优化问题。

YOLOv5:Focal Loss

YOLOv5采用Focal Loss缓解类别不平衡问题,公式为:
L cls = − α t ( 1 − p t ) γ log ⁡ ( p t ) L_{\text{cls}} = -\alpha_t (1 - p_t)^\gamma \log(p_t) Lcls=αt(1pt)γlog(pt)

  • α t \alpha_t αt:类别权重( α t = α \alpha_t = \alpha αt=α 当正样本, α t = 1 − α \alpha_t = 1 - \alpha αt=1α 当负样本),平衡正负样本数量;
  • γ \gamma γ:调制因子(通常取2),抑制易分类样本的损失贡献;
  • p t p_t pt:预测概率( p t = p p_t = p pt=p 当真实类别为正, p t = 1 − p p_t = 1 - p pt=1p 当真实类别为负)。

分析:Focal Loss通过动态调整样本权重,有效缓解了类别不平衡问题,但对小目标(样本量少且特征弱)和困难样本(如遮挡目标)的优化效果有限,易出现漏检或误分类。

YOLOv11:DFL(Distribution Focal Loss)+ Focal Loss

YOLOv11引入DFL(Distribution Focal Loss)与Focal Loss结合,公式为:
L DFL = − ∑ k = 0 n ( y k log ⁡ ( σ ( x k ) ) + ( 1 − y k ) log ⁡ ( 1 − σ ( x k ) ) ) L_{\text{DFL}} = -\sum_{k=0}^n \left( y_k \log(\sigma(x_k)) + (1 - y_k) \log(1 - \sigma(x_k)) \right) LDFL=k=0n(yklog(σ(xk))+(1yk)log(1σ(xk)))

  • x k x_k xk:模型预测的类别分布( k k k 为类别索引);
  • y k y_k yk:真实标签的One-Hot编码;
  • σ \sigma σ:Sigmoid激活函数。

分析:DFL直接优化类别分布而非单一概率值,通过学习类别间的分布关系(如“猫”与“狗”的特征差异),提升了小目标和困难样本的分类精度。结合Focal Loss的动态权重调整,进一步缓解了类别不平衡问题。


2.3置信度损失(Objectness Loss)

置信度损失用于衡量模型对“目标存在性”的判断准确性,需平衡正负样本(背景与目标)的损失贡献。

YOLOv5:Binary Cross-Entropy(BCE)Loss

YOLOv5使用BCE Loss计算置信度损失,公式为:
L obj = − ∑ i ( y i log ⁡ ( p i ) + ( 1 − y i ) log ⁡ ( 1 − p i ) ) L_{\text{obj}} = -\sum_i \left( y_i \log(p_i) + (1 - y_i) \log(1 - p_i) \right) Lobj=i(yilog(pi)+(1yi)log(1pi))

  • y i y_i yi:真实置信度(1表示目标存在,0表示背景);
  • p i p_i pi:模型预测的置信度(0-1概率值)。

分析:BCE Loss简单高效,但对难负样本(如与目标高度相似的背景区域)的抑制能力较弱,易导致模型对背景区域误判为目标。

YOLOv11:Focal Loss变体

YOLOv11对置信度损失进行了改进,采用Focal Loss的变体:
L obj 改进 = − α t ( 1 − p t ) γ ( y i log ⁡ ( p i ) + ( 1 − y i ) log ⁡ ( 1 − p i ) ) L_{\text{obj}}^{\text{改进}} = -\alpha_t (1 - p_t)^\gamma \left( y_i \log(p_i) + (1 - y_i) \log(1 - p_i) \right) Lobj改进=αt(1pt)γ(yilog(pi)+(1yi)log(1pi))
分析:通过引入Focal Loss的调制因子( ( 1 − p t ) γ (1 - p_t)^\gamma (1pt)γ),动态降低易分类样本(如高置信度背景或清晰目标)的损失权重,重点优化难负样本(如模糊背景区域)和难正样本(如小目标),提升模型对复杂场景的判别能力。


2.4 总结与对比

损失函数类型YOLOv5YOLOv11关键改进点
定位损失CIoU LossNWD Loss(可选)对小目标/密集场景更友好,无重叠时仍提供有效梯度
分类损失Focal LossDFL + Focal Loss优化类别分布,提升小目标/困难样本分类精度
置信度损失二元交叉熵损失Focal Loss变体动态抑制易分类样本,增强难负样本优化能力

2.5 损失函数比较总结

  • YOLOv5:适合对推理速度要求高、场景简单(如目标尺度均匀、类别平衡)的通用检测任务(如日常物体识别)。
  • YOLOv11:推荐用于小目标密集(如卫星图像中的车辆)、类别不平衡(如医学影像中的病变检测)或复杂场景(如遮挡、旋转目标)的高精度检测任务。

通过损失函数的迭代,YOLOv11在保持实时性的同时,显著提升了对复杂场景的适应能力,标志着YOLO系列从“通用检测”向“场景自适应检测”的重要演进。

三、总结:YOLOv11的技术价值与未来方向

从YOLOv5到YOLOv11的升级,本质是**从“通用检测”到“场景适配”**的范式转变。未来,YOLO系列的演进可能聚焦于:

  • 多模态融合:结合RGB、红外、激光雷达等多传感器数据,提升复杂环境下的检测鲁棒性;
  • 轻量化与大模型协同:通过知识蒸馏(Knowledge Distillation)将大模型的能力迁移至轻量级模型,满足边缘设备需求。

YOLOv11不仅是一个检测框架的升级,更是目标检测领域从“工程优化”到“科学建模”的重要里程碑。

相关文章:

目标检测之YOLOv5到YOLOv11——从架构设计和损失函数的变化分析

YOLO(You Only Look Once)系列作为实时目标检测领域的标杆性框架,自2016年YOLOv1问世以来,已历经十余年迭代。本文将聚焦YOLOv5(2020年发布)到YOLOv11(2024年前后)的核心技术演进&am…...

Java的SpringAI+Deepseek大模型实战【二】

文章目录 背景交互方式1、等待式问答2、流式问答 设置角色环绕增强1)修改controller2)修改配置日志级别 处理跨域 背景 上篇【Java的SpringAIDeepseek大模型实战【一】】搭建起浏览器交互的环境,如何进行流式问答,控制台打印日志…...

OpenCV——霍夫变换

霍夫变换 一、霍夫变换原理二、霍夫线检测2.1、标准霍夫变换2.2、概率霍夫变换 三、霍夫圆检测3.1、霍夫圆检测的原理3.2、霍夫梯度法 一、霍夫变换原理 霍夫变换(Hough TRansform)是从图像中识别几何图形的基本方法,由Paul Hough于1962年提…...

线程池 JMM 内存模型

线程池 & JMM 内存模型 文章目录 线程池 & JMM 内存模型线程池线程池的创建ThreadPoolExecutor 七大参数饱和策略ExecutorService 提交线程任务对象执行的方法:ExecutorService 关闭线程池的方法:线程池最大线程数如何确定? volatile…...

PillarNet: Real-Time and High-PerformancePillar-based 3D Object Detection

​ECCV 2022 paper:[2205.07403] PillarNet: Real-Time and High-Performance Pillar-based 3D Object Detection code:https://github.com/VISION-SJTU/PillarNet-LTS 纯点云基于pillar3D检测模型 网络比较 SECOND 基于vo…...

配电抢修场景案例

以配电抢修场景为例来展示关键业务活动。配电抢修愿景分成业务逻辑、业务活动、业务特征、技术支撑、KPI五个层次,分别从策略、执行、评价、资源、协同5个方面描述配电抢修愿景的关键业务活动。...

H5新增属性

✅ 一、表单相关新增属性&#xff08;Form Attributes&#xff09; 这些属性增强了表单功能&#xff0c;提升用户体验和前端验证能力。 1. placeholder 描述&#xff1a;在输入框为空时显示提示文本。示例&#xff1a; <input type"text" placeholder"请输…...

C# Task 模式实现 Demo(含运行、暂停、结束状态)

下面是一个完整的 C# Task 实现示例&#xff0c;包含运行(Running)、暂停(Paused)和结束(Completed)状态控制&#xff1a; 1. 基本实现&#xff08;使用 CancellationToken 控制&#xff09; using System; using System.Threading; using System.Threading.Tasks;public cla…...

Docker健康检查

目录 1.命令 2.验证 1.命令 docker run -itd --name nginx -v data:/etc/nginx/ -v log:/var/log/ -p 8080:80 \ --health-cmd"curl http://127.0.0.1:80" \ --health-interval30s \ --health-timeout5s \ --health-retries3 \ --health-start-period18s \ nginx:…...

Linux笔记---线程控制

1. 线程创建&#xff1a;pthread_create() pthread_create() 是 POSIX 线程库&#xff08;pthread&#xff09;中用于创建新线程的函数。调用该函数后系统就会启动一个与主线程并发的线程&#xff0c;并使其跳转到入口函数处执行。 #include <pthread.h>int pthread_cr…...

【AI论文】扩展大型语言模型(LLM)智能体在测试时的计算量

摘要&#xff1a;扩展测试时的计算量在提升大型语言模型&#xff08;LLMs&#xff09;的推理能力方面已展现出显著成效。在本研究中&#xff0c;我们首次系统地探索了将测试时扩展方法应用于语言智能体&#xff0c;并研究了该方法在多大程度上能提高其有效性。具体而言&#xf…...

Spring--IOC容器的一些扩展属性

一、BeanFactoryPostProcessor和BeanPostProcessor BeanFactoryPostProcessor的作用是在实例化前修改BeanDefinition的属性 BeanPostProcessor的作用是在bean完成创建实例、填充属性之后&#xff0c;初始化阶段的前后都会对bean进行操作&#xff0c;使用postProcessBeforeIni…...

WebClient 功能介绍,使用场景,完整使用示例演示

WebClient 功能介绍 WebClient 是 Spring 5 中引入的响应式 HTTP 客户端&#xff0c;用于替代已弃用的 RestTemplate&#xff0c;专为异步非阻塞编程设计&#xff0c;基于 Reactor 框架实现。其核心功能包括&#xff1a; 异步与非阻塞 通过 Mono 和 Flux 处理请求与响应&#…...

[Java 基础]ArrayList

ArrayList 类是一个可以动态修改的数组&#xff0c;与普通数组的区别就是它是没有固定大小的限制。 ArrayList 的示意可以看 VCR&#xff1a;https://visualgo.net/en/array 创建 ArrayList 对象 final ArrayList<String> strings new ArrayList<>();这里创建 …...

用无人机和AI守护高原净土:高海拔自然保护区的垃圾检测新方法

这篇题为《Automatic Detection of Scattered Garbage Regions Using Small Unmanned Aerial Vehicle Low-Altitude Remote Sensing Images for High-Altitude Natural Reserve Environmental Protection》的论文&#xff0c;发表于 Environmental Science & Technology&am…...

《Redis高并发优化策略与规范清单:从开发到运维的全流程指南》

Redis高并发优化策略与规范清单&#xff1a;从开发到运维的全流程指南 在互联网应用的后端架构中&#xff0c;Redis凭借其高性能、高并发的特性&#xff0c;成为缓存和数据存储的首选方案。无论是电商抢购、社交平台的点赞计数&#xff0c;还是在线旅游平台的实时数据查询&…...

Linux基本指令篇 —— man指令

man命令是Linux系统中最重要的命令之一&#xff0c;它是"manual"&#xff08;手册&#xff09;的缩写&#xff0c;用于查看Linux系统中命令、函数、配置文件等的详细说明文档。man命令是Linux系统管理员和开发者的必备工具&#xff0c;熟练掌握man命令可以大大提高工…...

Spring Boot使用MCP服务器

1、JDK版本17 2、pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apac…...

学习Linux进程冻结技术

原文&#xff1a;蜗窝科技Linux进程冻结技术 功耗中经常需要用到&#xff0c;但是linux这块了解甚少&#xff0c;看到这个文章还蛮适合我阅读的 1 什么是进程冻结 进程冻结技术&#xff08;freezing of tasks&#xff09;是指在系统hibernate或者suspend的时候&#xff0c;将…...

Docker基本概念——AI教你学Docker

1.1 Docker 概念详解 1. Docker 是什么&#xff1f; Docker 是一个开源的应用容器引擎&#xff0c;它让开发者可以将应用及其依赖打包到一个可移植的容器&#xff08;Container&#xff09;中&#xff0c;并在任何支持 Docker 的 Linux、Windows 或 macOS 系统上运行。这样做…...

第十六届蓝桥杯C/C++程序设计研究生组国赛 国二

应该是最后一次参加蓝桥杯比赛了&#xff0c;很遗憾&#xff0c;还是没有拿到国一。 大二第一次参加蓝桥杯&#xff0c;印象最深刻的是居然不知道1s是1000ms&#xff0c;花了很多时间在这题&#xff0c;后面节奏都乱了&#xff0c;抗压能力也不行&#xff0c;身体也不适。最后…...

Python 数据分析与可视化 Day 5 - 数据可视化入门(Matplotlib Seaborn)

&#x1f3af; 今日目标 掌握 Matplotlib 的基本绘图方法&#xff08;折线图、柱状图、饼图&#xff09;掌握 Seaborn 的高级绘图方法&#xff08;分类图、分布图、箱线图&#xff09;熟悉图像美化&#xff08;标题、标签、颜色、风格&#xff09;完成一组学生成绩数据的可视化…...

WebRTC(八):SDP

SDP 概念 SDP 是一种描述多媒体通信会话的文本格式&#xff08;基于 MIME&#xff0c;RFC 4566&#xff09;。本身 不传输数据&#xff0c;仅用于在会话建立阶段传递信息。常与 SIP&#xff08;VoIP&#xff09;、RTSP、WebRTC 等协议配合使用。 用途 描述媒体类型&#xf…...

《哈希表》K倍区间(解题报告)

文章目录 零、题目描述一、算法概述二、算法思路三、代码实现四、算法解释五、复杂度分析 零、题目描述 题目链接&#xff1a;K倍区间 一、算法概述 计算子数组和能被k整除的子数组数量的算法。通过前缀和与哈希表的结合&#xff0c;高效地统计满足条件的子数组。  需要注…...

牛津大学开源视频中的开放世界目标计数!

视频中的开放世界目标计数 GitHub PaPer Niki Amini-Naieni nikianrobots.ox.ac.uk Andrew Zisserman azrobots.ox.ac.uk 视觉几何组&#xff08;VGG&#xff09;&#xff0c;牛津大学&#xff0c;英国 ​ 图 1&#xff1a;视频中的目标计数&#xff1a;给定顶行的视频&#…...

1.2、CAN总线帧格式

1、帧类型 2、帧类型介绍 &#xff08;1&#xff09;数据帧 扩展格式是为了扩展ID&#xff0c;ID号每4位一个字节&#xff08;11位最大ID号为0x7FF&#xff09; &#xff08;2&#xff09;遥控帧 遥控帧由于没有Data&#xff0c;所以DLC可能没有意义&#xff0c;可给任意值&am…...

DeepSeek今天喝什么随机奶茶推荐器

用DeepSeek生成了一个随机奶茶推荐器-今天喝什么&#xff0c;效果非常棒&#xff01;UI界面美观。 提示词prompt如下 用html5帮我生成一个今天喝什么的网页 点击按钮随机生成奶茶品牌等&#xff0c;要包括中国常见的知名的奶茶品牌 如果不满意还可以随机再次生成 ui界面要好看 …...

词编码模型怎么进行训练的,输出输入是什么,标签是什么

词编码模型怎么进行训练的,输出输入是什么,标签是什么 词编码模型的训练本质是通过数据驱动的方式,将离散的文本符号映射为连续的语义向量。 一、训练机制:从符号到向量的映射逻辑 1. 核心目标 将单词/子词(Token)映射为低维向量,使语义相关的词在向量空间中距离更近…...

LSTM、GRU 与 Transformer网络模型参数计算

参数计算公式对比 模型类型参数计算公式关键组成部分LSTM4 (embed_dim hidden_size hidden_size hidden_size)4个门控结构GRU3 (embed_dim hidden_size hidden_size hidden_size)3个门控结构Transformer (Encoder)12 embed_dim 9 embed_dim ff_dim 14 embed_dim…...

nnv开源神经网络验证软件工具

一、软件介绍 文末提供程序和源码下载 用于神经网络验证的 Matlab 工具箱&#xff0c;该工具箱实现了可访问性方法&#xff0c;用于分析自主信息物理系统 &#xff08;CPS&#xff09; 领域中带有神经网络控制器的神经网络和控制系统。 二、相关工具和软件 该工具箱利用神经…...

SQLite3 在嵌入式系统中的应用指南

SQLite3 在嵌入式系统中的应用指南 一、嵌入式系统中 SQLite3 的优势 SQLite3 是嵌入式系统的理想数据库解决方案&#xff0c;具有以下核心优势&#xff1a; 特性嵌入式系统价值典型指标轻量级适合资源受限环境库大小&#xff1a;500-700KB零配置无需数据库管理员开箱即用无…...

原生微信小程序网络请求与上传接口封装实战指南

本文基于微信小程序原生 API&#xff0c;封装 request 和 uploadFile 接口&#xff0c;最终实现统一请求管理、请求拦截、错误处理等能力。 &#x1f4e6; 一、为什么要封装网络请求&#xff1f; 微信小程序提供了 wx.request 和 wx.uploadFile 原生 API&#xff0c;但直接使用…...

电路图识图基础知识-塔式起重机控制电路识图与操作要点(三十五)

引言&#xff1a; 塔式起重机作为建筑施工中不可或缺的大型起重运输机械设备&#xff0c;其控制电路的识图与操作对于确保施工安全和效率至关重要。本文将详细介绍塔式起重机的控制电路识图&#xff0c;帮助操作人员更好地理解和掌握其工作原理。 一、塔式起重机概述 塔式起重…...

基于SpringBoot + Vue 的网上拍卖系统

基于springbootvue的在线拍卖系统| Java | vue | 配万字文档 | springboot001 〔运行环境〕 Java版本&#xff1a;jdk1.8 node版本&#xff1a;13.x python版本&#xff1a;2.7 IDE类型&#xff1a;idea或exlipse 数据库&#xff1a;MySQL&#xff08;5.x或8.x版本都…...

用 EXCEL/WPS 实现聚类分析:赋能智能客服场景的最佳实践

聚类分析作为无监督学习的核心技术&#xff0c;能在客服数据中发现隐藏的用户群体或问题模式。尽管 Excel/WPS 并非专业统计软件&#xff0c;但巧妙利用其内置功能&#xff0c;也能实现基础的聚类分析&#xff0c;为中小型客服团队提供快速洞察。以下介绍具体方法及智能客服场景…...

利用mold加快rust程序构建

我用rust的cargo build命令编译polars-cli时&#xff0c;用时达到14分钟&#xff0c;如下所示。 Finished dev profile [unoptimized debuginfo] target(s) in 14m 19s&#xff0c;通过核对时间戳&#xff0c;发觉其中最后一步生成可执行文件花了6分钟。 于是向DeepSeek请教&a…...

leetcode543-二叉树的直径

leetcode 543 思路 路径长度计算&#xff1a;任意两个节点之间的路径长度&#xff0c;等于它们的最低公共祖先到它们各自的深度之和递归遍历&#xff1a;通过后序遍历&#xff08;左右根&#xff09;计算每个节点的左右子树深度&#xff0c;并更新全局最大直径深度与直径的关…...

(三)yolov5——模型训练

一、准备数据 先准备一个MP4的视频 1.测试一帧 使用opencv来提取每一个视频的帧 先使用以下代码查看一帧的内容&#xff0c;是否符合预期 import cv2 import matplotlib.pyplot as plt# 打开视频文件 video cv2.VideoCapture("111.mp4") # 读取一帧 ret, frame…...

STM32对接霍尔传感器

STM32对接霍尔传感器的技术解析与应用实现,结合测速原理、硬件设计、代码实现及进阶应用,涵盖从基础到实战的全流程指南,可以应用到金属检测等功能。 ⚙️ 一、霍尔传感器基础 工作原理 霍尔传感器基于霍尔效应,当磁铁靠近时输出电平变化(常开型无磁铁时输出高电平,靠近时…...

SpringCloud系列(32)--使用Hystrix进行全局服务降级

前言&#xff1a;在上一节中我们使用Hystrix进行了服务降级&#xff0c;但是要在每个方法上面配置HystrixCommand才能实现服务降级&#xff0c;如果需要进行服务降级的方法多了&#xff0c;HystrixCommand也就得配置很多遍&#xff0c;所以本节内容则是使用Hystrix进行了全局服…...

Origin绘制三Y轴柱状图、点线图、柱状点线图

三Y轴柱状图是一种高级数据可视化形式&#xff0c;它通过三个独立的纵轴在同一个图表中展示不同量纲或量级的数据系列。其主要用于揭示不同量级指标间的关联性&#xff08;例如高销售额是否伴随高利润率&#xff09;。 当数据满足以下条件时&#xff0c;即可绘制三Y轴图&#x…...

通信网络编程3.0——JAVA

主要添加了私聊功能 1服务器类定义与成员变量 public class ChatServer {int port 6666;// 定义服务器端口号为 6666ServerSocket ss;// 定义一个 ServerSocket 对象用于监听客户端连接//List<Socket> clientSockets new ArrayList<>();// 定义一个列表用于存储…...

4-深度学习网络层

深度学习模型 Embedding层 Embedding矩阵是可训练的参数&#xff0c;一般会在模型构建时随机初始化 也可以使用预训练的词向量来做初始化&#xff0c;此时也可以选择不训练Embedding层中的参数 输入的整数序列可以有重复&#xff0c;但取值不能超过Embedding矩阵的列数 核心…...

【LeetCode】用双指针解决移除元素问题、合并两个有序数组求解

&#x1f525;个人主页&#xff1a;艾莉丝努力练剑 ❄专栏传送门&#xff1a;《C语言》、《数据结构与算法》、C语言刷题12天IO强训 &#x1f349;学习方向&#xff1a;C/C方向 ⭐️人生格言&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;…...

车载诊断架构协议篇 --- OBDonUDS和ZEVonUDS

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 做到欲望极简&#xff0c;了解自己的真实欲望&#xff0c;不受外在潮流的影响&#xff0c;不盲从&#x…...

医学 Agent:自带医学深度调研 deep research,优化治疗策略+药物参考

医学 Agent&#xff1a;自带医学深度调研deep research&#xff0c;优化治疗策略药物参考 第一版代码输出结果&#xff0c;居然连不上网运行结果梳理 第二版结果测试 第一版代码 医疗顾问AI系统 - 基于Qwen API 的智能医疗助手 最终目标&#xff1a;构建一个能够查询疾病治疗方…...

硬件工程师笔试面试高频考点汇总——(2025版)

目录 1 电子器件部分 1.1 电阻 1.1.1 电阻选型时一般从哪几个方面进行考虑? 1.1.2 上拉下拉电阻的作用 1.1.3 PTC热敏电阻作为电源电路保险丝的工作原理 1.1.4 如果阻抗不匹配&#xff0c;有哪些后果 1.1.5 电阻、电容和电感0402、0603和0805封装的含义 1.1.6 电阻、电…...

春秋云镜【CVE-2017-18349】fastjson wp

知识点 fastjson反序列化 将json转为java对象的过程 漏洞存在版本 Fastjson<1.2.24 漏洞原理 fastjson引入的autotype功能&#xff0c;本来是为了区分同名同元素但是不同类型的对象序列化后内容一致无法还原的问题&#xff0c;但是这一操作允许了json数据中通过type来指定对…...

网络编程:八股文

一.Reactor网络模型 ------------------- | 应用主线程 | -------------------|v ------------------- | Reactor | | (事件分发器) | -------------------|v ------------------- | 事件多路分发器 | <--- epoll/poll/select -----------------…...

设计模式精讲 Day 11:享元模式(Flyweight Pattern)

【设计模式精讲 Day 11】享元模式&#xff08;Flyweight Pattern&#xff09; 文章内容 在软件开发过程中&#xff0c;我们常常需要处理大量相似对象的创建和管理问题。如果这些对象之间存在大量的重复信息&#xff0c;直接创建每一个对象会导致内存占用过高、系统性能下降。享…...