0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

這就是你需要的人臉特征點檢測方法

DPVg_AI_era ? 來源:lp ? 2019-03-19 09:35 ? 次閱讀

人臉特征點檢測是人臉檢測過程中的一個重要環(huán)節(jié)。以往我們采用的方法是OpenCV或者Dlib,雖然Dlib優(yōu)于OpenCV,但是檢測出的68個點并沒有覆蓋額頭區(qū)域。Reddit一位網(wǎng)友便在此基礎(chǔ)上做了進一步研究,能夠檢測出81個面部特征點,使得準(zhǔn)確度有所提高。

或許,這就是你需要的人臉特征點檢測方法。

人臉特征點檢測(Facial landmark detection)是人臉檢測過程中的一個重要環(huán)節(jié)。是在人臉檢測的基礎(chǔ)上進行的,對人臉上的特征點例如嘴角、眼角等進行定位。

近日,Reddit一位網(wǎng)友po出一個帖子,表示想與社區(qū)同胞們分享自己的一點研究成果:

其主要的工作就是在人臉檢測Dlib庫68個特征點的基礎(chǔ)上,增加了13個特征點(共81個),使得頭部檢測和圖像操作更加精確。

現(xiàn)在來看一下demo:

demo視頻鏈接:

https://www.youtube.com/watch?v=mDJrASIB1T0

81個特征點,人臉特征點檢測更加精準(zhǔn)

以往我們在做人臉特征點檢測的時候,通常會用OpenCV來進行操作。

但自從人臉檢測Dlib庫問世,網(wǎng)友們紛紛表示:好用!Dlib≥OpenCV!Dlib具有更多的人臉識別模型,可以檢測臉部68甚至更多的特征點。

我們來看一下Dlib的效果:

Dlib人臉特征點檢測效果圖

那么這68個特征點又是如何分布的呢?請看下面這張“面相圖”:

人臉68個特征點分布

但無論是效果圖和“面相圖”,我們都可以發(fā)現(xiàn)在額頭區(qū)域是沒有分布特征點的。

于是,網(wǎng)友便提出了一個特征點能夠覆蓋額頭區(qū)域的模型。

該模型是一個自定義形狀預(yù)測模型,在經(jīng)過訓(xùn)練后,可以找到任何給定圖像中的81個面部特征點。

它的訓(xùn)練方法類似于Dlib的68個面部特征點形狀預(yù)測器。只是在原有的68個特征點的基礎(chǔ)上,在額頭區(qū)域增加了13個點。這就使得頭部的檢測,以及用于需要沿著頭部頂部的點的圖像操作更加精準(zhǔn)。

81個特征點效果圖

這13個額外的特征點提取的方法,是根據(jù)該博主之前的工作完成的。

GitHub地址:

https://github.com/codeniko/eos

該博主繼續(xù)使用Surrey Face Model,并記下了他認為適合他工作的13個點,并做了一些細節(jié)的修改。

當(dāng)然,博主還慷慨的分享了訓(xùn)練的代碼:

1#!/usr/bin/python 2#Thecontentsofthisfileareinthepublicdomain.SeeLICENSE_FOR_EXAMPLE_PROGRAMS.txt 3# 4#Thisexampleprogramshowshowtousedlib'simplementationofthepaper: 5#OneMillisecondFaceAlignmentwithanEnsembleofRegressionTreesby 6#VahidKazemiandJosephineSullivan,CVPR2014 7# 8#Inparticular,wewilltrainafacelandmarkingmodelbasedonasmall 9#datasetandthenevaluateit.Ifyouwanttovisualizetheoutputofthe 10#trainedmodelonsomeimagesthenyoucanrunthe 11#face_landmark_detection.pyexampleprogramwithpredictor.datastheinput 12#model. 13# 14#Itshouldalsobenotedthatthiskindofmodel,whileoftenusedforface 15#landmarking,isquitegeneralandcanbeusedforavarietyofshape 16#predictiontasks.Butherewedemonstrateitonlyonasimpleface 17#landmarkingtask. 18# 19#COMPILING/INSTALLINGTHEDLIBPYTHONINTERFACE 20#Youcaninstalldlibusingthecommand: 21#pipinstalldlib 22# 23#Alternatively,ifyouwanttocompiledlibyourselfthengointothedlib 24#rootfolderandrun: 25#pythonsetup.pyinstall 26# 27#Compilingdlibshouldworkonanyoperatingsystemsolongasyouhave 28#CMakeinstalled.OnUbuntu,thiscanbedoneeasilybyrunningthe 29#command: 30#sudoapt-getinstallcmake 31# 32#AlsonotethatthisexamplerequiresNumpywhichcanbeinstalled 33#viathecommand: 34#pipinstallnumpy 35 36importos 37importsys 38importglob 39 40importdlib 41 42#Inthisexamplewearegoingtotrainafacedetectorbasedonthesmall 43#facesdatasetintheexamples/facesdirectory.Thismeansyouneedtosupply 44#thepathtothisfacesfolderasacommandlineargumentsowewillknow 45#whereitis. 46iflen(sys.argv)!=2: 47print( 48"Givethepathtotheexamples/facesdirectoryastheargumenttothis" 49"program.Forexample,ifyouareinthepython_examplesfolderthen" 50"executethisprogrambyrunning: " 51"./train_shape_predictor.py../examples/faces") 52exit() 53faces_folder=sys.argv[1] 54 55options=dlib.shape_predictor_training_options() 56#Nowmaketheobjectresponsiblefortrainingthemodel. 57#Thisalgorithmhasabunchofparametersyoucanmesswith.The 58#documentationfortheshape_predictor_trainerexplainsallofthem. 59#YoushouldalsoreadKazemi'spaperwhichexplainsalltheparameters 60#ingreatdetail.However,hereI'mjustsettingthreeofthem 61#differentlythantheirdefaultvalues.I'mdoingthisbecausewe 62#haveaverysmalldataset.Inparticular,settingtheoversampling 63#toahighamount(300)effectivelybooststhetrainingsetsize,so 64#thathelpsthisexample. 65options.oversampling_amount=300 66#I'malsoreducingthecapacityofthemodelbyexplicitlyincreasing 67#theregularization(makingnusmaller)andbyusingtreeswith 68#smallerdepths. 69options.nu=0.05 70options.tree_depth=2 71options.be_verbose=True 72 73#dlib.train_shape_predictor()doestheactualtraining.Itwillsavethe 74#finalpredictortopredictor.dat.TheinputisanXMLfilethatliststhe 75#imagesinthetrainingdatasetandalsocontainsthepositionsoftheface 76#parts. 77training_xml_path=os.path.join(faces_folder,"training_with_face_landmarks.xml") 78dlib.train_shape_predictor(training_xml_path,"predictor.dat",options) 79 80#Nowthatwehaveamodelwecantestit.dlib.test_shape_predictor() 81#measurestheaveragedistancebetweenafacelandmarkoutputbythe 82#shape_predictorandwhereitshouldbeaccordingtothetruthdata. 83print(" Trainingaccuracy:{}".format( 84dlib.test_shape_predictor(training_xml_path,"predictor.dat"))) 85#Therealtestistoseehowwellitdoesondataitwasn'ttrainedon.We 86#traineditonaverysmalldatasetsotheaccuracyisnotextremelyhigh,but 87#it'sstilldoingquitegood.Moreover,ifyoutrainitononeofthelarge 88#facelandmarkingdatasetsyouwillobtainstate-of-the-artresults,asshown 89#intheKazemipaper. 90testing_xml_path=os.path.join(faces_folder,"testing_with_face_landmarks.xml") 91print("Testingaccuracy:{}".format( 92dlib.test_shape_predictor(testing_xml_path,"predictor.dat"))) 93 94#Nowlet'suseitasyouwouldinanormalapplication.Firstwewillloadit 95#fromdisk.Wealsoneedtoloadafacedetectortoprovidetheinitial 96#estimateofthefaciallocation. 97predictor=dlib.shape_predictor("predictor.dat") 98detector=dlib.get_frontal_face_detector() 99100#Nowlet'srunthedetectorandshape_predictorovertheimagesinthefaces101#folderanddisplaytheresults.102print("Showingdetectionsandpredictionsontheimagesinthefacesfolder...")103win=dlib.image_window()104forfinglob.glob(os.path.join(faces_folder,"*.jpg")):105print("Processingfile:{}".format(f))106img=dlib.load_rgb_image(f)107108win.clear_overlay()109win.set_image(img)110111#Askthedetectortofindtheboundingboxesofeachface.The1inthe112#secondargumentindicatesthatweshouldupsampletheimage1time.This113#willmakeeverythingbiggerandallowustodetectmorefaces.114dets=detector(img,1)115print("Numberoffacesdetected:{}".format(len(dets)))116fork,dinenumerate(dets):117print("Detection{}:Left:{}Top:{}Right:{}Bottom:{}".format(118k,d.left(),d.top(),d.right(),d.bottom()))119#Getthelandmarks/partsforthefaceinboxd.120shape=predictor(img,d)121print("Part0:{},Part1:{}...".format(shape.part(0),122shape.part(1)))123#Drawthefacelandmarksonthescreen.124win.add_overlay(shape)125126win.add_overlay(dets)127dlib.hit_enter_to_continue()

有需要的小伙伴們,快來試試這個模型吧!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 人臉識別
    +關(guān)注

    關(guān)注

    76

    文章

    4012

    瀏覽量

    81911
  • 人臉特征
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    1299
  • dlib
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    2598

原文標(biāo)題:超越Dlib!81個特征點覆蓋全臉,面部特征點檢測更精準(zhǔn)(附代碼)

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于matlab的人臉檢測K-L的人臉識別(膚色分割和特征提?。?/a>

    基于matlab的人臉檢測K-L的人臉識別(膚色分割和特征提?。hide] [/hide]《labview人臉識別》課程鏈接:http:/
    發(fā)表于 02-22 16:45

    基于openCV的人臉檢測系統(tǒng)的設(shè)計

    通過對基于Adaboost人臉檢測算法的研究,利用該算法與計算機視覺類庫openCV進行人臉檢測系統(tǒng)的設(shè)計,實現(xiàn)了對出現(xiàn)在視頻或圖像中的人臉
    發(fā)表于 12-23 14:19

    【Z-turn Board試用體驗】+ Z-Turn的人臉識別門禁系統(tǒng)項目開發(fā)(二)

    ;5,人臉表示(特征提?。热鏶abor特征和上述的lbp特征,常常會對多種特征進行融合;6,鑒別特征
    發(fā)表于 06-30 17:31

    基于直方圖統(tǒng)計學(xué)習(xí)的人臉檢測方法

    提出一種基于直方圖統(tǒng)計學(xué)習(xí)的人臉檢測方法,對人臉樣本和非人臉樣本進行小波變換,運用一組小波系數(shù)來表征各種
    發(fā)表于 04-15 08:45 ?11次下載

    基于膚色模型和區(qū)域特征的人臉檢測方法

    精度和速度是人臉檢測系統(tǒng)的兩個衡量標(biāo)準(zhǔn)。針對傳統(tǒng)人臉檢測方法兩者不能兼優(yōu)的問題,該文提出一種結(jié)合顏色空間和
    發(fā)表于 04-15 08:55 ?25次下載

    基于DCT和KDA的人臉特征提取新方法

    提出了一種新的人臉特征提取方法,該方法采用DCT對人臉圖像進行降維和去噪,并通過KDA提取人臉
    發(fā)表于 05-25 22:04 ?15次下載

    基于姿態(tài)校正的人臉檢測方法

    本人提出了一種基于姿態(tài)校正的人臉檢測方法,在此基礎(chǔ)上,提出姿態(tài)角度估計目標(biāo)函數(shù),并討論了2種尋優(yōu)方法,該方法在自拍的視頻序列中進行姿態(tài)估計和
    發(fā)表于 04-13 17:24 ?30次下載
    基于姿態(tài)校正<b class='flag-5'>的人臉</b><b class='flag-5'>檢測</b><b class='flag-5'>方法</b>

    基于加權(quán)多尺度張量子空間的人臉圖像特征提取方法_王仕民

    基于加權(quán)多尺度張量子空間的人臉圖像特征提取方法_王仕民
    發(fā)表于 01-08 10:57 ?1次下載

    基于幾何特征與新Haar特征的人臉檢測算法_糜元根

    基于幾何特征與新Haar特征的人臉檢測算法_糜元根
    發(fā)表于 03-19 19:25 ?2次下載

    FAST特征點檢測features2D

    特征點檢測和匹配是計算機視覺中一個很有用的技術(shù)。在物體檢測,視覺跟蹤,三維常年關(guān)鍵等領(lǐng)域都有很廣泛的應(yīng)用。這一次先介紹特征點檢測的一種
    發(fā)表于 11-29 09:10 ?3529次閱讀
    FAST<b class='flag-5'>特征</b><b class='flag-5'>點檢測</b>features2D

    firefly人體特征點檢測介紹

    配置高清單目攝像頭,可以清晰地檢測人體關(guān)鍵特征點。人體骨骼特征點檢測幀率15fps/640*480,檢測精度95%;手指關(guān)鍵
    的頭像 發(fā)表于 11-05 16:07 ?1564次閱讀
    firefly人體<b class='flag-5'>特征</b><b class='flag-5'>點檢測</b>介紹

    基于特征圖融合的小尺寸人臉檢測方法

    特征圖,使用不同的特征檢測不同大小的人臉。然后,通過將較深的特征圖和較淺的特征圖進行融合,合理
    發(fā)表于 05-29 14:17 ?10次下載

    PFLD:一個實用的人臉關(guān)鍵點檢測

    人臉關(guān)鍵點檢測是一個非常核心的算法業(yè)務(wù),其在許多場景中都有應(yīng)用。比如我們常用的換臉、換妝、人臉識別等2C APP中的功能,都需要先進...
    發(fā)表于 02-07 12:33 ?3次下載
    PFLD:一個實用<b class='flag-5'>的人臉</b>關(guān)鍵<b class='flag-5'>點檢測</b>器

    DCNN網(wǎng)絡(luò)結(jié)構(gòu) DCNN的人臉特征點檢測

    問題的方法。通過添加更多的卷積層穩(wěn)定地增加網(wǎng)絡(luò)的深度,并且在所有層中使用3×3的卷積濾波器,有效減小參數(shù),更好地解決了人臉特征點檢測問題。然后計算雙眼角與嘴角所成平面與正視時此平面的單
    發(fā)表于 07-20 14:30 ?0次下載

    人臉檢測的五種方法各有什么特征和優(yōu)缺點

    人臉檢測是計算機視覺領(lǐng)域的一個重要研究方向,主要用于識別和定位圖像中的人臉。以下是五種常見的人臉檢測方法
    的頭像 發(fā)表于 07-03 14:47 ?852次閱讀