--- tags: Human Face --- # Cascade CNN 人臉檢測 (CVPR2015) Paper : A Convolutional Neural Network Cascade for Face Detection ## Face Detection Challenges 1. 由於人臉存在型態多樣化(例:角度,亮度...等),Detector需要更好的特徵提取能力才能更準確地分辨人臉與非人臉。 2. 在實際場景中,人臉的大小不一,圖片中各個位置都可能出現人臉。所以提升 Detector的效率也是一大課題。 ## Contribution 1. 提出了使用Cascade CNN的方式達到快速檢測的目的。 2. 使用CNN-based bbox calibration的方法,提供準確的位置結果。 3. 提出了一個multi-resolution CNN結構,使得能提高分辨人臉與非人臉的準確率。 ## Inferene Pipieline ![](https://i.imgur.com/Zrhb6kS.png) 1. 12-Net - 目的 : 用一個較輕量的Network使得可快速分別每一個image window是否為人臉 - 建造一個Image Pyramid。 - Why use Image Pyramid ? [Ans](https://www.youtube.com/watch?v=w4tigQn-7Jw) ![](https://i.imgur.com/tWvYoCZ.png) - 分別將Image Pyramid上的每一張圖片依照$12/F$的比例做Resize,F是最小可接受的人臉長度。 - >> an image of size 800 × 600 for 40 × 40 faces with 4-pixel spacing, which generates 2494 detection windows. - 舉例來說,若想要預測的圖片是800x600且最小可接受的人臉大小為40x40,那若預測的圖片大小就會Resize成(800x12/40)x(600x12/40)=240x180,共(1+(240-12)/4)x(1+(180-12/4))=2494個框。 - 以Kernel size為12x12且stride=4的方式將resize過後的圖片切成數個12x12的window,並將這些12x12的window分別放入12-Net去預測這些window是否為人臉。 - architecture : ![](https://i.imgur.com/hGYfphC.png) 2. 12-calibration-net - 目的 : 將12-net預測為人臉的Windows放入12-calibration-net得到修正係數並修正Bounding box。 - classifcation net, classify window with 45 classes - class label: - $\{[s_{n},x_{n},y_{n}]\}_{n=1}^{45} \\s_n \in \{0.83, 0.91, 1.0, 1.10, 1.21\} \\x_n \in \{-0.17, 0, 0.17\} \\y_n \in \{-0.17, 0, 0.17\}$ - e.g. class 1 -> $\{0.83, -0.17, -0.17\}$, class 2 -> $\{0.83, 0.17, -0.17\}$ - 修正方式: - 假設某個人臉框的左上角座標為$(x,y)$, 長寬為$(w,h)$,則修正過後人臉框的左上角座標為$(x-\frac{x_{n}w}{s_n},y-\frac{y_{n}h}{s_n})$, 長寬為$(\frac{w}{s_n},\frac{h}{s_n})$ - e.g. 若某人臉框的左上角座標為$(20,20)$, 長寬為$(10,10)$, 經過12-net預測成人臉並經過12-calibration-net預測為class 1,則此人臉框會被修正成左上角座標為$(20-\frac{10\times(-0.17)}{0.83},20-\frac{10\times(-0.17)}{0.83})$, 長寬為$(\frac{10}{0.83},\frac{10}{0.83})$ - architecture : ![](https://i.imgur.com/n05gvco.png) - 實際修正方式 : 將confidence大於threshold的class label取平均 - e.g. 若某人人臉框12-calibration-net並於測出一個confidence score的向量$(c_1,c_2,...,c_{45})=(0.6,0.25,...,0.1)$, 假設threshold=0.2, 則$\{s_{n},x_{n},y_{n}\}={\{\frac{0.83+0.83}{2}}, \frac{0.17+0.17}{2}, \frac{0.17+(-0.17)}{2}\}$ 3. 24-net - 目的 : 將12-net預測為人臉且經過修正之後的人臉框放入24-net(更深的網路)並預測此框是否為人臉框 - architecture : ![](https://i.imgur.com/UQrdDek.png) - 為何使用multi-resolution CNN 結構? > With this multi-resolution structure, the 24-net is supplemented by the information at 12×12 resolution which helpsdetect the small faces. 4. 24-calibration-net - 目的和修正方式如同12-calibration-net ![](https://i.imgur.com/mu7JfOD.png) 5. 48-net - 目的 : 將24-net預測為人臉且經過修正之後的人臉框放入48-net(最深的網路)並預測此框是否為人臉框 - architecture : ![](https://i.imgur.com/aZH2sUd.jpg) 6. 48-calibration-net - 目的和修正方式如同12-calibration-net - architecture : ![](https://i.imgur.com/TMZnuUc.png) ## Training Process - Training Data Preparation: - negative image samples,收集5800張不包含人臉的背景照片 - positive image samples,AFLW人臉數據 - 12-net Training Process - 把圖像上所有人臉框並resize成12x12當作正樣本 - 從背景照片中隨機抽取20萬個12x12的non-face bboxes作為負樣本 - 利用上述正樣本和負樣本訓練12net的二分類網絡 - loss為multinomial logistic regression objective function - 12-calibration-net Training Process - 因為已經有了人臉框的標註,按照修正的公式做對反向操作,就可以分別產生相對應於45個校準分類的人臉圖像,接著將這些人臉圖像resize成12x12得到訓練資料 - loss為multinomial logistic regression objective function - 24-net Training Process - 把圖像上所有人臉框並resize成24x24當作正樣本 - 從背景圖片中隨機抽取20萬個12x12的non-face bboxes, 並利用 12-net + 12-calibration-net組成cascade結構過濾所有non-face bboxes,所有confidence score大於threshod的non-face bboxes當作負樣本(把判斷錯誤的non-face bboxes當作負樣本) - 利用上述正樣本和負樣本訓練24-net的二分類網絡 - 48-net Training Process - 訓練方法與24-net相同 - 24-calibration-net和48-calibration-net Training Process - 訓練方法與12-calibration-net相同