Pages

2009年7月16日 星期四

Baysian 膚色模型

  在做人臉、手勢辨識時,最直覺的做法就是先找膚色,這裡就介紹一下 Bayes 膚色模型。這篇論文是利用條件機率,將每對 (Cb,Cr) 都賦予一個「是否為膚色」的標籤,待訓練完後,每給定一個 (R,G,B),只要轉換到 YCbCr 就可以知道是否為膚色。

  論文中所提及的一些式子,如式 (3)、式 (4),是用成本的概念來說明,如樣本 X 判斷成膚色的成本小於判斷成非膚色的成本,就把樣本 X 決定成膚色。至於其它係數就不用管他,只要知道最後一個實驗出來的結果值:Alpha = 2,剩下就是條件機率的使用了。

  至於要如何訓練,首先要收集一堆 training data,並且把每一張圖片都一分為二:膚色 & 非膚色,也就是說針對某一張圖片,把膚色以外的區域弄成白色,產生一筆 skin data;非膚色以外的區域弄成白色,產生一筆 non-skin data,這裡需要的是人工篩選的動作。接著,開始一一統計以下四個變量:
  1. 膚色點的總數。
  2. 非膚色點的總數。
  3. 每對 (Cb,Cr) 膚色點的數量。
  4. 每對 (Cb,Cr) 非膚色點的數量。
  然後根據論文的式 (10) 與式 (11) 計算每對 (Cb,Cr) 膚色和非膚色的機率,歸類完即可產生一個 225x225 的 training model 了。

  Bayes 條件機率是不錯的觀念,不少演算法以此為核心發展出來,如:Bayes Classifier,甚至有寫成一個函式庫,裡頭都是用條件機率去做的。不過,用條件機率,很大的問題會取決於所收集的資料特性,甚至當正反兩個結果的機率差不多時,準確度就會大大下降。

程式碼下載

相關閱讀:

沒有留言:

 
Blogger Templates