AI 驅動文件
您想了解什麼?
使用分割器
本教程將指導您使用 OV80i 的 AI 驅動分割功能建立完整的分割檢測。您將學習如何透過教會相機逐畫素識別和測量特定特徵來檢測和分析鉛筆痕跡、劃痕或其他缺陷等具體特徵。
觀看本主題的實際操作:如何在幾分鐘內建立分割程式
您將學到:
- 如何從頭到尾設定分割程式
- 如何訓練 AI 模型以識別特定特徵
- 如何根據分割結果配置透過/失敗邏輯
- 如何針對生產使用最佳化分割效能
實際應用: 本教程以鉛筆痕跡檢測為例,但相同原理適用於檢測劃痕、裂紋、汙染或任何其他可視覺區分的特徵。
先決條件
- OV80i 相機系統已設定並連線
- 具有待檢測特徵的樣品(例如:帶有鉛筆痕跡的紙張)
- 對 AI 訓練概念的基本瞭解
- 可訪問程式編輯器與 Node-RED 功能
教程概覽
我們將構建的內容: 一個能夠檢測紙張上鉛筆痕跡的分割模型,並根據檢測到的標記數量判定透過/失敗。
所需時間: 45-60 分鐘(包括訓練時間)
學到的技能: AI 模型訓練、分割標註、透過/失敗邏輯配置
第一步:建立新的分割程式
1.1 開始新程式
- 在 All Recipes 頁面,點選右上角的 "+ New"
- 出現 Add A New Recipe 彈窗
- 輸入描述性的程式 Name(例如:"Pencil_Mark_Detection")
- 從 Recipe Type 下拉選單中選擇 "Segmentation"
- 點選 "OK" 建立新程式
為什麼選擇分割? 與識別整個物件的分類不同,分割在影象中查詢並測量特定特徵,非常適合缺陷檢測、汙染分析或測量覆蓋面積。

1.2 啟用並開啟程式編輯器
- 新程式將出現在 All Recipes 頁面上,標記為 "Inactive"
- 選擇程式右側的 "Activate"
- 點選 "Activate and go to editor" 確認並啟動程式編輯器
檢查點: 您應該在程式編輯器介面中看到麵包屑選單裡顯示的分割程式名稱。
第二步:配置相機成像
2.1 訪問影象設定
- 在程式編輯器中,點選左下方的 "Configure Imaging"
- 這將開啟影象配置頁面,您將在此最佳化相機設定

2.2 最佳化對焦設定
- 將帶有鉛筆痕跡的樣品紙張放置在相機視野內
- 轉動鏡頭上的對焦環,直到鉛筆痕跡清晰
- 勾選 Enable Focus View 以確認已達到最清晰的位置
- 使用 Focus View(如可用)檢視邊緣高亮和對焦分數
對焦提示:
- 對焦於缺陷將出現的表面
- 確保鉛筆痕跡顯示清晰、輪廓分明
- 較高的對焦分數表示更好的對焦質量
2.3 配置曝光設定
- 調整 Exposure 滑塊以獲得合適的亮度
- 鉛筆痕跡應清晰可見,同時不使紙張過曝
- 從自動設定開始,然後根據需要進行微調
- 透過實時預覽監控更改效果
曝光指南:
- 鉛筆痕跡應與紙張之間具有良好的對比度
- 避免過曝導致細微痕跡被沖淡
- 確保整個檢測區域的光照一致
2.4 設定 LED 照明
- 為您的應用選擇合適的 LED Light Pattern
- 對於鉛筆痕跡,均勻照明通常效果最佳
- 調整 LED Light Intensity 以最大限度減少陰影和眩光
- 如果存在反射問題,請測試不同的照明模式
2.5 調整 Gamma 和對比度
- 微調 Gamma 以增強痕跡與背景之間的對比度
- 較高的 gamma 值可以使細微的鉛筆痕跡更加明顯
- 較低的 gamma 值可以減少乾淨區域的噪點
- 平衡 gamma 值以同時最佳化缺陷可見性和背景清晰度
2.6 儲存影象設定
- 所有設定最佳化完畢後,點選 "Save Imaging Settings"
- 相機配置現已為此程式儲存
- 實時預覽應顯示清晰、對比度良好的影象
檢查點: 您的相機應生成清晰的影象,其中鉛筆痕跡與紙張背景能夠輕鬆區分。
第三步:配置模板和對齊
3.1 導航至模板影象和對齊
- 點選麵包屑選單中的 Recipe Name 返回程式編輯器
- 從選單中選擇 "Template Image and Alignment"
3.2 在本教程中跳過對齊器
- 由於我們要在整張紙上檢測特徵,請點選 "Skip Aligner"
- 這將禁用基於位置的對齊並使用完整影象
- 點選 "Save" 應用更改
何時使用對齊器: 當您需要在可能移動或旋轉的零件上的特定位置檢測特徵時,請啟用對齊器。對於像鉛筆痕跡這樣的整張紙檢測,通常適合跳過對齊器。

第四步:設定檢測區域
4.1 導航至檢測設定
- 返回程式編輯器並選擇 "Inspection Setup"
- 在此定義要分析影象的哪個區域
4.2 配置感興趣區域 (ROI)
- 您將看到相機視野的預覽
- 拖動 ROI 框的角以調整其大小和位置
- 對於鉛筆痕跡檢測,通常覆蓋整張紙的區域
- 確保 ROI 涵蓋所有可能出現鉛筆痕跡的區域
ROI 最佳實踐:
- 包括所有可能發生缺陷的區域
- 排除不應分析的區域,例如邊緣或背景
- ROI 應足夠大,以捕捉零件位置的變化
- 避免包括文字、徽標或其他預期的標記
4.3 儲存 ROI 配置
- 當您的 ROI 正確定位後,點選 "Save"
- 現已為您的分割模型定義了檢測區域
第五步:標註並訓練模型
5.1 導航至標註與訓練
- 返回程式編輯器並選擇 "Label and Train"
- 在此處教 AI 識別鉛筆痕跡的外觀

5.2 配置檢測類別
- 在 Inspection Types 下,點選 "Edit"
- 將類別重新命名為 "Pencil Mark"(或您的特定缺陷型別)
- 選擇一種醒目的顏色用於視覺化檢測到的痕跡
- 點選 "Save" 以應用更改
5.3 捕獲訓練影象
- 至少拍攝 10 張帶有不同鉛筆痕跡的紙張影象
- 變化訓練樣本:
- 不同的鉛筆痕跡尺寸和形狀
- 淺色和深色痕跡
- 紙張上的不同位置
- 不同的痕跡密度
訓練影象提示:
- 同時包含細微和明顯的痕跡
- 捕獲您將遇到的各種光照條件
- 每張影象中包含無痕跡的乾淨區域
- 確保影象能夠代表生產條件
5.4 標註訓練影象
- 對每張訓練影象,使用畫筆工具描繪鉛筆痕跡
- 僅塗畫鉛筆痕跡 —— 避免標記紙張或其他特徵
- 標註需精確且全面
- 完成每張影象後點選 "Save Annotations"
標註最佳實踐:
- 在標註"鉛筆痕跡"時保持一致性
- 包含完整的痕跡,而非僅其部分
- 不要標註預期的標記,如文字或徽標
- 使用穩定、細緻的筆觸以獲得準確的邊界
5.5 檢查您的標註
- 仔細檢查所有標註的影象以確保準確性
- 查詢遺漏的痕跡或錯誤標註的區域
- 重新標註需要修正的影象
- 高質量的標註可帶來更好的模型效能
第六步:訓練分割模型
6.1 啟動訓練流程
- 完成至少 10 張影象的標註後,點選 "Return to Live"
- 點選 "Train Segmentation Model"
- 輸入訓練的迭代次數
迭代次數指南:
- 初始訓練從 100-200 次迭代開始
- 更多迭代通常可提高準確度,但耗時更長
- 監控訓練進度並根據需要調整
- 在準確度要求與訓練時間之間取得平衡

6.2 監控訓練進度
- 點選 "Start Training" 開始訓練流程
- 將顯示訓練進度彈窗,包含以下資訊:
- 當前迭代次數
- 訓練準確度百分比
- 預計剩餘時間
6.3 訓練控制選項
訓練期間,您可以:
- Abort Training —— 如需進行更改,可停止訓練
- Finish Training Early —— 當準確度足夠時停止
- Monitor Progress —— 觀察準確度隨迭代提升
訓練提示:
- 達到目標準確度時訓練將自動結束
- 更高的準確度百分比表示更好的模型效能
- 如準確度趨於穩定,您可能需要更多訓練資料
6.4 評估訓練結果
- 訓練完成後,檢視最終的準確率
- 點選 "實時預覽" 檢視實時分割結果
- 使用新樣本進行測試以驗證模型效能
成功指標:
- 鉛筆痕跡以您選擇的顏色高亮顯示
- 清潔區域保持未標記狀態
- 檢測結果在不同型別的標記上保持一致
- 模型對新的、未見過的樣本響應良好
第七步:配置透過/失敗邏輯
7.1 導航到 IO模組
- 返回程式編輯器,點選 "Configure I/O" 或從麵包屑選單中選擇 "IO模組"
7.2 設定 Node-RED 流程
- 刪除現有的 Classification Block Logic 節點
- 從左側調色盤中拖入:
- All Block Outputs 節點(如尚未存在)
- Function 節點
- Final Pass/Fail 節點
- 連線節點:All Block Outputs → Function → Final Pass/Fail

7.3 配置透過/失敗邏輯
雙擊 Function 節點,並選擇以下邏輯示例之一:
選項 1:未檢測到缺陷則透過
// Pass if no pencil marks are found
const allBlobs = msg.payload.segmentation.blobs;
const results = allBlobs.length <1;
msg.payload = results;
return msg;
選項 2:所有標記都很小則透過
// Pass if all marks are smaller than threshold
const threshold = 500; // pixels
const allBlobs = msg.payload.segmentation.blobs;
const allUnderThreshold = allBlobs.every(blob => blob.pixel_count < threshold);
msg.payload = allUnderThreshold;
return msg;
選項 3:總覆蓋率較低則透過
// Pass if total marked area is below threshold
const threshold = 5000; // total pixels
const allBlobs = msg.payload.segmentation.blobs;
const totalArea = allBlobs.reduce((sum, blob) => sum + blob.pixel_count, 0);
msg.payload = totalArea < threshold;
return msg;
7.4 部署並測試邏輯
- 點選 "Done" 儲存函式
- 點選 "部署" 啟用邏輯
- 導航到 HMI 測試您的透過/失敗邏輯
測試您的邏輯:
- 使用乾淨的板材進行測試(應透過)
- 使用輕微標記的板材進行測試(應根據您的標準透過/失敗)
- 使用嚴重標記的板材進行測試(應失敗)
- 驗證結果是否符合您的預期
第八步:最佳化與驗證
8.1 使用生產樣本測試
- 執行多個測試樣本透過您的檢測流程
- 驗證檢測精度是否符合您的要求
- 檢查透過/失敗邏輯是否正確工作
- 記錄任何問題或邊緣情況
8.2 微調模型效能
如果檢測不一致:
- 新增更多具有多樣化示例的訓練影象
- 提高標註質量與一致性
- 調整影象設定以獲得更好的對比度
- 使用更多迭代次數重新訓練
如果透過/失敗邏輯需要調整:
- 修改 Node-RED 函式中的閾值
- 測試不同的邏輯方法
- 對複雜決策考慮多項標準
- 根據生產要求進行驗證
8.3 生產驗證
- 使用真實的生產零件在實際環境下進行測試
- 與質量團隊一起驗證,確保標準符合要求
- 記錄效能指標,如檢測精度和誤報率
- 設定監控以跟蹤長期效能
第 9 步:理解分割結果
9.1 分割資料結構
您的分割結果包括:
- Blobs:檢測到的獨立特徵(鉛筆標記)
- 畫素計數:每個檢測到的特徵的尺寸
- 位置資料:檢測到特徵的位置
- 置信度分數:模型對每次檢測的確信程度
9.2 使用分割資料
您可以基於以下內容建立複雜的透過/失敗邏輯:
- 檢測到的缺陷數量
- 單個缺陷的尺寸(畫素計數)
- 總缺陷面積(所有畫素計數之和)
- 缺陷位置(缺陷出現的位置)
- 缺陷形狀特徵(如高階應用需要)
成功!您的分割模型已完成
您的 OV80i 分割檢測現在可以:
✅ 自動檢測鉛筆標記(或您的特定特徵)
✅ 測量檢測到的特徵的尺寸和數量
✅ 基於您的特定標準做出透過/失敗決策
✅ 提供每個檢測到的特徵的詳細資訊
✅ 適應標記尺寸、形狀和位置的變化
關鍵要點
分割與分類的對比:
- 分割在影象內查詢並測量特定特徵
- 分類識別整個物件或整體狀態
- 使用分割進行缺陷檢測、汙染分析或覆蓋率測量
訓練最佳實踐:
- 高質量標註比數量更重要
- 在訓練集中包含多樣化的樣本
- 使用生產樣本進行充分測試
- 根據需要監控並重新訓練
透過/失敗邏輯:
- 從簡單的標準開始,根據需要增加複雜度
- 使用邊緣情況和臨界樣本測試邏輯
- 記錄您的標準以保持一致性
- 考慮多個因素以做出穩健的決策
後續步驟
現在您已經完成了首個分割模型:
- 應用於其他用例 - 嘗試檢測不同型別的缺陷或特徵
- 與生產系統整合 - 連線到 PLC 或質量管理系統
- 建立資料採集 - 跟蹤效能指標和檢測統計資訊
- 培訓操作員 - 確保團隊瞭解如何監控和維護系統
- 規劃維護 - 安排定期的模型更新和效能審查