當前位置:首頁 » 操作系統 » lbp演算法實現

lbp演算法實現

發布時間: 2023-03-18 06:17:47

① 基於lbp的adaboost人臉檢測中弱分類器是怎麼生成的

Adaboost是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。其演算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的准確率,來確定每個樣本的權值。將修改過權值的新數據集送給下層分類器進行訓練,最後將每次訓練得到的分類器最後融合起來,作為最後的決策分類器。使用adaboost分類器可以排除一些不必要的訓練數據特徵,並將關鍵放在關鍵的訓練數據上面。
目前,對Adaboost演算法的研究以及應用大多集中於分類問題,同時近年也出 現了一些在回歸問題上的應用。就其應用Adaboost系列主要解決了: 兩類問題、 多類單標簽問題、多類多標簽問題、大類單標簽問題,回歸問題。它用全部的訓練樣本進行學習。
該演算法其實是一個簡單的弱分類演算法提升過程,這個過程通過不斷的訓練,可以提高對數據的分類能力。整個過程如下所示:
1. 先通過對N個訓練樣本的學習得到第一個弱分類器 ;
2. 將 分錯的樣本和其他的新數據一起構成一個新的N個的訓練樣本,通過對這個樣本的學習得到第二個弱分類器 ;
3. 將 和 都分錯了的樣本加上其他的新樣本構成另一個新的N個的訓練樣本,通過對這個樣本的學習得到第三個弱分類器 ;
4. 最終經過提升的強分類器 。即某個數據被分為哪一類要通過 , ……的多數表決。
2.3 Adaboost(Adaptive Boosting)演算法
對於boosting演算法,存在兩個問題:
1. 如何調整訓練集,使得在訓練集上訓練的弱分類器得以進行;
2. 如何將訓練得到的各個弱分類器聯合起來形成強分類器。
針對以上兩個問題,adaboost演算法進行了調整:
1. 使用加權後選取的訓練數據代替隨機選取的訓練樣本,這樣將訓練的焦點集中在比較難分的訓練數據樣本上;
2. 將弱分類器聯合起來,使用加權的投票機制代替平均投票機制。讓分類效果好的弱分類器具有較大的權重,而分類效果差的分類器具有較小的權重。
Adaboost演算法是Freund和Schapire根據在線分配演算法提出的,他們詳細分析了Adaboost演算法錯誤率 的上界,以及為了使強分類器 達到錯誤率 ,演算法所需要的最多迭代次數等相關問題。與Boosting演算法不同的是,adaboost演算法不需要預先知道弱學習演算法學習正確率的下限即弱分類器的誤差,並且最後得到的強分類器的分類精度依賴於所有弱分類器的分類精度, 這樣可以深入挖掘弱分類器演算法的能力。
Adaboost演算法中不同的訓練集是通過調整每個樣本對應的權重來實現的。開始時,每個樣本對應的權重是相同的,即 其中 n 為樣本個數,在此樣本分布下訓練出一弱分類器 。對於 分類錯誤的樣本,加大其對應的權重;而對於分類正確的樣本,降低其權重,這樣分錯的樣本就被突出出來,從而得到一個新的樣本分布 。在新的樣本分布下,再次對弱分類器進行訓練,得到弱分類器。依次類推,經過 T 次循環,得到 T 個弱分類器,把這 T 個弱分類器按一定的權重疊加(boost)起來,得到最終想要的強分類器。
Adaboost演算法的具體步驟如下:
1. 給定訓練樣本集 ,其中 分別對應於正例樣本和負例樣本; 為訓練的最大循環次數;
2. 初始化樣本權重 ,即為訓練樣本的初始概率分布;
3. 第一次迭代:
(1) 訓練樣本的概率分布 下,訓練弱分類器:
(2) 計算弱分類器的錯誤率:
(3) 選取 ,使得 最小
(4) 更新樣本權重:
(5) 最終得到的強分類器:
Adaboost演算法是經過調整的Boosting演算法,其能夠對弱學習得到的弱分類器的錯誤進行適應性調整。上述演算法中迭代了 次的主循環,每一次循環根據當前的權重分布 對樣本x定一個分布P,然後對這個分布下的樣本使用若學習演算法得到一個錯誤率為 的弱分類器 ,對於這個演算法定義的弱學習演算法,對所有的 ,都有 ,而這個錯誤率的上限並不需要事先知道,實際上 。每一次迭代,都要對權重進行更新。更新的規則是:減小弱分類器分類效果較好的數據的概率,增大弱分類器分類效果較差的數據的概率。最終的分類器是 個弱分類器的加權平均。
第一部分:演算法的產生
1996年Yoav Freund在Experiments with a New Boosting Algorithm中提出了AdaBoost.M1和AdaBoost.M2兩種演算法.其中,AdaBoost.M1是我們通常所說的Discrete AdaBoost;而AdaBoost.M2是M1的泛化形式.該文的一個結論是:當弱分類器演算法使用簡單的分類方法時,boosting的效果明顯地統一地比bagging要好.當弱分類器演算法使用C4.5時,boosting比bagging較好,但是沒有前者的比較來得明顯.
文獻中記錄的.M1演算法
初始
1.獲得一組樣本(X)和它的分類(Y)和一個分類器(weaklearn).
2.賦予平均的權值分布D(i)
進入循環:T次
1. 賦予弱分類器權值D(i),使用弱分類器獲得樣本(X)到分類(Y)上的一個映射.(就是把某個X歸到某個Y類中去)
2. 計算這個映射的誤差e.e=各個歸類錯誤的樣本權值之和.如果e>1/2那麼弱分類器訓練失敗,挑出循環,訓練結束(這在二值檢測中是不會發生的,而多值的情況就要看分類器夠不夠強健了)
3. 設B = e / ( 1 - e ).用於調整權值.因為e<1/2.因此0<B<1
4. 如果某樣本分類正確,該樣本的權值就乘以B讓權值變小;如果分類錯誤,就讓該樣本的權值乘以B^-1或者不變,這樣就讓分類正確的樣本權值降低,分類錯誤的樣本權值升高,加強了對較難分類樣本的分類能力
5. 權值均衡化
循環結束
1. 最終的分類器是,當一個X進入時,遍歷所有Y,尋找使(h(x)=y的情況下,log(1/B)之和)最大者即是輸出分類y
M2相比於M1的改進是允許弱分類器輸出多個分類結果,並輸出這幾個分類結果的可能性(注意,這里不是概率)
.M2的流程是
1.獲得一組樣本(X)和它的分類(Y)和一個分類器(weaklearn).
2.對於某個樣本Xi將它的分類歸為一個正確分類Yi和其他不正確分類Yb
3.樣本權值進行如下分布首先每個樣本分到1/m的權值,然後每個不正確分類分到(1/m)/Yb的個數.也就是說樣本權值是分到了每個不正確的分類上
進入循環
1. 求每個樣本的權值,即每個樣本所有不正確的分類的權值和,再求每個樣本錯誤分類的權值,即不正確分類的權值除以該樣本的權值.最後將每個樣本的權值歸一化
2. 將樣本權值和某樣本的不正確分類的權值輸入到weaklearn,獲得弱分類器的輸出為各個分類的可能值
3. 計算偽錯誤率:公式見上
4. 更新權值
退出循環
最終的強分類器: 圖貼不出來了...
1999年, ROBERT E. SCHAPIRE和YORAM SINGER,於Machine Learning發表論文: Improved Boosting Algorithms Using Confidence-rated Predictions.提出了更具一般性的AdaBoost形式.提出了自信率以改善AdaBoost的性能.並提出了解決多標簽問題的AdaBoost.MH和AdaBoost.MR演算法,其中AdaBoost.MH演算法的一種形式又被稱為Real Boost演算法.
事實上:Discrete AdaBoost是指,弱分類器的輸出值限定在{-1,+1},和與之相應的權值調整,強分類器生成的AdaBoost演算法;Real AdaBoost是指,弱分類器輸出一個可能度,該值的范圍是整個R, 和與之相應的權值調整,強分類器生成的AdaBoost演算法。事實上,Discrete到Real的轉變體現了古典集合到模糊集合轉變的思想
至於Gentle AdaBoost.考慮到(AdaBoost對」不像」的正樣本權值調整很高,而導致了分類器的效率下降),而產生的變種演算法.它較少地強調難以分類的樣本.

② 人臉識別有什麼優化演算法還請各位大神賜教,簡單一點的。謝謝

人臉識別技術概述
廣義的人臉識別主要分為人臉檢測(face detection)、特徵提取(feature extraction)和人臉識別(face recognition)三個過程,如圖1所示。
人臉,人臉識別,人臉識別技術
圖1 典型的人臉識別過程
其中,第三步提到的人臉識別是狹義的人臉識別,即將待識別人臉所提取的特徵與資料庫中人臉的特徵進行對比,根據相似度判別分類。而人臉識別又可以分為兩個大類:一類是確認(verification),這是人臉圖像與資料庫中已存的該人圖像比對的過程,回答你是不是你的問題;另一類是辨認(identification),這是人臉圖像與資料庫中已存的所有圖像匹配的過程,回答你是誰的問題。顯然,人臉辨認要比人臉確認困難,因為辨認需要進行海量數據的匹配。在辨認過程中,海量數據的處理、特徵提取和分類演算法的選擇變得非常重要。識別率和識別速度是人臉識別技術中主要的衡量演算法性能的指標。本文後面提到的人臉識別,主要指的是人臉辨認。
人臉識別技術原理
人臉識別演算法發展到今天,大致上可以分為兩類:基於特徵的人臉識別演算法和基於外觀的人臉識別演算法。其中,多數基於特徵的人臉識別演算法屬於早期的人臉識別演算法,現在已經不再使用。不過近些年出現了一些新的基於特徵的演算法,並取得不錯的效果。而基於外觀的人臉識別演算法是由於實現簡單,受到廣泛關注。接下來將分別介紹兩類人臉識別演算法。
基於特徵的人臉識別演算法:早期的人臉識別演算法主要是基於特徵模板和幾何約束來實現的。這一類演算法首先對輸入圖像進行處理,提取出如眼睛、鼻子和嘴等面部特徵和外觀輪廓。然後計算這些面部特徵之間的幾何關系,如距離、面積和角度等。這樣將輸入圖像轉換為幾何特徵向量後,使用標準的統計模式識別技術進行匹配分類。由於演算法利用了一些直觀的特徵,計算量小。不過,由於其所需的特徵點不能精確選擇,限制了它的應用范圍。另外,當光照變化、人臉有外物遮擋、面部表情變化時,特徵變化較大。所以說,這類演算法只適合於人臉圖像的粗略識別,無法在實際中應用。
人臉,人臉識別,人臉識別技術
圖2 一些典型的面部幾何特徵示意圖
以上這些方法都是通過一些特徵模板和幾何約束來檢測特定的面部特徵,並計算特徵之間的關系。還有一些方法使用了圖像的局部表示來提取特徵。其中最受關注的方法是局部二值模式(LBP)演算法。LBP方法首先將圖像分成若干區域,在每個區域的像素3x3鄰域中用中心值作閾值化,將結果看成是二進制數。圖3顯示了一個LBP運算元。LBP運算元的特點是對單調灰度變化保持不變。每個區域通過這樣的運算得到一組直方圖,然後將所有的直方圖連起來組成一個大的直方圖並進行直方圖匹配計算進行分類。
人臉,人臉識別,人臉識別技術
圖3 LBP運算元
基於特徵的人臉識別演算法主要的優勢在於對姿態、尺度和光照等變化魯棒。由於多數特徵是基於手動選擇和先驗知識,受圖像本身的成像質量影響較少。另外,提取出的面部特徵往往維數較低,匹配速度快。這些方法的缺點是自動特徵提取的難度較大。如果特徵集的鑒別能力弱,再多的後續處理也無法補償本身的不足。
基於外觀的人臉識別演算法:基於外觀的人臉識別演算法也稱為整體方法。它們使用圖像的全局信息來辨識人臉。最簡單的整體方法是用二維數組來存放圖像的灰度值,然後直接對輸入圖像和資料庫中的所有圖像進行相關性比較。這種方法的缺點非常多,如易受環境影響、計算耗時等。其中一個重要的問題是這樣的分類是在一個非常高維的空間中進行的。為了克服維數問題,一些演算法使用統計降維方法來獲取和保留更有用的信息,最典型的演算法就是主成分分析(PCA)演算法和線性鑒別分析(LDA)演算法。
PCA演算法指出任何特定的人臉可以由一個低維的特徵子空間表示,並可以用這個特徵子空間近似地重建。將輸入人臉圖像投影到特徵子空間上得到的特徵與已知的資料庫進行比對來確定身份。PCA演算法選取的特徵最大化了人臉樣本間的差異,但也保留了一些由於光照和面部表情產生的不必要的變化。而同一個人由於光照產生的變化可能會大於不同人之間的變化,如圖4所示。LDA演算法在最大化不同個體之間的樣本差異的同時,最小化同一個體內部的樣本差異。這樣達到了人臉特徵子空間的劃分。圖5是PCA和LDA演算法的示例。其中,PCA的特徵臉是由組成PCA特徵子空間的特徵向量按二維圖像來排列得到的類似人臉的圖像。LDA的Fisher臉也是同樣道理。經過特徵臉和Fisher臉重構得到的人臉圖像在第四行。可以看到,PCA重構臉與輸入人臉差異較小,但LDA的Fisher臉很難辨認,但突出了該個體的顯著特徵。PCA和LDA方法都假設存在一個最優的投影子空間。這個子空間的每個區域對應唯一的一個人。然而,事實上在人臉空間中許多人經常會映射到相同的區域中,因此這種假設並不成立。

來源:海鑫科金
http://www.hisign.com.cn/news/instry/2699.html

③ LBP和PCA演算法的區別

LBP演算法:全稱Local binary pattern ,是機器視覺領域非常重要的一種特徵。LBP可以有效地處理光照變化,在紋理分析,紋理識別方面被廣泛應用。LBP 的演算法非常簡單,簡單來說,就是對圖像中的某一像素點的灰度值與其鄰域的像素點的灰度值做比較。

PCA演算法:全稱principle component analysis,在力求數據信息丟失最少的原則下,對高緯度的變數空間降維 ,即研究指標體系的少數幾個線性組合,並且這幾個線性組合所構成的綜合指標將盡可能多地保留信息。主要用於對數據的降維,通過降維可以發現更便於人理解的特徵,加快對樣本有價值信息的處理速度,此外還可以應用於可視化(降到二維)和去噪。

若幫助到您,求採納~

熱點內容
安卓java編程 發布:2025-08-25 05:39:07 瀏覽:927
實用演算法試題 發布:2025-08-25 05:37:50 瀏覽:786
網路用語腳本 發布:2025-08-25 05:23:45 瀏覽:193
畢業mv腳本 發布:2025-08-25 05:22:56 瀏覽:812
對象存儲使用場景 發布:2025-08-25 04:55:09 瀏覽:490
裝wf鎖了一般原始密碼是多少 發布:2025-08-25 04:40:14 瀏覽:357
sql轉mysql 發布:2025-08-25 04:40:12 瀏覽:882
交互性編程 發布:2025-08-25 04:33:01 瀏覽:961
編譯器一般多少行代碼 發布:2025-08-25 04:32:28 瀏覽:769
asp班級源碼 發布:2025-08-25 04:28:06 瀏覽:504