<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          人臉識別模型的動手實踐!

          共 3414字,需瀏覽 7分鐘

           ·

          2021-08-20 06:31

          ↑↑↑關(guān)注后"星標(biāo)"Datawhale
          每日干貨 & 每月組隊學(xué)習(xí),不錯過
           Datawhale干貨 
          作者:宋志龍,算法工程師,Datawhale成員

          人臉識別已經(jīng)成為生活中越來越常見的技術(shù),其中最關(guān)鍵的問題就是安全,而活體檢測技術(shù)又是保證人臉識別安全性的一個重要手段,本文將向大家簡單介紹活體檢測,并動手完成一個活體檢測模型的訓(xùn)練,最終實現(xiàn)對攝像頭或者視頻中的活體進行識別。

          我們可以達(dá)成的效果

          人臉識別的技術(shù)關(guān)鍵——活體檢測

          一般提到人臉識別技術(shù),即指人臉比對或人臉匹配,即將待識別的人臉和系統(tǒng)中已經(jīng)提前錄入的人臉信息(如身份證照片)進行特征的比對,而在使用神經(jīng)網(wǎng)絡(luò)提取特征進行比對之前,需要首先對識別到的人臉進行活體檢測,以確定攝像頭前的人是個活人。因此整個人臉識別過程一般為(并非一定要這樣):人臉檢測 -> 關(guān)鍵點檢測 -> 人臉對齊 -> 活體檢測 -> 人臉特征提取 -> 人臉比對。

          模型簡介

          本項目使用基于resnet18的二分類模型對RGB圖像進行活體、非活體的分類識別, 網(wǎng)絡(luò)結(jié)構(gòu)如圖所示,有關(guān)于resnet的知識可自行查閱。

          數(shù)據(jù)集簡介

          本項目數(shù)據(jù)集使用中科院大型人臉活體檢測數(shù)據(jù)庫CACIA-SURF,這是一個包含大量不同年齡段人的多模態(tài)(RGB, Depth,IR)的數(shù)據(jù)集,其中包含大量真實活體人臉樣本,也包含了對應(yīng)的攻擊樣本(數(shù)據(jù)集已上傳至開源數(shù)據(jù)平臺Graviti)。

          如圖所示,圖例中的攻擊樣本是以打印出來的人臉作為攻擊樣本,或者露出五官中的部分結(jié)合打印人臉一起作為攻擊樣本,當(dāng)然還有別的攻擊樣本制作的形式。因此模型訓(xùn)練的目標(biāo)就是要在遇到這些攻擊樣本的時候能夠正確識別出它不是一個活體。

          其中,RGB表示RGB圖片,Depth表示深度圖,IR表示近紅外圖。三個模態(tài)的數(shù)據(jù)可以都用來訓(xùn)練,以使模型適應(yīng)不同圖像采集設(shè)備的需求。為了簡單,本項目僅使用RGB圖像訓(xùn)練。

          數(shù)據(jù)集目錄結(jié)構(gòu)如圖所示:

          Training中為訓(xùn)練集圖片,Val為驗證集圖片,train_list.txt為訓(xùn)練集各個樣本的路徑及標(biāo)簽,val_private_list.txt為驗證集各個樣本的路徑及標(biāo)簽,val_public_list.txt本項目暫時不用

          代碼簡介

          項目環(huán)境:python 3.7.4 、pytorch 1.4.0、其余的opencv、numpy啥的看缺啥裝啥吧。。。

          項目代碼目錄如圖所示(代碼地址見文末)

          其中,alive_detect為自定義的文件夾,里面存放了一些測試視頻,人臉檢測模型權(quán)重等等文件。

          loss文件夾內(nèi)存放了一些損失函數(shù)的實現(xiàn) model文件夾內(nèi)存放了一些模型的實現(xiàn)

          models文件夾是模型訓(xùn)練過程中權(quán)重的保存路徑 process文件夾內(nèi)存放了一些關(guān)于數(shù)據(jù)處理相關(guān)的代碼

          metric.py實現(xiàn)了一些指標(biāo)的計算

          utils.py實現(xiàn)了一些訓(xùn)練或測試用到的小功能函數(shù)

          train_CyclicLR.py是訓(xùn)練代碼,執(zhí)行這個代碼即可啟動訓(xùn)練

          train_Fusion_CyclicLR.py是多模態(tài)數(shù)據(jù)的訓(xùn)練代碼。即同時使用上述數(shù)據(jù)集中的三種模態(tài)的數(shù)據(jù)進行訓(xùn)練

          face_recognize.py是使用訓(xùn)練好的模型進行活體檢測測試的代碼

          項目代碼中給出了訓(xùn)練好的模型權(quán)重示例,models/baseline_color_32/checkpoint/global_min_acer_model.pth。

          執(zhí)行腳本face_recognize.py,即可調(diào)用訓(xùn)練好的模型完成活體檢測。

          訓(xùn)練過程示例

          以resnet18模型為例,使用數(shù)據(jù)集中的RGB圖片進行訓(xùn)練,輸入模型尺寸大小為32。

          開始訓(xùn)練:

          cd alive_recognize_project

          #開啟訓(xùn)練
          #--model baseline , 以resnet18為例,可選其他模型,自行探索
          #--image_size 32 , 輸入活體檢測模型的人臉圖像大小為32
          #--cycle_num 5,訓(xùn)練5個cycle周期
          #--cycle_inter 50, 每個cycle周期內(nèi)訓(xùn)練50個epoch
          #--mode train , 開啟訓(xùn)練模型
          python train_CyclicLR.py --model baseline --image_mode color --image_size 32 --cycle_num 5 --cycle_inter 50 --mode train 

          對cycle_num和cycle_inter參數(shù)的說明,本項目學(xué)習(xí)率衰減策略采用周期性余弦衰減,cycle_num表示周期數(shù),cycle_inter表示一個周期內(nèi)訓(xùn)練的epoch數(shù),即每經(jīng)過cycle_inter個epoch,學(xué)習(xí)率從初始值下降到最低值,如下圖所示。

          然后就開始訓(xùn)練了,期間會打印出一些訓(xùn)練過程中的loss、acc、acer等信息,如需要別的日志信息可自行修改。

          訓(xùn)練完成后的模型保存在路徑models/baseline_color_32/checkpoint下,默認(rèn)保存每個周期內(nèi)最低acer模型、最后一個epoch訓(xùn)練結(jié)束的模型和全局最低acer模型,如下圖所示。

          在驗證集上測試模型

          python train_CyclicLR.py --mode infer_test --model baseline --image_mode color --image_size 32 --batch_size 8

          驗證集上結(jié)果,ACER=0.0358

          模型效果測試

          調(diào)用訓(xùn)練好的模型,對視頻中的人臉進行活體檢測。(也可以檢測攝像頭前的自己,本項目以視頻文件為例)

          測試腳本face_recognize.py參數(shù):

          --alive_detect_model:活體檢測模型權(quán)重

          --key_point_detect_model:關(guān)鍵點檢測模型,路徑為alive_detect/shape_predictor_68_face_landmarks.dat

          --detect_vidio:待檢測的視頻片段存放路徑

          --detect_res:視頻片段的檢測結(jié)果存放路徑

          測試代碼示例:

          python face_recognize.py 
          --alive_detect_model models/baseline_color_32/checkpoint/global_min_acer_model.pth 
          --key_point_detect_model alive_detect/shape_predictor_68_face_landmarks.dat 
          --detect_vidio alive_detect/video_demo.mov 
          --detect_res alive_detect/res_video_demo.avi

          注:--detect_res保存的視頻文件默認(rèn)avi格式,若需要保存其他格式可以自行修改代碼。

          測試結(jié)果示例

          擴展

          1. 關(guān)于模型訓(xùn)練,可繼續(xù)調(diào)參以期在驗證集獲得更好的效果。
          2. 關(guān)于數(shù)據(jù)集,可以使用全部三種模態(tài)的數(shù)據(jù),使用FaceBagNet模型進行多模態(tài)人臉活體檢測模型的訓(xùn)練。已經(jīng)給出相關(guān)代碼,可自行查看。
          數(shù)據(jù)集獲取:https://gas.graviti.cn/dataset/datawhale/CASIA-SURF
          代碼地址:https://github.com/ZJUTSong/Alive_Detect
          閱讀原文獲取數(shù)據(jù)集
          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青青青草网 | 男女噼啪网站 | 日本黄色大片日本美女 | 婷婷亚洲五月色综 | 又黄又爽的美女裸体视频十八禁亚洲 |