1. 程式人生 > >halcon中的分類器之GMM運算元全講解

halcon中的分類器之GMM運算元全講解

強大的Halcon的分類器有三種MLP、SVM、GMM,在這裡為大家詳細介紹GMM,原理的東西自己百度吧,這裡主要講GMM庫怎麼用,希望對大家有用

creat_class_gmm();

含義:建立高斯混合模型;
輸入引數:
 NumDim:幾個特徵;

NumClasses:樣本分類個數;

NumCenters:類中心的個數;

CovarType:協方差矩陣('Spherical','diag','full')

Preprocessing:預處理是否使用,及特徵向量轉換型別;

NumComponents:預處理引數,轉換特徵數;

RandSend:隨機種子,初始化GMM;

輸出引數:

GMMHandle:高斯混合模型

add_sample_class_gmm()

含義:增加訓練樣本特徵,到GMM訓練資料中

輸入引數:

GMMHandle:高斯混合模型

Features:訓練樣本的特徵數值

ClassID:訓練樣本所屬的類;

Randomize:高斯噪聲標準差;

注:增加Randomize目的主要為了防止在訓練的過程整數特徵向量中出現類中心數過多的異常現象,對資料做擾動,經驗值推薦,halcon推薦1.5-2之間滿足大部分情況。

接下來可以訓練樣本了,如果訓練後發現中心很大的誤差,可以改變Randseed。

train_class_gmm()

含義:訓練高斯混合模型
輸入引數:

GMMHandle:高斯混合模型

MixIter: 期望最大值演算法中迭代最大數

Threshold:期望誤差閾值,超過此值,計算取消。

ClassPriors:類的先驗概率型別('training','uniform')'uniform'表示使用相同的權重,1/NumClasses;'training'表示類發生的概率是依據樣本中的概率推斷。

Regularize:調整值,為了防止計算中出現奇異協方差矩陣。增加到協方差矩陣的對角線上的一個很小的值

輸出引數:

Centers:每個類的中心個數

Iter:每個類的迭代次數

classify_class_gmm()

含義:使用訓練好的模型對特徵進行分類

輸入引數:

GMMHandle:高斯混合模型

Features:將要劃分所屬類的特徵值陣列

輸出引數:

Num:期望最佳個數

ClassID:特徵所屬類ID

ClassProb:輸出特徵所屬類的概率,越接近1,分類越精確

Density:特徵所屬所有類的概率總和

KsigmaProb:歸一化概率,可以判斷新特徵不屬於現有的類,有點像sigma,遠離中心值會很小

evaluate_class_gmm()

含義:預估一個特徵

輸入引數:

GMMHandle:高斯混合模型

Features:預估的特徵

輸出引數:

ClassProb:特徵對各類的概率

Density:特徵所屬所有類的概率總和

KsigmaProb:歸一化概率,可以判斷新特徵不屬於現有的類,有點像sigma,遠離中心值會很小,異常檢測:低於0.0001就拒絕。

add_simple_image_class_gmm()

含義:增加訓練樣本(圖片區),放入GMM 進行訓練資料

輸入引數:

Image:訓練的影象(多通道)

ClassRegions:影象中用於訓練的類區域
GMMHandle:高斯混合模型
Randomize:高斯噪聲標準差

classify_image_class_gmm()

含義:使用GMM分類一個影象

輸入引數:

Image:訓練的影象(多通道)

GMMHandle:GMM模型 RejectionThreshold:分類拒絕閾值,低於此值時,如果影象所有的畫素概率低於此值將不會分類任何類。 輸出引數:

ClassRegions:分類的各個區域

read_class_gmm()

含義:檔案中讀取GMM模型

write_class_gmm()

含義:儲存GMM模型
clear_class_gmm()

含義:清楚GMM模型,釋放記憶體