AI 驅動文件
您想了解什麼?
訓練分割器
本指南將向您展示如何設定和配置 OV80i 分割功能,以自動檢測、測量和分析您零件中的特定特徵或缺陷。當您需要識別不規則形狀、測量面積或檢測簡單分類無法處理的特定模式時,請使用分割功能。
影片指南
檢視此主題的實際操作:如何在幾分鐘內建立分割配方
何時使用分割: 表面缺陷、液體溢位、不規則形狀、面積測量、模式檢測或任何需要畫素級精度的特徵。
開始之前
您需要準備的事項
- 已設定並連線的 OV80i 相機系統
- 具有您想要分割特徵的測試零件(例如,帶有鉛筆痕跡的板材)
- 針對您特定應用的良好照明條件
- 15-20 張用於訓練的樣本影象
第一步:建立分割配方
1.1 開始新配方
- 導航到所有配方 頁面
- 點選
+ 新配方(右上角)
- 輸入配方名稱: 使用描述性名稱,如 "Pencil_Mark_Detection" 或 "Surface_Defect_Segmentation"
- 選擇配方型別: 從下拉選單中選擇 "Segmentation"
- 點選
確定建立
1.2 啟用配方
- 在列表中找到您的配方(顯示為 "Inactive")
- 點選
啟用 - 點選
啟用並進入編輯器確認並啟動配方編輯器
✅ 結果: 配方現在為 "Active",並顯示配方編輯器。
第二步:配置相機設定
2.1 開啟成像配置
- 點選
配置成像(左下角)

2.2 為分割最佳化焦距
焦距對於準確的邊緣檢測至關重要:
- 將測試零件放置在相機視野中
- 調整焦距,直到邊緣清晰銳利
- 使用不同的零件進行測試,以確保在您的範圍內保持一致的焦距
提示
- 專注於缺陷/特徵將出現的表面
- 確保整個感興趣區域都處於清晰的焦距
- 輕微的過度銳化比模糊焦距更適合分割
2.3 設定最佳曝光
適當的曝光確保一致的特徵檢測:
- 調整曝光 以實現均衡的照明
- 避免過曝區域(純白區域)
- 確保特徵可見,並具有良好的對比度
分割曝光指南:
- 特徵應與背景有明顯對比
- 避免可能被誤認為缺陷的陰影
- 在各種零件條件下進行測試(乾淨、髒汙、磨損)
2.4 配置 LED 照明模式
根據您要分割的內容選擇照明:
| 特徵型別 | 推薦照明 | 原因 |
|---|---|---|
| 表面缺陷 | 明場 | 均勻照明顯示錶面不規則性 |
| 劃痕/裂縫 | 側光 | 產生陰影,突出線性缺陷 |
| 凸起特徵 | 暗場 | 使凸起區域從背景中突出 |
| 液體溢位 | 側光 | 顯示錶面紋理差異 |
2.5 調整伽瑪以增強特徵
- 增加伽瑪以增強特徵與背景之間的對比
- 測試不同值同時檢視目標特徵
- 找到設定使特徵最易區分
2.6 儲存配置
- 在實時預覽中檢視設定
- 點選
儲存成像設定

✅ 檢查點: 特徵應清晰可見,且對比度良好。
第 3 步:設定模板和對齊
3.1 導航到模板部分
在麵包屑選單中點選 "模板影象和對齊"
3.2 配置對齊(可選)
![]()
在此示例中,我們將跳過對齊:
- 如果零件位置一致,選擇
跳過對齊器 - 點選
儲存

何時使用對齊器: 當零件以不同位置或方向到達時啟用,以避免影響分割精度。
第 4 步:定義檢測區域
4.1 導航到檢測設定
在麵包屑選單中點選 "檢測設定"
4.2 設定興趣區域(ROI)
ROI 定義了分割將發生的位置:
- 在相機檢視中放置測試零件
- 拖動 ROI 角落以框定檢測區域
- 適當調整 ROI 大小:
- 包含可能出現特徵的所有區域
- 排除不必要的背景區域
- 在預期特徵位置周圍留出小緩衝區

4.3 分割的 ROI 最佳實踐
| 做 | 不做 |
|---|---|
| 覆蓋整個檢測表面 | 包含無關的背景物體 |
| 在邊緣留出緩衝空間 | 使 ROI 對特徵變化過小 |
| 考慮零件位置變化 | 與夾具或工具重疊 |
| 測試最大預期特徵 | 包含有永久標記的區域 |
4.4 儲存 ROI 設定
- 驗證 ROI 覆蓋所有目標區域
- 點選
儲存
第 5 步:標記訓練資料
5.1 導航到標記和訓練
在麵包屑選單中點選 "標記和訓練"
5.2 配置檢測類別
- 在檢測型別下點選
編輯 - 重新命名類別以匹配您的特徵(例如,“鉛筆痕跡”、“表面缺陷”、“溢位區域”)
- 選擇類別顏色以便於視覺識別
- 儲存更改
5.3 捕捉和標記訓練影象
您需要至少 10 張標記影象,但推薦 15-20 張:
影象捕捉過程
- 在檢測區域放置第一個測試零件
- 使用相機介面拍攝影象
- 使用畫筆工具在目標特徵上塗抹
- 準確塗抹:
- 覆蓋整個特徵區域
- 保持在特徵邊界內
- 不要塗抹背景區域
- 使用一致的標記方法
- 點選
儲存註釋 - 對下一個零件重複

標註最佳實踐
| 良好標註 | 差標註 |
|---|---|
| 精確的特徵邊界 | 粗糙的邊緣塗抹 |
| 一致的特徵定義 | 不一致的標準 |
| 完整的特徵覆蓋 | 缺失的特徵區域 |
| 乾淨的背景(未塗抹) | 意外的背景塗抹 |
5.4 訓練資料多樣性
確保您的訓練集包括:
- 不同的特徵大小
- 各種特徵強度
- ROI 內的多個位置
- 不同的光照條件(如適用)
- 邊緣案例和臨界示例
5.5 質量檢查訓練資料
- 審查所有標註的影象
- 驗證一致的標註方法
- 刪除任何標註錯誤的示例
- 如有需要,新增更多示例
第 6 步:訓練分割模型
6.1 開始訓練過程
- 標註完成後,點選
返回實時 - 點選
訓練分割模型

6.2 配置訓練引數
- 設定迭代次數:
- 快速訓練: 50-100 次迭代(5-10 分鐘)
- 生產質量: 200-500 次迭代(15-30 分鐘)
- 高精度: 500 次以上迭代(30 分鐘以上)
- 點選
開始訓練
6.3 監控訓練進度
訓練進度顯示:
- 當前迭代次數
- 訓練準確率百分比
- 預計完成時間

訓練控制:
- 中止訓練: 如出現問題則停止
- 提前完成訓練: 當準確率足夠時停止

提示
- 85% 的準確率通常適合生產
- 訓練會在達到目標準確率時自動停止
- 更多的訓練資料通常比更多的迭代更好
第 7 步:測試分割效能
7.1 訪問實時預覽
- 訓練完成後,點選
實時預覽 - 使用各種零件進行測試:
- 已知良好的零件(應顯示無/最少分割)
- 已知缺陷的零件(應突出缺陷)
- 邊緣案例和臨界示例

7.2 評估結果
檢查分割質量:
| 指標 | 良好效能 | 需要改進 |
|---|---|---|
| 準確率 | 一致地找到真實特徵 | 漏掉明顯特徵 |
| 精確度 | 假陽性較少 | 許多背景區域被突出 |
| 邊緣質量 | 乾淨、準確的邊界 | 粗糙或不準確的邊緣 |
| 一致性 | 重複測試結果相似 | 結果高度可變 |
7.3 排除不良結果
| 問題 | 可能原因 | 解決方案 |
|---|---|---|
| 缺失特徵 | 訓練資料不足 | 新增更多標註示例 |
| 假陽性 | 光照/對比度差 | 改善成像設定 |
| 粗糙邊緣 | 影象質量差 | 改善焦距/光照 |
| 結果不一致 | 訓練多樣性不足 | 新增更多多樣化示例 |
第 8 步:配置合格/不合格邏輯
8.1 訪問 I/O 塊
- 確保 AI 模型顯示為綠色(已訓練狀態)
- 透過麵包屑選單導航到 I/O 塊
8.2 移除預設邏輯
- 刪除分類塊邏輯節點
- 準備構建自定義分割邏輯
8.3 構建分割流程
建立 Node-RED 流程,包含以下元件:
- 從左側面板拖動節點:
- 功能節點(用於邏輯)
- 除錯節點(用於測試)
- 最終合格/不合格節點
- 用電線連線節點

8.4 根據需求配置邏輯
選項 A:未檢測到缺陷則合格
用例: 質量檢查中,任何檢測到的特徵均為不合格
功能節點程式碼:
const allBlobs = msg.payload.segmentation.blobs;
const results = allBlobs.length <1; // Pass if no features found
msg.payload = results;
return msg;
選項 B:僅小缺陷合格
用例: 接受小於尺寸閾值的輕微缺陷
功能節點程式碼:
const threshold = 500; // Adjust pixel count threshold
const allBlobs = msg.payload.segmentation.blobs;
const allUnderThreshold = allBlobs.every(blob => blob.pixel_count < threshold);
msg.payload = allUnderThreshold;
return msg;
選項 C:總缺陷面積小則合格
用例: 接受總缺陷面積有限的部件
功能節點程式碼:
const threshold = 5000; // Adjust total pixel threshold
const allBlobs = msg.payload.segmentation.blobs;
const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_count, 0);
msg.payload = totalArea < threshold;
return msg;
8.5 配置功能節點
- 雙擊功能節點
- 從上述示例中複製適當的程式碼
- 貼上到“訊息處理”選項卡中
- 根據您的應用調整閾值
- 點選
完成
8.6 部署並測試邏輯
- 點選
部署啟用邏輯 - 導航到 HMI 進行測試
- 使用已知的合格和不合格部件進行測試
- 驗證合格/不合格結果是否符合預期
第 9 步:生產驗證
9.1 綜合測試
測試分割系統:
| 測試案例 | 預期結果 | 失敗時的操作 |
|---|---|---|
| 乾淨部件 | 合格(無分割) | 調整閾值或重新訓練 |
| 輕微缺陷 | 根據您的標準合格/不合格 | 精細化邏輯引數 |
| 重大缺陷 | 不合格(清晰分割) | 檢查模型準確性 |
| 邊緣案例 | 一致的行為 | 新增訓練資料 |
9.2 效能驗證
監控以下指標:
- 每次檢查的處理時間
- 多次測試的一致性
- 在生產照明下的準確性
- 長時間執行的可靠性
9.3 最終調整
如果效能不令人滿意:
- 為邊緣案例新增更多訓練資料
- 調整邏輯中的閾值
- 改善成像條件
- 使用額外的迭代重新訓練模型
成功!您的分割系統已準備就緒
您現在擁有一個可工作的分割系統,可以:
- 自動檢測 特定特徵或缺陷
- 以畫素級精度測量面積
- 根據您的要求應用自定義合格/不合格邏輯
- 透過 I/O 控制與生產系統整合
高階配置選項
自定義閾值邏輯
對於複雜的驗收標準,結合多個條件:
const smallThreshold = 200;
const largeThreshold = 1000;
const maxTotalArea = 3000;
const allBlobs = msg.payload.segmentation.blobs;
const smallBlobs = allBlobs.filter(blob => blob.pixel_count < smallThreshold);
const largeBlobs = allBlobs.filter(blob => blob.pixel_count > largeThreshold);
const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_c