AI 驅動文件
您想了解什麼?
測量(尺寸檢測)
測量模型將 OV80i 從缺陷檢測器轉變為尺寸檢測站。它不再問*"這個零件是好是壞?",而是問"這個零件的直徑、間隙或角度是多少毫米?"* — 並給出一個可以與公差進行透過/失敗比較的數值。
請勿使用標準(入射中心)C 介面鏡頭執行測量程式。 標準鏡頭會引入透視畸變,並且放大倍率會隨工作距離而變化 — 距離相機 1 mm 更近的零件會明顯測得更大,畫面邊緣附近的特徵與中心位置的特徵測量結果不同。您得到的數值誤差將遠大於典型公差,並且沒有任何標定步驟可以糾正這一點。
遠心鏡頭在整個視場範圍內以及在工作距離的小幅變化下都能保持放大倍率恆定。它是讓尺寸檢測真正準確的唯一硬體。
如果您的安裝中沒有遠心鏡頭,請到此為止 — 切換到 Classification 或 Segmentation 進行透過/失敗式的檢測,或聯絡 support@overview.ai 在繼續之前選配合適的光學元件。
在底層,深度學習模型在影象中找到基本特徵(邊緣、圓、線段、弧線),然後計算這些基本特徵之間或關於這些基本特徵的測量值(孔的半徑、兩條邊之間的距離、兩條線之間的角度)。由於相機以 px/mm 進行了標定,每個結果都以真實世界的單位輸出。

學習目標
完成本頁內容後,您將能夠:
- 判斷何時應選擇 Measurement 模型(相對於 Classification 或 Segmentation)
- 標定相機,使一個畫素對映到已知的毫米值
- 在零件上繪製基本圖元(圓、線、點、弧),並將其轉換為測量值(半徑、距離、角度)
- 捕獲並標註訓練影象,使 Measurement 模型能夠可靠地找到基本圖元
- 訓練、測試和部署 Measurement 模型
- 將結果接入透過/失敗邏輯,並在相機螢幕上的操作員面板(HMI,即 Human-Machine Interface 的縮寫)上讀取結果
何時使用 Measurement
| 用例 | 合適的模型 |
|---|---|
| 孔徑是否在 9.0 ± 0.1 mm 範圍內? | Measurement |
| 兩個零件之間的間隙是否小於 0.5 mm? | Measurement |
| 這個支架彎曲的角度是多少? | Measurement |
| 標籤是否存在或缺失? | Classification |
| 表面是否有劃痕? | Segmentation |
| 零件上的文字內容是什麼? | OCR |
只要下游系統需要的是以物理單位表示的數值而不是類別標籤,Measurement 都是合適的工具。如果您的規格表中寫有公差,那就需要 Measurement。
Segmentation 可以給出特徵以畫素為單位的面積,但它不會以亞畫素精度對齊邊緣,也不提供幾何基本圖元。如果您只需要"這塊汙漬是否大於 X cm²",Segmentation 可能就夠用了。如果您需要"這個孔的半徑是 4.31 mm",請使用 Measurement。
測量的工作原理
測量管道按順序分為四個階段:
- 捕獲並對齊。 相機觸發、捕獲一幀影象,並執行對齊器將零件鎖定到模板方向。每次測量都在對齊後的幀中計算,因此即使零件旋轉了 10°,測量結果仍然相同。
- 檢測基元。 訓練好的測量模型在每個 ROI(感興趣區域 — 您在影象上繪製的矩形,告訴相機"看這裡")內查詢,並輸出幾何基元:邊緣段、弧/圓 或 直線。每個程式都有一個 主 ROI,外加可選的 子 ROI,用於放大檢視特定特徵。
- 計算測量值。 您定義的每個測量項(例如"圓 1 的半徑"、"直線 A 到直線 B 的距離")都會根據檢測到的基元進行評估。由於畫素到毫米的校準,結果以毫米(或您選擇的單位)報告。
- 透過/失敗與輸出。 這些數值被饋送到 IO 邏輯模組,其中 Node-RED 函式根據您的容差判定 PASS 或 FAIL,結果將推送到 HMI、PLC(車間控制器)、MQTT 以及任何其他已連線的系統。
如果成像不穩定,對齊就會漂移。如果對齊漂移,模型每次看到的基元位置就會不同。如果基元檢測抖動,測量結果就會噪聲大。在問題出現的最早階段就修復它。 重新調整透過/失敗閾值無法修復糟糕的對齊,重新訓練模型無法修復糟糕的成像。
第一步:建立測量程式
- 在瀏覽器中開啟 OV80i 網頁介面 (
http://<camera-ip>)。左側欄顯示 All Recipes、Recipe Editor、HMI 等。 - 單擊左側欄中的 All Recipes。
- 單擊右上角的 + New。一個標題為 Add A New Recipe 的模態框將開啟。
- 輸入 Name(例如
Hole_Diameter_Check)和可選的描述,然後單擊 OK。 - 新程式會出現在列表中。單擊其行上的 Activate,然後在確認對話方塊中選擇 Activate and go to editor。
- 程式編輯器將開啟。在頂部欄中,程式名稱旁邊,找到 程式型別組合框(預設為 Classification)。單擊它並選擇 Measurement。編輯器中的 AI 模組行現在會突出顯示已準備好配置的 Measurement 模組。

每個程式只包含一個測量模型,但該模型可以在多個子 ROI 中承載許多基元和許多測量項。不要為每個尺寸建立單獨的程式 — 將一個零件上的所有尺寸歸到一個測量模型中,讓它們共享相同的成像和對齊。
第二步:影象設定
在編輯器中單擊 Configure Imaging 開啟影象設定。這是每個程式都使用的同一影象設定面板 — 參見 影象設定基礎 — 但測量有一個額外的要求:每個週期,零件都必須清晰對焦,無運動模糊。亞畫素級的邊緣精度依賴於此。

對測量最關鍵的設定:
- Exposure(曝光)。 將零件曝光設定得良好但不要過曝。飽和的高光會破壞邊緣細節。
- Gain(增益)。 如果可以,將增益保持在 1。較高的增益會增加噪聲,而噪聲每次會使邊緣偏移半個畫素。
- Gamma(伽馬)。 預設值 50 對大多數零件都合適。如果暗邊緣難以辨識,可適當提高。
- Image Rotation(影象旋轉)。 保持"No Rotation",除非您的固定裝置迫使相機側裝。
- Trigger Settings(觸發設定)。 Manual HMI Trigger 適合用於設定階段。在生產時切換到數字感測器或 PLC 觸發器。
長曝光 + 移動傳送帶 = 模糊的邊緣。在 17 px/mm 的校準下,2 畫素的模糊在您開始測量之前就已經引入 ±0.06 mm 的誤差。要麼用頻閃燈凍結零件,要麼將曝光時間降低到一幀內運動小於 1 畫素的程度。
完成後單擊 Save Imaging Settings。
第三步:將畫素校準為毫米
這一步使測量有別於其他所有模組。如果不進行校準,相機只知道畫素——而畫素的大小在每次安裝時都不同。校準告訴相機"感測器上的這麼多畫素等於現實世界中的這麼多毫米"。
- 在影象設定中,點選右側面板底部的 Reference Image Calibration。
- 捕獲或上傳一張包含已知尺寸的參考影象——通常是校準標靶、夾具上經過精密加工的特徵,或者用卡尺測量過尺寸的已知合格零件。
- 開啟 Measurement Calibration 部分。確認單位(預設
mm)。 - 點選 Measure on Image。在影象上點選兩個跨越已知距離的點(例如,兩個銷釘之間的中心距,或量規銷的直徑)。
- 相機會報告測量的畫素距離(例如 "Measured: 159 px")。輸入以毫米為單位的實際值(例如
9.0)並點選 Finish。 - px/mm 值會自動填充——以下截圖中的此程式,校準結果為 17.621 px/mm,這意味著零件上的一毫米佔用約 17.6 個感測器畫素。


px/mm 數值與鏡頭、工作距離和感測器繫結。如果您更換鏡頭、重新對焦、移動相機或更換夾具,請重新校準。校準偏差 1% 就意味著測量偏差 1%——對於 10 mm 的尺寸,這就是 0.1 mm 的純系統誤差,通常超過您的公差。
基於 2 mm 特徵進行校準,會使任何指點誤差比基於 10 mm 特徵校準放大 5 倍。請始終使用畫面中能完整容納的最長已知尺寸進行校準。
第四步:模板影象與對齊
測量需要對齊。模型是針對零件上固定位置的基元進行訓練的;如果零件發生平移或旋轉,對齊器必須進行補償,使模型仍能在相同的影象座標中看到這些基元。
- 在程式編輯器中,點選 "Image Alignment & Inspection Setup" 下的 Template Image and Alignment。
- 在零件定位良好的情況下捕獲一張乾淨的參考影象,然後在影象中零件可能出現的區域周圍繪製 Search Area(青色框),並在零件本身周圍緊密繪製 Template Region(黃色框)。
- 選擇一種 Aligner Type:邊緣豐富的零件使用 Classical,帶紋理的零件使用 Deep Learning——請參閱 AI Aligner (Deep Learning) 瞭解決策矩陣。
- 調整 Rotation Range、Sensitivity 以及(針對 Classical 的)忽略區域,直至對齊在多次捕獲中保持穩定。

AI 對齊器的 "Scale Invariant" 選項允許匹配器容忍距離相機稍近或稍遠的零件。不要在測量程式上啟用此選項。 尺度不變會悄悄地重新縮放畫面以匹配模板,這意味著距離相機遠 1% 的零件測量值會與處於正確距離的零件相同——而您的 px/mm 校準就突然失效了。請將 Scale Invariant 保持關閉,並改用機械夾具來控制工作距離。
對於檢視整張影象的分割或分類程式,"Skip Aligner" 切換開關是可以的,但沒有對齊器的測量程式在零件偏移一毫米時就會產生無意義的結果。請始終為測量配置對齊。
第五步:檢測設定 — 主 ROI 與子 ROI
檢測設定介面定義了 Measurement 模型應在對齊影象中的哪個位置進行查詢。其中有一個主 ROI(覆蓋整個感興趣區域),以及可選的一個或多個子 ROI(聚焦於具體特徵)。

- 新增 Measurement 模型時,主 ROI 框已經存在 — 拖動其角點,直至覆蓋您要測量的區域。大多數程式使用單個主 ROI 來覆蓋整個零件。
- 若要檢測多個離散特徵(例如支架兩側的兩個孔),請為每個特徵點選新增子 ROI,並將其緊貼在特徵周圍。
- 每個 ROI 都會獲得該模型基元預測的獨立副本。一個主 ROI 加五個子 ROI,意味著模型每次捕獲時會執行六次。
緊貼單個孔的子 ROI 可讓模型清晰地看到一個特徵,使標註無歧義,並保持推理速度。一個覆蓋十個孔的巨大主 ROI 意味著標註者必須在每張影象中區分十個基元,且模型需要忽略更多視覺噪聲。
畫布上方的工具欄提供 H / W / X / Y / ∠ 輸入框以精確放置 ROI、對齊和分佈按鈕以均勻佈置 ROI,以及邊界框 + ROI 標籤切換按鈕以在工作時整理疊加層。右鍵點選任何 ROI 可彈出上下文選單(複製、貼上、鎖定、刪除)。
第六步:定義基元
透過點選編輯主 ROI(或在任意子 ROI 上點選編輯)開啟基元編輯器。在此處繪製模型將學習查詢的幾何形狀。每個 ROI 起始時會帶有四個已鎖定的系統基元 — 即 ROI 自身的上 / 下 / 左 / 右邊緣 — 您可將其用作距離測量的參考幾何,無需再繪製新內容。

可用的基元型別(左側工具欄):
| 工具圖示 | 基元型別 | 捕獲內容 | 適用場景 |
|---|---|---|---|
| 直線 | 線段 | 一條直邊 | 零件邊緣、槽、參考 |
| 弧 / 半徑 | 圓 | 半徑 + 圓心 | 孔、銷、圓角、曲線特徵 |
將滑鼠懸停在任意工具圖示上可檢視其名稱;編輯器底部的狀態列會顯示當前啟用的工具 — 例如 "Tool: Arc — Click to place the first point"。
繪製基元的方法:
- 點選左側工具欄中的工具圖示(例如直線或半徑/弧工具)。狀態列會顯示當前啟用的工具名稱。
- 在影象上工具所需的點處點選。對於圓/弧,請在特徵邊緣周圍點選三個點。對於直線,請點選兩個端點。
- 基元會出現在右側資料面板的基元部分中。
- 點選其名稱旁的鉛筆圖示,將其重新命名為有意義的名稱(如
Hole_A、Top_Edge_of_Slot)。良好的命名可讓後續的測量更易讀。
畫布上方的切換欄(構造線、基元、測量、標籤、畫素網格)控制在影象上疊加顯示的內容 — 繪製時關閉以減少干擾,繪製完成後重新開啟以進行驗證。
繪製時將滑鼠懸停在畫布上,角落會出現一個 4 倍放大鏡。亞畫素級的邊緣放置至關重要:一個偏移一個畫素的基元,在 1000 個週期中累積放大後,決定了測量結果是可用還是充滿噪聲。
弧工具透過特徵邊緣上的三個點擬合一個圓。請將這三個點沿圓周均勻分佈,而非集中在頂部。集中分佈的三點會導致擬合不穩定,模型也會繼承這種不穩定性。
第 7 步:定義測量
基元是原始幾何圖形;測量則是您真正關心的數值。每個測量引用一個或兩個基元,並根據它們計算出一個數值。
可用的測量型別:
| 測量 | 輸入 | 輸出 |
|---|---|---|
| 半徑 | 一個圓/弧 | 圓的半徑(毫米) |
| 距離 | 兩個基元(點到點、點到線、線到線) | 最短距離(毫米) |
| 長度 | 一條線段 | 線段長度(毫米) |
| 角度 | 兩條線 | 兩者之間的角度(度) |
| X / Y 位置 | 一個點 | 該點在對齊座標系中的座標 |
定義測量的方法:
- 在基元編輯器右側的 Data Panel 中,展開 Measurements 部分。
- 點選 Measurements 部分頂部的 + / Add measurement 按鈕。彈出一個小表單。
- 從下拉選單中選擇測量型別(半徑 / 距離 / 角度 / 長度 / 等等)。
- 選擇要引用的基元。半徑測量需要一個圓;距離測量需要兩個基元。
- 給測量起一個描述性名稱(
Hole_A_Diameter、Slot_Gap)。此名稱會顯示在 HMI 上,也是您的 Node-RED Function 讀取該值時使用的鍵,因此請保持穩定。 - 點選表單外部或按 Enter 鍵儲存。新的測量出現在 Measurements 表中,並顯示根據模板影象計算的實時數值。
您可以自由組合:單個 ROI 可以包含五個基元和由其派生的十個測量。上面的截圖顯示了一個 Circle 1 基元及其 Radius Circle 1 測量,報告值為 4.306 mm。
每個 ROI 自帶的鎖定 Top / Bottom / Left / Right Edge 基元是有效的測量輸入。如果您需要"從槽底到 ROI 底部的距離",無需繪製新線 — 直接引用系統 Bottom Edge 即可。
第 8 步:標註訓練影象
在模板上繪製基元只為模型提供一個示例。生產中至少需要 10–20 個示例,模型才能學會在真實世界的變化(光照漂移、表面劃痕、顏色批次)下找到這些基元。
- 在程式編輯器中,點選頂部導航欄的 Measurement Block,或 AI模組下的 Measurement。
- 點選 Capture 抓取新幀,或點選 Import Capture 從庫中匯入。
- 對每張捕獲影象,繪製與模板上相同的基元 — 在該零件每張新影象的相同位置上。
- 每張捕獲影象標註完成後,點選 Save Annotations。
- 使用 Previous / Next 導航遍歷每張捕獲影象。

對同一位置上的同一零件捕獲二十張影象,對模型的訓練幫助甚微。覆蓋一系列零件旋轉、輕微位置偏移、光照變化和表面狀況的十張捕獲影象,能教給模型所需的全部內容。要有意識地變化。
如果 "Circle 1" 在第 1 張捕獲影象中是左上角的孔,那麼它在第 2 張捕獲影象中也必須是左上角的孔。混淆命名基元所指的物理特徵會教給模型矛盾資訊,而這些矛盾會在生產中表現為預測噪聲增加 10 倍。
第 9 步:訓練模型
- 從 Measurement 模組檢視或程式編輯器中,開啟 訓練 選項卡。
- 找到 measurement 行。確認 訓練模式 — 對於 Measurement,Accurate 是預設且推薦的模式。還存在更快的模式用於快速迭代,但會犧牲精度。
- 單擊該行上的 訓練(或 全部訓練 以訓練程式中的每個模組)。
- Training AI Model 模態框會顯示實時進度:Mean IoU(藍色,上升中)、Loss(紅色,下降中)以及迭代計數器(例如 200/200)。


需要關注的內容:
- 隨著迭代次數增加,IoU 上升而 Loss 下降。如果兩者在早期都呈現平坦狀態,則需要更多影象或更好的標籤。
- 右側的縮圖網格顯示訓練裁剪圖,並繪製了預測的圖元(True Positive 為綠色、False Positive 為紅色、False Negative 為藍色)。快速瀏覽一下 — 如果某個裁剪圖出現在紅色/藍色圖例中,請檢查其標籤。
- 訓練完成後會報告 Model Quality (IoU)。對於 Measurement,超過 70% 即可使用;超過 85% 則為優秀。
不要追求一次就訓練出完美的模型。先用 10 張捕獲影象進行訓練,對新部件執行實時預覽,觀察預測在哪裡發生偏差,然後針對失敗模式再新增 5 張捕獲影象並重新訓練。三次短迭代勝過一次長迭代。

第 10 步:測試與驗證
- 返回 Measurement 模組檢視,開啟實時預覽模式。
- 使用 Test 按鈕(或 HMI 中的 捕獲)觸發捕獲,並觀察預測的圖元疊加到實時幀上。
- 將預測的尺寸與同一物理部件上的卡尺測量值進行比較。兩者應在容差預算範圍內一致。
- 移動部件(在對齊限制範圍內),確認測量值在多次捕獲中保持穩定。
相機告訴你 4.306 mm。拿起部件,用卡尺測量,看看是否也讀到 4.3 mm。如果相機與卡尺的差異超過你的容差,問題幾乎總是出在校準上(第 3 步)— 用夾具上最長的尺寸重新校準並再次嘗試。
第 11 步:連線 pass/fail 邏輯
模型產生數值;IO 邏輯模組將這些數值轉換為 PASS 或 FAIL。
- 在程式編輯器中,單擊 Configure IO(或 IO 邏輯 選項卡)。
- 拖入一個 All Block Outputs 節點、一個 Function 節點和一個 Final Pass/Fail 節點。將它們連線起來。
- 雙擊 Function 節點並編寫容差檢查。下面是該邏輯的結構 — 測量結果位於
msg.payload中 Measurement 模組對應部分下,以你在 Primitive Editor 中設定的名稱作為鍵。具體的 payload 結構可能在不同韌體版本之間有所變化,因此在依賴這些欄位名之前,請先接入一個 Debug 節點並檢查實時的msg以確認欄位名。
// PASS if hole radius is within 4.30 ± 0.10 mm
// Adjust the path below to match the payload from your camera's
// Debug node — the Measurement block emits an array of measurement objects
// each with a name and a numeric value in mm.
const measurements = msg.payload.measurement?.measurements ?? [];
const radius = measurements.find(m => m.name === 'Radius Circle 1');
if (!radius) {
msg.payload = false; // no result = fail
return msg;
}
const value = radius.value; // value in mm
const target = 4.30;
const tolerance = 0.10;
msg.payload = Math.abs(value - target) <= tolerance;
return msg;
- 單擊 部署 以使流程上線。
Function 節點透過你在 Primitive Editor 中分配的名稱來查詢測量值。重新命名某個測量值會導致流程中斷,直到你更新該節點。一旦投入生產,請保持名稱穩定。
對於需要檢查多個尺寸的部件,使用 Array.every(...) 遍歷一個由 {name, target, tolerance} 物件組成的列表。一個 Function 節點即可驗證部件上的每個尺寸,任何單個失敗都會使整個檢測短路為 FAIL。
在 HMI 上讀取結果
部署後,切換到 HMI 標籤頁。觸發一次捕獲後,實時檢視會用預測的圖元標註影象,透過/失敗標記會切換為 PASS 或 FAIL,下方的測量表會顯示每個尺寸,包括:
- Avg — 所有子 ROI 的聚合值(當同一測量在多個 ROI 中執行時很有用)
- Inspection Region — 主 ROI 或產生該值的子 ROI
- Search Area — 該值所屬的對齊器上的搜尋區域
- Value — 以 mm(或您的單位)表示的測量值
- Primitives — 計算該測量所使用的圖元

根據需要切換疊加層的開關:
- Labels — 在影象上顯示圖元名稱
- Blob Stats — 顯示檢測分數
- Heatmap — 疊加模型的置信度熱圖(用於除錯"為什麼選擇那個點?")
工作示例
孔徑檢測
- 圖元: 在子 ROI 中緊貼孔的一個 Circle
- 測量: Radius(結果以半徑報告;如果需要直徑,請在 Function 節點中乘以 2)
- Pass/fail:
Math.abs(radius - target) <= tolerance
兩個部件之間的間隙
- 圖元: 沿對面邊緣的兩個平行 Line/Segment 圖元
- 測量: Distance, Line-to-Line
- Pass/fail:
gap >= min_gap && gap <= max_gap
孔到孔的間距
- 圖元: 兩個 Circle 圖元,每個孔中一個
- 測量: Distance, Point-to-Point(中心之間)
- Pass/fail:
Math.abs(spacing - target) <= tolerance
支架的彎曲角度
- 圖元: 兩個 Line 圖元,沿支架的每條臂各一個
- 測量: Angle, Line-to-Line
- Pass/fail:
Math.abs(angle - target_degrees) <= angle_tolerance
技巧與竅門
一旦校準完成,請物理鎖定相機、鏡頭和零件夾具。任何移動都會悄無聲息地使 px/mm 值失效。在對焦環上貼扭矩標籤、在鏡頭座上塗螺紋膠,對於生產安裝來說並不過分。
圖元編輯器的 4 倍放大鏡顯示您正在點選的畫素。標籤中的邊緣精度是生產中邊緣精度的上限。不要點選邊緣"附近"——放大後點選在邊緣上。
在推廣之前,捕獲 30 幀以上涵蓋透過和失敗情況的影象,並透過程式回測進行執行。它會在幾秒鐘內對測試集執行整個程式,並報告每幀的測量值,這樣您可以確認在 Function 節點中設定的容差實際能區分好壞零件,而不會產生誤報。
重申頁面頂部的警告:標準 C 口鏡頭會引入透視畸變,越靠近影象邊緣越嚴重,且會隨工作距離變化。**遠心鏡頭是使尺寸檢測準確的唯一關鍵硬體。**如果您的安裝沒有遠心鏡頭,請勿使用測量模型。
測量模型檢視不會自動儲存。每捕獲一兩次後點選 Save Annotations——關閉標籤頁會丟失任何未儲存的標籤。
常見陷阱與故障排除
| 症狀 | 可能原因 | 解決方法 |
|---|---|---|
| 相機讀數為 4.3 mm,卡尺讀數為 4.5 mm | 校準偏差 | 使用更長的參考尺寸重新校準;確認 px/mm 值沒有改變 |
| 同一零件每個週期測量結果不同 | 對齊不穩定,或存在運動模糊 | 收緊模板/搜尋區域,降低曝光,新增頻閃光源,鎖定夾具 |
| 預測跳到錯誤的特徵上 | 訓練捕獲中基元標籤不一致 | 重新標註捕獲,確保"Circle 1"始終對應同一物理特徵,重新訓練 |
| 模型在不應識別的缺陷零件上找到基元 | 訓練集中沒有該缺陷的示例;模型尚未學會拒絕 | 新增 5 個以上缺陷捕獲,將其標註為無基元(或將基元標註在正確位置),重新訓練 |
| px/mm 值在無察覺的情況下改變 | 鏡頭被調焦、移動或更換 | 重新校準。鎖定鏡頭。生產期間不要調焦 |
| 軟體更新後測量結果嚴重偏差 | 影象旋轉發生變化,或對齊模板丟失 | 開啟影象設定確認影象旋轉;如有需要重新捕獲模板 |
| 程式執行緩慢(延遲較長) | 子 ROI 過多,或模型以 Fastest 模式執行但解析度不足 | 合併 ROI,或以 Accurate 模式訓練 |
如果您重新命名基元、移動子 ROI、新增測量或更改搜尋區域,請重新訓練模型。訓練與您定義的空間佈局繫結;在不重新訓練的情況下更改佈局會導致模型在錯誤的位置查詢。當發生這種情況時,訓練頁面會將模型標記為過期。