AI 驱动文档
您想了解什么?
分类:每个区域一个标签
分类器查看裁剪区域并回答一个简单的问题:这属于哪一类? 通过或失败。空或满。红色、绿色或蓝色。这是最简单、最快的检测类型,除非您需要知道缺陷位于何处,否则它是合适的默认选项。
分类器的设置基于一个简单的层级结构:类型拥有类别,类型作为 ROI 标记到图像上。
可以将其想象为一个橡皮图章系统。检测类型就是图章本身(设计)。ROI 是您在纸上盖出的印记(图像)。每个印记都继承相同的设计、相同的类别列表和相同的训练模型。
OV10i 仅运行分类器模型。如果您的检测需要像素级蒙版(计数、面积测量、缺陷定位),请升级到 OV20i 或 OV80i,它们支持分割。
三个核心概念
在训练 AI 模型之前,相机需要知道在哪里查看、有哪些可能的结果,以及如何评估每个裁剪区域。这三个问题对应三个概念,它们以一种非常特定的方式嵌套。
Inspection Type
A named bucket. Holds one shared dataset, one shared list of classes, and one trained AI model.
Classes
The vocabulary of possible outcomes for this inspection. Defined once on the type.
Region of Interest (ROI)
A rectangle drawn on the image. Many ROIs can share one type and, therefore, one dataset and one model.
思维模型:一个类型拥有类别和 ROI
检测类型是一个桶。它保存一个共享的数据集、一个共享的类别列表和一个训练好的 AI 模型。然后您将该桶在图像的多个位置上盖章,这些盖章就是 ROI。同一类型的每个 ROI 都继承相同的类别,并由同一个模型进行评估。
- 检测类型 是桶。
- 类别 是结果词汇表。
- ROI 是图像上的位置。
对于分类器:每个 ROI 一个标签,从类别列表中选取
分类器获取每个 ROI 裁剪区域并提出一个问题:这看起来像哪个类别? 存在或不存在。通过或失败。完好、划伤或破裂。每个 ROI 的输出是一个类别名称加一个置信度分数,一个清晰的分类结果,可供您管道中的后续步骤使用。
实例:PCB 螺钉存在性检查
考虑一块有六个螺钉位置的 PCB。四颗螺钉存在,一颗缺失,一颗损坏。您可以这样配置:
- 类型:
Screws(6 个 ROI,分类器) - 类别:
present、absent、damaged - ROI:
Screw_1到Screw_6,每个标有三个类别中的一个
每个 ROI 的输出是一个标签加置信度:
| ROI | 标签 | 置信度 |
|---|---|---|
| Screw_1 | present | 0.98 |
| Screw_2 | absent | 0.94 |
| Screw_3 | present | 0.97 |
| Screw_4 | present | 0.96 |
| Screw_5 | present | 0.95 |
| Screw_6 | damaged | 0.82 |
从此示例中需要理解三点:
- 每个 ROI 一个标签。 分类器为每个裁剪区域准确分配一个类别,是下拉选择,而不是绘制任务。输出是
class_name加confidence分数。 - 类型是所有者。 所有六个 ROI 共享 Screws 数据集。捕获一张图像即可获得六个新训练样本,并由一个训练模型决定全部六个结果。
- ROI 只是位置。 绘制要紧凑(小于 512 × 512 像素)。使用复制来盖章
Screw_1 → Screw_2 → Screw_3,每个都会自动继承类别列表。
深入解析:分类的行为方式
分类属于检测类型,而非 ROI
这是最需要牢记的一点。分类是检测类型 (Inspection Type) 的属性,这意味着添加或删除一个分类会自动更改使用该类型的每个 ROI 的标签选项。
- 只需定义一次。 在 Classes 面板中点击 + Add class。为其命名(例如
stripped_head)并指定颜色。 - 即时传播。 新分类会出现在该类型所有 ROI 的下拉列表中。无需对每个 ROI 单独配置。
- 按需重新标注。 已有训练图像保留其原标签;您可以重新访问任何图像并将其重新归类到新分类。
- 保持精简。 从能够覆盖您决策的最小分类集开始。两个分类(
pass/fail)通常比五个模糊分类表现更好。
深入解析:ROI 的行为方式
区域越小越好。 让每个 ROI 刚好够包含所需特征即可。更小的 ROI 意味着更少的训练数据、更快的迭代速度和更准确的 AI 决策——特征在裁剪图中占主导地位,而不会淹没在背景中,也不会被缩小。
小、具体、数量多
ROI 告诉相机在哪里进行裁剪。裁剪越紧凑,模型获得的信号越清晰。由于 ROI 共享同一类型,添加更多 ROI 会成倍增加训练数据,而不会成倍增加工作量。
- 将裁剪保持在 512 × 512 px 以下。 任何更大的尺寸都会被缩小以适配模型输入,细节将永久丢失。
- 越紧凑越好。 围绕单个特征的小 ROI 能为模型提供清晰信号,所需的训练数据也更少即可收敛。
- 多个 ROI,一个类型。 10 颗螺丝 → 在同一 Screws 类型上设置 10 个 ROI。一次捕获就成为十个训练样本,一个模型即可在推理时处理全部十个。
- 使用 Duplicate 功能。 为第一个 ROI 起一个有意义的名称(
Screw_Top_Left)。Duplicate 会自动递增名称,无需重复输入。 - 需要完整覆盖? 不要绘制一个巨大的 ROI,而是用一组小 ROI 平铺成网格。每个 ROI 都能保留完整分辨率。
数据流:每个 ROI 都独立通过模型
运行时,相机会从完整图像中裁剪出每个 ROI,分别送入训练好的模型,并记录获胜的分类及置信度分数。每次捕获,每个 ROI 都会得到一个标签。
- 捕获带有所有 ROI 标记的完整画面。
- 逐个裁剪,使每个 ROI 成为独立的小图像。
- 分类器模型为每个裁剪图选出一个分类及置信度分数。
- 输出为 ROI → 标签 → 置信度的表格。基于该表格的通过/失败逻辑由您的 IO模块 规则决定。
设置总结
训练前的快速检查清单。如果以下每项都成立,您的分类器就有了坚实的基础。
- 每个决策对应一个检测类型。 不要在同一类型中混用"螺丝"和"标签"——为每一种各设一个类型,使其拥有独立的分类、数据集和模型。
- 分类在类型级别定义。 每个 ROI 都获得相同的下拉列表。如果某个选项并不适用于每个 ROI,那它可能属于另一种类型。
- ROI 绘制紧凑、命名具描述性。
Screw_Top_Left优于New ROI。保持每个 ROI 刚好够容纳其特征,并控制在 512 × 512 px 以下。 - 对齐功能首先要正常工作。 如果零件发生位移或旋转,对齐器会随之移动您的 ROI。只有在对齐稳固时,紧凑的 ROI 才能发挥作用。
- 每个分类先准备 3 到 5 张训练图像。 训练、找出失败案例、添加针对性数据、重新训练。通常需要两到四轮迭代。
- 每个标签都要复核。 五张训练图像中有一个错标就是 20% 的污染。每次训练前点击 View All ROIs。
后续内容
- Regions of Interest (ROIs),绘制 ROI 的实用指南。
- Training Your AI,标注与训练工作流程。
- Outputs,如何将通过/失败判定接入 IO模块。