AI 驅動文件
您想了解什麼?
同一配方中的多檢視
本指南演示如何在不切換到其他配方的情況下,設定一個配方以檢查不同部件、角度或檢視。
有多種原因需要這樣做,但主要有兩種使用場景:
- 捕獲之間的時間不足以切換配方時,
- 當對同一部件的多個部位或角度執行相同的檢測時(例如,在車身的五個不同位置上檢測螺柱的存在/不存在)。在這種情況下,該方法可避免在不同配方中對同一模型(螺柱存在/不存在)重複訓練多次。
以下示例是一個簡單版本,只有兩個檢視和一種檢測型別,但你可以將此同樣的技術應用於無限數量的檢測型別和檢視。在此檢測中,我們將檢查鑽頭盒兩側位的存在/不存在。 一側底部有五個位,另一側頂部和底部各有八個位。我們將具有 16 位的一側稱為側 A,具有五位的一側稱為側 B。
![]() | ![]() |
|---|---|
| 側 A (16 位) | 側 B (5 位) |
建立並訓練一個新配方
與每面各自一個配方不同,由於佈局不同,我們將把兩側合併到一個配方中,這樣就不需要對同一存在/不存在模型進行兩次訓練。
-
建立一個新配方。在這種情況下,這是一個分類配方,但同樣的原理也可用於 segmentation(分割)。
-
為第一檢視設定模板影象和對齊:
在同一配方上檢查多檢視時,Aligner(對齊器)不可用。模板影象和對齊器僅用於為 Inspect 設定基準影象。

- 為側 A 繪製 ROI。給它們命名,以便識別所屬側。在本例中,我們將 ROI 命名為 A1-A16。

- 返回模板影象與對齊,使用側 B 的影象替換當前影象,可以來自新捕獲或庫中。

- 使用每個 ROI 旁邊的鎖定圖示,避免移動側 A 的 ROI;然後為側 B 繪製並命名 ROI。

對於更復雜的配方,請按需重複此過程,以檢測更多不同的檢視。
- 使用來自側 A 和側 B 的影象對分類模型進行標註與訓練。在捕獲並標註側 A 時,請不要標註側 B 的 ROI,反之亦然。
![]() | ![]() |
|---|---|
| 為側 A 標註(透過) | 為側 A 標註(失敗) |
![]() | ![]() |
| 為側 B 標註(透過) | 為側 B 標註(失敗) |
配置 Node-RED 邏輯
-
轉到 IO Block(來自 Recipe Editor 的 Configure IO)以開啟您的 Node-RED flow。
-
建立一個源,用於告訴 OV80i 當前正在檢測哪一側。
這可以是機器人位置資料、來自 PLC 的資訊,或你想使用的任何其他資訊。在下方示例中,我們將使用兩個 Inject nodes 來模擬:一個傳送字串 "A",另一個傳送字串 "B"。
- 由於輸入的側邊資料可能是瞬時的,但我們需要檢查哪個側邊處於活動狀態,我們將使用一個 Flow variable 來儲存狀態資料,該資料將持續直到接收到下一條側邊資訊。將資料來源連線到包含以下程式碼的函式塊:
flow.set('side',msg.payload);
return msg;

- 您可以透過開啟 context 資料側邊欄,傳送訊息,然後在 Flow variable pane 上點選小的 refresh 按鈕來測試側邊資料是否已正確儲存。Flow 資料窗格只有在手動重新整理時才會更新,使用小型的 refresh 按鈕。

- 一旦在 Flow variable 中正確儲存了側邊資料,新增一個連線到 All Block Outputs 的 switch node。這將是根據 Flow variable 中活動的側邊來路由帶有檢測資料的訊息的節點。將其配置為讀取 Flow variable,並在 A 活動時將訊息路由到埠 1,B 活動時路由到埠 2。

對於更復雜的配方,可以對你希望檢測的不同檢視重複此過程,直到覆蓋所需的檢視數量。
- 將 switch 的每個輸出埠連線到一個 Classification Block Logic block,並根據你想要在該側檢測的規則進行配置。開關節點一次只會將訊息路由到其中一個節點。下圖顯示了 switch 的 B-side 埠的配置。請注意,它沒有引用 A ROI 的任一區域,因此當檢測透過此節點路由時,邏輯將忽略該側的結果。

- 最後,將 logic blocks 連線到 Inspection Pass/Fail block。這使得結果可以在 HMI 上顯示,並被傳遞給任何連線的 PLC 或其他 flow 元件。

測試配方
現在 Node-RED flow 已配置完成,是時候對配方進行端到端測試了。
- 首先,我們將使用 Node-RED 的 inject 節點傳送 A-side 指令。然後使用 HMI 對一個良品進行檢測。請注意,儘管 B-side 區域中的一個區域失敗,整個檢測仍透過。

- 現在,當我們在 A-side 移除鑽頭並再次檢測時,我們得到我們想要的失敗結果。

- 接著切換到 B-side 的良品,我們使用 Node-RED 的 inject 傳送 B 訊號,並在 context 資料窗格的 Flow variable 區段執行 refresh,以確保它已儲存。

- 現在切換到良品的 B-side 時,儘管 A-side 區域全部失敗,檢測仍然透過。

恭喜!您現在知道如何在同一個配方和模型下跨多個檢視對部件進行檢測。這將實現高速度下的複雜檢測,並與機器人實現緊密整合。它也將大幅節省時間,避免為不同檢視重複訓練多個執行同一檢測的模型。





