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

【论文阅读/复现】RT-DETR的网络结构/训练/推理/验证/导出模型

利用ultralytics仓库,复现RT-DETR官方实验环境。

使用基于ResNet50和ResNet101的RT-DETR。

目录

一 RT-DETR的网络结构

1 编码器结构

2 RT-DETR

3 CCFF中的融合块

4 实验结果

二 RT-DETR的安装/训练/推理/验证/导出模型

1 安装

2 配置文件

3 训练

4 推理

5 验证

6 导出模型



一 RT-DETR的网络结构

论文题目:DETRs Beat YOLOs on Real-time Object Detection

论文地址http://arxiv.org/pdf/2304.08069

代码地址DETRs Beat YOLOs on Real-time Object Detection

【摘要】YOLO系列由于在速度和精度之间进行了合理的权衡,已经成为最流行的实时目标检测框架。然而,我们观察到YOLOs的速度和准确性受到NMS的负面影响。最近,端到端的基于Transformer的检测器( Transformer-based detector,DETR )为消除NMS提供了一种替代方案。然而,高昂的计算成本限制了它们的实用性,阻碍了它们充分发挥排除NMS的优势。本文提出了第一个实时端到端目标检测器RT-DETR ( Real-Time DEtection TRansformer )来解决上述问题。借鉴先进的DETR,我们分两步构建RT-DETR:第一步在保持精度的同时提高速度,第二步在保持速度的同时提高精度。具体来说,设计了一个高效的混合编码器,通过解耦尺度内相互作用和跨尺度融合来快速处理多尺度特征,以提高速度。然后,提出了不确定性最小查询选择,为解码器提供高质量的初始查询,从而提高准确性。此外,RT-DETR通过调整解码器层数来支持灵活的速度调整,以适应各种场景而无需重新训练。我们的RT-DETR-R50 / R101在COCO上达到了53.1% / 54.3%的AP,在T4 GPU上达到了108 / 74 FPS,在速度和精度上都优于先前先进的YOLOs。此外,RT-DETR-R50比DINO-R50在准确率上提高了2.2% AP,在FPS上提高了约21倍。经过Objects365预训练后,RTDETR-R50 / R101取得了55.3% / 56.2%的AP。

综上,RT-DETR模型建立在于两个关键创新:

高效混合编码器:通过解耦内部尺度交互和跨尺度融合来处理多尺度特征。这种设计显著降低了计算负担,同时保持了高性能,实现了实时目标检测。

②提出了不确定性最小的查询选择,为解码器提供高质量的初始查询,从而提高准确率。

1 编码器结构

下图是每个变体的编码器结构。SSE表示单尺度Transformer编码器,MSE表示多尺度Transformer 编码器,CSF表示跨尺度融合。AIFI和CCFF是设计的混合编码器的两个模块。

2 RT-DETR

下图为RT-DETR概述。将主干最后三个阶段的特征输入到编码器中。高效混合编码器通过基于注意力的尺度内特征交互(AIFI)和基于cnn的跨尺度特征融合(CCFF)将多尺度特征转化为图像特征序列。然后,最小不确定性查询选择固定数量的编码器特征作为解码器的初始对象查询。最后,具有辅助预测头的解码器迭代优化对象查询以生成类别和框

3 CCFF中的融合块

下图为CCFF中的融合块。

4 实验结果

二 RT-DETR的安装/训练/推理/验证/导出模型

1 安装

git clone https://github.com/sunsmarterjie/yolov12cd yolov12conda create -n yolov12 python=3.11# 输入y,继续。激活环境。conda activate yolov12pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simplepip install -e .

2 配置文件

  • rtdetr-l.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license# Ultralytics RT-DETR-l hybrid object detection model with P3/8 - P5/32 outputs
# Model docs: https://docs.ultralytics.com/models/rtdetr
# Task docs: https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # 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]l: [1.00, 1.00, 1024]backbone:# [from, repeats, module, args]- [-1, 1, HGStem, [32, 48]] # 0-P2/4- [-1, 6, HGBlock, [48, 128, 3]] # stage 1- [-1, 1, DWConv, [128, 3, 2, 1, False]] # 2-P3/8- [-1, 6, HGBlock, [96, 512, 3]] # stage 2- [-1, 1, DWConv, [512, 3, 2, 1, False]] # 4-P3/16- [-1, 6, HGBlock, [192, 1024, 5, True, False]] # cm, c2, k, light, shortcut- [-1, 6, HGBlock, [192, 1024, 5, True, True]]- [-1, 6, HGBlock, [192, 1024, 5, True, True]] # stage 3- [-1, 1, DWConv, [1024, 3, 2, 1, False]] # 8-P4/32- [-1, 6, HGBlock, [384, 2048, 5, True, False]] # stage 4head:- [-1, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 10 input_proj.2- [-1, 1, AIFI, [1024, 8]]- [-1, 1, Conv, [256, 1, 1]] # 12, Y5, lateral_convs.0- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [7, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 14 input_proj.1- [[-2, -1], 1, Concat, [1]]- [-1, 3, RepC3, [256]] # 16, fpn_blocks.0- [-1, 1, Conv, [256, 1, 1]] # 17, Y4, lateral_convs.1- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [3, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 19 input_proj.0- [[-2, -1], 1, Concat, [1]] # cat backbone P4- [-1, 3, RepC3, [256]] # X3 (21), fpn_blocks.1- [-1, 1, Conv, [256, 3, 2]] # 22, downsample_convs.0- [[-1, 17], 1, Concat, [1]] # cat Y4- [-1, 3, RepC3, [256]] # F4 (24), pan_blocks.0- [-1, 1, Conv, [256, 3, 2]] # 25, downsample_convs.1- [[-1, 12], 1, Concat, [1]] # cat Y5- [-1, 3, RepC3, [256]] # F5 (27), pan_blocks.1- [[21, 24, 27], 1, RTDETRDecoder, [nc]] # Detect(P3, P4, P5)
  • rtdetr-resnet50.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license# Ultralytics RT-DETR-ResNet50 hybrid object detection model with P3/8 - P5/32 outputs
# Model docs: https://docs.ultralytics.com/models/rtdetr
# Task docs: https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # 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]l: [1.00, 1.00, 1024]backbone:# [from, repeats, module, args]- [-1, 1, ResNetLayer, [3, 64, 1, True, 1]] # 0- [-1, 1, ResNetLayer, [64, 64, 1, False, 3]] # 1- [-1, 1, ResNetLayer, [256, 128, 2, False, 4]] # 2- [-1, 1, ResNetLayer, [512, 256, 2, False, 6]] # 3- [-1, 1, ResNetLayer, [1024, 512, 2, False, 3]] # 4head:- [-1, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 5- [-1, 1, AIFI, [1024, 8]]- [-1, 1, Conv, [256, 1, 1]] # 7- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [3, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 9- [[-2, -1], 1, Concat, [1]]- [-1, 3, RepC3, [256]] # 11- [-1, 1, Conv, [256, 1, 1]] # 12- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [2, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 14- [[-2, -1], 1, Concat, [1]] # cat backbone P4- [-1, 3, RepC3, [256]] # X3 (16), fpn_blocks.1- [-1, 1, Conv, [256, 3, 2]] # 17, downsample_convs.0- [[-1, 12], 1, Concat, [1]] # cat Y4- [-1, 3, RepC3, [256]] # F4 (19), pan_blocks.0- [-1, 1, Conv, [256, 3, 2]] # 20, downsample_convs.1- [[-1, 7], 1, Concat, [1]] # cat Y5- [-1, 3, RepC3, [256]] # F5 (22), pan_blocks.1- [[16, 19, 22], 1, RTDETRDecoder, [nc]] # Detect(P3, P4, P5)
  • rtdetr-resnet101.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license# Ultralytics RT-DETR-ResNet101 hybrid object detection model with P3/8 - P5/32 outputs
# Model docs: https://docs.ultralytics.com/models/rtdetr
# Task docs: https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # 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]l: [1.00, 1.00, 1024]backbone:# [from, repeats, module, args]- [-1, 1, ResNetLayer, [3, 64, 1, True, 1]] # 0- [-1, 1, ResNetLayer, [64, 64, 1, False, 3]] # 1- [-1, 1, ResNetLayer, [256, 128, 2, False, 4]] # 2- [-1, 1, ResNetLayer, [512, 256, 2, False, 23]] # 3- [-1, 1, ResNetLayer, [1024, 512, 2, False, 3]] # 4head:- [-1, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 5- [-1, 1, AIFI, [1024, 8]]- [-1, 1, Conv, [256, 1, 1]] # 7- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [3, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 9- [[-2, -1], 1, Concat, [1]]- [-1, 3, RepC3, [256]] # 11- [-1, 1, Conv, [256, 1, 1]] # 12- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [2, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 14- [[-2, -1], 1, Concat, [1]] # cat backbone P4- [-1, 3, RepC3, [256]] # X3 (16), fpn_blocks.1- [-1, 1, Conv, [256, 3, 2]] # 17, downsample_convs.0- [[-1, 12], 1, Concat, [1]] # cat Y4- [-1, 3, RepC3, [256]] # F4 (19), pan_blocks.0- [-1, 1, Conv, [256, 3, 2]] # 20, downsample_convs.1- [[-1, 7], 1, Concat, [1]] # cat Y5- [-1, 3, RepC3, [256]] # F5 (22), pan_blocks.1- [[16, 19, 22], 1, RTDETRDecoder, [nc]] # Detect(P3, P4, P5)
  • rtdetr-x.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license# Ultralytics RT-DETR-x hybrid object detection model with P3/8 - P5/32 outputs
# Model docs: https://docs.ultralytics.com/models/rtdetr
# Task docs: https://docs.ultralytics.com/tasks/detect# Parameters
nc: 80 # 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]x: [1.00, 1.00, 2048]backbone:# [from, repeats, module, args]- [-1, 1, HGStem, [32, 64]] # 0-P2/4- [-1, 6, HGBlock, [64, 128, 3]] # stage 1- [-1, 1, DWConv, [128, 3, 2, 1, False]] # 2-P3/8- [-1, 6, HGBlock, [128, 512, 3]]- [-1, 6, HGBlock, [128, 512, 3, False, True]] # 4-stage 2- [-1, 1, DWConv, [512, 3, 2, 1, False]] # 5-P3/16- [-1, 6, HGBlock, [256, 1024, 5, True, False]] # cm, c2, k, light, shortcut- [-1, 6, HGBlock, [256, 1024, 5, True, True]]- [-1, 6, HGBlock, [256, 1024, 5, True, True]]- [-1, 6, HGBlock, [256, 1024, 5, True, True]]- [-1, 6, HGBlock, [256, 1024, 5, True, True]] # 10-stage 3- [-1, 1, DWConv, [1024, 3, 2, 1, False]] # 11-P4/32- [-1, 6, HGBlock, [512, 2048, 5, True, False]]- [-1, 6, HGBlock, [512, 2048, 5, True, True]] # 13-stage 4head:- [-1, 1, Conv, [384, 1, 1, None, 1, 1, False]] # 14 input_proj.2- [-1, 1, AIFI, [2048, 8]]- [-1, 1, Conv, [384, 1, 1]] # 16, Y5, lateral_convs.0- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [10, 1, Conv, [384, 1, 1, None, 1, 1, False]] # 18 input_proj.1- [[-2, -1], 1, Concat, [1]]- [-1, 3, RepC3, [384]] # 20, fpn_blocks.0- [-1, 1, Conv, [384, 1, 1]] # 21, Y4, lateral_convs.1- [-1, 1, nn.Upsample, [None, 2, "nearest"]]- [4, 1, Conv, [384, 1, 1, None, 1, 1, False]] # 23 input_proj.0- [[-2, -1], 1, Concat, [1]] # cat backbone P4- [-1, 3, RepC3, [384]] # X3 (25), fpn_blocks.1- [-1, 1, Conv, [384, 3, 2]] # 26, downsample_convs.0- [[-1, 21], 1, Concat, [1]] # cat Y4- [-1, 3, RepC3, [384]] # F4 (28), pan_blocks.0- [-1, 1, Conv, [384, 3, 2]] # 29, downsample_convs.1- [[-1, 16], 1, Concat, [1]] # cat Y5- [-1, 3, RepC3, [384]] # F5 (31), pan_blocks.1- [[25, 28, 31], 1, RTDETRDecoder, [nc]] # Detect(P3, P4, P5)

3 训练

yolo detect train data=coco128.yaml model=cfg/models/rt-detr/rtdetr-resnet50.yaml epochs=100 batch=16 imgsz=640 device=cpu 

4 推理

yolo task=detect mode=predict model=best.pt source=test.jpg device=cpu

5 验证

yolo task=detect mode=val model=best.pt data=coco128.yaml device=cpu

6 导出模型

yolo task=detect mode=export model=best.pt format=onnx  

至此,本文的内容就结束了。

相关文章:

【论文阅读/复现】RT-DETR的网络结构/训练/推理/验证/导出模型

利用ultralytics仓库,复现RT-DETR官方实验环境。 使用基于ResNet50和ResNet101的RT-DETR。 目录 一 RT-DETR的网络结构 1 编码器结构 2 RT-DETR 3 CCFF中的融合块 4 实验结果 二 RT-DETR的安装/训练/推理/验证/导出模型 1 安装 2 配置文件 3 训练 4 推理 …...

KUKA机器人关机时冷启动介绍

KUKA机器人在正常关机时,可以从示教器上操作。在示教器上操作时需要选择“冷启动”方式关闭计算机。等示教器屏幕关闭之后,再把主开关旋钮关闭。 一、先登录【管理员】权限,再在【主菜单】下选择【关机】。 二、在关机的默认中,…...

MCP Java SDK 介绍与使用指南

MCP与MCP Java SDK 概念 MCP 是什么? 模型上下文协议(Model Context Protocol, MCP)是用于标准化AI模型与工具间通信的规范。通过定义通用接口,确保不同AI组件(如模型推理服务、工具插件)能无缝协作。MCP …...

【Java核心】一文理解Java面向对象(超级详细!)

一:概述 1.1Java类及类的成员 属性、方法、构造器、代码块、内部类 1.2 面向对象的特征 封装、继承、多态(抽象) 1.3 其它关键字的使用 This、super、package、import、static、final、interface、abstract 1.4 面向对象和面向过程 &…...

2025年DDoS攻击防御全解析:应对超大流量的实战策略

一、2025年DDoS攻击的新趋势 超大规模攻击常态化:攻击流量突破300Gbps,部分案例甚至达到T级规模,传统单点防御已无法应对。 混合攻击模式盛行:攻击者结合应用层(HTTP Flood、CC攻击)与网络层(U…...

【动态导通电阻】 GaN PiN二极管电导调制对动态 RON 的影响

2020 年,浙江大学电气工程学院的Shaowen Han等人采用实验研究的方法,对垂直 GaN-on-GaN PiN 二极管中电导调制的瞬态行为及其对动态导通电阻(RON)的影响进行了深入探究。他们基于高质量的 GaN 基板开发的垂直 GaN-on-GaN 功率器件具有高电流容量和高击穿电压等优势,而与间…...

第十六届蓝桥杯 2025 C/C++B组第一轮省赛 全部题解(未完结)

目录 前言: 试题A:移动距离 试题C:可分解的正整数 试题D:产值调整 试题E:画展布置 前言: 我参加的是第一轮省赛,说实话第一次参加还是比较紧张的,真到考场上看啥都想打暴力&…...

MySQL 实战 45 讲 笔记 ----来源《极客时间》

01 | 基础架构:一条SQL查询语句是如何执行的? 1. MySQL 可以分为 Server层 和 存储引擎层 两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等。存储引擎层支持 InnoDB、MyISAM等. (1) 连接器:管理连接,权限认证…...

海思SD3403边缘计算AI核心设备概述

1、海思SD3403边缘计算AI设备4TOPS算力(SD3403模组) 2、AI训练服务器 (≥60TOPS算力 INT8 算力越高AI训练速度越快) 3、普通监控IPC摄像机(低成本,批量化安装项目) 4、AI数据标定工作终端 (≥10TOPS算力 IN…...

算法设计:回溯法的基础原理与应用

目录 一、基本概念 二、适用问题 三、基本步骤 四、算法模式 递归回溯算法模式(求一个解) 非递归回溯算法模式(求一个解) 非递归回溯算法模式(求所有解) 五、经典应用 1数字组合问题 2数字排列问题…...

PyTorch 深度学习实战(23):多任务强化学习(Multi-Task RL)之扩展

之前的PyTorch 深度学习实战(23):多任务强化学习(Multi-Task RL)总结扩展运用代码如下: import torch import torch.nn as nn import torch.optim as optim import numpy as np from torch.distributions import Norm…...

音视频开发---视频编码基础

一、视频编码的必要性 1. 存储与传输成本高 未经编码压缩的原始视频的数据量极大,例如:一般电影的亮度信号采样频率为13.5MHz;色度信号的频带通常为亮度信号的一半或更少,为6.75MHz或3.375MHz。以4:2:2的采样频率为例,Y信号采用13.5MHz,色度信号U和V采用6.75MHz采样,…...

深入蜂窝物联网 第四章 Cat-1 与 5G RedCap:带宽、低时延与未来趋势

1. 前言与应用场景 随着物联网对带宽与时延的需求不断增长,LTE Cat-1 和 5G RedCap(Reduced Capability)应运而生: Cat-1:在传统 LTE 网络上提供最高 10 Mbps 下行、5 Mbps 上行,兼容性佳; 5G RedCap:在 5G NSA/SA 网络中提供 1–20 Mbps,时延可降至 10 ms 级,且模组…...

FPGA 39 ,FPGA 网络通信协议栈进阶,RGMII、ARP 与 UDP 协议与模块设计( RGMII、ARP、UDP原理与模块设计 )

目录 目录​​​​​​​​​​​​​​ 一、核心原理 1.1 RGMII 接口:高效数据传输的物理桥梁 1.2 ARP 协议:IP 与 MAC 地址的动态映射引擎 1.3 UDP 协议:轻量级数据传输的高效选择 1.4 FPGA 实现流程 二、时序约束 2.1 时序约束理论…...

《系统分析师-第三阶段—总结(七)》

背景 采用三遍读书法进行阅读,此阶段是第三遍。 过程 本篇总结第13章第14章的内容 第13章 第14章 总结 系统设计分为概要设计与详细设计,然后重点讲解了处理流程设计,输入输出原型设计,面向对象设计、人机交互设计&#xff1…...

Lightroom 2025手机版:专业编辑,轻松上手

在摄影和图像编辑的世界里,Adobe Lightroom一直是一个不可或缺的工具。无论是专业摄影师还是摄影爱好者,都依赖它来提升照片的质量和视觉效果。今天,我们要介绍的 Lightroom 2025手机版,是Adobe公司为移动设备量身定制的照片编辑器…...

Cursor:AI时代的智能编辑器

在开发者社区掀起热潮的Cursor,正以破竹之势重塑编程工具格局。这款基于VS Code的AI优先编辑器,不仅延续了经典IDE的稳定基因,更通过深度集成的智能能力,将开发效率推向全新维度。2023年Anysphere公司获得的6000万美元A轮融资&…...

x86架构-k8s设置openebs的hostpath作为默认存储类的部署记录

文章目录 前言一、openebs是什么?二、准备步骤1.下载yaml文件2.准备一个新的单点k8s用于测试2.将openebs-operator.yaml中的镜像修改成使用国内加速源的 三、执行yaml1.openebs-operator.yaml2.local-hostpath-pvc.yaml和local-hostpath-pod.yaml 四、关于默认存储路…...

废品回收小程序:全链路数字化解决方案,赋能绿色未来

用户端:一键触达,便捷回收新体验 废品百科与估价指南:分类标准与实时价格一目了然,用户轻松掌握废品价值。一键预约,轻松回收:指尖轻点即可完成预约,上门服务省时省力。精准定位,导…...

Kotlin和JavaScript的对比

Kotlin和JavaScript有一些相似之处,但也存在显著的差异,下面从多个方面为你详细分析: 相似点 1. 语法灵活性 变量声明:二者在变量声明上都较为灵活。在JavaScript里,借助var、let和const可以声明变量。其中&#xf…...

蓝桥杯 5. 拼数

拼数 原题目链接 题目描述 给定 n 个正整数 a1, a2, …, an,你可以将它们任意排序。 现要将这 n 个数字连接成一排,即令相邻数字收尾相接,组成一个数。 问,这个数最大可以是多少。 输入格式 第一行输入一个正整数 n&#x…...

(即插即用模块-特征处理部分) 四十四、(2024 TGRS) FEM 特征增强模块

文章目录 1、Feature Enhancement Module2、代码实现 paper:FFCA-YOLO for Small Object Detection in Remote Sensing Images Code:https://github.com/yemu1138178251/FFCA-YOLO 1、Feature Enhancement Module 遥感图像中,小目标的特征通…...

“情况说明“以后,Unity XR 开发者如何选择?

Unity自4月7日发布了一系列“情况说明”,点进来的朋友应该都是看过的,此处不再赘述。此后引发了开发者社区的广泛关注和讨论。作为细分领域的XR开发者,此时也会面临着工具和版本的抉择或迷茫。笔者同样面临这些问题,因为要确定未来…...

c#版yolo可视化标注和一键免环境训练系统0429更新介绍

yolo免环境一键训练工具c#版yolo标注工具 ## 更新日志 - 2025.4.1: 1、软件上线 - 2025.4.6 1、调整界面,修复用户在1920*1080不能全部显示问题 2、修复 刷新当前目录 无法加载新增图片问题 3、新增 下一张图片快捷键 Enter或者ctrl↓&…...

Leetcode 3533. Concatenated Divisibility

Leetcode 3533. Concatenated Divisibility 1. 解题思路2. 代码实现 题目链接:3533. Concatenated Divisibility 1. 解题思路 这一题的话事实上如果我们原始的数组有序排列一下,然后依次考察每个元素是否可以被选用,此时,我们得…...

CosyVoice、F5-TTS、GPT-SoVITS、Fish-Speech声音模型项目深度对比:选型指南

在数字人、虚拟助手、智能客服等应用快速发展的背景下,文本转语音(TTS)和语音克隆技术已成为AI领域的核心技术之一。本文将对目前主流的四个开源语音合成项目——CosyVoice、F5-TTS、GPT-SoVITS 和 Fish-Speech进行全方位对比分析&#xff0c…...

什么是DNS缓存?怎么清理DNS缓存?

在网络世界中,当我们输入一个网址想要访问某个网站时,计算机并不能直接识别“www.example.com”这样的网址,而是需要将其转换为对应的IP地址才能进行通信。这个转换过程由域名系统(DomainNameSystem,简称DNS&#xff0…...

基于STM32、HAL库的ATECC508A安全验证及加密芯片驱动程序设计

一、简介: ATECC508A是Microchip公司生产的一款加密认证芯片,提供以下主要特性: 基于硬件的ECDSA (Elliptic Curve Digital Signature Algorithm) 加密 支持SHA-256哈希算法 内置真随机数生成器(TRNG) 16个密钥存储槽位,可配置多种用途 支持I2C接口,最高1MHz时钟频率 超低…...

初中九年级学生体测准考证照片采集软件使用说明

随着中考体育测试的临近,各校陆续开始组织学生进行准考证照片、中考报名照片的采集工作。为方便学校集中采集和学生自主完成照片拍摄,本文将详细介绍使用"校园证件照采集平台"进行手机拍照线上采集的操作方法,帮助学校轻松完成体测…...

提供一些其他常见的字符串处理算法的Java示例

以下为你提供几种常见字符串处理算法的 Java 示例: 1. 字符串反转 反转字符串即把字符串中的字符顺序颠倒。 public class RemoveSpaces {public static String removeSpaces(String str) {return str.replaceAll("\\s", "");}public static…...

软件设计师-软考知识复习(2)

PERT图详解 PERT(Program Evaluation and Review Technique,计划评审技术)是一种用于项目管理的图形化工具,主要用于分析任务的时间安排、识别关键路径和优化资源分配。它特别适用于复杂项目,其中任务之间存在依赖关系…...

Qwen3快速部署 Qwen3-0.6B、Qwen3-8B、Qwen3-14B,Think Deeper

文章目录 0 Qwen31 平台与环境安装1 模型下载2 模型测试 0 Qwen3 今天,通义千问Qwen团队正式开源推出 Qwen3,这是 Qwen 系列大型语言模型的最新成员。最新的Qwen3系列模型具备双模推理能力(深入思考/快速响应)、支持119种语言及方…...

【C到Java的深度跃迁:从指针到对象,从过程到生态】第四模块·Java特性专精 —— 第十七章 IO流:超越FILE*的维度战争

一、从C文件操作到Java流的进化 1.1 C文件操作的原始挑战 C语言通过FILE*和低级文件描述符进行I/O操作&#xff0c;存在诸多限制&#xff1a; 典型文件复制代码&#xff1a; #include <stdio.h> int copy_file(const char* src, const char* dst) { FILE* in fope…...

Leetcode刷题记录22——滑动窗口最大值

题源&#xff1a;https://leetcode.cn/problems/sliding-window-maximum/description/?envTypestudy-plan-v2&envIdtop-100-liked 题目描述&#xff1a; 思路一&#xff1a; 暴力遍历法&#xff0c;通过一个长度为k的滑动窗口遍历nums&#xff0c;将其中最大的数依次记…...

React 第三十四节 Router 开发中 useLocation Hook 的用法以及案例详解

一、useLocation基础用法 作用&#xff1a;获取当前路由的 location 对象 返回对象结构&#xff1a; {pathname: "/about", // 当前路径search: "?namejohn", // 查询参数&#xff08;URL参数&#xff09;hash: "#contact", …...

BT134-ASEMI机器人功率器件专用BT134

编辑&#xff1a;LL BT134-ASEMI机器人功率器件专用BT134 型号&#xff1a;BT134 品牌&#xff1a;ASEMI 封装&#xff1a;TO-126 批号&#xff1a;最新 引脚数量&#xff1a;3 封装尺寸&#xff1a;如图 特性&#xff1a;双向可控硅 工作结温&#xff1a;-40℃~150℃…...

十五种光电器件综合对比——《器件手册--光电器件》

十五、光电器件 名称 原理 特点 应用 发光二极管&#xff08;LED&#xff09; 基于半导体材料的电致发光效应&#xff0c;当电流通过时&#xff0c;电子与空穴复合&#xff0c;释放出光子。 高效、节能、寿命长、响应速度快、体积小。 广泛用于指示灯、照明、显示&#…...

网络安全攻防演练实训室建设方案

一、引言 在数字化浪潮席卷全球的当下&#xff0c;网络已深度融入社会的各个层面&#xff0c;成为推动经济发展、社会进步和科技创新的关键力量。从日常生活中的移动支付、社交互动&#xff0c;到企业运营中的数据管理、业务拓展&#xff0c;再到国家关键基础设施的运行&#…...

极客天成受邀参加2050大会,共赴人工智能科技盛宴

2025年4月25日&#xff0c;备受瞩目的2050大会在杭州云栖小镇盛大开幕。作为科技领域的佼佼者&#xff0c;北京极客天成科技有限公司受邀参加了此次盛会&#xff0c;与全球科技爱好者共同探索科技的未来。 大会盛况空前&#xff0c;科技盛宴开启 2050大会是由杭州市云栖科技创…...

GUI_DrawPixel 函数详解

GUI_DrawPixel 是嵌入式GUI库中的基础像素绘制函数&#xff0c;用于在指定坐标绘制单个像素点。下面我将详细介绍这个函数的功能、实现和使用方法。 1. 函数功能 在显示屏的指定位置(x,y)绘制一个像素点 使用当前设定的颜色进行绘制 是构建所有高级图形&#xff08;线、圆、…...

AWS MSK 集群升级前配置检查:保障升级平稳进行的关键步骤

在 AWS Managed Streaming for Apache Kafka (MSK) 集群升级之前,进行全面的配置检查至关重要。本文将介绍一个用于 MSK 升级前配置检查的 Bash 脚本,帮助您识别潜在的风险点,确保升级过程的顺利进行。 为什么需要升级前检查? AWS MSK 提供了自动升级功能,但在升级过程中,不…...

leetcode 2516. 每种字符至少取 K 个

题目描述 滑动窗口问题 可以转化为求按照题目要求从两端取走字符后&#xff0c;中间部分的最大长度。中间部分就是一个滑动窗口。 class Solution { public:int takeCharacters(string s, int k) {vector<int> count(3,0);int n s.size();for(int i 0;i <n;i){cou…...

通信原理第七版与第六版区别附pdf

介绍 我用夸克网盘分享了「通信原理 第7版》樊昌信」&#xff0c;链接&#xff1a;https://pan.quark.cn/s/be7c5af4cdce 《通信原理&#xff08;第7版&#xff09;》是在第6版的基础上&#xff0c;为了适应当前通信技术发展和教学需求&#xff0c;并吸取了数十所院校教师的反…...

CPU 空转解析

在编程中&#xff0c;“避免 CPU 空转” 指的是防止程序在等待某个条件满足时&#xff0c;无意义地消耗 CPU 资源。以下是对这一问题的详细解释&#xff1a; 1. 什么是 CPU 空转&#xff1f; 当代码中出现类似以下逻辑时&#xff1a; while not condition_met: # 循环检查条…...

云蝠智能大模型智能呼叫:赋能零售行业服务,助力客户增长

在数字化浪潮席卷全球的今天&#xff0c;零售行业正面临前所未有的变革压力。消费者需求日益个性化、市场竞争愈发激烈&#xff0c;传统的人工客服模式已难以满足企业对高效触达、精准营销和极致体验的需求。而云蝠智能大模型智能呼叫系统&#xff0c;凭借其突破性的AI技术和深…...

Consul安装部署(Windows环境)

部署资料链接&#xff1a;https://download.csdn.net/download/ly1h1/90722829​​​​​ 1.下载 Consul 1.访问 Consul 官方下载页面&#xff1a;Install | Consul | HashiCorp Developer 2.选择适合 Windows 的版本&#xff08;如 consul_1.16.1_windows_amd64.zip&#xff…...

Sql刷题日志(day7)

面试&#xff1a; 1、怎么样的数据挖取能真正对业务起到指导作用&#xff1f; 明确的业务目标&#xff1a;开始之前明确你想通过数据挖掘解决的业务问题。这些问题应具体、可量化&#xff0c;并与业务战略紧密相关。正确的数据集&#xff1a;确保使用的数据与你的业务问题相关…...

【MuJoCo仿真】开源SO100机械臂导入到仿真环境

主要参考&#xff1a;https://github.com/jpata/gym-so100/tree/integration/gym_so100/assets/trs_so_arm100 参考&#xff1a;&#xff08;八&#xff09;lerobot开源项目扩展so100的仿真操控&#xff08;操作记录&#xff09;_so100机械臂 仿真-CSDN博客 下载&#xff1a;…...

redis 有序集合zrange和zrangebyscore的区别

起因是查询数据&#xff0c;用了zrangebyscore 但是一直显示没数据 具体命令zrangebyscore key 0 -1 withscores, 原有印象中一直是这么用的&#xff0c;但是突然查不出来了&#xff0c; 于是搜了下问题所在。 通过分数查看 不能用0和-1表示最小和最大&#xff0c;只能用分数来…...

基于C#窗体+GDI+绘图实现分形树

实验&#xff1a;分形树 一. 引言 实验目的:继续学习C#窗体应用程序的图形化界面设计以及GDI绘图的一些基本指示,通过制作各种类型的分形树增强对于递归的理解,在创造分形图形的过程中感受编程的快乐 Tutorial任务 1.制作不同类型的分形图形(本次演示的是两种不同类型的分…...