ZeroOne AI
← 返回文章列表

C#工业视觉平台结合YOLOv26与OpenVINO

👁 21

从数据标注、自动训练到Intel NPU边缘推理的完整工业AI方案:C#工业软件平台 + YOLOv26训练框架 + OpenVINO模型转换 + Intel NPU边缘推理,实现图像采集、自动标注、模型训练到现场推理的完整AI视觉闭环。

C#工业视觉平台结合YOLOv26与OpenVINO

从数据标注、自动训练到Intel NPU边缘推理的完整工业AI方案

在智能制造领域,工业视觉已经成为质量检测的重要技术手段。

传统视觉检测通常依赖人工编写规则,例如:

当产品存在:

传统算法维护成本不断增加。

基于深度学习的YOLO目标检测算法,可以让工业视觉系统具备更强的泛化能力。

本文介绍一种完整工业AI开发方案:

C#工业软件平台 + YOLOv26训练框架 + OpenVINO模型转换 + Intel NPU边缘推理

实现:

图像采集 → C#标注 → 自动生成训练数据 → YOLO训练 → OpenVINO转换 → 工业电脑AI推理

形成完整AI视觉闭环。


一、整体系统架构

系统采用C#作为工业软件开发平台,Python负责AI训练,OpenVINO负责现场部署。

整体架构:

工业相机
    |
    |
C#视觉软件
    |---- 图像采集
    |---- AI标注工具
    |---- 模型管理
    |
    ↓
YOLOv26 Python训练环境
    |
best.pt模型
    |
    ↓
OpenVINO转换
    |
    ↓
Intel NPU推理
    |
    ↓
检测结果输出

二、为什么选择C#开发工业AI平台

工业现场软件大量采用C#,原因:

因此:

C#负责工业应用层:

Python负责:

OpenVINO负责:


三、C#开发AI标注系统

为了降低AI模型训练门槛,开发工业专用标注工具。

标注流程:

采集图片 → 人工框选缺陷 → 选择类别 → 保存 → 自动生成YOLO数据

标注软件自动保存:

TrainImage
 ├──001.bmp
 ├──001.txt
 ├──002.bmp
 └──002.txt

其中:

YOLO格式:

类别ID 中心X 中心Y 宽 高

例如:

0 0.523 0.421 0.120 0.080

四、自动训练流程设计

C#程序调用Python训练脚本:

C#按钮点击训练 → 启动Python → 生成dataset → YOLOv26训练 → 生成best.pt → 导出OpenVINO

工程人员无需手动操作Python。


五、YOLOv26自动训练脚本设计

训练脚本主要完成:

  1. 自动读取图片和标签
def get_image_label_pairs(source_dir):
    image_files = []
    for ext in ['.bmp']:
        image_files.extend(Path(source_dir).glob(f'*{ext}'))
    pairs = []
    for img_path in image_files:
        label_path = Path(source_dir) / f'{img_path.stem}.txt'
        if label_path.exists():
            pairs.append((img_path, label_path))
    return pairs

自动完成:图片 + 标签匹配。


六、自动生成训练数据集

训练前自动划分:

生成YOLO标准目录:

dataset
├──images
│   ├──train
│   ├──val
│   └──test
└──labels
    ├──train
    ├──val
    └──test

七、工业图像预处理

工业图片通常存在:

训练前增加高斯滤波:

def preprocess_image(img_path, save_path):
    img = cv2.imread(str(img_path), cv2.IMREAD_GRAYSCALE)
    img = cv2.GaussianBlur(img, (3, 3), sigmaX=0.8)
    cv2.imwrite(str(save_path), img)

提升缺陷特征稳定性。


八、YOLOv26模型训练核心代码

训练参数:

核心代码:

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model.train(
    task="detect",
    data="dataset/autotrain.yaml",
    imgsz=(384, 1024),
    epochs=100,
    batch=16,
    workers=0,
    optimizer="AdamW",
    lr0=0.001,
    pretrained=True,
    mosaic=0,
    mixup=0,
    save=True,
)

训练完成生成:

weights
└──best.pt

九、导出OpenVINO模型

工业现场不建议直接运行Python模型。

通过OpenVINO转换:

best.pt → OpenVINO IR → model.xml + model.bin

代码:

best_model = YOLO("best.pt")
best_model.export(
    format="openvino",
    imgsz=(384, 1024),
    half=True,
    dynamic=False,
    nms=True,
)

十、Intel NPU工业边缘推理

部署电脑:

推理架构:

工业相机 → C#程序 → OpenVINO Runtime → Intel NPU → YOLO检测 → PLC控制

优势:


十一、完整AI模型迭代流程

生产现场发现新缺陷:

采集NG图片 → C#标注 → 生成YOLO数据 → 启动训练 → 生成新模型 → 导入工业电脑 → 继续检测

形成AI持续优化闭环。


十二、工业AI未来方向

工业视觉不再只是检测工具。

未来结合:

可以实现:

视觉发现问题 → AI分析原因 → MES调整计划 → 设备自动响应 → 完成生产闭环

总结

通过C#工业软件平台结合YOLOv26、OpenVINO和Intel NPU,可以构建完整工业AI视觉解决方案。

核心优势:

实现:从人工检测 → AI视觉检测 → 智能质量控制。

让工业设备具备视觉感知能力,为智慧工厂提供可靠的人工智能基础。

推荐阅读

更多工业 AI、智能制造与技术实践文章

C#调用Intel NPU实现YOLOv26极速推理:OpenVINO工业视觉加速实践

通过C# + OpenVINO Runtime调用Intel Core Ultra NPU运行YOLOv26模型,实现低功耗、毫秒级的工业边缘AI视觉推理,涵盖模型导出、环境配置、推理代码与FP16/INT8/异步推理等性能优化实践。

工业互联网

MY-BASIC 应用(一):轻量级嵌入式 BASIC 解析器介绍

MY-BASIC 是一个用标准 C 语言编写的轻量级 BASIC 解释器:不足 128KB 内存占用、可嵌入可扩展、支持原型编程与 Lambda 函数式编程、Unicode、列表/字典集合,适合嵌入式设备脚本化控制。

工业互联网

Linux系统篇(七)——工具篇(二):一篇搞懂 C 语言程序从代码到可执行文件的完整旅程

拆解 C 程序预处理、编译、汇编、链接四步变身流程,讲透条件编译与静态、动态链接差异,附分步实操与报错排查。

AI视觉

树莓派推送RTSP视频流实战:FFmpeg + rtsp-simple-server(MediaMTX)搭建局域网视频直播服务

本文面向树莓派视频流、Python视觉开发、RTSP视频监控和边缘AI视觉初学者,介绍如何在Raspberry Pi上搭建简单、稳定的RTSP视频流服务。项目采用FFmpeg + rtsp-simple-server(MediaMTX)方式,将树莓派摄像头采集的视频转换并推送到RTSP服务器,再由电脑、NVR、VLC、OpenCV或AI视觉程序访问。文章从安装FFmpeg并验证版本开始,下载适用于ARM64架构的MediaMTX v1.8.1,配置Linux Systemd服务实现RTSP服务器开机自启,最后将摄像头视频推送到RTSP地址,形成树莓派摄像头 → FFmpeg → RTSP服务器 → 客户端播放/AI检测的完整视频流架构。

AI视觉

YOLO目标检测模型调参入门:从训练参数到检测效果优化

YOLO目标检测模型调参入门指南:详解 epochs、imgsz、batch、模型大小、conf、IoU 等核心参数的作用与调节方法,给出工业视觉、疲劳驾驶、缺陷检测等 AI 项目的调参顺序与实验对比思路,帮助初学者在精度、速度与显存之间找到平衡。

工业互联网

Linux系统篇(二十三)——通信(一):什么是进程间通信?一文搞懂背景与全貌

通过实验揭示进程隔离的本质,系统梳理Linux进程间通信的六种机制:管道、消息队列、共享内存、信号量、信号与Socket,并给出选型方法。

评论(0)