嵌入式人工智能應用
人臉檢測
- 嵌入式人工智能應用
- 1 人臉檢測
- 1.1 CNN 介紹
- 1.2 人臉檢測原理
- 1.3 MTCNN介紹
- 1.4 NCNN介紹
- 2 系統安裝
- 2.1 安裝依賴庫NCNN
- 2.2 運行對應的庫
- 3 總結
1 人臉檢測
1.1 CNN 介紹
卷積神經網絡。卷積是什么意思呢?從數學上說,卷積是一種運算。它是我們學習高等數學之后新接觸的一種運算。在泛函分析中,卷積、旋積或摺積(英語:Convolution)是通過兩個函數 f 和 g 生成第三個函數的一種數學算子,表征函數 f 與 g 經過翻轉和平移的重疊部分函數值乘積對重疊長度的積分。
卷積神經網絡聽起來像是一個奇怪的生物學和數學的結合,但是這些網絡已經成為計算機視覺領域最具影響力的創新之一。2012 年是神奇網絡成長的第一年,Alex Krizhevsky 用它們贏得了當年的 ImageNet競賽(基本上是計算機視覺年度奧運會),把分類錯誤記錄從 26%降到了 15%,這個驚人的提高從那以后,許多公司一直在以服務為核心進行深度學習。Facebook 使用自動標記算法的神經網絡,谷歌的照片搜索,亞馬遜的產品推薦,Pinterest 的家庭飼料個性化和 Instagram 的搜索基礎設施。
卷積神經網路(Convolutional Neural Network, CNN)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋范圍內的周圍單元,對于大型圖像處理有出色表現。卷積神經網路由一個或多個卷積層和頂端的全連通層(對應經典的神經網路)組成,同時也包括關聯權重和池化層(pooling layer)。這一結構使得卷積神經網路能夠利用輸入數據的二維結構。與其他深度學習結構相比,卷積神經網路在圖像和語音識別方面能夠給出更好的結果。這一模型也可以使用反向傳播算法進行訓練。相比較其他深度、前饋神經網路,卷積神經網路需要考量的參數更少,使之成為一種頗具吸引力的深度學習結構。 卷積網絡是一種專門用于處理具有已知的、網格狀拓撲的數據的神經網絡。
1.2 人臉檢測原理
人臉檢測的目標是找出圖像中所有的人臉對應的位置,算法的輸出是人臉外接矩形在圖像中的坐標,可能還包括姿態如傾斜角度等信息。雖然人臉的結構是確定的,由眉毛、眼睛、鼻子和嘴等部位組成,近似是一個剛體,但由于姿態和表情的變化,不同人的外觀差異,光照,遮擋的影響,準確的檢測處于各種條件下的人臉是一件相對困難的事情。
簡單敘述,人臉檢測的難點在于:人臉可能出現在圖像中的任何一個位置;人臉可能有不同的大小;人臉在圖像中可能有不同的視角和姿態;人臉可能部分被遮擋。由于人臉可能出現在圖像的任何位置,在檢測時用固定大小的窗口對圖像從上到下、從左到右掃描,判斷窗口里的子圖像是否為人臉,這稱為滑動窗口技術(sliding window)。為了檢測不同大小的人臉,還需要對圖像進行放大或者縮小構造圖像金字塔,對每張縮放后的圖像都用上面的方法進行掃描。由于采用了滑動窗口掃描技術,并且要對圖像進行反復縮放然后掃描,因此整個檢測過程會非常耗時。
人臉檢測是計算機視覺領域被深入研究的經典問題,在安防監控、人證比對、人機交互等領域都有重要的應用價值。數碼相機、智能手機等端上的設備已經大量使用人臉檢測技術實現成像時對人臉的對焦、圖集整理分類等功能,各種虛擬美顏相機也需要人臉檢測技術定位人臉,然后才能根據人臉對齊的技術確定人臉皮膚、五官的范圍然后進行美顏。在人臉識別的流程中,人臉檢測是整個人臉識別算法的第一步。
1.3 MTCNN介紹
MTCNN,Multi-task convolutional neural n