許多實際應用中,資料不均勻是常見的 如:工廠中的OK/NG的樣本數比例、醫學影像中罕見疾病的發生機率 使用不均勻資料進行機器學習,所產生的結果會造成偏差 例如:[信用卡詐騙分析](https://www.kaggle.com/mlg-ulb/creditcardfraud)的資料集中,no fraud與fraud佔的百分比為99.83%、0.17%  由於資料的數量偏向某一類別,在資料沒有處理的情況下會造成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月31日 星期四
data imbalance-資料不均勻問題與處理方式
許多實際應用中,資料不均勻是常見的 如:工廠中的OK/NG的樣本數比例、醫學影像中罕見疾病的發生機率 使用不均勻資料進行機器學習,所產生的結果會造成偏差 例如:[信用卡詐騙分析](https://www.kaggle.com/mlg-ulb/creditcardfraud)的資料集中,no fraud與fraud佔的百分比為99.83%、0.17%  由於資料的數量偏向某一類別,在資料沒有處理的情況下會造成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

安裝由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
對Emgu.CV點擊進行版本更新
就可以執行了
2020年12月20日 星期日
打光方式
人之所以可以看到任何物體,都是來自於有光
而自動光學檢測中,以攝影機來取代人的眼睛
而物體成像是由光線照到物體所成像的結果
那怎麼讓這個物體成像的光也就非常重要了
好的打光方式可以最大化物體要檢測的可能瑕疵處
因此公司通常也會有專門研究於於打光光源色彩的光學工程師
2020年12月13日 星期日
常用機器視覺軟體介紹
機器視覺在工業應用上從影像校正、亮度校正到物件檢測都是不可或缺的
而常見的機器視覺函式庫從開源的OpenCV自行編寫程式碼到拖拉式的Cognex、點點按鈕調個參數的Labview
差別在於你是要從自己從輪子開始造到一台車,還是人家把各種車都準備好了等你開
在使用上還是需要具備影像處理與電腦視覺的基礎
才能有更快的開發速度
開源機器視覺庫
全名是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 來當例子
官網上的規格通常會寫出pixel size
而這pixel size就是指一個CMOS sensor一顆像素的大小
也代表一個pixel所代表的實際尺寸就是7µm
若是要力求精準也可以透過掃描校正尺來看是不是與規格寫的相同
有時候可能因為鏡頭像差或是接上轉接環而產生些微的誤差
2020年12月8日 星期二
國內外AOI廠整理
電路板檢測設備
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製程的測試檢查都被國外大廠佔據市場
參考




