2020年12月31日 星期四

data imbalance-資料不均勻問題與處理方式

markdown 問題
許多實際應用中,資料不均勻是常見的 如:工廠中的OK/NG的樣本數比例、醫學影像中罕見疾病的發生機率 使用不均勻資料進行機器學習,所產生的結果會造成偏差 例如:[信用卡詐騙分析](https://www.kaggle.com/mlg-ulb/creditcardfraud)的資料集中,no fraud與fraud佔的百分比為99.83%、0.17% ![](https://i.imgur.com/HF2qj57.png) 由於資料的數量偏向某一類別,在資料沒有處理的情況下會造成overfitting 分類模型將假定在大多數情況下沒有詐騙,而實際的模型是希望能找出少數的詐騙事件 解決方法 * 收集更多數據 * 設定訓練時的 class weights 調整訓練時的類別權重,讓類別資料數較少的影像有較高的權重 EX:當資料數量為100:2:50, 權重可設定為 $\dfrac{100}{100} : \dfrac{100}{2} : \dfrac{100}{50} = 1 : 50 : 2$ ```=python # 設定訓練權重 class_weight = {0: 1., 1: 50., 2: 2.} model.fit(X_train, Y_train, nb_epoch=5, batch_size=32, class_weight=class_weight) ``` * Oversampling * Random oversampling 隨機重複採樣相同資料填充數據集 * Data Generator 影像中的過採樣 對現有影像旋轉、位移、調整亮度、縮放產生更多數據集
參考[keras ImageDataGenerator](https://keras.io/api/preprocessing/image/) * SMOTE(Synthetic Minority Oversampling Technique)
基於已存在的資料,隨機抽取一個點,並與他的鄰居資料點(k-nearest neighbors)產生一個新的合成資料 * Undersampling * Random undersampling 從各類別中隨機抽取樣本 * Cluster
各群內進行clustering(K-Means),刪除遠離各群群心的資料點 Note:採樣流程要在切分訓練、測試集之後,才能讓測試集保持純度 所得到的測試結果才有鑑別度 參考 [训练集样本不平衡问题对CNN的影响](https://zhuanlan.zhihu.com/p/23444244) [smote-enn-解決數據不平衡建模的採樣方法](https://medium.com/%E6%95%B8%E5%AD%B8-%E4%BA%BA%E5%B7%A5%E6%99%BA%E6%85%A7%E8%88%87%E8%9F%92%E8%9B%87/smote-enn-%E8%A7%A3%E6%B1%BA%E6%95%B8%E6%93%9A%E4%B8%8D%E5%B9%B3%E8%A1%A1%E5%BB%BA%E6%A8%A1%E7%9A%84%E6%8E%A1%E6%A8%A3%E6%96%B9%E6%B3%95-cdb6324b711e)

2020年12月28日 星期一

在C#上使用Nuget套件安裝EmguCV

markdown 還記得2.X版需要下載一包檔案在解壓縮,並設定環境變數 才能在C#上使用EmguCV的函式庫 在EmguCV 4已經可以在C#內建的NuGet套件管理員上做安裝,非常方便 官網安裝教學:網址 打開VS 進到NuGet套件管理員,搜尋emgu





安裝由Emgu Corporation發布的Emgu.CV.runtime.windows 安裝後來測試看看 讀入圖片並進行邊緣檢測 GUI介面拉一個button 跟picturebox ```=C# public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenFileDialog o = new OpenFileDialog(); o.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory; o.Title = "請選擇圖片"; o.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*"; if (o.ShowDialog() == DialogResult.OK) { Image

image = new Image(o.FileName); Mat edges = new Mat(); CvInvoke.Canny(image, edges, 3, 3 * 3, 3); pictureBox1.Image = edges.ToBitmap(); } } } ``` 打完會出現無法將類型 'Emgu.CV.Image' 隱含轉換成 'System.Drawing.Image 這邊要在NuGet多安裝EmguCV套件,才能將image格式轉換為Bitmap 套件名稱為Emgu.CV.Bitmap 安裝後就可以將Image格式轉換為Bitmap讓picturebox顯示 pictureBox1.Image = image.ToBitmap(); 出現一個錯誤 ``` 識別為 'Emgu.CV.Bitmap, Version=4.4.0.4099, Culture=neutral, PublicKeyToken=7281126722ab4438' 的組件 'Emgu.CV.Bitmap' 會使用 'Emgu.CV.Platform.NetStandard, Version=4.4.0.4099, Culture=neutral, PublicKeyToken=7281126722ab4438',而後者的版本高於識別為 'Emgu.CV.Platform.NetStandard, Version=4.4.0.4061, Culture=neutral, PublicKeyToken=7281126722ab4438' 的參考組件 'Emgu.CV.Platform.NetStandard' ``` 這裡須將NuGet內的套件版本修改為同一版本號



對Emgu.CV點擊進行版本更新 

就可以執行了

2020年12月20日 星期日

打光方式

人之所以可以看到任何物體,都是來自於有光

而自動光學檢測中,以攝影機來取代人的眼睛

而物體成像是由光線照到物體所成像的結果

那怎麼讓這個物體成像的光也就非常重要了

好的打光方式可以最大化物體要檢測的可能瑕疵處

因此公司通常也會有專門研究於於打光光源色彩的光學工程師





以這個硬幣為例,在不同照明方式下有不同的成像結果

直接照明:光線直接照射物體,顯示成像結果有亮度不均的問題,硬幣中間部分過亮

漫射照明:相較於直接照明結果,光線分布較均勻

同軸照明:相較於直接照明與漫射照明,原先的細微部分消失,成像結果較平滑

高角度傾斜照明:成像結果凸顯影像凹凸不平處,類似邊緣檢測結果

低角度傾斜照明:相較於高角度照明,低角度傾斜照明的結果更貼近邊緣檢測結果

背光:檢測外部輪廓





2020年12月13日 星期日

常用機器視覺軟體介紹

機器視覺在工業應用上從影像校正、亮度校正到物件檢測都是不可或缺的

而常見的機器視覺函式庫從開源的OpenCV自行編寫程式碼到拖拉式的Cognex、點點按鈕調個參數的Labview

差別在於你是要從自己從輪子開始造到一台車,還是人家把各種車都準備好了等你開

在使用上還是需要具備影像處理與電腦視覺的基礎

才能有更快的開發速度

開源機器視覺庫 

OpenCV

全名是Open Source Computer Vision Library,開源就是讚,OpenCV的Apache License在商業和研究領域中免費使用,主要使用C++來編寫函式庫,可支援python, java, matlab..,還有官方sample範例教學,實際應用也不只在工業視覺上,OpenCV函式庫也包含擴增實境、臉部辨識、手勢辨識、人機互動、動作辨識、運動跟蹤、物體辨識、影像分割、機器人


商用機器視覺軟體

Cognex VisionPro

用拖拉式編譯方法來編寫你的視覺分析功能,包含物件定位、光學字元辨識OCR、邊緣線段偵測,並能在功能與功能之間做連結並傳遞數值,能馬上顯示執行結果,也能一鍵包成C#或VB語言的圖形化介面,並顯示檢測結果是合格或不合格

除了視覺軟體外,Cognex也有一系列整合好的系統(InSight、DataMan、3D-A5000),硬體包含攝影機與燈源,軟體功能有OCR、深度學習、3D量測可以直接使用

MVTec HALCON

HALCON是德國MVTec開發的一套視覺函示庫,功能包含較底層的演算法包含了各類濾波、色彩以及幾何、數學轉換、形態學計算分析、校正、分類辨識,也支援如3D的表面重建匹配、、深度學習的OCR方法、深度學習邊緣檢測

National Instruments LabView

LabView也是一款拖拉式coding程式語言介面,透過串接區塊進行參數的傳遞

Vision assistant是LabView的視覺功能函式庫,概念上也與Cognex VisionPro功能相似,差別就在於功能上可以調整的參數細膩程度,功能大略有濾波、影像分割、形態學、OCR等


參考

各家機器視覺軟體廠商&曾經使用心得

2020年12月9日 星期三

Line Scan Camera & Area Scan Camera

常見的CCD攝影機在工業應用上分成兩種 

Line Scan Camera:線性掃描攝影機

Area Scan Camera:面掃描攝影機

市面上常見的影像檢測系統使用面掃描攝影機

但是因為產品趨勢是尺寸加大、產能提升,需要加快檢測速度

並且在檢驗的缺陷大小越來越小,使得鏡頭解析度上升會造成視野範圍縮小,而減少檢測範圍的情況下

加快檢測速度又能有高解析度是非常重要的

因此Line Scan Camera也常在工業上使用

但主要使用時機也是看檢測的項目是甚麼

以下列舉Area scan 與 Line scan的特性

Area scan

* 2維矩陣式影像

* 機構較簡單, 相對Line Scan不需搭載移動載台即可顯示肉眼可理解影像

* 檢測特定感興趣區域,不必檢測整個物件

Line Scan

* 1維線狀排列影像

* 相機與待測物體產生相對移動時才能得到2維影像資料,實際上就是透過多個線狀影像拼接而成

* 影像成像結果會被外在東西影響:ex:載台移動速度, 載台移動精度誤差

* 影像拼接方向解析度不受限制,但通常調整長寬拼接影像解析度到1:1的比例

* 當line scan每秒產生的影像數增加時,每個影像的曝光時間減少,曝光時間的減少導致每個影像所接收到的光量減少,光量的減少導致影像變暗,亮度降低,因此若要提高掃描速度而讓影像保持原有亮度時,需要找亮度更強的光源系統

* 使用line scan拼接影像可能會有變形風險,請搭配encoder 使用


應用範例:致茂電子電池外觀檢測

Line Scan

https://youtu.be/PmuRt1j1dr8?t=160

Area Scan

https://youtu.be/PmuRt1j1dr8?t=177


Line Scan Camera拍攝影像與真實尺寸轉換

若需要從攝影機所拍出來的影像進行量測

就必須對像素距離進行真實尺寸的轉換

Basler Line Scan CCD 來當例子


從規格來看可以知道輸出的"一條影像"解析度會是2048x1個像素量

官網上的規格通常會寫出pixel size

而這pixel size就是指一個CMOS sensor一顆像素的大小

也代表一個pixel所代表的實際尺寸就是7µm

若是要力求精準也可以透過掃描校正尺來看是不是與規格寫的相同

有時候可能因為鏡頭像差或是接上轉接環而產生些微的誤差


2020年12月8日 星期二

國內外AOI廠整理

markdown AOI光學檢測設備商主要分布在韓國/以色列/日本/台灣 而主打的產業多以PCB、LCD、IC製程上 光學檢測設備也因為製程越做越小的關係 也有鏡頭/解析度越看越細微到奈米大小defect檢查的趨勢 台廠 * 德律
電路板檢測設備
3D錫膏檢測機
X光檢測機 * 牧德
PCB鑽孔與成型製程量測與檢測系列
PCB線路檢查系列及HDI與IC載板檢查系列設備
2D平面量測、3D立體量測 * 由田
PCB印刷電路板檢測機
LCD/LCM/OLED/TP平面顯示器檢測機
半導體晶圓檢測機 * 致茂
精密電子量測儀器供應商
多種產業的自動化解決方案
半導體封裝量測、晶圓檢測系統 * 晶彩科(2018年被由田收購入股)
PCB檢測設備
TFT-LCD/LED面板檢測
半導體檢測設備 韓國 * KohYoung
3D測量檢測設備
SPI錫膏檢測設備
醫療機器人 以色列 * Orbotech (已被KLA收購)
PCB/FPD生產解決方案供應商
PCB鑽孔
FPD電性測試、修復方案 * Camtek
半導體檢測設備
晶圓表面檢查/Bump Inspection凸塊檢查/3D檢測
Probe Mark Inspection針痕檢測分析 日本 * Screen
半導體/顯示器製程設備 * Takano
LCD AOI檢測機
膠片檢查機
晶圓/電池裂紋檢查系統 * topcon
IC晶圓/Probe mark/film檢測 美國 * KLA-tencor
基板/IC/光罩製程缺陷檢測 * Rudolph
晶圓/面板缺陷檢測
公司與Nanometrics Incorporated(NANO.US)合併為Onto Innovation Inc.(ONTO.US) IC製程的測試檢查都被國外大廠佔據市場 
 
因為半導體設備毛利率遠高於PCB 台廠也從早期專做PCB檢測開始往IC檢測邁進 而量測趨勢各家廠商也從2D量測轉往3D量測

參考
牧德2018年簡報資料 

2020年12月6日 星期日

自動光學檢測整理

markdown 對自動光學檢測相關知識與技術做一些整理 自動光學檢測以架構來說可分為 * 機構與驅動 * 電控系統 * 光學照明 * 軟體分析 以產業鏈來區分可分為 * 上游-零組件 影像感測器、CCD鏡頭、光源、硬體控制晶片等等 * 中游-設備商 設備商考驗整合能力,提供客製化功能,對不同產品挑選省錢又能達到功能的零組件(Ex:光源配置、載台精度、CCD解析度) 出機台到工廠端測試 * 下游-終端應用 工廠生產線到測試端都需要機台設備,買機台目的都是為了自動化取代人力

AOI產業職涯規畫相關文章