10种轻量级人脸检测算法大PK
幾個(gè)月前,AIZOO曾經(jīng)盤點(diǎn)過(guò)?最強(qiáng)六大開(kāi)源輕量級(jí)人臉檢測(cè)項(xiàng)目分析 | 附打包下載,nihate同學(xué)將它豐富到10種算法,并用Python.對(duì)他們進(jìn)行了匯總整理,以及效果的對(duì)比。
Github鏈接:https://github.com/hpc203/10kinds-light-face-detector-align-recognition 可以閱讀原文跳轉(zhuǎn)。
原文:https://blog.csdn.net/nihate/article/details/108798831?
最近在微信公眾號(hào) AIZOO 里看到輕量級(jí)人臉檢測(cè)算法大盤點(diǎn)的文章,里面還提供了Github源碼地址,我就把它們逐個(gè)下載到本地Win10-CPU機(jī)器上,調(diào)試通過(guò)運(yùn)行。
去年在Github下載過(guò)一個(gè)包含6種人臉檢測(cè)的程序,分別是Pyramidbox,DSFD,S3FD,TinyFace,FaceBox,MTCNN,但是這些算法大多是重量級(jí)的網(wǎng)絡(luò)模型,它在一幅圖片上的人臉檢測(cè)結(jié)果和運(yùn)行耗時(shí)統(tǒng)計(jì)直方圖如下。
運(yùn)行效果如下圖所示:
耗時(shí)效果統(tǒng)計(jì)對(duì)比:
可以看到PyramidBox,DSFD,S3FD,TinyFace這4個(gè)模型是非常耗時(shí)的,對(duì)于比賽刷榜,我們可以用這種很大的模型,但是在工業(yè)界非常不實(shí)用,假如要部署到 ARM 的嵌入式設(shè)備上,大概率直接卡死。
因此我就整理了最近一年之內(nèi)的輕量級(jí)人臉檢測(cè)算法的程序,獨(dú)立編寫一個(gè)包含多種輕量級(jí)人臉檢測(cè)算法集合的程序。PyTorch是我最喜歡的深度學(xué)習(xí)框架,在部署模型的前向推理時(shí),我更喜歡用Opencv的dnn模塊。因而,我收集到的輕量級(jí)人臉檢測(cè)算法的程序如果是基于PyTorch框架的,我就不會(huì)對(duì)代碼做較大的改動(dòng),如果程序是基于Caffe, Tensorflow或者Darknet的,我會(huì)把程序改寫成用Opencv的dnn模塊做人臉檢測(cè)。最后我整理了10種人臉檢測(cè)算法,它們分別是:
-
?Ultra-Light-Fast-Generic-Face-Detector,程序里簡(jiǎn)寫為ultraface
-
?LFFD:A Light and Fast Face Detector for Edge Devices,程序里簡(jiǎn)寫為lffdface
-
?CenterFace, 程序里簡(jiǎn)寫為centerface
-
?DBFace, 程序里簡(jiǎn)寫位dbface
-
?RetinaFace, 程序里簡(jiǎn)寫為retinaface
-
?MTCNN, 程序里簡(jiǎn)寫為mtcnn
-
?SSD, 程序里簡(jiǎn)寫為ssdface
-
?facebox,程序里簡(jiǎn)寫為facebox
-
?yoloface,程序里簡(jiǎn)寫為yoloface
-
?于仕琪老師提出的libfacedetection, 程序里簡(jiǎn)稱為libface
此外,我編寫的程序里還包含 PFLD: A Practical Facial Landmark Detector,它是一個(gè)簡(jiǎn)單、快速、超高精度人臉特征點(diǎn)檢測(cè)算法。到此一共有10種人臉檢測(cè)和1個(gè)人臉關(guān)鍵點(diǎn)檢測(cè)的程序,我用面向?qū)ο蟮乃枷氚衙恳环N人臉檢測(cè)算法寫成一個(gè)類的形式,里面包含構(gòu)造函數(shù)__init__和成員函數(shù)detect。最后,編寫一個(gè)主函數(shù),來(lái)做這10種人臉檢測(cè)算法在同一幅圖上的人臉檢測(cè)結(jié)果和運(yùn)行耗時(shí)的比較。我編寫的這套程序在github上的地址是?
https://github.com/hpc203/10kinds-light-face-detector-align-recognition
我分別測(cè)試了兩幅圖片,第一幅圖片的檢測(cè)結(jié)果和運(yùn)行耗時(shí)統(tǒng)計(jì)直方圖如下:
耗時(shí)對(duì)比如下圖:
第2幅圖片的檢測(cè)結(jié)果和運(yùn)行耗時(shí)統(tǒng)計(jì)直方圖如下:
耗時(shí)對(duì)比如下圖:
這兩幅測(cè)試圖片有鮮明代表性,一幅是只有2個(gè)人臉,另一幅是有好多個(gè)人臉的。ssdface和libface的運(yùn)行速度最快,但是在有密集人臉的場(chǎng)景里,它們漏檢了很多人臉。綜合兩幅圖片的檢測(cè)結(jié)果,考慮檢測(cè)準(zhǔn)確率和運(yùn)行耗時(shí)的折中權(quán)衡,retinaface和lffdface是最優(yōu)選擇。retinaface運(yùn)行耗時(shí)雖然比lffdface的要略長(zhǎng)一點(diǎn),但是retinaface的輸出里有5個(gè)關(guān)鍵點(diǎn)。
在我的程序里還有提取人臉特征向量和計(jì)算人臉特征向量距離的模塊,這兩個(gè)模塊再加上前面的人臉檢測(cè)和關(guān)鍵點(diǎn)檢測(cè)(做人臉對(duì)齊)的模塊,這樣就組成了人臉檢測(cè)+人臉對(duì)齊+人臉識(shí)別,這時(shí)候你就可以構(gòu)造一個(gè)實(shí)時(shí)的人臉識(shí)別系統(tǒng)。具體實(shí)現(xiàn)方式可以參見(jiàn)github代碼里的README.md。程序有不足的地方,還請(qǐng)同行多多指教。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的10种轻量级人脸检测算法大PK的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Facebook经典CTR预估模型
- 下一篇: java深度学习(一)Maven创建一个