基于聚類的在線式多人臉圖像處理的方法
【專利摘要】本發明公開了一種基于聚類的在線式多人臉圖像處理的方法,通過設置距離閾值來調整權值進行聚類,首先構造了一個不斷循環的過程,針對外界傳進來的每一個人臉,根據其到各聚類中心的距離對其進行歸類,然后進行類內調整。并在人臉總數到達閾值時把聚類結果進行輸出,且其中聚類中心就是我們選擇出來的人臉。本發明的方法可以很好地滿足在線式多人臉圖像處理的需求,并且通過實驗證實,在實時性和正確性等方面達到了要求。
【專利說明】
基于聚類的在線式多人臉圖像處理的方法
技術領域
[0001] 本發明涉及多人臉圖像處理的方法,尤其涉及一種基于聚類的在線式多人臉圖像 處理的方法。
【背景技術】
[0002] 隨著信息化程度的加深和社會公共安全意識的提高,傳統的人臉識別系統(下簡 稱傳統系統)也在不斷地擴大其部署的規模;而具備高并發識別、大人臉庫匹配能力的云端 人臉識別系統(下簡稱云端系統)就是其中的一種發展方向。
[0003] 與傳統系統不同,云端環境下系統對網絡的負載力、匹配的實時性提出了更高的 要求,特別是在一些門禁場景、公眾場景中。在這些場景中,客戶端攝像頭捕捉到的每一幀 內都可能包含多個人臉,并且在很長的一段時間內都會維持非常高的人臉產生率。假如一 個攝像頭一秒截取10幀,每幀包含5個人臉,而其中一個人臉的數據大小是4KB。那么該攝像 頭一秒內就會產生大小為200KB的人臉數據。如果這些人臉我們都要通過網絡上傳到云端 系統進行匹配,不僅會對網絡造成巨大的負擔,同時也會大大地消耗云端系統的計算資源。
[0004] 當前的各類云端系統的研究中,都主要把目光投注到數據庫匹配效率的提高上。
[0005] 根據時下流行的分布式處理概念,張儼等人提出了一種云計算環境下的人臉識別 系統。他們把基于PCA的傳統人臉識別算法與Hadoop框架相結合,滿足了用戶對海量人臉圖 像識別的計算速率需求;同時還改進了經典的KNN分類算法,提高了識別的精度和穩定性 (張儼.一種云計算環境下人臉識別系統的設計與實現[D].西安電子科技大學,2013)。
[0006] 同時,盛會鵬等人也在研究該如何提升人臉數據庫的匹配效率。他們對K-均值算 法進行了修改,并在此基礎上設計了一個基于聚類的大規模人臉庫快速檢索系統。他們借 鑒和提高了前人使用聚類來構建人臉層次特征索引結構的方法,在降低一次檢索所用時間 的同時,還保證了正確性(盛會鵬.大規模人像數據庫快速檢索算法的研究[D].吉林大學, 2006) 〇
[0007] 不過,哪怕數據庫匹配效率已經得到很好的提高,但這也只是治標不治本,我們仍 然需要解決客戶端上傳人臉過多的問題。
[0008] 其實客戶端產生的人臉是帶有很大冗余的,在一段時間內產生的人臉其實都來自 同一群被采集對象。為了降低一段時間內的上傳人臉數,我們可以從產生的所有人臉中只 選擇出一部分來作為上傳人臉,然后拋棄掉其他的部分。比如一開始那個假設的例子,我們 如果可以收集人臉,然后一秒鐘,甚至三秒種來進行一次選擇上傳,并令選擇的人臉個數為 5個,那么我們就可以降低一段時間內的人臉上傳量,從而緩解網絡負擔進而減輕云端的計 算壓力。
[0009] 所以,解決客戶端上傳人臉過多的問題其實就是該怎樣去選擇人臉的問題。
[0010] 傳統的方法主要有:
[0011] 1、選擇質量高的人臉(清晰,姿勢標準)
[0012] 2、攝像頭延時截取
[0013] 第一種方法可以快速地選擇出匹配效果好的人臉,但是無法應對采集對象突然做 表情的問題;同時這種方法也無法區分出不同人的人臉,選擇人臉的時候可能會出現漏選 人的現象。而第二種方法則比較硬性,但是同樣很容易出現漏人,延時小時達不到降低人臉 上傳量的目的,延時大時還會影響到匹配實時性。
[0014] 更一般地,我們為選擇人臉的策略設立了如下幾個準則:
[0015] 1.選取出來的子集與全集的覆蓋人數一樣。其中覆蓋人數指的是,若某個人臉集 合中,人臉總共來自n個被采集對象,那么該人臉集合的覆蓋人數為n;
[0016] 2.選取出來的人臉具有最大的代表性。在這里我們對代表性的定義是,在一個人 臉集合中,若某個人臉到其他人臉的距離(〇~1,相似度越小則距離越大)之和最小,那么認 為該人臉在該集合上具有最大的代表性;
[0017] 3.特殊的人臉會被專門選擇出來。所謂的特殊人臉,指的是采集不清晰、側臉、做 大表情等的非標準人臉;
[0018] 4.選擇是在線式的。亦即人臉的選擇并不需要預先給定一個人臉的集合,等待運 算完成之后才能取得結果,而是人臉是不斷輸入的,而算法會在恰當的時候把結果輸出。 [0019] 1967年J.B,Mac Queen提出了K-Means聚類算法,這個經典且使用廣泛的基于距離 的聚類算法,使用了數據樣本間的距離作為相似性度量,能夠把比較相近的樣本組成一類, 并最終得到緊湊而且獨立的類集合(J.MACQUEEN.SOME METHODS FOR CLASSIFICATION AND ANALYSIS OF MULTIVARIATE 0BSERVATI0NS[C].5-th Berkeley Symposium on Mathematical Statistics and Probability?1967:281~297)〇
[0020] 我們把覆蓋人數為P的人臉集合當做數據樣本集合交給K-Means聚類算法,根據其 計算方式,如果在算法參數恰好合適的情況下,我們可以得到這樣的聚類結果:
[0021] 如果不存在特殊的人臉,且P = K,那么整個人臉集合會被分成K類,每個類中的大 多數的人臉樣本都來自于同一個人,并且同一個人的大多數人臉樣本都屬于同一個類。
[0022] 每一個類中的大多人臉都彼此相似,且每一個類中都存在一個人臉最能代表該 類。
[0023] 在參數值允許時(K = P+e,e等于特殊人臉的個數),那么原人臉集合中的特殊人臉 將會各自被單獨分成一類。
[0024] 假如我們把聚類結果中,各個類中的最有代表性的人臉選擇出來進行上傳,那么 可以推知:結果1保證了準則1的成立;結果2保證了準則2的成立;結果3保證了準則3的成 立。
[0025] 當然,這里還有兩個準則存在討論,首先就是準則2中我們怎么選擇最有代表性的 人臉(K-Means的聚類中心并不是距離和最小的樣本)。其次,就是準則4并不能得到保證。
[0026] 事實上,K-Means聚類在人臉集合上實際使用時,我們往往會遇到以下幾個困難:
[0027] 1.K-Means只能且必須分成K個類,無法自適應地根據數據樣本集中應有類的個數 進行動態調整;
[0028] 2.K-Means的聚類極易受到初始點選取的影響;
[0029] 3.K-Means聚類也特別容易受到離散點的影響;
[0030] 4.K-Means算法的計算是離線式的,也就是說其聚類的執行要預先一次性給清整 個數據樣本集合;
[0031] 5.K-Means的計算量隨著數據點規模的增大而急速增大。
【發明內容】
[0032] 本發明所要解決的技術問題是針對【背景技術】中所涉及到的缺陷,提供一種基于聚 類的在線式多人臉圖像處理的方法。
[0033]本發明為解決上述技術問題采用以下技術方案:
[0034]基于聚類的在線式多人臉圖像處理的方法,人臉聚類的具體步驟如下:
[0035]步驟1),設定初始塊大小B,距離閾值y和類集合S;
[0036] 步驟2),等待一個新來人臉數據樣本的傳入;
[0037] 步驟3),分別計算類集合S中各個類的聚類中心與新來人臉數據樣本之間的距離, 找出與新來人臉數據樣本之間距離最小的類S I;
[0038]步驟4),將類S:與新來人臉數據樣本之間距離與設定的距離閾值y進行比較,如果 類31與新來人臉數據樣本之間距離小于等于距離閾值y,將新來人臉數據樣本加入到SI;如 果類3:與新來人臉數據樣本之間距離大于距離閾值y,建立一個新的類,將新來人臉數據樣 本加入這個新的類,并將該新的類加入到類集合S中;
[0039]步驟5),更新新來人臉數據樣本所在類的聚類中心;
[0040]步驟6),計算當前類集合S中的人臉數,如果類集合S中的人臉數小于B,執行步驟 2);如果類集合S中的人臉數大于或等于B,將當前的聚類結果輸出后,清空類集合S,執行步 驟2)。
[0041] 作為本發明基于聚類的在線式多人臉圖像處理的方法進一步的優化方案,步驟5) 的詳細步驟如下:
[0042] 步驟5.1),對于新來人臉數據樣本所在類中的每個人臉數據樣本,計算其和其他 人臉數據樣本之間的距離和;
[0043]步驟5.2),將距離和最小的人臉數據樣本作為新來人臉數據樣本所在類的聚類中 心。
[0044] 本發明采用以上技術方案與現有技術相比,具有以下技術效果:
[0045] 1.在滿足準則1、2、3成立的前提下,還特別保證了準則4的成立,因為算法是一個 不斷循環并接受新來人臉的過程;
[0046] 2.不對分類數進行限制,不需要考慮初始點的選擇;
[0047] 3.在閾值合理的情況下,離散點不會干擾到最后的結果;
[0048] 4.每一次輸出中,聚類中心一定是具有最大代表性的人臉。
【附圖說明】
[0049] 圖1是本發明基于聚類的在線式多人臉圖像處理方法的流程圖;
[0050] 圖2是用于進行實例說明的簡單人臉數據樣本集展示圖;
[0051] 圖3是簡單人臉數據樣本集經過本方法計算后,獲取到的輸出人臉集合展示圖; [0052]圖4是本發明引入云端人臉識別系統的組件圖。
【具體實施方式】
[0053]下面結合附圖對本發明的技術方案做進一步的詳細說明:
[0054]如圖1所示,本發明公開了一種基于聚類的在線式多人臉圖像處理的方法,包含以 下步驟:
[0055] 步驟1),進行參數設置和初始化。
[0056] 設初始塊大小為B,距離閾值為y,初始化類集合S為空,S中元素的個數為n,當前已 有的人臉數為m,初始狀態時n = 0、m = 0,對外提供一個添加人臉的接口,并有:
[0057] A.用Dist(a,b)表示人臉a和人臉b之間的距離(距離越大,相似度越低);
[0058] B.任取一個類s且s G S,那么令s. center表示類s的聚類中心,s. size表示類s中的 人臉個數;并用Si表示類集合S中的第i個類;
[0059] C.任意的一個算法中的已有人臉都屬于且只屬于一個類,用Sl表示類s中的第i個 人臉,且同時存在Wi表示Si在類s中的權值;
[0060] 步驟2),等待一個新來人臉數據樣本的傳入。
[0061] 步驟3),分別計算類集合S中各個類的聚類中心與新來人臉數據樣本之間的距離, 找出與新來人臉數據樣本之間距離最小的類
[0062]步驟4),將類S:與新來人臉數據樣本之間距離與設定的距離閾值y進行比較,如果 類31與新來人臉數據樣本之間距離小于等于距離閾值y,將新來人臉數據樣本加入到SI;如 果類3:與新來人臉數據樣本之間距離大于距離閾值y,建立一個新的類,將新來人臉數據樣 本加入這個新的類,并將該新的類加入到類集合S中。
[0063] 步驟3)和步驟4)用公式表示具體如下:
[0064] 對任意的一個新來的人臉X,計算并找出一個下標I,使其滿足Dist(x, (Si) ? center) =min{Dist(x, (Si) ? center), i = 1, A ,n},且Dist(x, (Si) ? centerXii。
[0065] 根據結果可以判斷是否尋到到滿足條件的類,若成功找到這樣的一個I,那么就把 x歸到類St*,然后依次令m+= 1、(Sd . size+= 1;若找不到這樣的一個I,比如類集合為空, 各個類的聚類中心到x的距離最小也大于y等,那么就新建一個類,把這個類加入到類集合S 中,再把義歸到這個新的類中,然后依次令1=11+1、11+=1、111+=1、(51).8126+=1。
[0066] 步驟5),對類s = Si進行內部調整,對于新來人臉數據樣本所在類中的每個人臉數 據樣本,計算其和其他人臉數據樣本之間的距離和,將距離和最小的人臉數據樣本作為新 來人臉數據樣本所在類的聚類中心。
[0067] 先計算f = 1,L,uize-1,然后按以下方式更新權值:
[0068] = Wj + dx s , / = l.L ,smzc ~1 ; s,size-\
[0_ 況.-:=z 心, M
[0070]此時,類s中的各個數據樣本,包括新加入的數據樣本都有一個權值與之對應,權 值體現為該數據樣本到其他各個數據樣本的距離之和。根據新的權值,我們更新類的聚類 中心:
[0071 ]找到下標J,使其滿足wj=min{wi, i = l,L,s. size},那么令s.center = sj;
[0072]步驟6),判斷當前算法中已有的樣本數:
[0073] m〈B時,等待新的數據樣本的到來,跳轉到步驟2)執行。
[0074] m>B時,把當前S作為結果輸出,然后清空S,并令n = 0,m = 0,等待新的數據樣本的 到來,跳轉到步驟2)執行。
[0075] 下面通過一個實驗來說明本發明工作的過程。
[0076] 如圖2所示,我們首先給定一個包含冗余人臉、特殊人臉的簡單人臉數據樣本集。 在這個集合中,人臉來自于兩個人(同一行則來自同一個人),前三個樣本表示效果比較好 的,后兩張則表示特殊的情況,如側臉,仰視等。
[0077]通過人臉識別算法,我們可以得到如下的距離表格:
[0079]表頭中的000表示人臉sample_000. jpg,其余則以此類推;表中的數據表示其橫縱 表頭對應的兩個數據樣本間的距離。
[0080] 從表中可以看出,兩兩人臉之間的距離都處在0.1以下。所以我們以0.1作為閾值 y,10(全體數據樣本數)作為塊大小B來初始化算法,然后把整個集合依次傳入該算法中。那 么計算的過程為(用{a}表示一個包含a的集合,那么聚類情況可以用一個二維的集合表 示)。
[0081] 傳入000,其自成一類。算法模塊中的聚類情況為{{000}},聚類中心對應為{000}。 [0082] 傳入001,其與000的距離為0.018,小于0.1,那么它被分配到000對應的類中,在類 內調整中,因為〇〇〇和001對應的權重是一樣的,那么根據算法保持聚類中心不變。算法模塊 中的聚類情況為{{000,001} },聚類中心對應為{000}。
[0083]傳入002,根據算法其被分配到000對應的類中,在類內調整中,各樣本對應的權值 分別為〇〇〇: 0.037,001:0.032,002:0.033,那么經過調整,聚類中心變為001。算法模塊中的 聚類情況為{{〇〇〇,001,002}},聚類中心對應為{001}。
[0084]傳入003,因為003到001的距離為0.200,大于0.1,所以其自成一類。此時算法模塊 中的聚類情況為{{000,001,〇〇2},{003}},聚類中心對應為{001,003}。
[0085] 繼續處理后我們最終可以得到如下結果:
[0086]
[0087] 把聚類中心對應的人臉選擇出來形成輸出人臉集合,那么算法的最終輸出如圖3 所示。我們可以輕松地看出,原本的〇〇〇、〇〇2和006、007已經被精簡掉,并且分別被001和005 代表。也就是說冗余的人臉已經被剔除,而且從距離權值上看,002和005也擁有著各自類中 最大的代表性。其次,原本的特殊人臉003、004、008、009都被很好地保留了下來,作為特殊 的人臉進行了輸出,這也反映了算法具備不漏特殊的性質。
[0088] 為了更一般地去對算法進行評估,我們提出了以下幾個指標:
[0090] 為了讓實驗更具一般性,我們使用了某免費云人臉識別API。因為要聯網上傳圖片 識別的緣故,所以這里的平均一次計算消耗時間比較大。如果使用本地的人臉識別算法,那 么將可以把時間縮減為原來的十分之一至二十分之一。
[0091] 上表中各個指標的意義為:
[0092] 輸入人臉數\輸出人臉數:輸入人臉數表示輸入人臉集合的人臉數;輸出人臉數表 示輸出人臉集合的人臉數。
[0093] 輸入覆蓋人數\輸出覆蓋人數:一個人臉集合的覆蓋人數表示當該集合中的人臉 總共來自n個人時,那么其覆蓋人數就是n。輸入覆蓋人數表示輸入人臉集合的覆蓋人數;輸 出覆蓋人數則表示輸出人臉集合的覆蓋人數。
[0094] 計算次數上限\計算次數:計算次數上限是一個只與塊大小B和人臉集合人臉數c 有關的值,它表示本發明所提出的算法在最壞的情況下(所有的人臉都被分成一類),在塊 大小B的條件下,對人臉數為c的人臉集合進行聚類的計算次數:
[0095] 計算次數上限:
[0096] 左邊中括號內的第一個B-1表示計算新來人臉與聚類中心之間距離的次數,之后 的部分表示類內調整計算新來人臉與類內其他已有人臉之間距離的次數
表示程序總共 會進行多少次分塊計算。
[0097] 計算次數則表示程序統計的求取兩個人臉數據樣本距離的次數。
[0098] 平均一次計算消耗時間:平均一次計算消耗時間等于總計算時長除以計算次數, 其中總計算時長為程序統計的,從第一個人臉被接收開始,直到最后一個人臉被接收且算 法輸出結果為止的程序總耗時,計算次數的含義同上一個指標。該指標用于評估平均每一 次計算的時間消耗。
[0099] 輸入特殊人臉數\輸出特殊人臉數:所謂的特殊人臉,體現在其是某一個人的人 臉,但是其與該人的一般狀態的人臉不相似。它可以是一個人的證件照人臉集合中突然出 現的做表情、側臉或者帶遮擋等的人臉,也可以是一個人的側臉照人臉集合中突然出現的 證件照人臉。由于這個并沒有一個非常明確的指標,所以需要進行手工標定。標定的方法為 當人工認為輸入人臉集合中有兩個以上的人臉相似時,那么這些相似的人臉都不是特殊人 臉,除此之外的就是輸入特殊人臉;而在程序輸出中,一個類中只有一個數據樣本時,那么 這個數據樣本就是一個輸出特殊人臉。輸入特殊人臉數表示輸入人臉集合中,包含的特殊 人臉的個數;輸出特殊人臉數則表示輸出人臉集合中,包含的特殊人臉的個數。
[0100] 特殊人臉命中率:人工認為的特殊人臉和程序認為的特殊人臉在定義上是不同 的,那么就會產生一個問題,假設Sa表示程序輸出的特殊人臉集合,S m表示人工選擇的特殊 人臉集合,但Sa_Sm不一定為空集。所謂的特殊人臉命中率,就是S a中的元素來自概率。 令Count(S)表示集合S中元素的個數。那么特殊人臉命中率的計算公式為:
[0102] 錯誤分類數:正確的分類為人臉與其所在聚類的聚類中心對應的人臉來自同一個 人,如果不是,那么這個人臉的分類就是一次錯誤分類。錯誤分類數表示在算法輸出的聚類 結果中,錯誤分類的次數。
[0103] 類似上述實驗方法,我們還在0RL人臉數據庫上進行了測試:
[0105] 0RL人臉數據庫上的特殊人臉標定時我們硬性地規定每個人選出兩張人臉作為特 殊人臉,但實際上很多人的人臉集合確實不包含特殊人臉。
[0106] 結果表明,本方法在減少冗余、保證結果正確性、不漏特殊人臉以及維持計算規模 方面都有非常顯著的表現,并且滿足了前文提出的4個人臉選擇的準則。
[0107] 我們接下來把該方法用作聚類模塊引入到人臉識別云端系統中。
[0108] 如圖4所示,這是一個結合了本發明方法的簡單客戶端組件圖,其數據流程為:控 制模塊調用網絡攝像頭抓取到包含訪問者的一幀圖片,然后使用算法提供模塊提供的人臉 提取算法,從圖片中截取一個或者多個人臉圖片。之后,再依次調用聚類模塊提供的添加一 張人臉的接口把截取到的人臉圖片添加到聚類模塊中。在聚類模塊中,本發明所提出的算 法使用了算法提供模塊提供的求兩張人臉之間的距離的方法,對添加進來的人臉圖片進行 聚類。最后,當一次分塊計算完成后,聚類模塊再通過網絡傳輸模塊的上傳一張人臉的接 口,把聚類結果中,聚類中心對應的人臉通過網絡傳給主服務器。為了達到實時性、魯棒性 的要求,我們在實現中都采用了類似于消息隊列的伺服機制,各個模塊分別自我維護一個 任務隊列,接口的調用都是通過類似于任務投遞的方式來實現的,然后各個模塊的內部都 會有一個線程來專門負責從任務隊列中抽取任務來執行。同時要注意到的是,聚類模塊在 實現時,要比之前所表述的算法流程更復雜一些。首先為了防止人臉長期滯留內存,我們會 建立一個監控線程來專門計算兩次人臉傳入的時間間隔,當該間隔達到一定大小時,監控 線程就會強制聚類模塊把當前的聚類結果輸出。同時算法各個參數的設置上也不是一次設 置然后就鎖死的,它也能夠根據硬件的計算壓力進行動態地調整,以確保實時性和正確性 的統一。
[0109]我們還可以把該方法用到包含人臉的視頻(文件)的預處理工作中。通過對視頻文 件進行逐幀人臉檢測和提取,我們可以獲得一個包含多個人臉的人臉集合。本發明所提出 的方法能夠對這個人臉集合進行過濾。根據本發明所滿足的4個人臉選擇的準則,過濾的結 果能夠比較好地代表該視頻文件中的人臉情況,同時還降低了人臉的數量。
[0110]以上所述的【具體實施方式】,對本發明的目的、技術方案和有益效果進行了進一步 詳細說明,所應理解的是,以上所述僅為本發明的【具體實施方式】而已,并不用于限制本發 明,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明 的保護范圍之內。
【主權項】
1. 基于聚類的在線式多人臉圖像處理的方法,其特征在于,人臉聚類的具體步驟如下: 步驟1 ),設定初始塊大小B,距離閾值μ和類集合S; 步驟2 ),等待一個新來人臉數據樣本的傳入; 步驟3),分別計算類集合S中各個類的聚類中心與新來人臉數據樣本之間的距離,找出 與新來人臉數據樣本之間距離最小的類S1; 步驟4),將類S1與新來人臉數據樣本之間距離與設定的距離閾值μ進行比較,如果類5: 與新來人臉數據樣本之間距離小于等于距離閾值μ,將新來人臉數據樣本加入到S1;如果類 3:與新來人臉數據樣本之間距離大于距離閾值μ,建立一個新的類,將新來人臉數據樣本加 入這個新的類,并將該新的類加入到類集合S中; 步驟5),更新新來人臉數據樣本所在類的聚類中心; 步驟6),計算當前類集合S中的人臉數,如果類集合S中的人臉數小于Β,執行步驟2);如 果類集合S中的人臉數大于或等于Β,將當前的聚類結果輸出后,清空類集合S,執行步驟2)。2. 根據權利要求1所述的基于聚類的在線式多人臉圖像處理的方法,其特征在于,步驟 5)的詳細步驟如下: 步驟5.1 ),對于新來人臉數據樣本所在類中的每個人臉數據樣本,計算其和其他人臉 數據樣本之間的距離和; 步驟5.2),將距離和最小的人臉數據樣本作為新來人臉數據樣本所在類的聚類中心。
【文檔編號】G06K9/62GK105913001SQ201610210173
【公開日】2016年8月31日
【申請日】2016年4月6日
【發明人】李千目, 陸妍蕾, 李德強, 李濤, 徐佳, 徐小龍
【申請人】南京郵電大學鹽城大數據研究院有限公司