engiAI

  • 要求
Windows 10/11 x64。 CPU 和 GPU 分析 — RTX 50+ 系列。

⬇ engiAI.rar (900 MB)

⬇ engiAI-ZONA-PARA-ZH.pdf (6.0 MB)

⬇ engiAI-doc-new-ZH.pdf (12 MB)

SICK IDS Camera Manager ⬇ ids-software-suite-win-4.96.1.zip (184 MB)

SICK IDS Camera Manager - link 2

注册

申请 engiAI

EngiAI (engiAI Ethernet System) 是一款桌面级工业视觉技术软件,用于工业产品检测和生产线上的产品筛选。该软件使用 C# (.NET 9, WinForms) 编写,并以一个独立的 AOT (Ahead-of-Time) 可执行文件形式在 Windows x64 平台上运行。

⬇ engiAI 说明.pdf (94 KB)
  • 它做什么
通过摄像头采集: 包括 Hikrobot (SDK)、USB/DirectShow、IDS uEye,以及通过 OpenCV 采集 Android 摄像头。可以同时使用多个摄像头。

人工智能检测: 基于YOLO(ONNX Runtime / GPU-CUDA 或 CPU)的人工智能模型,能够实时识别物体和缺陷。

ROI(区域)定义: 可自定义的控制区域,包含类别和规则,以及命名区域和目录。

剔除器 (Rejector): 根据人工智能的分析结果,产生一个信号,用于将缺陷元件输出到离散输出端(即,丢弃缺陷元件),并进行引脚配置和测试验证。

触发方式: 通过外部信号(离散输入、编码器)触发拍摄。

模型训练: 使用数据集、合成数据(旋转/镜像/亮度变化),以及直接在程序中训练 YOLO11。

存储位置: 本地 SQLite 数据库 (rejectors.db) – 包括模型、区域、触发记录、以及摄像头状态。

  • 许可
统一安装: 模式(试用/授权/禁用)

无授权: 试用模式 20 分钟; 授权后: 无限制运行。

与硬件绑定,控制所有运行实例。

engiAI Ethernet System
区域-配对:对印刷电路板和组装进行视觉检查

engiAI 界面支持中文:本手册中的按钮和字段名称与程序中显示的一致。

检查的核心在于多区域、多配对。 检查过程中,会标示出不同的区域,每个需要检查的元件都属于一个区域。 每一款产品都为每个区域定义了“正常/异常”两种类别,并仅在这些类别内进行判断。 在示例手册中,有两个区域:C30电容和BR1桥;在实际电路板上,可能存在数百个区域,采用的方法相同。
合成数据:自动从基板上提取元件。 该程序会同时提取元件及其周围的基板区域(例如,线路、走线、基板颜色),并将该区域缩小到元件的大小,并进行移动或旋转。 用于训练的缺陷数据,只需两次点击,无需单独的缺陷基板。
用户手册:如何连接摄像头,标记区域,确定对齐区域,采集正常和异常数据,训练模型,启动检查,并将检查结果与剔除器连接:通过声音提示、SICK和HIKROBOT摄像头的数字输出以及向机器人或PLC的TCP传输进行连接。
第一步相机
步骤 2区域网格
第三步正常情况与异常情况
第4步培训
第五步检查
第六步出口和 TCP
所有屏幕截图均来自运行中的程序:vtlift 软件、3264×2448 像素 USB 摄像头(型号 model_4,用于两个 256×256 区域(C30 传感器和 BR1 桥),已进行灰度校准)。该程序支持与 HIKROBOT(GigE 和 USB3)、SICK picoCam(uEye)、USB/网络摄像头以及通过 RTSP 的 IP 摄像头进行通信。 版本 3 – 2026 年 9 月。

内容

  1. 1. 为什么使用 engiAI 和区域-配对方法
  2. 1.1. 与完整图像分类方法相比,这种方法有什么优势?
  3. 1.2. 速度:AI 只关注关键信息
  4. 1.3. 预计的精度:根据我们自己的相机
  5. 1.4. 快速启动:设置已配置,只需几步即可选择区域和模型。
  6. 2. 可以在一分钟内完成程序界面设计
  7. 3. 摄像头:连接和设置
  8. 3.1. 支持哪些相机
  9. 3.2. 摄像头:添加、重新连接、删除
  10. 3.3. HIKROBOT 和 SICK 的相机模块
  11. 3.4. 相机选项卡(用于 USB/网络摄像头)
  12. 3.5. 预设的相机设置(套件)
  13. 3.6. GigE 网络和重新连接
  14. 4. 区域-配对模型:从网格到训练后的模型
  15. 4.1. 方法的结构:采用单一模型,每个区域对应一个类
  16. 4.2. 建立模型
  17. 4.3. 标记支付区域
  18. 4.4. 记录参考图像:对齐区域
  19. 4.5. 按区域划分的图像:正常图像及其合成数据
  20. 4.6. 模拟数据:只需两次点击,元素会与基座一起移动。
  21. 4.7. 区域异常:设置选项
  22. 4.8. 参考图像,包含焊料区域和区域编辑功能
  23. 4.9. 模型的训练
  24. 5. 检查
  25. 5.1. 确定模型并验证区域
  26. 5.2. 识别区域的阈值
  27. 5.3. 灵活的传送带:无论处于任何位置,都能灵活使用
  28. 5.4. 使用哪个信号进行分析
  29. 5.5. 黄色区域:点击即可关闭
  30. 5.6. 屏幕和控制台上的显示内容
  31. 6. 触发器:外部摄像头输入端的传感器
  32. 7. 输出:剔除器、独立的摄像头输出和TCP
  33. 7.1. 导引:输出信息:联系方式和测试
  34. 7.2. 输出窗口:区域规则
  35. 7.3. 将 TCP 数据包发送给机器人或 PLC
  36. 7.4. 摄像头输出(离散)
  37. 7.5. 声音提示:为每个区域设置不同的声音提示
  38. 7.6. 触发记录和数据库
  39. 8. 其他模式和任务
  40. 9. 设置、控制台、要求和许可
  41. 10. 简短的检查清单和故障排除

如何使用手册。第一部分解释了该方法的目的以及预期结果。第三到第五部分介绍了从空程序到可运行的检查程序的过程,请按照顺序进行。第六到第七部分介绍了传感器、输出和 TCP 的连接。第八到第十部分介绍了其他功能、设置和检查清单。

1. 为什么使用 engiAI 和区域-配对方法

engiAI Ethernet System 是一款用于生产线的视觉检测软件。它从工业或普通摄像头获取图像,将其分割成不同的区域,然后使用训练好的神经网络对每个区域进行检查,并将结果转化为相应的动作:向摄像头的数字输出发送信号、将数据发送给机器人或PLC,或记录到日志中。该“区域-配对”方法适用于那些每个位置都有“正确”部件的产品,例如:电路板、组装、托盘上的零件组、以及带有特定布局的包装。

1 型
针对所有区域,采用统一的模块,而不是一百种不同的型号。
2 个区域
例如,在电路图中:电容 C30 和桥式电路 BR1。 这样的元件在电路板上可能有很多。
≈5 px
将“正常/缺陷”界限所对应的元素偏移量调整
两次点击
从原始图像到正常和合成缺陷,用于训练

1.1. 与完整图像分类方法相比,该方法有什么优势?

一种常见的做法是,使用一个模型,针对整个图像或所有区域,将像素分为“正常”和“异常”两个类别。但这种方法在硬件上无法实现:在区域 2 中,桥梁 BR1 区域的空位表示“缺陷”,而在电路板的其他区域的空位则表示“正常”。 这种方法无法同时区分这两个类别。 另一种极端做法是,为每个部件单独使用一个模型,这需要数十次的训练和数十个文件存储在内存中。

区域-配对的方式如下:只有一个模型,但类别的数量等于区域的数量。`区域`是指围绕一个部件的矩形区域。`类别`是指包含用于训练网络的图片的文件夹。每个区域都有一个配对:`zone_001`(正常区域 1,例如电容 C30)和 `zone_001_anomaly`(缺陷区域 1);`zone_002` 和 `zone_002_anomaly` 对应 BR1 桥。在检查区域 1 时,程序只查看其配对,不考虑区域 2 的信息。 异常类别是可选的:缺陷会改变区域的外观,并且“正常”的置信度会自然下降;但使用合成数据(第 4.6 节)可以一键生成,并且显著提高了可靠性。

示例中的电路板图像:有两个区域——右上方BR1桥和左下方C30电容,均为绿色,并带有“正常”标签。蓝色线条表示对齐区域,蓝色点表示用于在图像中定位电路板的参考点。
示例中的电路板图像:有两个区域——右上方BR1桥和左下方C30电容,均为绿色,并带有“正常”标签。蓝色线条表示对齐区域,蓝色点表示用于在图像中定位电路板的参考点。
内部评估在评估区域 17 时,只从两个出口处获取数据:“正常区域 17”和“区域 17 异常”。 其他数百个类别的数据不参与评估,因此,即使相邻的区域存在相似情况,也不会影响评估结果。
非本区域的信号无法被识别为“正常”信号。如果某个区域的信号强度低于10%,则该区域将被判定为“未识别”状态,这可能是由于使用了错误的信号源或信号网格存在偏差。 这种区域将被视为“缺陷”,而不是“高概率的正常信号”。
缺陷的大小与区域相关 合成缺陷的大小和位置以区域尺寸的比例来定义。在一个800万像素的图像中,将一个元素向水平或垂直方向移动半毫米几乎无法察觉。但在一个128x128像素的区域内,这相当于5-6个像素的移动,是一个比较明显的数值。
完整分辨率将 108–137 像素的区域发送到 128×128 的网络,几乎不需要进行缩放。如果需要将整个图像压缩到 128 像素,则会损失大量的细节。
“正常/缺陷”的目标边界:合成数据中,“正常”状态的数据点在0-2像素范围内波动,“缺陷”状态的数据点则会发生5像素以上的偏移。神经网络正是学习这种边界,而不是学习随机的光照差异。
目标地址 每一区域都有一个稳定的地址(模型、表格、单元格)和名称。 可以在任何一个区域上设置自定义规则,例如:发出声音提示、向指定区域发送 TCP 数据包,或触发摄像头输出。
无论放置方向,都能进行检测 操作员在图像上标出需要检测的区域,即电路板上的特定部件。然后,根据参考图像,将每个图像与该区域对齐,即使电路板被放置在倾斜或旋转的位置(包括 180 度),其检测区域仍然位于新的电路板上(参见 4.4 节)。
来自电路板的缺陷 这种缺陷并非指涂抹或污渍,而是指电路板上的元件或部件与基座的相对位置发生偏移或旋转。模型学习的是“元件与电路板之间的关系”,而不是颜色的差异。操作步骤如下(第4.6部分):
异常情况会逐步报告 缺陷只会在实际出现的地方进行记录:焊接连接、缺失的元件、移位、划痕等。模型会进行进一步训练,但网格结构保持不变。

1.2. 速度:AI 只关注所需区域

神经网络永远不会接收完整的图像。对于每个区域,只提取其矩形,并选择两个类别。同一图像中的区域被视为并行处理(最多四个线程),所有区域的结果以一个批次输出,而不是一个一个区域。

  • 分析速度由时间决定。 “每秒分析数量 (AI)” 滑块,位于“相机”选项卡上,表示每秒进行 N 次分析,而不是“每 N 个帧”。 限制条件是:相机频率和推理时间。
  • 默认使用GPU。 推理过程使用ONNX Runtime和CUDA;如果未安装NVIDIA显卡,程序会自动切换到CPU,并在状态栏中显示 (GPU (CUDA)CPU)。
  • 无垃圾的缓冲区。 内存分配只在一次操作中进行,并可重复使用;分析时间不会在不同帧之间出现波动。
  • 针对特定任务的模型。 针对区域-配对任务,该程序会自动设置输入尺寸为128像素,并使用YOLO11“s”大小的网络。 裁剪区域的缩放效果不明显,而网络能够处理数百个类别的配对。
  • 自动化生产线可以节省人力。 机器在进行生产时,不会像人工那样频繁地进行搜索; 搜索和对齐操作只进行一次,然后才进行切割。
  • 显示不会影响分析。 图像的重绘频率不超过每秒 25 次,并且每次只基于新的摄像头画面,画面会被缩放到与图像尺寸相同,然后显示在屏幕上,同时日志信息也会由后台线程写入文件。即使在 8 兆像素的画面和数百个区域的情况下,界面仍然保持响应性。

在视频状态栏中,可以看到实际的数值:帧率 和上次分析的毫秒数,以及 Eff,即每秒实际完成的分析次数。

1.3. 预期的准确度:使用自己的摄像头

该程序不保证“0.5 毫米”的精度,这取决于相机和镜头。 偏移的敏感度取决于每个像素与产品尺寸的比例,以及模型所学习的边界。 可以用以下公式计算:

像素/毫米 = 图像宽度(像素)÷ 视野宽度(毫米)
最小可察觉的偏移 ≈ 5 像素 ÷ (像素/毫米)

数字 5 px 表示在推荐的异常设置下,合成偏移的下限(此时标准偏差为 0–2 px)。 默认设置计算为 11 px/毫米:在这种情况下,0.5 毫米相当于 5–6 px,这是在设计过程中达成的目标。 请根据您的实际情况进行计算:

相机(图像宽度)视野 100 毫米200 毫米300 毫米400 毫米
3264 像素(USB 8 兆像素,与照片类似)0.03 毫米/像素 → 偏移 ≈ 0.15 毫米0.06 毫米/像素 → 偏移 ≈ 0.3 毫米0.09 毫米/像素 → 偏移 ≈ 0.45 毫米0.12 毫米/像素 → 偏移 ≈ 0.6 毫米
2448 像素 (HIKROBOT 5 兆像素)0.04 → ≈ 0.2 毫米0.08 → ≈ 0.4 毫米0.12 毫米/像素 → 偏移 ≈ 0.6 毫米0.16 → ≈ 0.8 毫米
1920 像素 (SICK picoCam, HIKROBOT 2 兆像素)0.05 → ≈ 0.25 毫米0.10 → ≈ 0.5 毫米0.16 → ≈ 0.8 毫米0.21 → ≈ 1.0 毫米
重要。 这是一种基于底部的评估方法,用于评估在快速变化的场景和稳定的光照条件下,元素的移动情况。要验证实际的边界,请使用“区域-配对:区域 ↔ 模型”按钮和识别阈值(第 5.2 节):每个区域都有其特定的边界,因此也具有不同的准确性。 图像传感器视野越小,像素密度越高,模型识别的误差就越小。

1.4. 快速启动:设置已配置,只需几步即可获得模型

该方法旨在让没有机器学习经验的工程师在一天内获得可用的模型。所有可以预先配置的内容都已配置并存储在程序数据库中:

  • 按像素计算。 在 ROI 编辑器中,将一个框拉到需要计算的区域,并指定区域的大小(例如 256 像素)。如果有很多相同尺寸的元素并排排列,您可以将框拉到整个表格上,程序会自动计算行和列。
  • 合成数据:正常和缺陷预设。 “默认”、“元素偏移”和“颜色与涂层”按钮用于切换预设配置。 在点击“拍摄”按钮之前,会显示文件数量、摄像头帧数和预计拍摄时间。
  • 学习参数由程序自动设置。 在第一次区域图像采集后,程序会设置图像大小为 128,模型大小为 s,训练轮数为 50,批次大小为 64,并且在训练过程中会禁用与异常类别冲突的增强技术。
  • 摄像头通过按钮进行设置。 “AI自动调整(基于单帧)”功能会自动调整曝光、增益、色调和白平衡;对于USB摄像头,有“自动匹配格式”和“固定参数”选项。
  • 相机设置套件。 预设的参数会以特定名称保存,并可在列表中进行切换。相机会立即接受并存储这些参数。
  • 输出一个 ONNX 文件。 训练好的模型会自动导出,并立即进行检查,无需进行任何额外步骤。

完整流程:连接摄像头 → 创建模型 → 标记区域 → 确定对齐区域 → 在多个正常板上进行“按区域拍照” → “区域异常” → 训练 AI 模型 → 检查选项卡。 接下来,需要将音频、输出和 TCP 连接到各个区域。 启动所需:一台运行 Windows 10/11 的计算机(用于快速检查,需要 NVIDIA 显卡),摄像头,一张正常板,以及一次用于安装学习环境的互联网连接。 损坏的板不需要。

2. 程序界面,一分钟内完成

主窗口被分为两部分。左侧是来自摄像头的实时视频和上面的状态栏。右侧是包含所有控制的标签栏。可以拖动分割线;程序会记住所有窗口的大小、位置和布局。

主窗口:左侧显示电路板的实时图像,包含两个绿色区域(均为“正常”),右侧显示“Inspect”选项卡,其中包含model_4\best.onnx模型。 实时传送带已启动,显示“正常 · 112个点”的指示。
主窗口:左侧显示电路板的实时图像,包含两个绿色区域(均为“正常”),右侧显示“Inspect”选项卡,其中包含model_4\best.onnx模型。 实时传送带已启动,显示“正常 · 112个点”的指示。

视频上的按钮

按钮功能
隐藏视频移除屏幕上的图像。仅进行绘图分析,节省绘图资源。
输出参考窗口:显示 HIKROBOT 和 SICK 摄像头的离散输出信息,进行测试,连接负载(第 7.1 节)。
摄像头“已连接摄像头设置”窗口:添加、重新连接、删除摄像头,以及查看从硬件读取的所有参数(第 3.2 节)。
触发器将外部传感器连接到摄像头的离散输入,并提供电路图和接线图(第 6 节)。
通用型号“相机 → 模型” 预设套件,可以通过一次选择应用于整个平台(第 8 节)。
布局(列)显示多少个相机,“■”表示单相机模式(选择的相机放大显示),“自动”表示从所有相机中选择,“⛶”表示全屏显示(按下 Esc 键)。
显示 ROI 区域在视频上绘制区域网格。

右侧选项卡

选项卡用途
Camera选择的相机的参数:快门速度、增益、颜色、分辨率、自动设置(用于 AI)、保存的设置、分析速度。AI 的阈值在这里不再存在,仅在“检查”选项卡中。
OUTPUT剔除器:区域规则 - 向机器人/PLC 发送 TCP 数据、相机的离散输出和声音警报、触发日志、数据库。
AI Model创建模型:文件夹、类、区域网格、区域图像、区域异常、参考图像、设置和启动训练。
Inspect工作选项卡:检查模型、检查区域和阈值、实时传送带、拍摄图像的信号、多模型检查的槽。
Settings界面语言(14种语言)、购买许可证、保存和加载设置、录制视频。
Console事件日志:摄像头连接、培训过程、除尘器触发、警告信息。屏幕上显示最近800-1000行,所有信息都记录在 logs\engiai-*.log 文件中。

状态栏

在按钮上方显示了活动的摄像头状态:LIVE (Android): 3264×2448 [高清 USB 摄像头] — 摄像头类型、分辨率和名称;AI: WAITINGAI: GPU (CUDA) — 模型认为的当前状态以及上次分析所花费的毫秒数;Net: 总共… 活跃… 兆比特/秒 — GigE 摄像头的网络负载(绿色表示链路利用率达 40%,橙色表示达 70%,之后为红色)。Exp Load 条显示了曝光时间占帧间隔的比例:如果曝光时间指向右侧,摄像头将无法维持指定的帧率。

每张摄像头的面板都有一个带有名称、状态(LIVE | AI:ON)和重新连接按钮的顶盖。 点击右侧的图像可以打开区域菜单,拖动右侧的图像可以实现放大后的全景视图。

3. 摄像头:连接和配置

3.1. 支持哪些摄像头

类型连接方式通过程序配置
HIKROBOT MV-CS
(GigE, USB3)
原生 MVS SDK。只能通过序列号打开,序列号的顺序不重要。曝光时间:6微秒,增益(dB),帧率(FPS),分辨率(AOI),黑色水平:0…4095,所有 GenICam 节点(自动模式、伽马、清晰度、白平衡、R/G/B、数字偏移、翻转、GigE 数据包)。这些参数需要在相机自身的 UserSet1 中进行设置。Line 0 的离散输入,Line 1 的输出,GPIO Line 2。
SICK picoCam
(IDS uEye, GigE)
uEye 驱动。摄像头必须在 IDS Camera Manager 中显示,状态为“已正确配置”。 序列号需要与摄像头匹配,因为 uEye 的 DeviceID 在每次启动时都会改变。亮度、对比度:0…100 帧率(FPS) 分辨率 黑色电平:0…255 像素时钟 增益增强 红色通道硬件增强/G/B硬件配置,包括感光元件类型(例如拜耳阵列)。这些参数会被写入相机内存。光耦的触发输入,闪光灯的输出(150毫安)。
USB摄像头/网络摄像头
(列表中为:Android)
通过 OpenCV 的 DirectShow,它们在 moniker 上有所不同,因此即使是相同的摄像头也不会混淆。支持高达 8K 分辨率、帧率,以及所有驱动程序属性:亮度、对比度、饱和度、色调、清晰度、色域、增强、自动曝光、自动对焦、自动白平衡、背光补偿等。 只有 TCP 接口,没有其他独立输入和输出。
IP 摄像头 RTSP`rtsp://admin:密码@192.168.1.64:554/…` 类型的链接需要手动添加。曝光、增强、分辨率和帧率可以在摄像头自身的网页界面中进行设置。 软件中包含区域、模型和 TCP。

没有对摄像头数量的硬性限制:摄像头可以以网格形式排列任意数量;在实际的测试环境中,同时使用了 8 台和 9 台摄像头。 每台摄像头都有自己的模型、区域、阈值和分析速度。

3.2. 摄像头窗口:添加、重新连接、删除

1
点击视频上方的“摄像头”按钮。将打开一个全屏的“连接摄像头设置”窗口(按 Esc 键可以关闭)。
2
点击 "+ 添加摄像头"。 软件将扫描网络和 USB,并以一个列表显示所有找到的设备:Hikrobot … SN: … IP:, SICK … SN: … DeviceID:, Android …。 SICK 摄像头扫描时间为 4 秒左右,因为 GigE 设备在驱动程序中出现并非立即。 占用或地址错误的 SICK 设备会显示一个警告标志 ⚠,并标明原因。
3
选择所需的摄像头,然后点击 "添加"。 使用 "+ RTSP 摄像头链接" 按钮添加 IP 摄像头。 在摄像头连接时,会显示一个带有 "跳过摄像头" 按钮的提示。
4
该摄像头将在列表中以如下格式显示:名称 | 类型 | 序列号 | 状态(在线/离线) | AI:开启 | 显示:开启,其视频则显示在主窗口的左侧。

以下复选框会影响所选摄像头的设置:摄像头已启动(否则,它将与设备断开连接,并且会从屏幕上消失)显示视频/区域(仅为草图,分析功能始终可用)人工智能已为选定的摄像头启用按钮重新连接它能够实现完全的断开和连接操作,并在断开连接后重启人工智能流程,并重新加载模型。

窗户的右侧显示了通过连接读取的,来自硬件的所有摄像头参数,包括组和计量单位:"显示哪个参数",从摄像头重新读取复制到剪贴板。 这是一个仅用于查看的功能:可以通过“摄像头”选项卡来修改参数。

重要提示。 HIKROBOT 通过 GigE 接口的摄像头具有独占连接。在程序意外关闭后,它会保持占用状态,直到心跳信号消失;程序会等待最多 25 秒(10 次尝试),并显示“摄像头被其他进程占用”的消息。对于 SICK,如果 IP 地址设置不正确,程序会尝试自动修复它,但前提是该 IP 地址不在适配器的子网内。

3.3. HIKROBOT 和 SICK 的“摄像头”选项卡

该选项卡与摄像头相关,其对应的模块以蓝色边框突出显示。程序在连接摄像头时不会向其写入任何数据:摄像头是“真理”的来源,而滑块会根据摄像头的实际数值进行调整。只有在明确意图的情况下,才能通过点击“保存参数”按钮来保存设置。

1
在下方,设置宽度 (W)高度 (H)(或从列表中选择预设,该列表仅包含该相机支持的尺寸),然后点击应用分辨率。 通常选择相机的完整画面。 尺寸会向下舍入至相机的 AOI 步长。
2
点击 "自动设置(基于图像)"。该程序会根据图像自动调整曝光(优先级别)和增强(不超过40),以确保99.5%亮度值落在220…248之间,同时避免过曝。然后,设置伽马为1.50,饱和度为115%,对比度为105%,并自动调整白平衡。勾选“自动”选项后,将启用持续模式:每3秒检查一次并进行调整,如果光线发生变化。
3
如果需要手动调整,请设置:曝光(微秒范围,单位为毫秒,最高可达1秒),增益帧率黑色水平。 此外,对于 SICK 摄像头,还需要设置:像素时钟(确定帧率上限和最小曝光时间),增益提升硬件伽马红/绿/蓝色校准
4
点击“保存参数”按钮,会将以下设置保存到文件 camera_params\<SN>.ini 中,并写入到相机的内存中:对于 HIKROBOT,将配置保存到 UserSet1(默认配置),对于 SICK,将配置保存到 EEPROM 中。保存结果会在按钮上显示为“✔ 已保存”。对于 HIKROBOT,还有一个“自动保存到相机(UserSet1)”的复选框,该功能会在修改配置后的 5 秒后自动保存。

“Hikrobot: 摄像头参数 (GenICam)” 模块

仅显示摄像头传输的数据。 选项:自动曝光(关闭/单次/连续)、自动增益、伽马值和伽马模式、清晰度、色调、饱和度、自动白平衡、通道白平衡、数字偏移、启用黑色电平、启用帧率限制、水平和垂直翻转、GigE:包大小、GigE:包间延迟、GigE:带宽限制、测试图像。 按钮重新读取相机参数重新构建表格。

“图像颜色” 模块

拜尔配色方案(Auto/BGGR/RGGB/GRBG/GBRG),饱和度 0…200%,伽马 0.30…3.00,对比度 50…200%,重置按钮。 这种软件处理方式适用于所有帧:显示、录制、推断和用于学习的图像,因此在学习和检查时,图像都是一样的。 对于 HIKROBOT,配色方案是从摄像头的像素格式中获取的;对于彩色 SICK 传感器,则从传感器中获取,并根据第一帧进行调整。

参数它做什么影响
每秒分析数量 (AI)检测速度的上限,1…200更低 – 降低对显卡的负担;不依赖于摄像头连接
AI 阈值在“摄像头”选项卡中,不进行设置区域识别阈值 – 仅在“检查”选项卡(第 5.2 节)中设置,每个摄像头一个
Exposure曝光时间简而言之 – 减少移动物体的模糊;零值不可接受
Gain / Gain boost矩阵信号增强提高亮度,但会增加噪声
Pixel clock (SICK)传感器频率改变 FPS 和曝光时间,这些值会被重新读取
FPS自由模式下的帧率在触发模式下未使用
宽度/高度帧大小(AOI)较小的帧大小,意味着更高的频率和更少的流量
重要。 在与实际工作环境相同的条件下,拍摄用于训练的图像:相同的光照、相同的速度、相同的相机位置。在更改设置后,程序会在控制台中提醒用户,需要使用新的图像对模型进行进一步训练。

3.4. “相机”选项卡(用于USB/网络摄像头)

对于USB摄像头,该选项卡显示“USB摄像头:分辨率、帧率和属性”块。 摄像头不提供给驱动程序的属性不会显示; 字段边界由程序设置,因为DirectShow无法提供范围信息。

1
分辨率应用。 “检查”按钮会遍历从VGA到8K的标准分辨率,并在列表中只显示相机支持的分辨率。 “相机格式”行显示实际的分辨率和帧率。
2
让自动曝光、自动对焦和自动白平衡功能自动调整,然后点击“锁定参数”(禁用自动模式,并保存当前设置)。这样,自动模式将被关闭,程序会自动选择合适的快门速度以达到相同的亮度(当自动模式开启时,驱动程序会返回最后设置的手动快门速度,而不是自动计算的快门速度)。这些设置值和格式将被保存到数据库中,并在每次连接该相机时自动应用。
3
系列 基于AI: 自动选择符合特定形状 (20-60秒,调整曝光和对比度,基于实拍图像,标准是清晰的轮廓,无过曝),无色形状, 柔和形状, 返回, 典型形状.
4
数据直接从字段进入相机,无需按“Enter”键,然后立即写入数据库。按下“从相机读取属性”按钮,表明相机已经成功读取了数据。
建议。 对于人工智能系统,最好不要通过调整相机饱和度来去除颜色,而是使用一个全局选项 以灰度模式进行训练(模型全局设置),该选项位于“相机”选项卡中(在“AI模型”选项卡中,该选项也称为“灰度训练”)。 这样,用于训练和检查的图像都将以灰度显示,而相机仍然会向操作员提供彩色图像。 示例中的模型就是以灰度模式进行训练的。

3.5. 存储的摄像头设置(套件)

“存储的摄像头设置”块适用于USB、SICK和HIKROBOT。 通过调整参数以适应产品,请将其保存,并使用名称进行保存(例如,对于其他板或不同的照明,只需从列表中选择一个套件)。

  • 保存为… - 读取当前摄像头的值,并询问设备名称。如果设备名称已存在,则提示用户是否要覆盖。
  • 在列表中选择套件 会立即将参数写入相机,并进行保存:对于 USB,保存到数据库;对于 SICK 和 HIKROBOT,保存到参数文件和相机内存(UserSet1 / EEPROM)。然后,控制面板会重新读取硬件上的值,并显示已接受和已修改的参数数量。
  • 重新保存 会用当前值覆盖所选的设置,重命名删除 仅作用于数据库中的记录,不会影响摄像机的参数。

该套件包含以下内容:对于USB接口的相机,包括分辨率、帧率(FPS)、驱动程序属性和自动模式;对于SICK品牌的相机,包括增益、曝光时间、帧率、黑色电平、像素时钟、增益提升、白平衡(R/G/B)、硬件伽马校正和软件色彩调整;对于HIKROBOT品牌的相机,包括增益、曝光时间、帧率、黑色电平以及所有GenICam接口节点。 工业相机的帧大小不包含在套件中,更改帧大小会重启图像采集。 这些套件是通用型的,适用于同一类型的相机,因此在由相同型号相机组成的测试台上,每个相机都使用一套这样的套件。

3.6. GigE网络和重新连接

  • HIKROBOT的GigE包大小在打开时会自动设置为最佳值; 您也可以在GenICam块中手动进行调整。 使用较大的帧(8164–9000)可以降低负载,对于断开的帧,请设置为1500,并增加包之间的延迟。
  • `Net 软件会根据每个摄像头自身的参数(有效负载大小 × 帧率)计算出预期的负载,并与网卡实际接收到的流量进行比较。如果出现明显差异,则表明可能存在丢帧或存在其他类型的网络流量。虚拟适配器和 NDIS 过滤器(如 GigEVision、uEye、Npcap)不包含在计算中。
  • 如果摄像头可见,但视频流未正常显示,请点击“重新连接”按钮(位于摄像头窗口或图块上)。通常,问题是由于网络带宽或USB接口的限制。
  • 当 picoCam 关闭描述符时,会丢失设置;如果相机本身没有设置,程序会应用参数文件,并提示用户点击“保存参数”,以便将其记录到相机中。

4. 区域-配对模型:从网格到训练模型

4.1. 方法的结构:一个模型,每个区域对应一个类别

区域-配对模型是 YOLO11 的一种常见分类网络,其类别数量等于区域数量,再加上可选的异常类别。 类别是指位于 `train` 和 `val` 目录下的文件夹。 程序会自动创建所有文件夹,无需手动创建。 如下是训练后的模型文件夹示例:

文件夹 model_4:train 和 val - 图像,data.json - 区域,live_template - 参考图像,board.json - 阈值,best.onnx - 训练好的网络。
文件夹 model_4:train 和 val - 图像,data.json - 区域,live_template - 参考图像,board.json - 阈值,best.onnx - 训练好的网络。
model_4\ train\ 用于培训的图片zone_001\ 正常区域 1 (C30):real_... 从摄像头拍摄的画面,syn_... 合成数据zone_001_anomaly\ 缺陷区域 1:syn_…_combo1_d, _rotate1 …zone_002\ 正常区域 2 (BR1)zone_002_anomaly\ 缺陷区域 2 val\ 验证数据集:与训练数据集相同的四个文件夹,内容会自动填充data.json区域:表格、坐标、尺寸、颜色、启用/禁用;类;插槽live_template.png / .txt 参考图像板:帧、对齐区域、红色(已排除)区域live_template_zones.png请参考带有标记区域和编号的示意图board.json识别区域的阈值 ({ "threshold": 0.50 })train_gray.txt“灰度调色板” 特征best.onnx经过训练的模型,正是它被用于进行检查 runs\ diag\ *.cache 工作相关:学习过程、用于分析的图像、学习缓存
train:每个区域有两个文件夹——正常和异常。
train:每个区域有两个文件夹——正常和异常。
val:结构相同,程序在拍摄时自动填充。
val:结构相同,程序在拍摄时自动填充。

文件real_…jpg— 这是从摄像头获取的真实图像(同时记录在训练集和验证集中)syn_…jpg- 合成数据edit_…jpg— 来自区域编辑器的截图。在示例中,拍摄了多个电路板的图像:zone_001- 训练集包含502个文件,验证集包含111个文件zone_001_anomaly— 680 和 144zone_002— 813号和181号zone_002_anomaly— 340 和 60。

一个存储位置。 整个模型标记(包括检查区域、对齐区域、类别和槽位)都位于模型文件夹中:data.jsonlive_template.txt。 程序数据库中不再有任何区域信息,因此,在“AI 模型”选项卡和“检查”选项卡上,ROI 编辑器显示相同的区域,并且可以将整个模型文件夹复制到另一台计算机,而不会丢失任何内容。 较旧的模型在首次打开时会自动导入到文件中。

该程序能够自动识别模型为“支付”类型,前提是存在 `zone_NNN` 这样的类别。类别编号是网格中区域的唯一标识(1…N)。因此,该方法的关键规则是:

重要。 区域是模型的一部分。在拍摄课程后,不能修改它们(添加、删除、重新排列表格):区域编号将与课程不匹配,并且这些区域将获得标签 NO_ZONE_CLASS。如果需要修改区域,请创建一个新的模型。

4.2. 创建模型

1
点击“AI 模型”选项卡,然后点击“创建新的 AI 模型”。
2
请指定父文件夹和模型名称(程序会提供默认的model_N)。 默认的类别列表包含normalanomaly;对于区域-配对,这些类别是不需要的,因为区域类别会在第一次按区域进行拍摄时自动创建。 您可以删除它们或留空:在训练之前,程序会提示您删除空类别。
3
点击 "创建模型"。 磁盘上会创建名为 "train" 和 "val" 的文件夹,模型将变为可编辑状态(但不会自动加载)。 如果模型已经存在,请选择 "选择模型文件夹"。

4.3. 在电路板上标记区域

1
将整板放置在摄像头下方,使其与线对齐。然后点击 ROI → 添加到类别(训练模型)
2
在“区域选择”对话框中,您可以选择任何一个类别(用于标记,类别并不重要),或者输入新的类别名称并点击“确定”,然后打开“区域选择”功能。 稍后,您将在此处看到所有区域类别,它们会按照 zone_### 的格式进行分组。 点击一个分组可以选中它,再次点击则取消选中。 “删除分组”按钮会删除整个分组,包括其中的图像。
3
会出现“ROI 区域选择”窗口。用鼠标左键在目标区域内拖动,会出现 `区域尺寸,像素` 字段:输入尺寸(默认为 32 的倍数,例如 256),然后按 Enter 键,区域将变成一个标准的正方形,并显示尺寸。对于需要检查的每个目标,请重复此步骤。在示例中,有两个区域:一个位于 C30 区域,另一个位于 BR1 区域。
4
如果需要绘制大量精确的区域,使用网格功能会更方便:将网格拉伸至整个图表,然后输入区域的尺寸,系统会自动计算出所需的行数和列数。或者,您可以在 `区域网格` 块中设置行数、列数、单元格的宽度和高度,然后点击 `创建网格`。您还可以通过拖动鼠标,将网格精确地放置在产品上。
5
右侧面板显示所有区域,包括其尺寸和“已启用”的标记;未启用的区域不会产生任何类别,完全隐藏的区域不会参与检查。 按钮:所有区域 ✓ / ✗颜色删除删除所有区域。 按 Enter 键关闭窗口,区域将保存到 data.json,并在视频中以黄色显示。
在“AI 模型”选项卡中,可以看到:在实时图像中,有两个黄色区域——BR1位于右上,C30位于左下。右侧有“区域-配对”模型按钮、勾选“将区域与标记关联到产品”以及训练设置。
在“AI 模型”选项卡中,可以看到:在实时图像中,有两个黄色区域——BR1位于右上,C30位于左下。右侧有“区域-配对”模型按钮、勾选“将区域与标记关联到产品”以及训练设置。
建议。 该元件应占据相当大的区域,周围留有一定空间,用于放置电路、标记和引脚。 这种“基础”区域随后会被用于生成合成数据(第 4.6 节)。 对于 0603–1206 尺寸的元件,每 11 毫米使用 128 像素效果良好;对于电容、开关和接口,建议使用 192–256 像素,如示例所示。 网络的输入尺寸(Image Size)应大致与区域尺寸相同。

红色区域:只需单击即可从合成数据中排除该区域

在“AI模型”选项卡中,单击已创建的区域,直接在视频上进行操作。被选中的区域会变为红色,并且将不再参与区域分割和异常检测。再次单击可以取消选中。合成数据窗口中的文件计数器会立即更新,而帧上方显示的“禁用 N”字样表示禁用了多少个区域。红色区域的列表会针对每台相机和模型进行保存;在“检查”选项卡中,相同的区域会保持为默认状态(那里有自己的黄色区域,详见第5.5节)。

4.4. 锁定参考图像:对齐区域

检测区域按照电路板的一个位置进行标记。 为了能够在线上插入其他带有位移和旋转的电路板,程序会记住参考图像:即实时画面,以及对齐区域——电路板上的特定区域,用于在每个新画面中进行匹配。 找到该区域后,程序会将检测区域转移到新的电路板上。 这样就实现了拍摄、数据合成和检测。

两个不同的矩形。 检查区域 指的是模型所检查的区域(绿色)。 对齐区域 是一个标记,用于寻找电路板(橙色边框)。 支撑点永远不会放置在检查区域内:如果电路板是通过寻找最靠近的电容来定位的,那么偏移的电容会“拖”走检查区域,缺陷也会变得不可见。 因此,在对齐区域中,请使用丝网印刷、孔、线路、微型电路等,但不要使用工作台和传送带。
1
在“AI 模型”选项卡上,勾选“固定产品区域,使用标记”,并设置搜索周期,毫秒(默认为 100)。 将摄像头放置在合适的位置,然后点击确认参考图像
2
会出现“选择区域:如何查找电路板”的窗口,显示实时图像和绿色检查区域。使用鼠标左键,将选框拖动到包含电路板细节的区域。在右侧,您可以立即看到“参考点:N · 对齐:精确/透视”:应该有数百个点。如果“点数较少,则扩大范围”。新的选框会替换旧的,右键可以删除选框。
3
点击 ✔ 搜索选定区域。 第二个按钮 ✔ 搜索检查区域 会自动选择区域,只有在没有其他区域时才会进行选择。 如果取消勾选 每次询问对齐区域,则后续的定位将不会显示窗口,而是会重复之前的区域。
4
该程序会显示“参考图像已锁定。 区域 N,关联点 1,点 K”,并保存 live_template.pnglive_template.txt(画面、区域、红色区域)。 勾选框 在画面上显示拍摄区域 会在视频上标记出已找到的区域,而用于校准的参考点,会以蓝色点显示,从而可以清楚地看到程序“固定”的依据。
对齐区域:橙色框 – 包含细节的电路板区域(3000个参考点),绿色区域 – C30和BR1的检查区域,这些区域不在框内。
对齐区域:橙色框 – 包含细节的电路板区域(3000个参考点),绿色区域 – C30和BR1的检查区域,这些区域不在框内。
固定后图像:已在各自的部件上找到,并标记为“正常”,蓝色线条 – 对齐区域的边界,蓝色点 – 对应于电路板部件上的匹配参考点(这些点不在该区域内)。
固定后图像:已在各自的部件上找到,并标记为“正常”,蓝色线条 – 对齐区域的边界,蓝色点 – 对应于电路板部件上的匹配参考点(这些点不在该区域内)。
匹配模型何时选择
自动(推荐)电路板进行精确对齐(平移、旋转、缩放);只有当视角明显更匹配时,才进行连接。在较小的对齐区域,精度为1-2像素。
精确相机从上方直接观察,电路板平放。如果对齐区域较小,这是最稳定的方案。
视角相机倾斜或电路板倾斜。需要一个包含全宽参考点的较大区域,否则会导致“倾斜”现象。

“参考图像”按钮(参考图像 с зонами)会打开已保存的带有网格和区域编号的参考图像(参见第 4.8 节)。 找到的电路板会进行简单的检查,例如:面积在 0.5 到 2 个参考图像的范围内,形状为凸四边形,支撑点应占据至少每条轴向的四分之一区域——如果条件不满足,则结果将被拒绝,并在控制台中显示“未找到电路板”。

重要。 以前,当图像中只有少量区域时,由于支付方式与区域对应,因此区域识别的准确率较低。现在,请重新拍摄参考图像,并重点关注电路板的细节区域进行对齐。根据本指南,从134个区域中,找到的区域数量从46-51个增加到106-112个,这表明识别的准确率有所提高。

4.5. 区域图像:正常图像及其合成数据

区域-配对 拍摄:按区域分割,将每个区域的图像分割成独立的区域,并将每个区域的图像归入相应的zone_NNN类别,并添加合成数据。 “合成数据正常”是指拍摄过程中出现的随机差异,而不是缺陷:例如,电路板的放置位置略有偏差,光线略有不同,传感器也可能产生噪音。

“区域-配对:按区域拍摄”:选项数量、按时间拍摄、在 val 中的占比、区域窗的整体调整/旋转/缩放,以及“选择目标区域”功能、光照和噪点、最终文件计数器。 窗格可以通过鼠标拖动进行调整。
“区域-配对:按区域拍摄”:选项数量、按时间拍摄、在 val 中的占比、区域窗的整体调整/旋转/缩放,以及“选择目标区域”功能、光照和噪点、最终文件计数器。 窗格可以通过鼠标拖动进行调整。
设置默认设置和选项
针对每个区域的合成选项每张裁剪框可以创建多少合成文件。 建议 20,最多 500。
按时间:每个选项来自相机的新帧启用,时间范围为 800–1200 毫秒(至少等于快门时间)。 每个选项都来自真实的实时帧:真实的传感器噪声、振动和光闪,而不是绘制的。
每个选项也包含一个概率值(%)20%。 参考图像始终位于 val 中:Ultralytics 要求每个类别都位于两个文件夹中。
以灰度模式训练模型总开关:从正常、异常和检查中移除颜色。 无法在同一模型中混合彩色和灰度文件,程序会发出警告。
偏移量,像素:向哪个方向该区域的移动窗口在标记方向(← → ↑ ↓)上,在整个图像中移动 0…2 像素;缺失的部分会从相邻的电路板区域中获取,从而保持边缘的平整。勾选 所有方向,可以为每个方向生成一个文件;勾选 随机一个,则生成一个文件。
旋转,度:向哪个方向默认情况下,已关闭:在与对齐区域对应的支付中,没有旋转,而启用则会模糊与缺陷的边界。 “左/右”、“所有方向/随机”与滑动类似。
比例(%)· 减少/增加默认情况下已关闭。 两个复选框分别对应两个方向:减小(小于100)和增大(大于100,该区域会从当前帧中选取相邻区域)。 每一处标记的方向对应一个文件。
亮度/对比度/色调每个选项随机取值范围:亮度 88…112,对比度 88…112%,色调 98…102%(在截图中);在“元素偏移”配置文件中,亮度范围更广,以避免成为一个明显的特征。
噪点(西格玛)/模糊传感器粒度 3…8 个级别,轻微模糊 0.4…0.8 像素。
“通用”列带有勾选框时,该视图会与其它视图一起进入通用文件;如果没有勾选,则会创建一个单独的文件“参考图像 + 仅此视图”。 视图越多,每个选项的文件就越多。
1
点击 区域-配对:按区域划分的图像。 对话框底部的文本显示: “针对方案:1个文件。 针对区域:训练集21个,验证集约5个。 总计一个图像约52个文件。 相机拍摄的帧数:20个,约16个”(针对两个区域)。
2
选择选项:默认 (偏移 0–2 像素,亮度 ±5,对比度 95–105 %),元素偏移 (偏移 0–1 像素,亮度 -10…10),或颜色和亮度 (偏移 0–2 像素,亮度 ±2,对比度和色调已关闭,以保持色调作为特征)。
3
点击“开始”。程序会在后台进行处理,并显示进度窗口,显示“区域 1/2 · 文件 26 · 帧 4/20”,同时提供“取消”按钮。处理完成后,会显示“完成:2个区域 → 类别 zone_001…zone_002,文件:52”。程序会立即根据硬件设置调整训练参数:图像大小 128,模型大小 s,训练轮数 50,批次大小 64(参见第4.9节)。
4
重复拍摄几张不同、完好的电路板的图像,使用相同的按钮。对于可靠的模型,至少需要 80 个不同类别的文件,更重要的是,需要几个真实的电路板(5-10 个),而不是一张包含 100 种变体的图像。
train\zone_001:正常 C30,位于导轨上。 real_…(可能是指某种标记或符号),syn_…_n1…n20,带有位移后缀(shiftd, shiftl, shiftr, shiftu)。 这种标记始终相对于基准位置保持不变。
train\zone_001:正常 C30,位于导轨上。 real_…(可能是指某种标记或符号),syn_…_n1…n20,带有位移后缀(shiftd, shiftl, shiftr, shiftu)。 这种标记始终相对于基准位置保持不变。
trainzone_002:正常模式。BR1: real_… 以及支持轻微旋转(rotl, rotr)和位移的选项。
trainzone_002:正常模式。BR1: real_… 以及支持轻微旋转(rotl, rotr)和位移的选项。

4.6. 合成数据:两次点击:元件与基座一起移动

这种合成数据的生成方式。 该模型在以“缺陷”为目标进行训练时,表现出特别好的效果,即,当它被告知观察的是未绘制的污点,而不是被检查的元件本身,以及其周围的电路板元件:例如,丝网印刷线条、电路路径、底板颜色和纹理。该程序会将观察区域缩小到元件的大小,然后移动或旋转该区域,并用周围的图像像素填充边缘。最终,元件不再位于其原始位置,而是与底板完全一致,就像检查员在实际观察缺陷时所看到的:包括真实的传感器噪声、真实的照明和真实的电路板。

正常区域和异常区域的区别在于,它们唯一的不同之处在于元件相对于基板的位置。 其余部分都相同,因此,网络学习的是“元件↔电路板”之间的关系,而不是斑点的颜色或光照情况。

两次点击

1
区域-配对:按区域拍摄拍摄。 正常提取每种区域的 20 种拍摄变体(窗口偏移 0–2 像素、光照、噪点),并归类到 zone_NNN
2
区域-配对:异常区域创建。 默认设置已经包含了两种偏移:区域偏移,即在所有方向上将区域移动 5-12 像素,以及元素区域旋转(70% 的区域,圆形),旋转角度为 15-180°。 文件将被归类到 zone_NNN_anomaly 类中。

无需再进行任何设置:不要绘制缺陷,也不需要寻找有缺陷的电路板。接下来,训练AI模型

前后:程序达到的效果

前:完好的电路板的实时图像。两个区域均为“正常”。
前:完好的电路板的实时图像。两个区域均为“正常”。
后:将合成数据(来自异常文件夹)插入到这两个区域,C30 向右下方移动,BR1 旋转。两个区域均为“异常”。 此外,在实际缺陷的情况下,电路板也会呈现类似的样子。
后:将合成数据(来自异常文件夹)插入到这两个区域,C30 向右下方移动,BR1 旋转。两个区域均为“异常”。 此外,在实际缺陷的情况下,电路板也会呈现类似的样子。
大图,区域 1 (C30):左侧为相机拍摄的“正常”,右侧为合成数据,元件与基座一起向下移动,边缘被邻近的图像中的元件填充。
大图,区域 1 (C30):左侧为相机拍摄的“正常”,右侧为合成数据,元件与基座一起向下移动,边缘被邻近的图像中的元件填充。
大图,区域 2 (BR1):右侧为元件的区域旋转 180°,元件位置正确,外壳指向错误。
大图,区域 2 (BR1):右侧为元件的区域旋转 180°,元件位置正确,外壳指向错误。

用户看到的异常文件夹

与 4.5 章节中的正常文件夹进行比较:只有在基础上的细节位置有所不同。

train\zone_001_anomaly — 缺陷 C30。 在每个 t000、t001 等副本中,有九个文件:combo1_d、_dl、_dr、_l、_r、_u、_ul、_ur。 这些文件代表了图像区域在八个方向上(向下:d,向上:u,向左:l,向右:r)被偏移 5-12 像素的情况,以及 rotate1,表示电容器区域发生了旋转。
train\zone_001_anomaly — 缺陷 C30。 在每个 t000、t001 等副本中,有九个文件:combo1_d、_dl、_dr、_l、_r、_u、_ul、_ur。 这些文件代表了图像区域在八个方向上(向下:d,向上:u,向左:l,向右:r)被偏移 5-12 像素的情况,以及 rotate1,表示电容器区域发生了旋转。
`zone_002_anomaly 训练模块:BR1 存在缺陷:机身在八个方向上都移动并随机旋转。电路板和平台上的纹理是真实的。
`zone_002_anomaly 训练模块:BR1 存在缺陷:机身在八个方向上都移动并随机旋转。电路板和平台上的纹理是真实的。
如何阅读文件名。 syn_<日期>_t003_combo1_dr.jpg — 副本 3,通用文件,向下/向右/向上/向左移动 (d = down, r = right, u = up, l = left); …_rotate1.jpg — 元素区域旋转; …_scale1_dn/_up — 放大或缩小; …_tl/_c/_br — 元素区域的位置(角度、中心)。通过文件名,可以清楚地看到文件中的具体缺陷,并通过“删除(训练 + 验证)类合成数据”按钮,在区域窗口中删除多余内容。

细节标记:为什么划痕会是“粗的”,以及如何进行设置

在零件的标记上,有 1-2 像素厚的文字和线条。这些标记在不同批次之间有所不同:字体、标记上的文字方向、以及部分符号都已模糊不清。如果出现“划痕”这样的合成缺陷,用同样细的线条绘制,传感器将无法将其与标记上的线条和传感器噪声区分开,从而导致无法识别来自不同批次零件的正常电路板。

合成数据:区域-配对,从两方面解决了这个问题。首先,主要缺陷——元素偏移——会将标记与主体一起移动,因此标记不会成为一个明显的特征:在正常和异常情况下,标记的外观都是一样的。其次,默认情况下,画出的线条/划痕都是粗的(⅛个区域,至少3像素),并且明显与标记的线条不同。现在,线条的粗细可以明确指定:线条粗细,像素(0 = 自动)选项会影响线条和十字线。

绘制的缺陷(如矩形、圆形、线条、“缺失元素”、模糊斑点等)已汇集在可折叠的组 “合成缺陷,位于切割区域” 中。 默认情况下,该组已折叠并关闭:主缺陷是偏移。 仅在特定任务时启用它:例如,浸水区域、多余的滴落、磨损的标记。

图形参数设定内容:
尺寸:从…到,百分比(相对于区域/像素)图形的尺寸或长度。以百分比表示,相对于较小的一侧(适用于任何区域);以像素表示,在所有区域中保持一致,当已知实际缺陷的像素尺寸时非常方便。
填充实心/轮廓/混合(轮廓也是粗的)。
线条粗细,像素线条/划痕和十字。 0 表示自动(粗)。 用于标记细节,不应低于 3 像素。
缺陷位置中心、左侧、右侧、顶部、底部——放置棋子的位置(带有少量随机分布)。勾选所有位置——根据文件,每个标记的位置对应一个;随机一个——一个文件,随机选择一个标记的位置。窗口底部的文件计数器会立即进行统计。
图形颜色:5 个槽五个槽位,而不是名称列表。勾选框表示该槽位已启用,颜色随机选择来自已标记的颜色(±12个色调,以避免单一颜色)。“示例颜色”按钮,用于在调色板中选择颜色。💧 滴管,点击实时拍摄画面(滚轮用于缩放,右键用于全景),并从实际的物体或电路板上选择颜色。默认情况下,已启用两个槽位:深色和浅色,其余三个已禁用。
“通用”列标记的缺陷信息会与其它“通用”信息(例如,在移动的元素上的划痕)一起存储在通用文件中。如果没有勾选,则会创建一个单独的文件,包含“正常 + 仅此缺陷”的信息。 “所有位置”视图始终是一个单独的文件。

4.7. 区域异常:设置窗口

"区域-配对: 异常区域" 按钮:正常情况下,会创建 zone_NNN_anomaly 类,这些类来自所有区域,除了红色(AI 模型 4.3 界面上的已关闭区域)。 异常区域类并非在所有区域都适用:仅在实际存在缺陷的区域添加它们,其余区域则由模型进行识别。

“区域-配对:区域异常”窗口:将缺陷信息复制到顶部;可折叠的包含带有参数、位置和调色板的绘制图形的组;区域的平移、旋转和缩放,包括区域形状和 ±% 比例;子区域;在缺陷上进行照明;按时间和 val 拍摄的图像。
“区域-配对:区域异常”窗口:将缺陷信息复制到顶部;可折叠的包含带有参数、位置和调色板的绘制图形的组;区域的平移、旋转和缩放,包括区域形状和 ±% 比例;子区域;在缺陷上进行照明;按时间和 val 拍摄的图像。 窗口可以通过鼠标拖动来调整大小。
设置它做什么
复制到缺陷一个通用设置:对于每个标记的类型,生成多少个带有随机参数的新副本(默认为 10)。
▸ 剪裁区域内的合成缺陷默认分组:矩形、小矩形、圆形、椭圆形、三角形、八边形、线条/划痕、十字形、`缺失元素`、模糊斑点、噪点填充、来自其他区域的片段。 图形的参数、位置和颜色方案,请参考第 4.6 节。
平移,像素 · 范围 · 形状主板的主要缺陷:某个区域(圆形或方形)在标记的各个方向上会发生偏移,偏移量为 5-12 像素,方向包括:←、→、↑、↓,以及两条对角线(⤡、⤢)。 垂直/水平缩放比例:±%,表示该区域相对于整个区域的大小:0 表示与整个区域相同,-30 表示区域比整个区域小 30%(仅元素发生偏移,底座保持不变),+30 表示区域比整个区域大 30%(会包含相邻的元素)。 所有方向的偏移量都可以在文件中针对每个方向进行设置。
旋转,度 · 形状区域(圆形或正方形,相同比例 ±%),随机旋转到范围内的任意角度。
比例(%)· 减少/增加区域作为缺陷:减少 60–85% 或增加 120–160%。 每一条标记的边对应一个文件。 通常在电路板上处于关闭状态。
“通用”平移和旋转如果两个选项都已选中,则表示这是一种在单个文件中定义的:移动和旋转都由同一个变换操作执行(而不是交替执行,否则会产生混乱),区域的缩放和形状是通用的,并且都由移动操作定义。
▸ 子区域区域被分割成 2、4 或 9 个部分,并且每个部分都独立旋转或移动;勾选“每个子区域对应一个图像”后,每个部分对应一个文件。 适用于包含多个元素的较大区域。
每个缺陷文件的照明和噪声启用,值为“正常”:缺陷应在几何形状上有所不同,而不是在光线上。
按时间/在 val 中每张新帧(800毫秒)的图像副本,20%用于val,val中的第一个类文件始终有效。
1
点击 区域-配对:区域异常。 结果已预先确定: “区域数量:2;每个副本:2个文件;每个区域:20个;总计:约40个(+部分在验证区)”。 如果启用“所有方向”,则文件在每个副本上的数量会变为九个,就像上方的文件夹一样。
2
选择样式:默认 (区域偏移 5–12 像素 + 区域、图形和子区域的旋转,所有内容都已折叠和禁用),元素偏移 (仅偏移 4–12 像素,颜色与正常状态相同) 或 颜色和图案 (图形、"隐藏元素",颜色来自调色板,无偏移)。 每次点击后,窗口都会立即保存更改。
3
点击 "创建"。 "zone_NNN_anomaly" 将出现在模型树中。 从原始图像中提取的缺陷,请通过 ROI → 添加到类别的方式添加到相同的类别中。
重要。 合成偏移的下限(5 像素)正好位于正常范围(0-2 像素)的上方。不要将正常范围扩大到 5 像素,也不要将异常范围缩小到 2 像素:这样会导致边界消失,模型将无法准确反映在实际电路上的情况。如果需要不同的灵敏度,请同时调整两个边界,并将其转换为毫米(第 1.3 节)。

4.8. 参考图像与区域:焊点和区域编辑

参考图像与区域”按钮会打开已保存的带有网格线的电路板参考图像。 在这里,数据合成无需使用摄像头: 滚轮用于缩放,右键用于平移,左键用于选择区域(Ctrl键用于添加,拖动鼠标用于框选,Ctrl+A用于选择所有区域),双击用于打开区域编辑器。

  • 选择区域的焊接点… — “焊接点:在两条线路之间形成短路”的窗口。该程序会自动在区域内(使用奥茨阈值、宽度 ≥ 2 像素的浅色条纹)找到线路,并在相邻线路之间的空隙处放置一个焊接点,该焊接点具有与线路相同的颜色、深色边缘和反光效果。设置:在垂直或水平线路之间,在第 1-3 张照片上放置焊接点,区域尺寸为 8-18%,针对每个区域(5 张照片),选择放置位置:在异常区域或正常区域,覆盖光照,在 val 中,创建一个新的照片,具有不同的光照或精确复制。
  • 编辑区域:工具包括:画笔、吸管、着色、复制区域、粘贴、图章、缺陷区域。调色板包括:焊盘/焊点、电路板、阴影/遮罩、白色、黑色。包含“副本”字段和“创建快照”按钮。 这样就可以绘制出尚未出现在生产线上的缺陷,例如:填充的焊盘、多余的元件、缺失的标识。

编辑器中的文件会被命名为 `edit_…`,并归类到区域或其异常类别中。在“检查”选项卡下,会打开相同的窗口,但仅用于查看。

4.9. 模型的训练

在“AI 模型”选项卡中,训练设置会自动填写,这是在首次进行区域扫描后自动生成的:图像大小 128,模型大小 s,周期 50,批次 64。 这些值对应于 108–137 像素的区域。 对于 256 像素的区域,如示例所示,请设置图像大小为 192 或 256,这样裁剪后几乎不会缩小(在主窗口中,周期设置为 100,图像大小设置为 192)。 请检查这些值,然后点击 训练 AI 模型

参数含义如何选择
Epochs模型查看数据集的次数默认情况下为50次;如果存在多个异常类别,则为100-150次
Batch Size每一步可以查看的图像数量64;如果视频内存不足,则减少
Image Size裁剪后的尺寸,必须是32的倍数大致的区域尺寸:对于108-137像素的区域,为128;对于256像素的区域,为192-256
Model Sizen / s / m / l / xs:适用于数百个类对;n:容量不足;m及以上:速度较慢
Device学习内容0 (GPU) 配有 NVIDIA 显卡;如果没有 CUDA,程序会自动切换到 CPU
Workers数据准备线程12 (默认,适用于多核处理器)
1
在启动前,程序会检查并建议删除空类、val 中的多余文件夹,以及在 val 中查找空位置。首次启动时,程序会安装学习环境(Python 3、ultralytics、onnx、onnxslim、onnxruntime 包),需要连接互联网和几分钟时间。
2
对于区域-配对模型,不需要使用 erasing、flip、crop 和 randaugment:这些增强方法与异常类冲突(反转区域实际上是另一个区域)。程序会在控制台中输出相应的提示。
3
按下“停止 AI 模型”按钮(STOP AI MODEL),右侧的环显示每个时代的百分比。 训练过程可以在控制台中查看。 在两块显卡和 100 个时代的情况下,大约需要 10-15 分钟。
4
程序完成后,会将 best.onnx 文件导出到模型文件夹的根目录,并立即将其分配用于检查。 "导出 ONNX" 按钮可以重复导出操作,但不会进行重新训练。
提示。 在添加缺陷或新数据集后,可以使用相同的按钮进行进一步训练:系统会增加数据集,然后进行“训练AI模型”操作,best.onnx 从而覆盖之前的训练结果。 在此过程中,请不要修改网格参数。

5. 检查

所有操作都在“Inspect”选项卡上进行。 训练完成后,模型已经配置完毕; 接下来需要检查区域、设置阈值、选择速度源,以及如果支付信息以任何方式到达,则启用实时传输功能。

在“检查”选项卡中:模型 model_4\best.onnx,“检查类别:主板 - 区域 2,异常类别 2。区域 N 位于 zone_N / zone_N_anomaly 之间,阈值为 50 %”,实时流程,周期为 2000 毫秒,显示“正常 · 112 个点”,以及
在“检查”选项卡中:模型 model_4\best.onnx,“检查类别:主板 - 区域 2,异常类别 2。区域 N 位于 zone_N / zone_N_anomaly 之间,阈值为 50%,实时流程,周期 2000 毫秒,显示“正常 · 112 个点”,下方显示“GPU”和“灰度分析”的来源。画面中,两个区域均为绿色,表示“正常”。

5.1. 确定模型并检查区域

1
如果未指定模型,请点击 "选择 ONNX 模型进行检查",并在模型文件夹中指定 best.onnx。 "检查类别" 行将显示所有类别;名称来自原始 ONNX 文件,因此输出名称与名称完全一致。
2
点击区域-匹配:区域 ↔ 模型(进行验证,设置阈值)窗口显示: “网格区域:2 / 类别的数量”zone_NNN在模型中:2个样本,2个异常类别。✔ “每个网格区域都有其对应的类别”。 “模型中存在无类别的区域”或“网格中存在无对应区域的类别”的警告,意味着网格在训练后发生了变化。
3
禁用人工智能 暂停使用该摄像头上的分析功能,但不删除设置(每个摄像头都有自己的标志);删除模型 彻底删除模型和插槽。

5.2. 区域识别阈值

对于每个区域,网络会给出所有类别的概率,但决策仅在相邻的两个区域之间进行。 正常情况的概率 q = p(zone_N) / (p(zone_N) + p(zone_N_anomaly)),乘以“识别度”,即该相邻区域是否成功地使用了网络的出口(完全识别度为10%及以上)。 最终评估结果(0…100%)与阈值进行比较:高于阈值,则为“正常”(normal);低于阈值,则为“异常”(anomaly)。

默认阈值为 50%,存储在 `board.json` 旁边,与模型一起存在,并立即生效,无需重启。低于 50% 的阈值,正常区域会变得更加明显:25% → 6% 截断,10% → 0.4%,1% → 几乎全部为绿色;99% 仅允许通过确定的区域。 这种显示方式旨在让操作员能够清楚地看到 5% 和 99% 之间的差异,而不是只有红色区域。

建议。 首先,在十张已知正常的工作板上设置阈值,逐步提高阈值,直到所有区域都显示为绿色。然后,在有已知缺陷的工作板上进行测试。程序每 10 秒钟会将一条消息写入控制台,格式为“[区域-匹配] … normal N, anomaly M, 阈值 0.50; 最差的 q: z17:0.31 …”,这可以显示哪些区域最接近阈值。

5.3. 实时流程:无论如何放置

“活式传送带:无论哪个位置都能找到电路板:在每次分析之前,系统会搜索电路板,将电路板与参考图像对齐,然后从对齐后的图像中裁剪出区域,并在视频上绘制对齐区域和区域的边界(绿色表示正常,红色表示异常)。“周期,毫秒”设置搜索频率(默认值为1000,在图像中为2000)。 旁边指示灯显示:绿色“正常 · N个点”,红色“异常 · N个点”,橙色“未找到电路板”或“未找到参考图像 - 请确认”。 结果仅根据一次分析得出,不进行累积。

参考图像和对齐区域都使用相同的按钮“确认参考图像”,就像在拍摄时一样(第4.4部分);“参考图像与区域”用于查看。在视频中,会绘制对齐区域的边界和蓝色的支撑点,这些点用于对齐电路板。在校准后,超出画面边缘的区域会用“跳过”标签标记。

5.4. 依据哪个信号进行分析

速度源始终只有一个:无论启动新的,程序都会停止之前的。

方法如何开启何时使用
通过摄像头勾选“通过摄像头”持续监控;速度由“每秒分析次数”滑块控制
通过定时器勾选“通过定时器”和时间间隔(毫秒)间歇性监控,例如每秒一次
通过触发器在“触发器”列表中选择连接,并选择“+”或“-”作为触发条件使用带有摄像头的传送带:在产品到达时拍摄画面——这是最准确的方法(第6部分)
GPU勾选“GPU”默认启用;切换会重新加载模型
灰度分析勾选“灰度分析”对于在灰度模式下训练的模型,此选项会自动启用;推理前,裁剪区域会被转换为灰度

5.5. 黄色区域:点击关闭

在生产线上,有时需要暂时将某些区域从控制状态中移除:可能是因为该区域的元件未安装,或者该区域被夹具封闭,或者正在进行调试。为了实现这一点,无需修改网格或模型,只需直接在视频界面上,通过“检查”选项卡进行区域的禁用操作。

1
点击相机镜头的特定区域:该区域会变为黄色,并退出分析。再次点击会重新启用该区域。
2
区域组:按住左键并拖动框,框内的所有区域都会被关闭;如果这些区域之前都是黄色的,拖动框会重新启用它们。 也可以通过滚轮操作。
3
黄色区域的列表存储在与摄像头和模型相关联的数据库中,并且会随着程序的重启和摄像头的重新连接而更新。 控制台会显示“[区域]…已关闭区域:N”的字符串。

“黄色”区域的功能由全局复选框 `黄色(通过点击禁用)区域保持静默` 在“声音”选项卡上的输出窗口中控制:

复选框黄色区域的行为
已启用(默认)区域不进行任何分析:裁剪区域不会发送到网络,标签为“OFF”,不会有任何声音、TCP传输或摄像头输出。 在实时流程中,黄色区域不会影响“正常/异常”的判断。
已关闭黄色边框仅作为标记:该区域仍然按照正常方式进行分析和处理。 这种方式方便,可以在不中断监控的情况下,标记需要检查的区域。
提示: 禁用黄色区域的筛选规则时,不需要手动删除:当复选框处于开启状态时,这些规则不会生效;而在关闭复选框后,这些规则会立即生效。

5.6. 屏幕和控制台上的显示内容

  • 已对区域进行标记;区域的边界由表格的颜色表示,当触发器激活时,区域的边界变为红色。当区域数量超过 50 个时,只有绿色边界显示,异常和不确定的区域显示为其他颜色和标记。大量的标记使得图像难以阅读,并增加了渲染的负担。通过点击(第 5.5 节)可以关闭黄色区域。
  • 在“触发器分析”面板(位于标签页底部)中,每条触发事件都以一行显示:[时:分:秒.毫秒] 入口摄像头 + 触发器 4 毫秒 | AI 12 毫秒 #57,并显示每种区域的结果。这些数据不会被写入数据库。
  • 在视频区域上右键单击:“在这一区域中,将“检测结果”设置为“…”,这将重命名该区域的模型的响应(但不修改模型本身,但筛选器和日志将显示新的名称);同时,还可以“为该区域创建筛选器”和“创建规则计数器”。
  • 勾选“保存检查图像”选项,并将带有标注区域的图像保存到以下文件夹:这些图像以 inspect_….jpg 的文件格式存储,每台摄像机的设置可能有所不同。
  • 每 10 分钟,在名为 diag 的子文件夹中,会写入一个实时传送带的图像和文本区域列表,并保存最近的 20 张图像,以便在不增加文件夹的情况下,对争议性情况进行分析。

6. 触发器:外部摄像头输入端的传感器

主要工作模式(用于传送带):相机通过传感器发出的电信号,在固定的输入口处捕捉图像。这是最精确的拍摄时刻:产品始终位于图像的同一位置,并且分析仅对该产品进行一次。`触发器` 模块收集“传感器 → 相机”之间的连接,并绘制与所选接口对应的连接图。

用于 HIKROBOT 的 TRIGGER 模块 (6 针): PNP 传感器,信号连接到 2 针,接地连接到 5 针,接线图。
用于 HIKROBOT 的 TRIGGER 模块 (6 针): PNP 传感器,信号连接到 2 针,接地连接到 5 针,接线图。
同样适用于 SICK picoCam (6 针):信号连接到 4 针(触发 +)和 3 针(触发 -)。
同样适用于 SICK picoCam (6 针):信号连接到 4 针(触发 +)和 3 针(触发 -)。
1
点击视频上的 "触发器" 按钮。选择 "触发器设备"(例如:BAOLSEN QAF-Q2P 光电传感器,4 根线;任何具有 PNP 或 NPN 输出的传感器连接方式相同),"摄像头接口"(HIKROBOT 6 针或 SICK picoCam 6 针),"摄像头(具体型号)" 和 "传感器输出类型": PNP - 信号切换 "正极",NPN - 信号切换 "负极",需要在 +24V 供电时,使用 1-4.7kΩ 的电阻。
2
按照图示,搭建电路:传感器和摄像头的供电来自一个 24V 电源,传感器的信号线连接到摄像头的输入端,输入端的另一根线连接到 0V。 传感器的白色线是第二个输出,无需连接。
3
点击 "建立联系"。联系信息会保存在数据库中;相同的联系不会重复。点击 "删除联系" 可以删除已选的联系。
4
在“Inspect”选项卡中,请从“Trigger”列表中选择一个触发器,并选择“+ 信号输入”或“- 信号输入”的分析模式。程序会将摄像头切换到触发模式:HikroBOT 的 TriggerMode 设置为 On,TriggerSource 设置为 Line0,而 SICK 会停止捕获,并重新进入和启动。 旁边的小圆圈显示信号输入。

接线孔的布局

HIKROBOT MV-CS, 6 pinSICK picoCam, 6 pin
1DC_PWR — 9-24V 供电GND — 供电线(相机)
2OPTO_IN — 输入线 0 (+),触发信号VCC — 相机供电(12-24V)
3GPIO — 线 2,输入或输出触发器 — 输入端,光电继电器(-)
4OPTO_OUT — 线 1 的输出端 (+)触发器 + — 光电二极管的正极
5OPTO_GND — 常用光电对,反向导线Flash + — 独立输出 (+)
6GND — 供电线(相机)Flash − — 独立输出 (−)
重要提示。 摄像头上的“爸爸”端和电缆上的“妈妈”端是镜像连接。唯一的参考点是拨码(拨码上的大孔);在 SICK 产品中,它位于 1 和 6 之间的位置,并且在镜像连接时向右延伸。请参考您所持握的那一侧的接线。如果接线错误,则意味着电源和输出端已损坏。请通过测试确认 SICK 的接线方式。
提示。 拍摄时,应优先选择“+”方向,而不是“-”方向:在实际设备上,沿“+”方向的帧间隔为 4.2 毫秒,沿“-”方向的帧间隔为 40.7 毫秒。 传感器检查:棕色与蓝色始终为 24 伏,这是电源;请观察黑色和蓝色之间的信号,确保光线能够穿透。如果信号没有变化,请在黑色和棕色之间添加一个 2-10 欧姆的电阻;此时 24 伏↔ 0 伏表示 NPN。

7. 输出:剔除器、相机独立输出和TCP

“剔除器”可以将检查结果转化为行动。规则可以在特定区域(或在整个模型、类或标记区域中)创建,并在模型检测到该区域中存在指定类别时触发。行动有三种:将 TCP 数据包发送给机器人或 PLC、切换摄像机的数字输出,以及向操作员发出声音警报。每次触发都会记录在日志中。

7.1. 输出说明:接触和测试

在视频上方的 "退出" 按钮会打开一个参考窗口,该窗口不进行任何设置,而是显示:哪些是输出接口,如何使用万用表在没有电源的情况下进行测试,以及如何连接负载。

HIKROBOT — 输出线 1(光电隔离器),连接到 4 号和 5 号引脚,最大电流 25mA。
HIKROBOT — 输出线 1(光电隔离器),连接到 4 号和 5 号引脚,最大电流 25mA。
SICK picoCam — 光电隔离器闪光引脚,连接到 5 号和 6 号引脚,持续 150mA。
SICK picoCam — 光电隔离器闪光引脚,连接到 5 号和 6 号引脚,持续 150mA。
  • 输出:光电隔离器的“干接头”,它不提供自身的电压,只能闭合电路。需要外部电源。
  • 使用Ω模式的万用表测试:输出关闭时,断开(OL),输出开启时,为数百欧姆。蜂鸣器在两种情况下都保持沉默,请查看数字。如果没有任何变化,请反转探针,光电隔离器具有极性。
  • 负载:+24V → 灯 → “+” 针,“-” 针 → GND。对于 HIKROBOT,25mA 限制:信号负载超过 27mA,应降低电源或使用中间继电器。对于 SICK,20-30mA 的灯可以直接连接。

7.2. OUTPUT 窗口:区域规则

位于右侧面板上的“OUTPUT”按钮(或在区域上右键单击,选择“创建剔除器”),会打开“OUTPUT - TCP数据包和摄像头离散输出”窗口。 在左侧,显示摄像头树状结构,依次为:AI模型 -> 类 -> 区域,可以勾选区域;在右侧,有“区域规则”、“触发记录”和“数据库”三个选项卡。

OUTPUT 窗口:左侧区域树,区域规则列表,“规则”组和 TCP 选项卡。
OUTPUT 窗口:左侧区域树,区域规则列表,“规则”组和 TCP 选项卡。
1
选择树形中的一个区域(右侧标题将显示路径 HD USB 摄像头 → model_5 → 1 → 区域 1 (T1.C1))。点击 + 新的 TCP+ 新的离散+ 新的音频
2
在 `规则` 组中,选择 `人工智能类别`,该类别应触发(对于区域-配对,应选择 `异常` 或 `正常`; `*` 表示任何类别),勾选 `启用`,如果需要,则使用 `重复,直到类别保持有效`,并设置重复间隔和 `确认类别更改,毫秒`(默认为 1500:新类别必须保持有效,才能被确认)。
3
请填写“TCP”(第7.3节)、“摄像头输出”(第7.4节)或“音频”(第7.5节)选项。
4
检查链条,无需等待缺陷:验证此规则(发送包裹或发出输出信号),模拟区域触发(通过包含防抖和日志的战斗循环,验证所有区域规则)。
5
点击 "创建于 1 个区域"。如果已勾选多个区域,按钮会变为 "创建于 N 个区域";在模型节点上,显示为“保存至整个模型”,在类节点上,显示为“保存至该类”。下方:"启用/禁用/删除已选区域"。

一个区域可以包含多个 TCP 规则(不同的接收器),每个规则最多一个离散输出,且每个区域最多一个声音。这些规则存储在数据库中,并通过推理流程进行处理:规则保存在内存中,对区域地址进行搜索,而与摄像头相关的套接字和 SDK 则由一个单独的进程来管理,以避免分析等待网络。

7.3. 向机器人或 PLC 发送 TCP 数据包

该程序作为TCP客户端运行:它连接到接收方的IP地址端口,保持连接开放并重复使用该连接。如果连接中断,程序会尝试一次重新连接并重试。发送的数据以UTF-8编码,并在末尾添加回车符+换行符。

字段用途
连接超时,毫秒默认值为 1000,范围为 100…10000。
发送规则的 AI 超时,毫秒自动发送规则的最小间隔;0 表示无间隔。 即使更改类别也需要等待这个间隔。
命令原文 그대로: "up" 表示 "up" 类型的包裹。需要一个类名 - 添加占位符:"J6 {class}" → "J6 235"。 如果为空,则使用 "数据" 模板。
自定义数据任意文本,用作 `{data}` 的替代。
数据发货模板。 留空表示“区域编号和名称”({zoneId} {zone})。 点击“添加”会添加该项,再次点击会删除;“全部字段”会创建一个结构化的模板。
置换含义置换含义
{zoneId}区域编号 (1, 2, 3...){camera}摄像头名称
{zone}区域名称 (可在数据库中编辑){model}人工智能模型名称
{class}模型观察到的类别{time}时间 (时:分:秒.毫秒)
{conf}置信度,百分比 (用点作为分隔符){date}日期 (年-月-日)
{data}来自“自身数据”的文本

示例的结构化模板:`zoneId={zoneId};zone={zone};class={class};conf={conf};camera={camera};model={model};time={time};date={date};data={data}。数字始终采用一致的格式,以避免在PLC中出现解析问题,例如“87,6”。

  • 检查连接 仅会打开套接字,并显示“连接已建立”或“N 毫秒内未收到响应”。
  • 发送测试 确实会发送字符串;结果显示在按钮旁边,而不是在窗口中。
  • 确认。 如果不勾选“重复”选项,规则会发送一个数据包,并在接收方收到“ok <数据包内容>”的响应后停止发送。 如果勾选了“重复”选项,规则会按照设定的时间间隔重复发送数据包,直到数据包的类(class)状态改变。
  • “最后一条指令优先”:如果模型在操作员忙碌时已经生成了多个结果,则最后一条指令将被执行。任务队列最多可容纳 512 条任务。

7.4. 摄像头输出(离散)

“摄像头输出”选项:输出方式、线路、水平、脉冲、手动检查按钮。USB摄像头没有独立的输出,只能通过TCP进行访问。
“摄像头输出”选项:输出方式、线路、水平、脉冲、手动检查按钮。USB摄像头没有独立的输出,只能通过TCP进行访问。
字段用途
出口方法:SICK 使用 Flash 针(恒定水平)或 GPIO; HIKROBOT 使用 UserOutputValue 或 LineInverter(闪光灯关闭)。 MV-CS020/016-10GC 节点 UserOutput 均无,程序会自动选择 LineInverter。
这条线路SICK 的闪烁信号/ GPIO1…6; HIKROBOT 的 Line1(输出)、Line2(双向); Line0 仅为输入。
水平真 / 假 / 关闭。 "关闭" 表示该选项存在,但不会影响实际操作。
脉冲,毫秒 (0 - 保持)0 - 这种状态持续到班级更换;否则,脉冲持续时间为 10…5000 毫秒,并伴有回波。

开启输出关闭输出脉冲按钮,使用测试仪或灯进行测试;摄像头的功能会询问所有方法并生成报告。手动测试内容也记录在同一日志中。

同一引脚连接多个区域。 如果一个引脚连接了多个区域,则该引脚被视为逻辑“与”运算:只有当所有区域都发出“高”信号时,该引脚才输出“高”,否则输出“低”。在日志中,这会被表示为“区域 N 需要低电平 → 高/低”。因此,一个引脚可以连接数百个区域,从而形成一个“功能正常”的输出。
重要提示。 在 SICK 的闪光灯,数字输出和背光都使用相同的引脚:如果连接了脉冲灯,请使用 GPIO。 默认情况下,抗干扰设置是 500 毫秒(最低 200 毫秒),并且不会将无事件的重复记录到日志中。

7.5. 声音提示:为每个区域设置不同的声音提示

第三种规则类型:通过电脑上的程序产生声音。操作员无需看屏幕:当区域进入缺陷状态时,他会听到声音,而不同区域的声音则会指示具体位置。该声音适用于任何类型的摄像头,包括 USB 和 RTSP 摄像头,这些摄像头没有独立的输出。

1
选择树形图中的一个区域,然后点击 "+ 新声音"。 在“规则”组中,指定类别(例如 "异常"),并勾选 "启用"。
2
在“声音”选项卡中,从列表中选择一种声音。系统内置了十种声音:短促声、双重声、三重声、低音和高音、上升音和下降音、警报声、长鸣声、铃铛声。点击“试听”按钮可以播放所选的声音。
3
自定义声音:点击 "上传您的文件",选择 WAV、MP3 或 WMA 格式。文件将被复制到与程序位于同一位置的 "sounds\custom" 文件夹中(您可以取出 U 盘)。文件将显示在“自定义”列表中。点击 "声音文件夹" 按钮,即可打开该文件夹,直接将文件放入其中。
4
设置 声音之间的间隔时间,单位为毫秒 (ms),范围为 1000 到 10000。 在这段时间内,即使区域类别发生了变化,声音也不会重复播放:当间隔时间为 10000 毫秒时,操作员最多只会听到一次信号,间隔时间为 10 秒。
5
点击 "创建(针对1个区域)",或者勾选区域,然后一次性创建规则。为每个区域设置不同的声音:对于不同的区域,使用不同的信号。
6
复选框 黄色(点击后禁用)区域保持静默 默认情况下,在“检查”选项卡(第 5.5 节)中点击禁用区域时,这些区域不会发出声音,也不会触发 TCP 连接或摄像头输出。
工作原理如何操作
不勾选“重复”选项当区域状态确认变更后,会发出一次声音。在状态确认后,区域保持不变时,则保持安静。
勾选“重复,直到状态确认变更”选项声音会以“重复间隔”发出,但不会超过声音之间的时间间隔,只要区域保持在指定状态。
同时存在多个缺陷区域每个区域都会发出自己的声音;不同区域的声音不会相互覆盖,只会覆盖同一区域的声音。
日志每次触发记录都会在“触发记录”中以“声音“…””的形式记录。如果文件未找到或音频设备出现故障,则记录将包含错误信息,程序将继续运行。
检查验证此规则 会立即播放声音;模拟区域触发 会与 TCP 和输出一起播放声音,并通过战斗队列进行。
建议。 对于最重要的区域(例如接口、电源元件),使用警报或双重信号;对于其他区域,使用短促的信号。这样,通过单一的信号,可以明确指示是否需要立即前往安全线。通过在模型树中选择特定节点或模型/类,可以为整个模型设置统一的信号规则:针对任何缺陷,使用相同的信号。

7.6. 触发记录和数据库

触发记录” 标签显示最近的 300 条记录,以以下格式呈现:时:分:秒.毫秒 ✔/✖ 摄像头 · 型号 · 类别 · 区域 → 操作 [消息],并且实时更新。 包含“刷新”和“清除记录”按钮。

“数据库”选项卡:说明数据存储位置、备份和通过单个文件恢复数据库。
“数据库”选项卡:说明数据存储位置、备份和通过单个文件恢复数据库。

标签/选项卡数据库该程序将所有数据存储在 SQLite 文件中rejectors.db在exe文件旁边,没有独立的程序在运行,端口没有响应,无需安装任何东西。 包含以下表格:settings(设置),cameras(摄像头配置文件)camera_models(模型,用于相机),区域(区域名称和几何形状),过滤器(规则)reject_log(期刊)camera_param_files(相机参数的副本)camera_presets(相机设置集合)。保存数据库副本...它能够直接在运行的数据库上,对 VACUUM INTO 命令进行全面的分析和评估。从备份文件加载数据库…它会恢复数据库,但在恢复之前会先保存当前的数据库状态。 您可以使用 DBeaver 查看数据库,但建议不要从外部程序直接修改数据库。

8. 其他模式和任务

常规模式:normal/anomaly 以及任何类别

该 ROI(投资回报率)编辑器也适用于常规分类,例如:药片、盖子、标签、托盘上的零件。 类别的设置在“新建AI模型”对话框中进行(默认为“normal”和“anomaly”,名称使用拉丁字母)。 需要在产品上设置区域,然后点击“拍照”按钮,设置圆圈数量为1到50。 可以通过相机(每秒帧数)或编码器来生成一系列图像,选择“创建图像”。 “合成数据用于AI”面板:可以进行精确的90°/180°旋转,以及360°的完整旋转,并设置步长和范围。 还可以进行镜像操作,以及“按角度分类”功能(每个角度分配到一个不同的类别,剔除器会通过TCP发送角度信息)。 此外,还可以设置亮度、对比度范围。 训练过程使用Ultralytics提供的完整增强功能。 对于此类模型,置信度阈值可以在“检查”选项卡中进行设置,与区域配对模型相同。

多模式检查(1-20个槽位)

在一个摄像头上,可以同时处理最多20个模型。操作步骤如下:将ONNX模型添加到指定槽位,然后在“区域感兴趣”(ROI)设置中,为选定的模型添加类别。每个槽位中的模型都有自己的区域标注,所有模型的检测结果都会显示在同一个画面上。

对于区域-配对插槽,通常不需要。 已经有一个型号可以覆盖整个主板:每个区域都有自己的两个类,因此,以前为了实现“合并相似类”,需要使用多个型号,现在就不再需要了。 典型的配置是:一个区域-配对型号在主板上,插槽是空的。

何时使用多模式:

情况如何设置
在单个帧上执行不同的任务区域-配对检查布局和元素,而常规模式在第二个槽位中进行标记、贴纸、颜色或键的方向。 使用“ROI → 在选定的模式中添加类别”来单独设置第二个模式的区域。
无固定网格的产品药片、盖子、部件在托盘中:在普通模型中,有多个类型的分类。为了避免混淆,相似的类型分别放置在不同的槽中。
同一画面中的两张不同板卡在不同的槽中,有两套区域-配对模型,每套都有自己的参考图像和网格。 实时生产线使用主要模型的参考图像。
过渡期旧的训练模型仍然在槽中,直到新的区域-配对模型开始收集统计数据;两者在同一画面中可见,筛选规则会随着信任程度而转移。

阈值、分析速度、黄色区域以及“剔除器”功能适用于所有相机型号。 "移除模型" 按钮会清除所有槽位,因此会提示确认; "删除所选" 按钮会从槽位中移除一个模型,但其文件和区域数据仍然保留在数据库中。

通用模型

通用模型 按钮保存了“相机 → 模型”的组合,并以以下名称进行保存:从现有模型创建应用于所有相机从现有模型更新重命名删除组合。 将展台从八个相机切换到其他产品,只需一个选择。 删除组合只会移除分组:文件夹、ONNX、区域和规则,但这些仍然存在。 区域属于“相机 + 模型”的组合:在八个相机上,一个模型对应八个独立的标记。

生产线上编码器和筛选器

对于使用COM端口(115200,ESP32)的编码器连接,请连接CONNECT ENCODER,支持自动连接,并设置位置、步长、以及校准参数,设置零点 + 拍照。 用于训练和分析的拍摄可以采用“基于编码器”的方式,这样可以确保图像在产品运动轨迹上均匀分布。 旧式的剔除器通过定时、延迟和反垃圾邮件机制,向编码器控制器发送REJECT指令。

视频和图像的录制

设置选项卡:开始视频录制,使用活动摄像头将视频保存为 record_日期_时间.avi 文件(MJPG 格式,摄像头实际帧率)。用于训练的图像为 real_….jpg,用于检查的图像为 inspect_….jpg,图像上会绘制出特定区域。

9. 设置、控制台、要求和许可证

Settings

  • 保存到文件 / 从文件加载 — 所有设置(相机、模型、规则)都以 JSON 格式保存,方便在重新安装或转移到另一台电脑时使用。JSON 格式相当于备份,以防原始数据库无法访问。每次修改设置都会自动保存。
  • 重置为初始设置:会永久删除配置和窗口布局。
  • 界面语言:14种语言;主窗口可以立即切换,其他窗口在下次打开时切换。
  • 所有窗口的位置、大小和监视器位置,分隔器的位置,都存储在数据库中;在关闭监视器时,窗口会返回到可见区域。

Console

“摄像头”和“触发”选项默认未勾选,并且会显示相应的消息(在触发模式下,摄像头消息会进入“触发”);所有信息,包括未经过过滤的信息,都会写入到 logs\engiai-*.log 文件中。该控制台设计用于长时间运行,屏幕可以显示 800 行,当达到 1000 行时,旧的 200 行会被删除;新的行以 4 行/秒的速度收集,而不是每次只收集一行;向下滚动功能已启用,直到您手动向上滚动;该控制台没有声音。 区域分类的更改不超过每秒 10 行(其他内容会被记录在计数器中),日志文件大小为 20MB,超过 14 天的文件在启动时会被删除,日志数据库存储最近的 20,000 条记录。 未处理的错误信息位于 crash.log,强制关闭的原因位于 runtime.log 旁边,与 exe 文件相关。 如果出现问题,请首先查看此处。

要求

组件要求
操作系统Windows 10/11 x64.
用于检查的显卡NVIDIA 显卡,附带 CUDA 驱动程序;CUDA 13 和 cuDNN 9 库随程序一起提供。在没有显卡的情况下,检查将自动在处理器上进行。
培训Python 3(在安装时勾选“将 python.exe 添加到 PATH”)以及 ultralytics、onnx、onnxslim、onnxruntime 软件包,程序会在首次训练时自动安装,需要互联网连接。用于训练的 GPU 由 PyTorch 确定;如果没有 CUDA,则在 CPU 上进行训练,速度较慢,结果相同。
SICK 摄像头IDS uEye 驱动程序;摄像头必须在 IDS Camera Manager 中可见。
HIKROBOT 摄像头MVS SDK(库随程序一起提供);对于 GigE,需要支持 jumbo 帧的网络卡。

许可证和试用模式

程序启动时,会连接到engi.live的授权服务器。程序只会发送设备的ID和版本号的哈希值,而不会发送序列号和用户名。如果服务器不可用,但已缓存了授权信息,程序将使用缓存的授权信息运行(适用于没有互联网连接的环境)。如果没有有效的授权,程序会进入试用模式,时长20分钟。此时,窗口标题和人工智能区域会显示倒计时“测试 MM:SS”。“设置”选项卡上的“购买”按钮会打开购买页面。如果已获得有效的授权,则不会显示倒计时。

10. 简短的检查清单和故障排除

零基础电路板检查清单

1
摄像头 → “+ 添加摄像头” → 标记您的摄像头 → 添加。
2
摄像头选项卡:分辨率 → “自动设置(基于图像)” (或 “在 USB 上固定参数”) → “保存参数” → “保存为…”,设置。 也可以选择 “训练灰度”。
3
AI 模型 → “创建新的 AI 模型” → 名称。
4
“ROI → 添加到类别(训练模型)” → 在每个部件周围画一个框 → 区域大小(例如,256) → Enter。 对于数百个相同的部件,画一个框覆盖整个电路板和网格。
5
勾选 “将区域标记与产品关联” → “标记参考图像” → 在图像上标记电路板上包含部件的区域(不是检查区域) → “✔ 搜索已标记区域”。
6
“区域配对:按区域拍摄” → “拍摄”。 在 3-5 个正确的电路板上重复此操作。 提前禁用不需要的区域(红色)。
7
«区域-配对:区域异常» → «创建»: 元素及其底座的移动和旋转已包含在内。如果需要,请在“参考图像(带区域)”中添加焊料。
8
训练人工智能模型(图像尺寸:128x128,批次大小:s,训练轮数:50)→ 等待训练完成(达到100%)→ best.onnx 参数由系统自动设置。
9
检查 → «区域-配对:区域 ↔ 模型» → 检查匹配 → 阈值。选择“使用摄像头”或选择触发器。对于移动板,请选择“实时传送带”。
10
输出 → 选择区域 → 定义异常类(声音、TCP 或摄像头输出)→ «模拟区域触发» → «在 N 个区域中创建」。

如果出现问题

症状需要检查
摄像头未出现在列表中检查电源和电缆;对于 SICK,请使用 IDS Camera Manager 和适配器子网 IP;对于 HIKROBOT,在紧急关闭后等待 25 秒,然后选择“重新连接”。
图像为黑色、灰色或颜色不正确摄像头 → «自动设置(用于 AI)»; 对于彩色 SICK,请使用拜尔阵列和白平衡;对于 USB,请选择“标准设置”,然后选择“保存参数”。
视频卡顿,网络显示红色GigE:包的大小为 1500 字节或 jumbo,在网卡上;包之间的延迟;帧率较低或帧数减少;单独的网卡用于摄像头
“未找到板”/ 图像丢失参考图像未被记录或在不同光线下拍摄;支撑点较少,扩大对齐区域并包含更多细节;物体(如桌子或传送带)进入区域;增加搜索时间
区域移动到其他板上通过搜索区域来查找板:重新记录参考图像,并围绕板的细节(参见 4.4 节)进行对齐;自动匹配模型
另一批零件的合格板件不足机箱上的标记不同:添加来自该批的正常图像;不要制造小于 3 像素的仿生划痕(参见 4.6 节);检查缺陷是偏移还是颜色
带有标签 NO_ZONE_CLASS 的区域。网格在训练后改变;恢复网格或创建新的模型并重新拍摄
所有区域在合格板上都是红色的其他支付方式或其他位置,没有实时传送带;阈值过高;照片在不同的光线下拍摄;混合了彩色和灰度文件
模型无法识别元素移动重新计算 px/mm (第 1.3 节):在小比例下,移动小于 5 像素;缩小视野或使用更高分辨率的相机;不要放大移动
训练速度下降或非常慢Device = cpu,如果未安装 NVIDIA 显卡;减小 Batch Size;查看控制台;确认 Python 是否在 PATH 中
检查功能失效是否已选择 best.onnx;是否已启用速度传感器(通过摄像头/计时器/触发器);是否已禁用“使用人工智能”;摄像头上的“人工智能已启用”复选框
规则过滤器保持沉默是否按下了“在 N 个区域创建”;勾选“已启用”;规则的类别与模型的响应(异常/正常)匹配;退出时,级别不是“off”;USB 摄像头没有输出,只有 TCP
声音不播放该规则已创建并已启用;文件位于 sounds 文件夹(或 sounds\custom)中;是否存在声音之间的停顿;在不启用“重复”功能的情况下,声音只会播放一次,并且只在切换到不同的类时播放;Windows 音量和输出设备
TCP 数据包只发送一次“重复”功能需要接收方回复“ok <包裹号>”,或者在PLC端设置“重复发送”选项。

engiAI Ethernet System。 按钮和字段的名称与您使用的语言中显示的方式相同(截图来自俄语界面)。 截图是在“model_4”型号上拍摄的(两个 256×256 区域:C30 容积器和 BR1 桥),USB 摄像头 3264×2448,该模型在灰度模式下进行训练。 2026年9月第3版:以两个区域为例,创建模型文件夹,对齐区域,生成“包含基础元素”的图像(“前/后”),颜色和线条粗细,红色区域,控制台。