# 多人臉識(shí)別系統(tǒng)
[^]: by CathyZhang
## 背景
> 多人臉識(shí)別停做,又稱為M:N人臉識(shí)別,主要用于會(huì)議大莫、門禁等人流密集的場(chǎng)景中,避免了1:N的問題蛉腌,即在一幀圖片中,只能識(shí)別一張人臉的問題.
> 通過對(duì)視頻流取幀的方式獲取人臉,并與數(shù)據(jù)庫中預(yù)先存入的員工人臉照片做對(duì)比,實(shí)現(xiàn)M:N人臉識(shí)別功能.
## 主要流程
### 人臉識(shí)別深度學(xué)習(xí)部分
> 1. 檢測(cè)圖中多個(gè)人臉的位置只厘,以下操作基于每一張人臉逐一進(jìn)行;
> 2. 根據(jù)關(guān)鍵點(diǎn)對(duì)齊人臉;
> 3. 提取特征,對(duì)比相似度;
### 人臉識(shí)別工程部分
> 1. 從視頻流中按照固定時(shí)間間隔取幀,保存圖片;
> 2. 判斷圖片中是否包含人臉;
> 3. 如果不包含人臉,繼續(xù)處理下一張圖片;如果包含人臉,調(diào)用深度學(xué)習(xí)模型,與庫中圖片逐一對(duì)比,返回相似度;
> 4. 根據(jù)設(shè)定的相似度閾值,將相應(yīng)的userId和時(shí)間返回給服務(wù)端.
## 項(xiàng)目啟動(dòng)步驟
1. 給宿主機(jī)加權(quán)限:xhost +local:username
2. 進(jìn)入Docker容器:
? ```
? docker run -i -t --runtime=nvidia? -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY? --device /dev/video0 --rm multi_face_recog:v1
? ```
3. 開啟專用python環(huán)境:
? ```
? source ~/tf_mtcnn_py27/bin/activate
? ```
4. find_faces_from_webcam.py:啟動(dòng)入口
? - 執(zhí)行程序的語句:
? ? ```
? ? python find_faces_from_webcam.py? --db_folder /root/pics/pic_db? --tolerance 0.4? --mode True
? ? ```
? ? 其中參數(shù)介紹:
? ? --db_folder:人臉庫所在文件夾
? ? --tolerance:容錯(cuò)閾值烙丛,即相似度低于多少數(shù)值(0~1)時(shí),認(rèn)為兩張臉為一個(gè)人羔味,建議為0.4一下
? ? ? --mode:布爾值河咽,True是從攝像頭獲取視頻流,F(xiàn)alse是從圖片獲取
## 競(jìng)品介紹
> 1. MTCNN檢測(cè)算法:該網(wǎng)絡(luò)是目前使用比較廣泛的網(wǎng)絡(luò)赋元,支持多人臉檢測(cè)忘蟹,它包含了人臉檢測(cè)和人臉對(duì)齊。其中人臉檢測(cè)可以用來進(jìn)行后續(xù)的人臉識(shí)別搁凸。人臉對(duì)齊幫我們找出了人臉的眼睛媚值,嘴,鼻子的位置可以用來進(jìn)行對(duì)應(yīng)的3D處理护糖。
>
> 2. FDNet1.0檢測(cè)算法:華為云FDNet1.0算法在WIDER FACE人臉檢測(cè)平臺(tái)中褥芒,采用官方的測(cè)試數(shù)據(jù)集和評(píng)價(jià)標(biāo)準(zhǔn),在多項(xiàng)指標(biāo)上取得了業(yè)界第一嫡良。華為云的一篇人臉檢測(cè)文章FDNet锰扶,目前在wider face上性能僅次于PyramidBox(來自百度献酗,曠視的FAN也蠻屌),基于faster rcnn的改進(jìn)坷牛。
>
> 3. PyramidBox檢測(cè)算法:百度憑借全新的人臉檢測(cè)深度學(xué)習(xí)算法 PyramidBox罕偎,在世界最權(quán)威的人臉檢測(cè)公開評(píng)測(cè)集 WIDER FACE 的「Easy」、「Medium」和「Hard」三項(xiàng)評(píng)測(cè)子集中均榮膺榜首京闰,刷新業(yè)內(nèi)最好成績(jī)锨亏。算法設(shè)計(jì)了新的環(huán)境 anchor 來監(jiān)督用半監(jiān)督方法學(xué)習(xí)到的高層級(jí)的環(huán)境特征,稱為 PyramidAnchors忙干;提出低層級(jí)特征金字塔網(wǎng)絡(luò)來充分結(jié)合高層級(jí)環(huán)境語義特征和低層級(jí)面部特征,也讓 PyramidBox 能夠用單步預(yù)測(cè)所有尺度的面部浪藻;闡述了一個(gè)環(huán)境敏感的結(jié)構(gòu)來提升預(yù)測(cè)網(wǎng)絡(luò)的能力和最終輸出的準(zhǔn)確度捐迫。
> 4. S3FD檢測(cè)算法:該算法是基于SSD來做的改進(jìn);基于不同layer層的不同scale的anchor策略爱葵;一個(gè)尺度修正策略來提高對(duì)小人臉的召回率施戴;max-out類型的分類訓(xùn)練策略,用來減少小人臉的falsepositive率萌丈;
> 5. R-FCN檢測(cè)算法:
> 6. Face R-CNN識(shí)別算法:用Faster R-CNN框架做人臉檢測(cè)赞哗;改進(jìn)點(diǎn)如下:對(duì)于最后的二分類,在softmax的基礎(chǔ)上增加了center loss辆雾。為了使得center loss均衡肪笋,一個(gè)mini batch中正負(fù)樣本比例限制為1:1;每次從正負(fù)樣本中各選出loss最大的N個(gè)樣本加入下次訓(xùn)練度迂;為了弱化尺度影響(或者更好地檢測(cè)小目標(biāo))藤乙,訓(xùn)練階段圖片會(huì)經(jīng)過不同尺度縮放。
[^]: by CathyZhang