DeploySharp 全面支持 YOLO26 系列,助力开发者快速部署落地应用

目录

一、DeploySharp 简介

1. 多引擎支持

2. 图像处理支持

3. 跨平台运行时支持

4. NuGet 包生态

4.1 核心包

4.2 图像处理扩展包

5. 模型支持列表

二、DeploySharp 对 YOLOv26 的全面支持

2.1 支持的 YOLOv26 模型类型

2.2 架构设计

接口层 (IYolov26XxxModel)

配置层 (Yolov26XxxConfig)

实现层 (Yolov26XxxModel)

2.3 类继承关系图

三、YOLOv26 目标检测代码实现

3.1 使用 ImageSharp 作为图像处理库 + TensorRT 推理后端

(1)NuGet 包安装

(2)代码实现

(3)代码详解

(4)结果展示

3.2 使用 OpenCvSharp做图像处理库+ONNX Runtime推理后端

(1)NuGet 包安装

(2)代码实现

(3)代码详解

(4)结果展示

3.3 使用 OpenCvSharp 作为图像处理库 + OpenVINO 推理后端

(1)NuGet 包安装

(2)代码实现

(3)代码详解

(4)结果展示

四、YOLOv26 实例分割

4.1 代码使用示例

4.2 代码详解

4.3 分割结果展示

控制台输出

推理结果绘制

五、YOLOv26 人体姿态估计

5.1 功能介绍

5.2 代码使用示例

5.3 代码详解

5.4 结果展示

控制台输出

推理结果绘制

六、YOLOv26 旋转框检测

6.1 代码使用示例

6.2 代码详解

6.3 旋转框检测结果展示

控制台输出

推理结果绘制

七、跨引擎支持

7.1 引擎性能对比

7.2 引擎选择建议

7.3 引擎切换示例

八、性能优化建议

8.1 预热机制

8.2 批量推理

8.3 设备选择

九、总结

技术支持

引用链接


一、DeploySharp 简介

DeploySharp 是一个专为 C# 开发者设计的跨平台模型部署框架,旨在提供从模型加载、配置管理到推理执行的端到端解决方案。该项目由 椒颜皮皮虾开发并开源,遵循 Apache 2.0 许可协议,目前在 GitHub 上获得了广泛关注。

DeploySharp 采用了清晰的模块化架构设计:

  • 根命名空间DeploySharp 作为统一入口,集成模型加载、推理执行等核心功能

  • 子命名空间:通过 DeploySharp.EngineDeploySharp.DataDeploySharp.Model 等子命名空间实现模块化分层

  • 泛型设计:关键类采用泛型设计,支持图像处理、分类、检测等多任务标准数据交互

项目地址

https://github.com/guojin-yan/DeploySharp.git

1. 多引擎支持

DeploySharp 原生支持三种主流推理引擎:

推理引擎

状态

支持设备

性能特点

OpenVINO

完成

CPU、GPU0(集显)、GPU1(独显)、NPU

Intel 硬件优化

ONNX Runtime

完成

CPU、GPU(CUDA/DML)

跨平台兼容性好

TensorRT

完成

GPU(TensorRT)

NVIDIA GPU 极致性能

2. 图像处理支持

框架提供了两种图像处理库的选择:

图像处理库

特点

适用场景

ImageSharp

纯 C# 实现,跨平台兼容性好,无原生依赖

跨平台应用、Web 应用

OpenCvSharp

OpenCV 的 C# 封装,功能强大,性能优异

桌面应用、高性能场景

3. 跨平台运行时支持

DeploySharp 兼容了广泛的 .NET 运行时环境:

  • .NET Framework 4.8 / 4.8.1

  • .NET Core 3.1

  • .NET 5.0

  • .NET 6.0

  • .NET 7.0

  • .NET 8.0

  • .NET 9.0

  • .NET 10.0

4. NuGet 包生态

4.1 核心包

包名

描述

NuGet 链接

JYPPX.DeploySharp

DeploySharp API 核心库

图片

[1]

核心包功能

  • 推理引擎抽象接口

  • 数据结构定义

  • 模型配置基类

  • 性能分析工具

  • 日志系统

  • 可视化基础功能

4.2 图像处理扩展包

包名

描述

NuGet 链接

JYPPX.DeploySharp.ImageSharp

使用 ImageSharp 的图像处理扩展

图片

[2]

JYPPX.DeploySharp.OpenCvSharp

使用 OpenCvSharp 的图像处理扩展

图片

[3]

扩展包功能

  • 图像加载和保存

  • 图像预处理实现

  • 可视化功能实现

  • 批量处理支持

5. 模型支持列表

截至目前,DeploySharp 已经完成了以下模型的封装,更多模型持续更新中:

Model Name

Model Type

OpenVINO

ONNX Runtime

TensorRT

YOLOv5

Detection

YOLOv5

Segmentation

YOLOv6

Detection

YOLOv7

Detection

YOLOv8

Detection

YOLOv8

Segmentation

YOLOv8

Pose

YOLOv8

Oriented Bounding Boxes

YOLOv9

Detection

YOLOv9

Segmentation

YOLOv10

Detection

YOLOv11

Detection

YOLOv11

Segmentation

YOLOv11

Pose

YOLOv11

Oriented Bounding Boxes

YOLOv12

Detection

Anomalib

Segmentation

PP-YOLOE

Detection

DEIMv2

Detection

RFDETR

Detection

RFDETR

Segmentation

RTDETR

Detection

YOLO26

Detection

YOLO26

Segmentation

YOLO26

Pose

YOLO26

Oriented Bounding Boxes

二、DeploySharp 对 YOLOv26 的全面支持

DeploySharp 框架为 YOLOv26 系列模型提供了全方位的支持,涵盖了目标检测、实例分割、姿态估计和旋转框检测四种主要任务类型。

2.1 支持的 YOLOv26 模型类型

模型类型

功能描述

枚举值

配置类

YOLOv26Det

目标检测

ModelType.YOLOv26DetYolov26DetConfig

YOLOv26Seg

实例分割

ModelType.YOLOv26SegYolov26SegConfig

YOLOv26Pose

人体姿态估计

ModelType.YOLOv26PoseYolov26PoseConfig

YOLOv26Obb

旋转框检测

ModelType.YOLOv26ObbYolov26ObbConfig

2.2 架构设计

DeploySharp 为 YOLOv26 提供了三层架构设计:

接口层 (IYolov26XxxModel)

在核心库 DeploySharp 中定义了统一的接口:

// YOLOv26 检测接口
// IYolov26DetModel 继承自 IYolov10DetModel
// 这种设计使得 YOLOv26 可以复用 YOLOv10 的成熟实现
public abstract class IYolov26DetModel : IYolov10DetModel
{
    /// <summary>
    /// 构造函数,接收模型配置
    /// </summary>
    /// <param name="config">YOLOv26 检测模型配置对象</param>
    public IYolov26DetModel(Yolov26DetConfig config) : base(config)
    {
        // 使用日志系统记录模型初始化信息
        MyLogger.Log.Info($"Initializing {this.GetType().Name}, Config:\n{config}");
    }
}
配置层 (Yolov26XxxConfig)

每种模型类型都有对应的配置类,提供灵活的参数设置:

// YOLOv26 检测配置类
// 继承自 Yolov10DetConfig,复用 YOLOv10 的成熟配置
public class Yolov26DetConfig : Yolov10DetConfig
{
    /// <summary>
    /// 默认构造函数
    /// </summary>
    public Yolov26DetConfig() { }

    /// <summary>
    /// 带模型路径的构造函数
    /// 自动设置合理的默认参数
    /// </summary>
    /// <param name="modelPath">模型文件路径</param>
    public Yolov26DetConfig(string modelPath)
    {
        ...
    }
}
实现层 (Yolov26XxxModel)

分别提供 ImageSharp 和 OpenCvSharp 两种实现,开发者可以根据需求选择。

2.3 类继承关系图

YoloDetConfig (基类)
    ├── Yolov8DetConfig
    ├── Yolov10DetConfig
    └── Yolov26DetConfig (继承自 Yolov10DetConfig)

YoloModel (基类)
    ├── Yolov8DetModel
    ├── Yolov10DetModel
    └── Yolov26DetModel (继承自 Yolov10DetModel)

这种继承设计的优势:

  1. 代码复用:YOLOv26 可以复用 YOLOv10 的成熟实现

  2. 一致性:保持与其他 YOLO 版本的 API 一致性

  3. 易维护:共享的代码逻辑集中管理

三、YOLOv26 目标检测代码实现

3.1 使用 ImageSharp 作为图像处理库 + TensorRT 推理后端

(1)NuGet 包安装

使用 ImageSharp 作为图像处理库、TensorRT 作为推理后端时,需要安装以下核心包:

DeploySharp 基础库及扩展库

JYPPX.DeploySharp
JYPPX.DeploySharp.ImageSharp

TensorRT Runtime 库

JYPPX.TensorRT.CSharp.API.runtime.win-x64.cuda11
或
JYPPX.TensorRT.CSharp.API.runtime.win-x64.cuda12

注意:TensorRT Runtime 库的版本需根据本地设备安装的 CUDA 版本进行选择。

(2)代码实现

以下代码可直接复制运行:

using DeploySharp.Model;       // 引入模型相关定义
using DeploySharp.Data;        // 引入数据处理相关
using DeploySharp.Engine;      // 引入推理引擎核心
using DeploySharp;             // 引入 DeploySharp 主库
using SixLabors.ImageSharp;    // ImageSharp 图像处理库
using SixLabors.ImageSharp.PixelFormats; // ImageSharp 像素格式

namespace DeploySharp.ImageSharp.Demo
{
    /// <summary>
    /// YOLO26目标检测演示类
    /// 该类展示了如何加载 TensorRT 引擎文件,对图像进行推理并可视化结果。
    /// </summary>
    public class YOLOv26DetDemo
    {
        public static void Run()
        {
            // ==========================================
            // 1. 路径配置
            // ==========================================
            
            // 模型下载提示:模型和测试图片可以前往QQ群(945057948)下载
            // 设置 .engine 文件路径。
            // 注意:TensorRT 的 .engine 文件是硬件相关的,即在 RTX 3090 上生成的 engine 通常不能在 RTX 4090 上运行。
            string modelPath = @"D:\Program Files\TensorRT-10.13.0.35-cu11\bin\yolo26s.engine";
            
            // 设置待推理的图片路径
            string imagePath = @"E:\Data\image\bus.jpg";
            // ==========================================
            // 2. 模型配置初始化
            // ==========================================
            
            // 创建  YOLO26 的配置对象,传入模型路径
            Yolov26DetConfig config = new Yolov26DetConfig(modelPath);
            
            // 设置最大批处理大小。
            // 即使只推理一张图片,设置适当的 BatchSize 有时也能利用 GPU 并行能力。
            // 此处设为 2 表示引擎内部最大可以一次处理 2 张图,但要首先保证模型支持。
            config.MaxBatchSize = 2;
            
            // 显式指定推理后端为 TensorRT。
            // DeploySharp 支持多种后端(如 ONNX Runtime, OpenVINO 等),这里强制使用 TensorRT 以获得最佳性能。
            config.SetTargetInferenceBackend(InferenceBackend.TensorRT);
            // ==========================================
            // 3. 类别字典定义
            // ==========================================
            
            // COCO 数据集的 80 个类别名称列表
            // YOLO 模型通常输出的是类别的索引(0-79),我们需要将其映射为人类可读的字符串。
            List<string> d = new List<string> { "person", "bicycle", "car", "motorcycle", "airplane", "bus",
                "train", "truck", "boat", "traffic light", "fire hydrant", "stop sign", "parking meter", "bench",
                "bird", "cat", "dog", "horse", "sheep", "cow", "elephant", "bear", "zebra", "giraffe", "backpack",
                "umbrella", "handbag", "tie", "suitcase", "frisbee", "skis", "snowboard", "sports ball", "kite",
                "baseball bat", "baseball glove", "skateboard", "surfboard", "tennis racket", "bottle", "wine glass",
                "cup", "fork", "knife", "spoon", "bowl", "banana", "apple", "sandwich", "orange", "broccoli", "carrot",
                "hot dog", "pizza", "donut", "cake", "chair", "couch", "potted plant", "bed", "dining table", "toilet",
                "tv", "laptop", "mouse", "remote", "keyboard", "cell phone", "microwave", "oven", "toaster", "sink",
                "refrigerator", "book", "clock", "vase", "scissors", "teddy bear", "hair drier", "toothbrush" };
            // 将列表转换为字典,Key 为索引,Value 为类别名称
            Dictionary<int, string> CategoryDict = new Dictionary<int, string>();
            for (int i = 0; i < d.Count; i++)
            {
                CategoryDict[i] = d[i];
            }
            
            // 将类别字典赋值给配置对象,用于后续结果解析
            config.CategoryDict = CategoryDict;
            // ==========================================
            // 4. 模型实例化
            // ==========================================
            
            // 根据配置初始化检测器模型。
            // 此步骤会加载 engine 文件到内存,并初始化 GPU 上下文。
            Yolov26DetModel model = new Yolov26DetModel(config);
            
            // 使用 SixLabors.ImageSharp 加载图片。
            // Image.Load 会自动根据文件扩展名解码图片。
            var img = Image.Load(imagePath);
            // ==========================================
            // 5. 模型推理与性能测试
            // ==========================================
            
            // 执行第一次推理。
            // 注意:TensorRT 的首次推理通常包含 Kernel 初始化等开销,速度会比后续推理慢。
            DetResult[] result = model.Predict(img);
            
            // 执行第二次推理。
            // 这次推理的时间更能代表模型在实际场景中的平均推理速度。
            result = model.Predict(img);
            
            // 执行第三次推理(可选),用于进一步取平均值或确保稳定性。
            result = model.Predict(img);
            
            // 打印推理性能分析记录。
            // 这通常会输出预处理、推理、后端处理各阶段的耗时(毫秒级)。
            model.ModelInferenceProfiler.PrintAllRecords();
            
            // 初始化一个列表,虽然本例未直接使用,但在处理多图结果时可能会用到。
            List<Image<Rgb24>> resultsMat = new List<Image<Rgb24>>();
            // ==========================================
            // 6. 结果可视化与保存
            // ==========================================
            
            // 将推理结果绘制在原图上。
            // Visualize.DrawDetResult 会根据 DetResult 中的坐标和置信度画框和文字。
            // 需要将 img 强制转换为 Image<Rgb24>,因为 DrawDetResult 通常需要特定的像素格式。
            var resultImg = Visualize.DrawDetResult(result, (Image<Rgb24>)img, new VisualizeOptions(1.0f));
            // 保存带有检测框的图片到当前目录下。
            // 文件名包含配置的模型类型,便于区分不同模型的结果。
            resultImg.Save(@$"./result_{config.ModelType}.jpg");
        }
    }
}
(3)代码详解
  1. 配置模型参数

    Yolov26DetConfig config = new Yolov26DetConfig(modelPath);
    config.MaxBatchSize = 2;
    config.SetTargetInferenceBackend(InferenceBackend.TensorRT);

    • 创建配置对象,使用 TensorRT 引擎进行推理

    • 设置最大批量大小为 2,支持最多 2 张图片的批量推理

  2. 创建模型实例

    Yolov26DetModel model = new Yolov26DetModel(config);

    模型实例化时会自动加载 .engine 文件并初始化 TensorRT 引擎。

  3. 执行推理

    DetResult[] result = model.Predict(img);

    Predict() 方法返回检测结果数组,每个元素包含边界框、置信度和类别信息。

  4. 性能分析

    model.ModelInferenceProfiler.PrintAllRecords();

    打印详细的性能统计,包括预处理、推理、后处理各阶段的耗时。

(4)结果展示

控制台打印输出:

image-20260116231024791

推理结果图片:

result_YOLOv26Det

3.2 使用 OpenCvSharp做图像处理库+ONNX Runtime推理后端

(1)NuGet 包安装

使用 OpenCvSharp 作为图像处理库、ONNX Runtime 作为推理后端时,需要安装以下核心包:

DeploySharp 基础库及扩展库

JYPPX.DeploySharp
JYPPX.DeploySharp.OpenCvSharp

OpenCvSharp Runtime 库

OpenCvSharp4.runtime.win

可选加速包:ONNX Runtime 支持多种推理加速方式,除默认 CPU 加速外,可根据需求安装以下 NuGet 包:

加速方式

NuGet 包名

OpenVINO 加速

Intel.ML.OnnxRuntime.OpenVino

DirectML 加速

Microsoft.AI.DirectML

CUDA 加速

Microsoft.ML.OnnxRuntime.Gpu

更多加速方式请参考 ONNX Runtime 官方文档。本节以 DirectML 为例进行演示。

(2)代码实现

推理代码如下所示,可直接复制运行:

using OpenCvSharp;            // 引入 OpenCvSharp,用于图像的读取、显示和矩阵操作
using DeploySharp.Model;      // 引入模型定义和配置类
using DeploySharp.Data;       // 引入数据处理相关的类
using DeploySharp.Engine;     // 引入推理引擎核心接口和枚举
using DeploySharp;            // 引入 DeploySharp 主库和可视化工具
namespace DeploySharp.OpenCvSharp.Demo
{
    /// <summary>
    ///  YOLO26 目标检测演示 (基于 ONNX Runtime + OpenCvSharp)
    /// 本示例展示了如何加载 ONNX 模型,并配置使用 DirectML 在 GPU 上进行推理。
    /// </summary>
    public class Yolov26DetDemo
    {
        public static void Run()
        {
            // ==========================================
            // 1. 路径配置
            // ==========================================
            
            // 模型下载提示:模型和测试图片可以前往QQ群(945057948)下载
            // 注意:此处加载的是标准的 .onnx 模型文件,而不是 TensorRT 的 .engine 文件。
            // ONNX 模型具有良好的跨平台特性。
            string modelPath = @"E:\Model\yolov28\yolo26s.onnx";
            
            // 设置待检测的图片路径
            string imagePath = @"E:\Data\image\bus.jpg";
            // ==========================================
            // 2. 模型配置与推理后端设置
            // ==========================================
            
            // 创建  YOLO26 的配置对象,传入模型路径
            Yolov26DetConfig config = new Yolov26DetConfig(modelPath);
            
            // [关键步骤] 设置推理后端为 ONNX Runtime。
            // 这意味着模型将通过 ONNX Runtime 进行加载和执行,而不是 TensorRT。
            config.SetTargetInferenceBackend(InferenceBackend.OnnxRuntime);
            
            // 设置目标设备类型为 GPU 0。
            // 这是一个逻辑设定,具体执行取决于 ONNX Runtime 的提供程序。
            config.SetTargetDeviceType(DeviceType.GPU0);
            
            // [关键步骤] 设置 ONNX Runtime 的具体执行提供程序为 DML (DirectML)。
            // DirectML 是 Windows 上的高性能硬件加速接口,支持 AMD、NVIDIA 和 Intel 显卡。
            // 如果不加这一行,ONNX Runtime 可能默认使用 CPU 进行推理,速度较慢。
            config.SetTargetOnnxRuntimeDeviceType(OnnxRuntimeDeviceType.DML);
            // ==========================================
            // 3. 类别字典定义 (COCO 80类)
            // ==========================================
            
            // 定义 COCO 数据集的 80 个类别名称
            // 这些名称将用于在结果可视化时标注检测到的物体
            List<string> d = new List<string> { "person", "bicycle", "car", "motorcycle", "airplane", "bus",
                "train", "truck", "boat", "traffic light", "fire hydrant", "stop sign", "parking meter", "bench",
                "bird", "cat", "dog", "horse", "sheep", "cow", "elephant", "bear", "zebra", "giraffe", "backpack",
                "umbrella", "handbag", "tie", "suitcase", "frisbee", "skis", "snowboard", "sports ball", "kite",
                "baseball bat", "baseball glove", "skateboard", "surfboard", "tennis racket", "bottle", "wine glass",
                "cup", "fork", "knife", "spoon", "bowl", "banana", "apple", "sandwich", "orange", "broccoli", "carrot",
                "hot dog", "pizza", "donut", "cake", "chair", "couch", "potted plant", "bed", "dining table", "toilet",
                "tv", "laptop", "mouse", "remote", "keyboard", "cell phone", "microwave", "oven", "toaster", "sink",
                "refrigerator", "book", "clock", "vase", "scissors", "teddy bear", "hair drier", "toothbrush" };
            // 构建<索引, 类别名>字典
            Dictionary<int, string> CategoryDict = new Dictionary<int, string>();
            for (int i = 0; i < d.Count; i++)
            {
                CategoryDict[i] = d[i];
            }
            
            // 将类别字典赋值给配置对象
            config.CategoryDict = CategoryDict;
            // ==========================================
            // 4. 模型初始化
            // ==========================================
            
            // 实例化模型,传入配置。
            // 此时 DeploySharp 会根据配置加载 ONNX 模型,并初始化 DirectML 会话。
            Yolov26DetModel model = new Yolov26DetModel(config);
            
            // 使用 OpenCvSharp 读取图片到 Mat 对象中
            // Mat 是 OpenCV 中用于存储图像数据的核心矩阵结构
            Mat img = Cv2.ImRead(imagePath);
            // ==========================================
            // 5. 模型推理 (预热与测试)
            // ==========================================
            
            // 执行多次推理。
            // 第一次推理通常包含模型加载、内存分配等初始化开销,耗时较长。
            Result[] result = model.Predict(img);
            
            // 后续推理用于测试稳定的推理速度。
            result = model.Predict(img);
            result = model.Predict(img);
            result = model.Predict(img);
            
            // 打印性能分析记录。
            // 这将输出推理过程中各阶段(如预处理、推理执行、后处理)的耗时统计。
            model.ModelInferenceProfiler.PrintAllRecords();
            
            // 初始化列表,用于存储处理后的图像(本例主要用于演示)
            List<Mat> resultsMat = new List<Mat>();
            // ==========================================
            // 6. 结果可视化与显示
            // ==========================================
            
            // 调用可视化工具,将检测框(矩形框)和类别标签绘制在原图上。
            // VisualizeOptions(1.0f) 可能指定了缩放比例或字体大小等参数。
            var resultImg = Visualize.DrawDetResult(result, img, new VisualizeOptions(1.0f));
            
            // 将绘制好的图像加入列表
            resultsMat.Add(resultImg);
            
            // 使用 OpenCV 的窗口显示结果图像。
            // "image" 是窗口的标题。
            Cv2.ImShow("image", resultImg);
            
            // 等待按键输入。
            // 参数 0 表示无限期等待,直到用户按下键盘任意键。
            // 这是为了防止控制台程序执行完毕后窗口立即闪退。
            Cv2.WaitKey();
        }
    
    }
}
(3)代码详解

上述代码与 3.1 节的代码结构基本相似,主要区别在于推理后端的配置:

  1. 设置推理后端为 ONNX Runtime

    config.SetTargetInferenceBackend(InferenceBackend.OnnxRuntime);

  2. 设置推理设备为 GPU(此处使用独显设备):

    config.SetTargetDeviceType(DeviceType.GPU0);

  3. 配置 DirectML 加速:DirectML 是 Windows 上的高性能硬件加速接口,支持 AMD、NVIDIA 和 Intel 显卡,使用简单且无需复杂配置。

    config.SetTargetOnnxRuntimeDeviceType(OnnxRuntimeDeviceType.DML);

(4)结果展示

控制台输出如下。使用 DirectML 调用显卡加速,虽在速度上与 TensorRT 相比有所差距,但其配置简单、无需复杂设置的优势依然明显,适合快速开发验证。

image-20260116221718516

3.3 使用 OpenCvSharp 作为图像处理库 + OpenVINO 推理后端

(1)NuGet 包安装

使用 OpenCvSharp 作为图像处理库、OpenVINO 作为推理后端时,需要安装以下核心包:

DeploySharp 基础库及扩展库

JYPPX.DeploySharp
JYPPX.DeploySharp.OpenCvSharp

Runtime 库

OpenCvSharp4.runtime.win
OpenVINO.runtime.win
(2)代码实现

推理代码如下所示,可直接复制运行:

using OpenCvSharp;            // 引入 OpenCvSharp,用于图像的读取、显示和矩阵操作
using DeploySharp.Model;      // 引入模型定义和配置类
using DeploySharp.Data;       // 引入数据处理相关的类
using DeploySharp.Engine;     // 引入推理引擎核心接口和枚举
using DeploySharp;            // 引入 DeploySharp 主库和可视化工具
namespace DeploySharp.OpenCvSharp.Demo
{
    /// <summary>
    ///  YOLO26 目标检测演示 (基于OpenVINO  + OpenCvSharp)
    /// </summary>
    public class Yolov26DetDemo
    {
        public static void Run()
        {
            // ==========================================
            // 1. 路径配置
            // ==========================================
            
            // 模型下载提示:模型和测试图片可以前往QQ群(945057948)下载
            // 注意:此处加载的是标准的 .onnx 模型文件,而不是 TensorRT 的 .engine 文件。
            // ONNX 模型具有良好的跨平台特性。
            string modelPath = @"E:\Model\yolov28\yolo26s.onnx";
            
            // 设置待检测的图片路径
            string imagePath = @"E:\Data\image\bus.jpg";
            // ==========================================
            // 2. 模型配置
            // ==========================================
            
            // 创建 YOLO26Det 的配置对象,传入模型路径
            Yolov26DetConfig config = new Yolov26DetConfig(modelPath);
            
            // ==========================================
            // 3. 类别字典定义 (COCO 80类)
            // ==========================================
            
            // 定义 COCO 数据集的 80 个类别名称
            // 这些名称将用于在结果可视化时标注检测到的物体
            List<string> d = new List<string> { "person", "bicycle", "car", "motorcycle", "airplane", "bus",
                "train", "truck", "boat", "traffic light", "fire hydrant", "stop sign", "parking meter", "bench",
                "bird", "cat", "dog", "horse", "sheep", "cow", "elephant", "bear", "zebra", "giraffe", "backpack",
                "umbrella", "handbag", "tie", "suitcase", "frisbee", "skis", "snowboard", "sports ball", "kite",
                "baseball bat", "baseball glove", "skateboard", "surfboard", "tennis racket", "bottle", "wine glass",
                "cup", "fork", "knife", "spoon", "bowl", "banana", "apple", "sandwich", "orange", "broccoli", "carrot",
                "hot dog", "pizza", "donut", "cake", "chair", "couch", "potted plant", "bed", "dining table", "toilet",
                "tv", "laptop", "mouse", "remote", "keyboard", "cell phone", "microwave", "oven", "toaster", "sink",
                "refrigerator", "book", "clock", "vase", "scissors", "teddy bear", "hair drier", "toothbrush" };
            // 构建<索引, 类别名>字典
            Dictionary<int, string> CategoryDict = new Dictionary<int, string>();
            for (int i = 0; i < d.Count; i++)
            {
                CategoryDict[i] = d[i];
            }
            
            // 将类别字典赋值给配置对象
            config.CategoryDict = CategoryDict;
            // ==========================================
            // 4. 模型初始化
            // ==========================================
            
            // 实例化模型,传入配置。
            // 此时 DeploySharp 会根据配置加载 ONNX 模型,并初始化 DirectML 会话。
            Yolov26DetModel model = new Yolov26DetModel(config);
            
            // 使用 OpenCvSharp 读取图片到 Mat 对象中
            // Mat 是 OpenCV 中用于存储图像数据的核心矩阵结构
            Mat img = Cv2.ImRead(imagePath);
            // ==========================================
            // 5. 模型推理 (预热与测试)
            // ==========================================
            
            // 执行多次推理。
            // 第一次推理通常包含模型加载、内存分配等初始化开销,耗时较长。
            Result[] result = model.Predict(img);
            
            // 后续推理用于测试稳定的推理速度。
            result = model.Predict(img);
            result = model.Predict(img);
            result = model.Predict(img);
            
            // 打印性能分析记录。
            // 这将输出推理过程中各阶段(如预处理、推理执行、后处理)的耗时统计。
            model.ModelInferenceProfiler.PrintAllRecords();
            
            // 初始化列表,用于存储处理后的图像(本例主要用于演示)
            List<Mat> resultsMat = new List<Mat>();
            // ==========================================
            // 6. 结果可视化与显示
            // ==========================================
            
            // 调用可视化工具,将检测框(矩形框)和类别标签绘制在原图上。
            // VisualizeOptions(1.0f) 可能指定了缩放比例或字体大小等参数。
            var resultImg = Visualize.DrawDetResult(result, img, new VisualizeOptions(1.0f));
            
            // 将绘制好的图像加入列表
            resultsMat.Add(resultImg);
            
            // 使用 OpenCV 的窗口显示结果图像。
            // "image" 是窗口的标题。
            Cv2.ImShow("image", resultImg);
            
            // 等待按键输入。
            // 参数 0 表示无限期等待,直到用户按下键盘任意键。
            // 这是为了防止控制台程序执行完毕后窗口立即闪退。
            Cv2.WaitKey();
        }
    
    }
}
(3)代码详解

上述代码与 3.2 节的代码结构基本相似。使用 OpenVINO 作为推理后端时,通常无需额外设置,因为 DeploySharp 默认支持 OpenVINO。

若设备配备英特尔的集成显卡、独立显卡或 NPU,可通过以下代码指定推理设备以获得更好的性能:

config.SetTargetInferenceBackend(InferenceBackend.OpenVINO);
config.SetTargetDeviceType(DeviceType.GPU0);   // 设置设备为集显
// 或
config.SetTargetDeviceType(DeviceType.GPU1);  // 设置推理设备为独立显卡
// 或
config.SetTargetDeviceType(DeviceType.NPU);  // 设置推理设备为 NPU
(4)结果展示

控制台输出如下。使用 OpenVINO 在 CPU 上进行推理时,虽因设备限制推理速度有限,但 OpenVINO 已是 CPU 环境下推理速度最快的工具之一,且配置简单,全面支持英特尔全系设备,欢迎开发者使用。

image-20260116223936848

四、YOLOv26 实例分割

4.1 代码使用示例

using OpenCvSharp;            // 引入 OpenCvSharp,用于图像读取、显示及矩阵操作
using DeploySharp.Model;      // 引入模型配置相关的类
using DeploySharp.Data;       // 引入数据结果定义相关的类
using DeploySharp.Engine;     // 引入推理引擎核心接口
using DeploySharp;            // 引入 DeploySharp 主库及可视化工具

namespace DeploySharp.OpenCvSharp.Demo
{
    /// <summary>
    /// YOLO26Seg 实例分割演示类
    /// 本示例展示如何加载 TensorRT 引擎文件,对图像进行实例分割推理,并将掩码绘制在原图上。
    /// </summary>
    public class Yolov26SegDemo
    {
        public static void Run()
        {
            // ==========================================
            // 1. 路径配置
            // ==========================================
            
            // 模型下载提示:模型和测试图片可以前往QQ群(945057948)下载
            // 设置 TensorRT 引擎文件路径。
            // 注意:这里使用的是 .engine 文件,它是针对特定 GPU 和 TensorRT 版本编译的。
            // 文件名中的 '-seg' 表示这是一个带有分割头的实例分割模型。
            string modelPath = @"D:\Program Files\TensorRT-10.13.0.35-cu11\bin\yolo26s-seg.engine";
            
            // 设置待推理的图片路径
            string imagePath = @"E:\Data\image\bus.jpg";


            // ==========================================
            // 2. 模型配置与初始化
            // ==========================================
            
            // 创建 YOLO26Seg (实例分割) 的配置对象,传入模型路径
            Yolov26SegConfig config = new Yolov26SegConfig(modelPath);
            
            // [关键设置] 指定推理后端为 TensorRT。
            // 利用 TensorRT 可以在 NVIDIA GPU 上获得极高的推理速度。
            config.SetTargetInferenceBackend(InferenceBackend.TensorRT);
            
            // 实例化模型。
            // 此时会加载引擎文件,初始化 GPU 显存上下文。
            Yolov26SegModel model = new Yolov26SegModel(config);


            // ==========================================
            // 3. 图像加载
            // ==========================================
            
            // 使用 OpenCvSharp 读取图片。
            // img 是一个 Mat 对象,包含了图像的像素数据。
            Mat img = Cv2.ImRead(imagePath);


            // ==========================================
            // 4. 模型推理 (预热与性能测试)
            // ==========================================
            
            // 执行第一次推理。
            // 首次运行通常包含模型加载、显存分配等开销,耗时较长。
            var result = model.Predict(img);
            
            // 执行后续多次推理。
            // 这是为了排除初始化开销,测试模型在稳定状态下的推理速度。
            result = model.Predict(img);
            result = model.Predict(img);
            result = model.Predict(img);
            
            // 打印推理性能分析记录。
            // 这将输出预处理、推理计算、后处理(包括掩码生成)各阶段的耗时。
            model.ModelInferenceProfiler.PrintAllRecords();


            // ==========================================
            // 5. 结果可视化
            // ==========================================
            
            // 调用可视化工具,绘制分割结果。
            // 注意这里使用的是 DrawSegResult (绘制分割结果),而不是 DrawDetResult (绘制检测框)。
            // 该函数会将检测到的物体框、类别标签以及彩色的半透明掩码绘制在原图上。
            var resultImg = Visualize.DrawSegResult(result, img, new VisualizeOptions(1.0f));
            
            // 使用 OpenCV 窗口显示渲染后的结果图像。
            Cv2.ImShow("image", resultImg);
            
            // 等待按键输入,防止窗口闪退。
            Cv2.WaitKey();
        }
    }
}

4.2 代码详解

  1. 创建分割配置

    Yolov26SegConfig config = new Yolov26SegConfig(modelPath);
    config.SetTargetInferenceBackend(InferenceBackend.TensorRT);

    Yolov26SegConfig 是 YOLOv26 分割模型的配置类。

  2. 执行分割推理

    var result = model.Predict(img);

    分割推理返回 SegResult[] 数组,每个元素包含边界框、置信度、类别和分割掩码。

  3. 可视化分割结果

    var resultImg = Visualize.DrawSegResult(result, img, new VisualizeOptions(1.0f));

    DrawSegResult 会为每个检测到的对象绘制不同颜色的掩码,叠加在原图上。

4.3 分割结果展示

控制台输出

以下三张截图分别展示了在 TensorRT GPU、ONNX Runtime(DirectML) GPU、OpenVINO CPU 设备下的推理性能。不同引擎各有优势,开发者可根据自身硬件环境选择最适合的方案。

TensorRT GPU:

image-20260116231515663

ONNX Runtime (DirectML) GPU:

image-20260116231805014

OpenVINO CPU:

image-20260116231630904

推理结果绘制

下图为官方预训练模型导出后的推理结果示例:

image-20260116231431298

五、YOLOv26 人体姿态估计

5.1 功能介绍

YOLO26 Pose 模型用于检测人体关键点,通常支持 17 个关键点(头部、颈部、肩膀、手肘、手腕、臀部、膝盖、脚踝等)。

关键点定义(COCO 格式):

关键点

名称

描述

0

nose

鼻子

1

left_eye

左眼

2

right_eye

右眼

3

left_ear

左耳

4

right_ear

右耳

5

left_shoulder

左肩

6

right_shoulder

右肩

7

left_elbow

左肘

8

right_elbow

右肘

9

left_wrist

左腕

10

right_wrist

右腕

11

left_hip

左髋

12

right_hip

右髋

13

left_knee

左膝

14

right_knee

右膝

15

left_ankle

左踝

16

right_ankle

右踝

5.2 代码使用示例

using OpenCvSharp;            // 引入 OpenCvSharp,用于图像的读取、显示和矩阵操作
using DeploySharp.Model;      // 引入模型定义和配置类
using DeploySharp.Data;       // 引入数据结果相关的类
using DeploySharp.Engine;     // 引入推理引擎核心接口
using DeploySharp;            // 引入 DeploySharp 主库和可视化工具
using System;                 // 引入 System 命名空间以使用 Console

namespace DeploySharp.OpenCvSharp.Demo
{
    /// <summary>
    /// YOLO26Pose 姿态估计演示类
    /// 本示例展示了如何加载 ONNX 模型进行人体关键点检测,并可视化骨骼连接。
    /// </summary>
    public class Yolov26PoseDemo
    {
        public static void Run()
        {
            // ==========================================
            // 1. 路径配置
            // ==========================================
            
            // 模型下载提示:模型和测试图片可以前往QQ群(945057948)下载
            // 设置 ONNX 模型文件路径。
            // '-pose' 后缀表示这是一个专门用于姿态估计(关键点检测)的模型。
            string modelPath = @"E:\Model\yolov28\yolo26s-pose.onnx";
            
            // 设置待推理的图片路径
            string imagePath = @"E:\Data\image\demo_9.jpg";


            // ==========================================
            // 2. 模型配置与初始化
            // ==========================================
            
            // 创建 YOLO26Pose (姿态估计) 的配置对象,传入模型路径
            Yolov26PoseConfig config = new Yolov26PoseConfig(modelPath);
            
            // [关键设置] 设置推理后端为 ONNX Runtime。
            // 这使得模型可以跨平台运行,不仅限于 NVIDIA GPU(取决于 ONNX Runtime 的安装提供程序)。
            config.SetTargetInferenceBackend(InferenceBackend.OnnxRuntime);
            
            // 实例化姿态估计模型。
            // 模型加载时会解析 ONNX 图结构,准备好输入输出节点。
            Yolov26PoseModel model = new Yolov26PoseModel(config);


            // ==========================================
            // 3. 图像加载
            // ==========================================
            
            // 使用 OpenCvSharp 读取图片。
            Mat img = Cv2.ImRead(imagePath);


            // ==========================================
            // 4. 模型推理与结果查看
            // ==========================================
            
            // 执行推理。
            // 第一次推理通常较慢,包含初始化开销。
            var result = model.Predict(img);
            
            // 执行多次推理以测试稳定状态下的性能。
            result = model.Predict(img);
            result = model.Predict(img);
            result = model.Predict(img);
            
            // 打印第一个结果的详细信息到控制台。
            // 姿态估计的 Result 对象通常包含检测框信息以及一个关键点数组。
            // 这一行有助于开发者调试,查看模型输出的原始数据结构。
            Console.WriteLine(result[0].ToString());
            
            // 打印性能分析记录,查看各阶段耗时。
            model.ModelInferenceProfiler.PrintAllRecords();


            // ==========================================
            // 5. 结果可视化
            // ==========================================
            
            // 调用可视化工具,绘制姿态估计结果。
            // 注意这里使用的是 DrawPoses,它会自动将识别出的关键点(如眼睛、肩膀、肘部等)
            // 用圆点标出,并根据人体结构连接成骨架。
            // VisualizeOptions(1.0f) 可能指定了绘制时的线条粗细或字体缩放比例。
            var resultImg = Visualize.DrawPoses(result, img, new VisualizeOptions(1.0f));
            
            // 显示结果图像。
            Cv2.ImShow("image", resultImg);
            
            // 等待按键,防止窗口闪退。
            Cv2.WaitKey();
        }
    }
}

5.3 代码详解

  1. 创建姿态估计配置

    Yolov26PoseConfig config = new Yolov26PoseConfig(modelPath);
    config.SetTargetInferenceBackend(InferenceBackend.OnnxRuntime);

    Yolov26PoseConfig 是 YOLOv26 姿态估计模型的配置类。

  2. 执行姿态估计推理

    var result = model.Predict(img);

    姿态估计推理返回 KeyPointResult[] 数组,每个元素包含人体边界框、置信度和 17 个关键点坐标。

  3. 可视化姿态估计结果

    var resultImg = Visualize.DrawPoses(result, img, new VisualizeOptions(1.0f));

    DrawPoses 会绘制人体骨架(连接关键点)和关键点标记。

5.4 结果展示

控制台输出

以下截图展示了在 ONNX Runtime CPU 设备下的推理性能:

image-20260116232926313

推理结果绘制

下图为官方预训练模型导出后的推理结果示例:

image-20260116232942723

六、YOLOv26 旋转框检测

YOLOv26 OBB (Oriented Bounding Box) 模型用于检测旋转物体,生成带有旋转角度的边界框。这对于检测航空影像中的建筑物、遥感图像中的车辆等场景非常重要。

6.1 代码使用示例

以下代码演示如何使用 TensorRT 引擎进行旋转目标检测:

using OpenCvSharp;            // 引入 OpenCvSharp,用于图像读取、显示及绘图
using DeploySharp.Model;      // 引入模型配置相关的类
using DeploySharp.Data;       // 引入数据结果定义相关的类
using DeploySharp.Engine;     // 引入推理引擎核心接口
using DeploySharp;            // 引入 DeploySharp 主库及可视化工具
namespace DeploySharp.OpenCvSharp.Demo
{
    /// <summary>
    /// YOLOv26 OBB 旋转目标检测演示类
    /// 本示例展示如何加载 TensorRT 引擎文件,对图像进行旋转目标检测,并绘制旋转框。
    /// </summary>
    public class Yolov26ObbDemo
    {
        public static void Run()
        {
            // ==========================================
            // 1. 路径配置
            // ==========================================
            
            // 模型下载提示:模型和测试图片可以前往 QQ 群(945057948)下载
            // '-obb' 表示该模型用于输出旋转边界框
            string modelPath = @"D:\Program Files\TensorRT-10.13.0.35-cu11\bin\yolo26s-obb.engine";
            
            // 设置待推理的图片路径
            // plane.png 是旋转目标检测的经典测试图(飞机停机坪通常包含各种角度的飞机)。
            string imagePath = @"E:\Data\image\plane.png";
            // ==========================================
            // 2. 模型配置与初始化
            // ==========================================
            
            // 创建 YOLOv26 OBB (旋转目标检测) 的配置对象,传入模型路径
            Yolov26ObbConfig config = new Yolov26ObbConfig(modelPath);
            
            // [关键设置] 指定推理后端为 TensorRT。
            // 这将调用 NVIDIA GPU 进行高性能计算。
            // 注意:因为使用的是 .engine 文件,所以必须选择 TensorRT 后端。
            config.SetTargetInferenceBackend(InferenceBackend.TensorRT);
            
            // 实例化旋转目标检测模型。
            Yolov26ObbModel model = new Yolov26ObbModel(config);
            // ==========================================
            // 3. 图像加载
            // ==========================================
            
            // 使用 OpenCvSharp 读取图片。
            Mat img = Cv2.ImRead(imagePath);
            // ==========================================
            // 4. 模型推理
            // ==========================================
            
            // 执行推理。
            var result = model.Predict(img);
            
     
            // 如果需要测试纯推理速度(排除初始化开销),可以取消注释进行多次循环。
            result = model.Predict(img);
            result = model.Predict(img);
            result = model.Predict(img);
            
            // 打印性能分析记录。
            // 这将显示预处理、TensorRT 推理、后处理(包含 OBB 解码)的耗时。
            model.ModelInferenceProfiler.PrintAllRecords();
            // ==========================================
            // 5. 结果可视化
            // ==========================================
            
            // 调用可视化工具,绘制旋转检测结果。
            // DrawObbResult 会根据检测到的 x, y, w, h 和 angle (角度) 绘制旋转矩形。
            var resultImg = Visualize.DrawObbResult(result, img, new VisualizeOptions(1.0f));
            
            // [可选] 调整图片大小以适应屏幕
            // 航拍图通常分辨率很大,可以缩小显示。
            //Cv2.Resize(resultImg, resultImg, new Size(resultImg.Width / 4, resultImg.Height / 4));
            
            // 显示结果图像。
            Cv2.ImShow("image", resultImg);
            
            // 等待按键,防止窗口闪退。
            Cv2.WaitKey();
        }
    }
}

6.2 代码详解

  1. 创建旋转框检测配置

    Yolov26ObbConfig config = new Yolov26ObbConfig(modelPath);
    config.SetTargetInferenceBackend(InferenceBackend.TensorRT);

    Yolov26ObbConfig 是 YOLOv26 旋转框检测模型的配置类。

  2. 执行旋转框检测推理

    ObbResult[] result = model.Predict(img);

    旋转框检测推理返回 ObbResult[] 数组,每个元素包含中心点、宽度、高度、旋转角度和类别信息。

  3. 可视化旋转框检测结果

    var resultImg = Visualize.DrawObbResult(result, img, new VisualizeOptions(1.0f));

    DrawObbResult 会绘制旋转的边界框(四边形),而不是普通的轴对齐矩形。

6.3 旋转框检测结果展示

控制台输出

以下截图展示了在 TensorRT GPU 设备下的推理性能:

image-20260116233931296

推理结果绘制

下图为官方预训练模型导出后的推理结果示例:

image-20260116233543902

七、跨引擎支持

DeploySharp 原生支持 OpenVINO、ONNX Runtime、TensorRT 三大主流推理引擎,为开发者在 CPU、GPU、NPU 等不同硬件设备上部署模型提供了最全面的解决方案。集成的 YOLOv26 系列默认支持所有推理引擎,开发者可根据实际硬件环境选择最优的推理方案。

7.1 引擎性能对比

引擎

优势

适用场景

性能特点

OpenVINO

Intel 硬件优化,支持多种设备(CPU、GPU0、GPU1、NPU)

Intel CPU、Intel GPU、NPU

Intel 硬件加速

ONNX Runtime

广泛支持,跨平台,兼容性好

CPU、GPU(CUDA/DML)、移动端

平衡性能与兼容性

TensorRT

NVIDIA GPU 极致性能,经过专门优化

NVIDIA GPU 高性能场景

最佳 GPU 性能

7.2 引擎选择建议

根据硬件环境和应用场景选择合适的推理引擎:

硬件环境

推荐引擎

说明

Intel CPU/GPU

OpenVINO

Intel 硬件优化,性能最佳

NVIDIA GPU

TensorRT

极致性能,适合高频推理

NVIDIA GPU (需要灵活性)

ONNX Runtime (CUDA)

兼容性好,易于切换

通用 CPU

ONNX Runtime

跨平台兼容性好

7.3 引擎切换示例

// 切换到 OpenVINO
config.SetTargetInferenceBackend(InferenceBackend.OpenVINO);
config.TargetDeviceType = DeviceType.CPU;

// 切换到 ONNX Runtime (CUDA)
config.SetTargetInferenceBackend(InferenceBackend.OnnxRuntime);
config.TargetDeviceType = DeviceType.GPU;

// 切换到 TensorRT
config.SetTargetInferenceBackend(InferenceBackend.TensorRT);
config.TargetDeviceType = DeviceType.GPU;

注意:切换推理引擎可能需要重新加载模型,建议在应用启动时确定使用的引擎。

八、性能优化建议

8.1 预热机制

首次推理通常较慢,因为需要加载模型、初始化推理引擎、编译计算图等。建议执行几次预热推理。

// 预热模型(执行 3 次推理)
for (int i = 0; i < 3; i++)
{
    model.Predict(img);
}

// 实际推理
var result = model.Predict(img);

8.2 批量推理

对于大量图像,使用批量推理可以提高吞吐量,前提是模型支持多 Batch Size。

// 设置批量大小为 4
config.InferBatch = 4;

// 准备批量图像
var imageList = new List<Image<Rgb24>>();
imageList.Add(Image.Load<Rgb24>(@"path1.jpg"));
imageList.Add(Image.Load<Rgb24>(@"path2.jpg"));
imageList.Add(Image.Load<Rgb24>(@"path3.jpg"));
imageList.Add(Image.Load<Rgb24>(@"path4.jpg"));

// 执行批量推理
var results = model.Predict(imageList);

8.3 设备选择

根据硬件选择最优设备:

// Intel 环境:使用 OpenVINO
config.SetTargetInferenceBackend(InferenceBackend.OpenVINO);

// NVIDIA 环境:使用 TensorRT 或 ONNX Runtime (CUDA)
config.SetTargetInferenceBackend(InferenceBackend.TensorRT);
config.TargetDeviceType = DeviceType.GPU;

九、总结

DeploySharp 对 YOLOv26 系列提供了全面而深入的支持,包括:

  1. 四种任务类型全覆盖:检测、分割、姿态估计、旋转框检测

  2. 双图像处理库支持:ImageSharp 和 OpenCvSharp

  3. 三推理引擎兼容:OpenVINO、ONNX Runtime、TensorRT

  4. 完善的配置系统:灵活的参数设置

  5. 详细的性能分析:内置性能分析器

  6. 丰富的可视化选项:支持多种结果展示方式

YOLOv26 的简化的输出格式和优化的架构,结合 DeploySharp 的封装和优化,使得开发者可以轻松地将 YOLOv26 集成到各种 C# 应用中,构建高效、准确的计算机视觉解决方案。

随着 YOLO 系列的持续发展,DeploySharp 也将持续跟进,为开发者提供最新模型的支持。期待 YOLOv26 及未来版本的更多创新和突破。

技术支持

如有问题或建议,欢迎通过以下方式交流:

  • 📧 GitHub Issues:在项目仓库提 Issue 或 Pull Request

  • 💬 QQ 交流群:加入 945057948,回复更方便更快哦


【文章声明】

本文主要内容基于作者的研究与实践,部分表述借助AI工具进行了辅助优化。由于技术局限性,文中可能存在错误或疏漏之处,恳请各位读者批评指正。如果内容无意中侵犯了您的权益,请及时通过公众号后台与我们联系,我们将第一时间核实并妥善处理。感谢您的理解与支持!

引用链接

[1]:https://www.nuget.org/packages/JYPPX.DeploySharp/
[2]:https://www.nuget.org/packages/JYPPX.DeploySharp.ImageSharp/
[3]https://www.nuget.org/packages/JYPPX.DeploySharp.OpenCvSharp/

引入地址

内容概要:本文介绍了基于噪声抑制半监督学习的锂离子电池SOH(State of Health,健康状态)估计方法的Python代码实现。该方法融合半监督学习框架与先进的噪声抑制机制,旨在利用少量标注样本和大量未标注数据,有效提升电池健康状态预测的精度与模型鲁棒性,特别适用于实际工程中电池老化数据标注成本高、样本稀缺的挑战性场景。通过设计高效的特征提取网络与可靠的伪标签生成及优化策略,模型能够有效识别并抑制训练过程中的噪声干扰,增强在复杂工况和数据波动下的泛化能力与稳定性。; 适合人群:具备一定机器学习理论基础和Python编程能力,从事电池管理系统(BMS)、新能源汽车、储能系统等领域的科研人员、工程师,以及专注于电池寿命预测、设备状态监测与智能运维等方向的硕博研究生;; 使用场景及目标:①解决锂离子电池SOH估计中标注数据获取困难、成本高昂的核心痛点;②提升模型在存在测量误差、传感器漂移或异常数据等噪声环境下的预测准确性与可靠性;③为相关科研课题提供可复现、可扩展的算法基准与开源代码框架,加速算法迭代与工程落地; 阅读建议:此资源以Python代码为核心载体,强调算法的完整复现与实验验证过程,建议读者结合代码逐模块剖析模型架构、损失函数设计与训练流程细节,并积极在自有电池数据集上进行迁移学习、参数调优与性能对比,以深入掌握半监督学习与噪声抑制技术在电池退化建模中的关键应用
内容概要:本文系统阐述了高速串行信号在传输过程中因信道损耗导致的眼图闭合问题,并介绍了主流的均衡技术解决方案。信道作为低通滤波器,会显著衰减高频分量,造成码间干扰(ISI),尤其在速率高于1GHz时更为严重。为恢复信号质量,发送端采用FFE(前馈均衡器)实施预加重或去加重,提前补偿高频损耗;接收端则结合CTLE与DFE进行二次均衡:CTLE通过模拟高通滤波器“削峰填谷”提升高频响应,而DFE利用反馈机制消除后向码间干扰,提高判决准确性。文章详细解析了各均衡模块的工作原理、电路结构、关键参数及其频率响应特性,并通过PCIe 3.0实例展示均衡前后眼图的改善效果,最后对比了不同技术的适用场景与优缺点。; 适合人群:从事高速电路设计、信号完整性分析等相关领域的工程师和技术人员,以及具备一定通信原理和电子工程基础的研发人员; 使用场景及目标:①理解高速信号传输中的损耗机理与眼图退化成因;②掌握FFE、CTLE、DFE等均衡技术的设计原理与应用场景;③为高速接口(如PCIe、USB等)的信号完整性优化提供理论支持与实践指导; 阅读建议:建议结合仿真工具观察不同均衡参数对眼图的影响,深入理解抽头系数、零极点配置等关键参数的调节逻辑,并关注实际硬件实现中的功耗与噪声权衡问题。
内容概要:本文详细介绍了基于光伏逆变器调节的中低压配电网电压分层协调控制策略的Matlab代码实现方法,旨在应对高渗透率光伏发电接入导致的配电网电压越限问题。该策略构建了分层控制架构,上层采用集中式优化算法进行全局决策,下层则依赖本地测量信息实现快速动态响应,从而实现对多个分布式光伏逆变器的协同调控。文中系统阐述了控制模型的数学建模过程、优化求解算法的设计流程以及仿真验证方案,并基于标准测试系统开展了仿真实验,结果表明该方法在抑制电压波动、提升电压稳定性、降低网络损耗方面具有显著优势,具备良好的工程应用前景。; 适合人群:具备电力系统分析、自动控制理论及新能源并网技术等相关专业知识背景,熟悉Matlab/Simulink仿真平台,从事相关领域科研工作的高校研究生、科研院所研究人员及电力行业工程技术开发人员。; 使用场景及目标:①深入研究高比例分布式光伏接入背景下中低压配电网的电压控制难题;②掌握分层协调控制体系的设计理念与实现机制;③学习并实践基于Matlab的电力系统建模、优化算法编程与仿真分析技术;④为实际配电网电压调控项目提供可复现、可拓展的技术参考与解决方案支撑。; 阅读建议:建议读者结合所提供的Matlab代码与典型配电系统模型开展仿真实践,重点剖析控制架构的层级划分逻辑、通信机制设计以及优化目标函数的构建方法,同时可尝试将其拓展至多时间尺度协调控制、考虑通信延迟与数据丢包等更贴近实际的复杂应用场景中进行深入研究。
源码下载地址: https://pan.quark.cn/s/2e09cbca2d82 【针对青龙面板wxpusher推送问题的修复包】是一个为青龙面板(QL Panel)设计的更新或改进版本,其目的是纠正与wxpusher相关的推送故障。青龙面板是一个被广泛应用的自动化部署及管理解决方案,它赋予用户在图形化环境中执行多种IT运维操作的能力,涵盖脚本操作、周期性任务执行以及文件处理等。wxpusher作为青龙面板的一个附加组件,承担着实现微信消息推送的任务,用以保障用户可以即时获取系统关键状态变动或异常警报。 sendNotify.js 是此修复包内含的关键模块,属于wxpusher插件的一部分,其核心职责是发送各类通知。在JavaScript编程语言中,该脚本或许内含了处理推送流程、调用微信推送端点以及消息内容的格式化和校验等操作。一旦青龙面板监测到新的事件状况,例如任务成功完成、发生错误或系统进入维护阶段,sendNotify.js便会被激活,将相关数据传送至用户的微信账户。 ql.js 另一个重要的构成部分,可能代表了青龙面板的核心代码库或专用于wxpusher的设定文档。它或许包含了整合wxpusher的相关参数,例如启动过程、授权核实、故障应对和日志管理等功能。ql.js与sendNotify.js协同工作,确保wxpusher能够顺利与青龙面板进行数据交互,并可靠地向用户传递通知信息。 CK_WxPusherUid.json 这一文档很可能是储存用户信息或配置参数的JSON格式文件。"CK"通常指代Cookie或某种缓存机制,而"WxPusherUid"可能意指wxpusher用户的专属识别码。该文件用于保存用户微信推送服务的连接详情,让青龙面板可以...
源码链接: https://pan.quark.cn/s/a4b39357ea24 在Java开发中,处理大批量数据时,合理利用线程池可以显著提高程序的执行效率和资源利用率。 本文将深入探讨如何在Java中使用线程池来查询大量数据,以及这样做的好处和实现方法。 理解线程池的概念至关重要。 线程池是一种多线程处理形式,预先创建了若干个线程,当有任务需要执行时,会从线程池中取出一个线程来执行任务,任务执行完毕后,线程返回线程池中等待新的任务。 这种机制避免了频繁创建和销毁线程带来的性能开销,提高了系统的响应速度和并发处理能力。 Java中的线程池主要由`java.util.concurrent`包下的`ExecutorService`接口及其实现类提供。 最常见的实现是`ThreadPoolExecutor`,它允许我们自定义线程池的核心参数,如核心线程数、最大线程数、线程存活时间等。 使用线程池查询大批量数据的基本步骤如下: 1. **创建线程池**:我们需要创建一个线程池实例。 通常,我们可以根据实际需求设置线程池参数。 例如,如果数据量大且系统资源充足,可以适当增加线程数量;反之,若系统资源有限,应控制线程数量,避免资源过度消耗。 ```java int corePoolSize = 4; int maximumPoolSize = 8; long keepAliveTime = 60L; TimeUnit unit = TimeUnit.SECONDS; BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(); ThreadFactory threadFactory = Executors.defa...
内容概要:本文围绕基于Wasserstein生成对抗网络(W-GAN)的光伏场景生成程序展开研究,提出了一种利用W-GAN生成高精度、高波动性光伏出力场景的方法,以应对新能源发电中的不确定性挑战。研究通过构建生成器与判别器之间的对抗训练机制,有效捕捉光伏出力的时间序列特征与统计分布规律,生成符合实际运行条件的多样化场景数据,弥补实测数据稀缺问题。相较于传统GAN,W-GAN引入Wasserstein距离作为损失函数,显著提升了模型训练的稳定性与梯度传播的连续性,增强了生成样本的质量与多样性。文中还提供了完整的Python代码实现,便于读者复现与拓展。; 适合人群:具备一定Python编程能力、深度学习基础的研究生、科研人员,以及从事新能源电力系统规划、优化调度、不确定性建模等相关领域的工程师和技术人员。; 使用场景及目标:①用于电力系统中可再生能源出力的不确定性建模与风险评估;②支撑微电网、综合能源系统等场景下的随机优化、鲁棒优化与分布鲁棒优化研究;③为风光互补系统、储能配置、需求响应等应用提供高质量、多样化的输入场景;④帮助研究人员掌握深度学习在能源时序数据生成中的前沿应用,推动模型迁移至风电、负荷等其他场景生成任务。; 阅读建议:建议读者结合提供的Python代码进行动手实践,深入理解W-GAN的网络架构设计、损失函数构造、训练技巧及超参数调优策略,重点关注Wasserstein距离在缓解模式崩溃与梯度消失问题中的作用,并尝试将该框架拓展至多变量、多站点或多能源联合场景生成,提升模型的泛化能力与工程实用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值