terasoft
什麼是視覺檢測?

什麼是視覺檢測? 視覺檢測主要用於發現產品表面故障或缺陷,廣泛應用於製造、建築和航太等領域。

自動視覺檢測系統

在製造業中,配備高解析度攝影機的自動化視覺檢測系統能夠有效率地偵測肉眼難以察覺的微米等級、甚至奈米等級的缺陷。然而,當出現未知缺陷或多樣化缺陷時,仍可能發生誤判,這是目前的一大挑戰。因此,具備深度學習技術的MATLAB®、電腦視覺工具箱的自動化視覺檢測函式庫,正扮演越來越關鍵的角色。

透過深度學習標出異常的電路板區域
圖一、透過MATLAB的深度學習技術,標示出異常的電路板區域。

透過MATLAB和電腦視覺工具箱開發自動化視覺檢測系統

您可以透過MATLAB和電腦視覺工具箱自動化視覺檢測函式庫開發視覺檢測系統。MATLAB支援影像擷取、演算法開發再到部署的完整工作流程。MATLAB中的互動軟體可協助工程師探索、反覆試驗和自動化演算法,進而提高生產力,並將這些技術應用於眾多工業領域。

成功案例:汽車和航空航太工業中的自動視覺檢測

汽車零件製造商武藏精密工業 (Musashi Seimitsu Industry)過去每個月透過人工視覺檢測約130萬個零件。如今,該公司透過MATLAB開發基於深度學習的方法來檢測和定位不同類型的異常,並建立了一個用於檢測錐齒輪的自動化視覺檢測系統。改善後的流程預計顯著減少該公司的工作量和成本。

透過MATLAB建立深度學習模型對汽車零件進行自動視覺檢測
圖二、武藏精密工業透過MATLAB建立深度學習模型對汽車零件進行自動視覺檢測

另一個案例則是空中巴士,它們建立了一套穩健的視覺檢測人工智慧(AI)模型,用於自動偵測多種飛機零件中的缺陷,以確保其飛機在正式服役前沒有任何缺陷。透過MATLAB,讓空中巴士工程師能在短時間內以互動方式建立演算法原型並進行缺陷測試,大幅簡化了開發流程。

空巴透過MATLAB建立強大的視覺檢測AI模型
圖三、空中巴士透過MATLAB建立強大的視覺檢測AI模型,用於自動偵測不同飛機零件的可能缺陷

缺陷檢測流程:資料準備、AI建模和部署

缺陷檢測流程可分為三個主要階段:資料準備、AI建模和部署。

End-to-end automated visual inspection workflow with MATLAB.

在視覺檢測中,異常影像往往不常見或類型多樣。在這種情況下,可以使用只需正常影像進行訓練的非監督式學習方法來建立異常檢測器。如果具備足夠數量的異常影像,則可考慮採用監督式學習進行訓練。

在下一節中,您可以了解如何使用MATLAB實作兩種方法:一是以非監督式學習為基礎的異常偵測流程,二是以監督式學習為基礎的物件偵測流程。

視覺檢測資料準備

資料通常來自多種來源,且多為非結構化並含有雜訊,使得資料準備和管理既困難又耗時。針對資料集裡的影像進行預處理,有助於提高異常檢測的準確性。

使用MATLAB進行影像預處理

MATLAB擁有多個應用程式支援各式預處理技術。例如,MATLAB中的「配準估計器」 (Registration Estimator) 可讓您探索各種演算法來配準未對齊的影像,進而提升AI模型的缺陷偵測能力。

Registration Estimator
圖五、配準估計器(Registration Estimator) 讓影像預處理更加簡單

MATLAB 提供自動化功能來加速標記流程。例如,影像和影片標記器(Image Labeler),可以採用自訂語義分割或物件偵測演算法來標記影像或影格中的區域或物件。

視覺檢測的人工智慧建模

常用於視覺檢測中的異常檢測方法包括:

  • 全卷積式資料描述(Fully convolutional data description, FCDD)
  • FastFlow
  • PatchCore

下表比較透過電腦視覺工具箱的自動視覺檢查函式庫提供的各種異常檢測方法,在訓練與推論階段的特點和效能表現。

訓練項目 PatchCore FastFlow FCDD
影像輸入尺寸 建議使用小至中等尺寸(避免大圖造成記憶體限制) 建議使用小至中等尺寸(避免大圖造成記憶體限制) 從小至大尺寸(適合高解析度影像)
模型大小 中等至大型尺寸(隨壓縮比例變化) 中等至大型尺寸 小型尺寸(最輕型之模型)
執行效能 快速 快速 最快
低樣本訓練方案 支援 不支援 不支援

對於異常檢測方法,異常閾值的自動計算有助於避免人為判斷的偏差。透過可解釋的AI視圖進行評估,可以進一步探索和解釋分類結果。

AI視圖成功在視覺檢查中運用AI
圖六、可解釋的AI視圖是成功在視覺檢查中運用AI的關鍵

視覺檢測監督學習中使用的預訓練網絡

將深度學習應用於監督學習時,有兩種方法。一種是從零開始建立和訓練深度網路;另一種則是調整和微調預先訓練的神經網絡,也稱為遷移學習。這兩種方法在MATLAB中都能輕鬆進行實作。

使用深度網路設計器應用程式建置、編輯和訓練深度學習網絡

MATLAB提供了Deep Network Designer應用程式,可用於建立、視覺化、編輯和訓練深度學習網路。您還可以在訓練前分析網路結構,以確認架構是否定義正確,並及早發現潛在問題。

此外,MATLAB支援使用來自外部平台的預訓練模型,您可以從PyTorch®匯入網路與網路架構,也支援TensorFlow™以及ONNX™ 模型格式的匯入和匯出。這些預訓練模型可用於遷移學習 ,並可進一步編輯與調整。

Deep Network Designer提供預訓練模型
圖七、Deep Network Designer 應用程式中提供了許多預訓練模型鍵

透過物體檢測以檢測和定位缺陷

YOLOX物件偵測模型用於偵測、定位和分類影像中的缺陷。YOLOX是一種單階段(single-stage)、無錨點技術(anchor-free)的物件偵測模型,與先前的YOLO模型相比,能更有效地偵測小型物件、顯著減小模型尺寸,並提高計算速度。在訓練物件偵測模型時,會使用標記了矩形感興趣區域 (ROI) 的輸出資料作為訓練樣本。

YOLOX物件尋找小型異常
圖八、使用YOLOX物件偵測技術於視覺檢測中尋找小型異常

視覺檢測系統的部署

程式碼生成和框架部署

深度學習模型必須整合到更大的系統中才能發揮作用。MATLAB提供程式碼產生框架,讓MATLAB開發的模型能夠部署到任何環境,且無需重寫原始模型。這使您能夠在完整系統中測試和部署模型。

部署至嵌入式硬體平台

MATLAB讓您能夠將深度學習網路部署到多種嵌入式硬體平台,例如NVIDIA®GPU、Intel®和ARM® CPU,以及 Xilinx®和Intel SoC和FPGA。透過MATLAB,您可以輕鬆探索和部署嵌入式硬體。

MATLAB支援各嵌入式硬體平台
圖九、MATLAB支援各嵌入式硬體平台的程式碼產生功能