趙健成 趙逢禹
摘 要:為解決不同光照條件下皮膚難以檢測的問題,提出一種基于代價敏感性CS-AdaBoost算法的皮膚分類器。通過對皮膚像素提取6個基于亮度值的像素特征,并循環(huán)選取特征,使用基于CS-AdaBoost算法程序訓(xùn)練最佳弱分類器,通過對所有最佳弱分類器的加權(quán)線性組合得到最終的皮膚分類器。由于在算法程序中引入了代價因子θ,使分類結(jié)果偏向總錯分代價較小,即提高了皮膚樣本的分類正確率。使用SDD皮膚數(shù)據(jù)庫評估該皮膚分類器性能,結(jié)果表明,該皮膚分類器分類正確率達到了85%,比傳統(tǒng)皮膚分類方法提高了5%。
關(guān)鍵詞:皮膚分類器;CS-AdaBoost;亮度特征
DOI:10. 11907/rjdk. 191580
中圖分類號:TP301 ? 文獻標識碼:A??????????????? 文章編號:1672-7800(2020)003-0031-04
A Skin Classifier Based on Cost_Sensitive AdaBoost
ZHAO Jian-cheng,ZHAO Feng-yu
(School of Optical-Electrical and Computer Engineering,University of Shanghai for Science and Technology,Shanghai 200093,China)
Abstract:In order to solve the problem of difficult skin detection under different illumination conditions, a skin classifier based on cost-sensitive CS-AdaBoost algorithm is proposed. The skin classifier extracts six pixel features based on luminance values for skin pixels, and cyclically selects features using the CS-AdaBoost algorithm program to train the best weak classifier, and finally passes the weighted linear combination of all the best weak classifiers to get the final skin classifier. Since the cost factor θ is introduced in the algorithm program, the classification result of the proposed skin classifier tends to be less costly, that is, the classification accuracy rate of the skin sample is improved. Finally, the SDD skin database was used to evaluate the performance of the proposed skin classifier. The experimental results show that the classification accuracy rate of the proposed skin classifier is 85%, which is 5% higher than the traditional skin classification method.
Key Words:skin classifier; CS-AdaBoost; brightness value features
0 引言
膚色檢測[1]是在圖像中選取對應(yīng)人體皮膚像素的過程,是人臉檢測[2-3]、識別、跟蹤和視頻處理的關(guān)鍵。膚色檢測是人臉或手勢等身份、情感和行為識別系統(tǒng)的重要組成部分,在安全防范、反恐和醫(yī)療保健等領(lǐng)域,以及與人有關(guān)的各種機器視覺系統(tǒng)中得到了越來越多的應(yīng)用,具有巨大的市場潛力。
膚色檢測方面研究成果較多。在文獻[4]中,Luh使用皮膚檢測器將皮膚像素與其它部分分離,然后將分離得到的膚色區(qū)域作為人臉檢測算法的目標對象。盡管皮膚檢測器在正常情況下效率較高,但如果圖像中包含類似皮膚的非皮膚像素,則會將這些區(qū)域誤識別為膚色區(qū)域。文獻[5]中作者提出了一種復(fù)雜光照下的膚色檢測技術(shù),針對Hsu R L膚色檢測算法在高亮度區(qū)間漏檢率高的情況,提出一種新的非線性變換彩色空間YCbCr對人臉膚色進行分割。實驗表明在人臉出現(xiàn)高光時,新提出的非線性彩色空間變換算法定位準確,漏檢率和誤檢率低;Insung Hwang等[6]基于亮度值提出了一種新的皮膚檢測算法,在他們的算法中,通過眼睛檢測器和橢圓邊界檢測面部,從面部區(qū)域獲得顏色分量相對于亮度值的聯(lián)合高斯分布,然后利用從面部區(qū)域獲得的統(tǒng)計數(shù)據(jù),將圖像中的每個像素分類為皮膚或者非皮膚。
Freund & Schapire[7]引入AdaBoost,提出基于訓(xùn)練與學(xué)習(xí)的方法提高皮膚檢測與識別精度。將弱分類器有效集成到強分類器中,用于改進任何給定學(xué)習(xí)算法的分類性能。其性能優(yōu)異,廣泛應(yīng)用于膚色識別。然而該方法的缺點是訓(xùn)練時間過長而且執(zhí)行效果依賴于弱分類器選擇。針對訓(xùn)練時間過長問題,文獻[8]采取動態(tài)權(quán)重修剪,在處理大型數(shù)據(jù)集時大大提高了訓(xùn)練速度。在每次迭代中,算法丟棄大多數(shù)重量輕的樣本,只保留重量大的樣本進行訓(xùn)練。這樣在訓(xùn)練期間,只有一小部分樣本用于訓(xùn)練弱分類器,速度大大提高,缺點是膚色區(qū)域的精確率不是很理想。
目前AdaBoost算法以訓(xùn)練樣本分類正確率為目標,其基于所有樣本被錯誤分類的代價相等。但是現(xiàn)實生活中很多分類問題都屬于代價敏感分類,僅僅考慮分類錯誤率是不夠的。比如將有病誤診為無病,其代價一般會比將無病誤診為有病大得多,前者會導(dǎo)致失去生命,后者只增加成本,皮膚檢測亦是如此。作為人臉檢測、識別、跟蹤和視頻處理的關(guān)鍵,皮膚樣本的精確率尤為重要,將非皮膚錯誤分類為皮膚的代價要遠遠大于將皮膚錯誤分類為非皮膚的代價。
本文主要研究在不同光照和復(fù)雜背景條件下的皮膚檢測。為了能更好地提高皮膚樣本的精確率,采用了一種改進的AdaBoost算法,稱為基于代價敏感性AdaBoost(Cost-Sensitive AdaBoost)[9]算法。該算法在AdaBoost算法中引入代價因子[θ],在樣本權(quán)重調(diào)整時,對于代價高的誤分類樣本大幅提高其權(quán)重,將整個算法的分類結(jié)果偏向錯分代價較小的類,同時加快訓(xùn)練過程的收斂速度。本文通過對皮膚像素提取6個基于亮度信息的特征,并基于該算法訓(xùn)練弱分類器,最終輸出皮膚強分類器。
1 Cost-Sensitive AdaBoost
CS-AdaBoost針對訓(xùn)練數(shù)據(jù)集上不同類別樣本錯分后造成的損失問題,在AdaBoost算法基礎(chǔ)上進行了改進。AdaBoost算法簡單描述如下:
算法1:AdaBoost
輸入:訓(xùn)練數(shù)據(jù)集S={([xi,yi])},i=1,…,N,[yi]∈{+1,-1}代表皮膚區(qū)域與非皮膚區(qū)域。
輸出:最終的強分類器H(x)。
處理過程:
(1)給定樣本空間S={([xi,yi])},i=1,…,N,并初始化樣本權(quán)重。
(2)對于t=1,2,…,T(這里的t代表一個特征):①用弱學(xué)習(xí)算法訓(xùn)練樣本數(shù)據(jù)集,得到弱分類器[ht];②計算弱分類器的分類誤差率;③計算該弱分類器的權(quán)重系數(shù)[αt];④根據(jù)該弱分類器的分類誤差率更新樣本權(quán)值分布,對于分類正確時樣本權(quán)重值取值較小,分類錯誤時取值較大,這樣下一輪訓(xùn)練集樣本中權(quán)重值較大的樣本會得到更多的重視;⑤循環(huán)選擇下一個特征,并用更新后的訓(xùn)練集樣本進行訓(xùn)練,得到下一個弱分類器。
(3)利用加權(quán)平均法構(gòu)建弱分類器的線性組合,得到最終的強分類器[H(x)]。
為使算法由關(guān)注錯誤率最小轉(zhuǎn)而關(guān)注分類代價最小,CS-AdaBoost算法在對樣本權(quán)重值更新時對AdaBoost進行了改進。由于AdaBoost算法在抽取訓(xùn)練集樣本時,樣本權(quán)重與被抽中的概率成正比,所以在CS-AdaBoost中引入一個代價參數(shù)[θ],將皮膚以及非皮膚這兩類樣本分別給予不同的權(quán)值,并在每一輪訓(xùn)練后根據(jù)不同類別樣本造成的損失大小動態(tài)更新樣本權(quán)值分布,從而組成代價敏感的強分類器。
本文主要有兩種類別的錯誤分類:①將非皮膚區(qū)域錯誤分類為皮膚區(qū)域;②將皮膚區(qū)域錯誤分類為非皮膚區(qū)域。由于本文主要考慮的是皮膚樣本的高精確率,因此對于第②種錯誤分類給予較大的權(quán)重值,對第①種則給予較小的值,這樣在后續(xù)的弱分類器訓(xùn)練中,第②種錯誤分類情況的訓(xùn)練樣本會得到更多的重視,從而在最后輸出的強分類器中皮膚樣本的精確率最高。
2 基于CS-AdaBoost算法的皮膚分類器
為有效檢測出輸入圖像中的皮膚區(qū)域,采用20×20的矩形窗口對圖像進行掃描,以此作為一個訓(xùn)練樣本。由于在CS-AdaBoost學(xué)習(xí)過程中,為訓(xùn)練每個弱分類器,訓(xùn)練集樣本被重復(fù)使用多次,因此對輸入圖像進行膚色粗分割預(yù)處理采樣,去除不包含任何膚色區(qū)域的樣本,從而減少訓(xùn)練集樣本數(shù)量,提高弱分類器訓(xùn)練速度。
實際上,皮膚像素不同的特征體現(xiàn)在其區(qū)域中的亮度平均值上,亮度強度能有效識別皮膚像素 [10]。因此,亮度值是一個非常重要的膚色特征,被作為本文實驗特征提取的一個重要依據(jù)。
訓(xùn)練皮膚分類器過程如圖1所示。首先對輸入圖像進行預(yù)處理,然后提取6個基于亮度的像素特征,根據(jù)這些特征分別訓(xùn)練弱分類器,最后輸出最終的皮膚分類器。
2.1 圖像訓(xùn)練集采樣
對輸入圖像轉(zhuǎn)化到Y(jié)CbCr 顏色空間[11]。YCbCr 顏色空間是一種有效的膚色表示空間[12],其中Y表示亮度,顏色的色度信息由分量Cr和Cb表示,Cr是紅色分量R與亮度Y的差值,Cb是藍色分量B與亮度Y的差值。人的膚色在外觀上的差異主要由亮度引起,實驗表明膚色在YCbCr顏色空間的CbCr平面上分布在一個近似橢圓的區(qū)域范圍內(nèi)。膚色圖像的CbCr分布如圖2所示。
首先將每幅輸入圖像分割成若干個20×20大小的矩形區(qū)域,作為初始訓(xùn)練集樣本,然后將這些樣本分別轉(zhuǎn)換到Y(jié)CbCr顏色空間,對樣本中的每個像素按式(1)進行計算,判斷是否屬于皮膚區(qū)域。
色度在閾值范圍的像素取值為1(膚色區(qū)域),不在閾值范圍內(nèi)的取值為0(非膚色區(qū)域),由此得到該20×20矩形區(qū)域的二值圖像。若該區(qū)域的像素取值全為0,則去除該樣本,最終得到經(jīng)過篩選后的訓(xùn)練集樣本。
2.2 分類器訓(xùn)練
皮膚檢測分類器基于多個弱分類器構(gòu)建而成,每個弱分類器都是基于一個簡單的特征構(gòu)建。在本文實驗中選擇6個基于亮度的像素特征[13],每個樣本是一個20×20的矩形區(qū)域,通過計算該區(qū)域內(nèi)所有像素的亮度信息得到像素特征。
將該區(qū)域所有像素劃分為3個亮度值頻帶,分別是[0,85]、(85,170]以及[170,255],計算得到每個頻帶像素的亮度平均值,將其作為該樣本的第1、第2和第3特征;然后計算每個頻帶像素的亮度平均方差,將其作為該樣本的第4、第5和第6個特征。
算法2:SKIN-CS-AdaBoost
輸入:訓(xùn)練數(shù)據(jù)集S={([xi,yi])},i=1,…,N,[yi]∈{+1,-1},代表皮膚區(qū)域與非皮膚區(qū)域
輸出:最終的強分類器H(x)
處理過程:
給定一個代價參數(shù)[θ],[θ]值的大小為自定義。
計算出每個訓(xùn)練樣本的樣本代價[?i]:
根據(jù)樣本代價[?i]初始化訓(xùn)練集樣本權(quán)重:
給定t=1,…,T(T為弱分類器數(shù)量):
(1)通過訓(xùn)練集樣本權(quán)重[Wt]和訓(xùn)練集S訓(xùn)練弱分類器[ht]。
(2)計算弱分類器的分類錯誤率[εt]:
(3)計算得到該弱分類器的權(quán)重系數(shù)[αt]:
(4)更新下一輪訓(xùn)練集樣本權(quán)重[Wt+1]:
其中[Zt]是歸一化因子,它是所有樣本的權(quán)重之和:
(5)輸出最終的強分類器[H(x)]:
[H(x)=sign(t=1Tαtht(x))]?? (8)
在SKIN-CS-AdaBoost學(xué)習(xí)算法中,首先引入代價參數(shù)[θ],根據(jù)式(2)計算得到每個訓(xùn)練樣本的樣本代價[θi],再根據(jù)式(3)對每個訓(xùn)練樣本初始化權(quán)重。這里選擇代價參數(shù)[θ]>1,因為在訓(xùn)練集樣本權(quán)重更新過程中, 對于區(qū)分是否為皮膚樣本這樣的二分類,弱分類器[ht]的輸出值取值為{-1,1},[yi]的取值為{-1,1},對于正確的分類[yiht(xi)]>0,對于錯誤的分類[yiht(xi)]<0。為使皮膚樣本在后續(xù)弱學(xué)習(xí)器中得到更多重視,選擇[θ]>1,在式(3)中使皮膚樣本的[θi]大于非皮膚樣本的[θi]。在式(6)中更新下一輪訓(xùn)練集樣本權(quán)重[Wt+1],錯誤分類的皮膚樣本權(quán)重將比錯誤分類的非皮膚樣本權(quán)重增加很多,并且正確分類的非皮膚樣本權(quán)重將比正確分類的皮膚樣本權(quán)重減少很多,從而大大提高皮膚樣本分類精確率。
SKIN-CS-AdaBoost循環(huán)選取皮膚6個分類特征訓(xùn)練弱分類器。首先選擇第1個特征,通過訓(xùn)練集樣本及其權(quán)重得到第1個弱分類器,然后根據(jù)式(4)計算該弱分類器的分類錯誤率,再根據(jù)式(5)計算得到權(quán)重系數(shù),最后根據(jù)式(6)更新訓(xùn)練集樣本權(quán)重值,選擇第2個特征,進行下一輪訓(xùn)練,循環(huán)6次。
循環(huán)完畢后得到6個弱分類器,根據(jù)式(8)加權(quán)組合得到最終的皮膚分類器。
3 實驗結(jié)果
為驗證本文提出的基于CS-AdaBoost的皮膚分類器性能,構(gòu)造一個實證實驗。實驗數(shù)據(jù)集通過使用SDD皮膚數(shù)據(jù)庫評估所提出的皮膚分類器性能。在文獻[10]中發(fā)現(xiàn)SSD是一個非常廣泛的數(shù)據(jù)庫,適用于皮膚分類器評估,其中包含超過20 000個彩色圖像,涵蓋了世界各地不同條件下捕獲的各種照片。
本文把SKIN-CS-AdaBoost分類器和其它一些流行方法的最終結(jié)果進行視覺比較。在圖3中,第1行顯示原始圖像,第2、3行是文獻[14]中介紹的方法(CMYK1和CMYK2), 第4行是基于傳統(tǒng)AdaBoost[15]的方法,最后一行是本文方法。
從圖3可以明顯看出,第2列的原始圖像中,左上方背景及右下方衣服包含類似皮膚的區(qū)域,對于這種情況,其它方法在將非皮膚像素與皮膚像素分離時面臨困難,如CMYK1及CMYK2方法將部分背景分類為皮膚像素,在第3幅圖像中,CMYK1和CMYK2將奶茶接受為皮膚區(qū)域。本文分類器針對這種情況進行了改進,可以觀察到本文提出的方法比傳統(tǒng)AdaBoost的檢測方法精確率更高。
在SDD數(shù)據(jù)庫[16]上測試的結(jié)果如表1所示。其中,TP、FN、TN、FP和C代表真陽性、假陰性、真陰性、假陽性和總體正確性??梢钥吹?,基于CS-AdaBoost的皮膚分類器具有更高的精確率。
4 結(jié)語
本文提出了一種基于代價敏感的AdaBoost皮膚分類器,該分類器對不同的錯誤分類提供不同的代價,動態(tài)更新樣本權(quán)值分布,使分類器更加關(guān)注于膚色區(qū)域的精確率。測試集結(jié)果證明了該分類器的有效性。但在精確率提高的同時漏檢率也有相應(yīng)提高。因此,在使用時要根據(jù)不同的目的選擇一個合適的代價系數(shù)。另外,由于最終的強分類器是以20×20的矩形區(qū)域進行掃描分類的,導(dǎo)致對平移的微小變化不敏感,因此通常在掃描圖像中的某些皮膚區(qū)域周圍進行多次檢測,在后續(xù)研究中可考慮加入一些后處理方法加以改進。
參考文獻:
[1]陳鍛生,劉政凱. 膚色檢測技術(shù)綜述[J]. 計算機學(xué)報,2006,29(2):194-207.
[2]祝秀萍,吳學(xué)毅,劉文峰.人臉識別綜述與展望[J]. 計算機與信息技術(shù),2008(4):53-56.
[3]沈翔,朱建鴻. 基于膚色與改進Adaboost算法的人臉檢[J]. 傳感器與微系統(tǒng),2019,26(11):143-145.
[4]LUH? G. Face detection using combination of skin color pixel detection and Viola Jones face detector[C]. International Conference on Machine Learning and Cybernetics (ICMLC),2014:364-370.
[5]GANESH B,SOLANKE,SONAL GORE. GPU accelerated computing for human skin colour detection using YCBCR colour model[C].? 2017 International Conference on Computing, Communication, Control and Automation (ICCUBEA), 2017:1-6.
[6]HWANGI,LEE? S H,MIN B,et al. Luminance adapted skin color modeling for the robust detection of skin areas[C]. 20th IEEE International Conference on Image Processing (ICIP),2013:2622-2625.
[7]SCHAPIRE R,F(xiàn)REUND Y,BARTLEN P,et al. Boosting the margin: a new explanation for the effectiveness of voting methods[J]. The Annals of Statistics, 1998,110(26):1651-1686.
[8]JIA H X,ZHANG Y J. Fast adaboost training algorithm by dynamic weight trimming[J]. Chinese Journal of Computers,2009(1):511-518.
[9]ZHAI X Y,WANG X D,JIANG Y, et al. Multi-class cost sensitive adaboost algorithm based on cost sensitive exponential loss function[C].? 2017 29th Chinese Control And Decision Conference (CCDC), 2017:6161-6166.
[10]MARIáN BENIAK, JARMILA PAVLOVI?OVá. Luminance component in skin color detection[C]. 2011 18th International Conference on Systems, Signals and Image Processing, 2011:1-4.
[11]邱迪.? 基于HSV與YCrCb顏色空間進行膚色檢測的研究[J].? 電腦編程技巧與維護,2012(10):74-75.
[12]SUKMAWATI N, ENDAH, HELMIE A,et al. Skin detection based on local representation of YCbCr color moment[C]. 2017 1st International Conference on Informatics and Computational Sciences (ICICoS), 2017:65-70
[13]陶霖密,彭振云,徐光祐. 人體的膚色特征[J]. 軟件學(xué)報,2001(7):1032-1041.
[14]SAWICKI D J,MIZIOLEK W. Human colour skin detection in CMYK colour space[J]. Journal of Image Processing, IET, 2015(9):751-757.
[15]李明瑞,傅明,曹敦. 基于膚色檢測的 AdaBoost人臉檢測算法改進[J]. 計算機工程,2012(19):147-150.
[16]MOHAMMAD REZA MAHMOODI,SAYED MASOUD SAYEDI, FARIBA KARIMI,et al. SDD: a skin detection dataset for training and assessment of human skin classifiers[C]. 2015 2nd International Conference on Knowledge-Based Engineering and Innovation (KBEI), 2015:71-77.
(責任編輯:杜能鋼)
收稿日期:2019-04-21
基金項目:國家自然科學(xué)基金青年項目(61402288)
作者簡介:趙健成(1993-),男,上海理工大學(xué)光電信息與計算機工程學(xué)院碩士研究生,研究方向為圖像處理、機器學(xué)習(xí);趙逢禹(1963-),男,博士,上海理工大學(xué)光電信息與計算機工程學(xué)院教授、碩士生導(dǎo)師,研究方向為機器學(xué)習(xí)、多媒體技術(shù)。