人脸识别模块RetinaFace
RetinaFace,人臉檢測用這個。論文地址:
https://arxiv.org/pdf/1905.00641.pdf
代碼地址:
mxnet框架:
https://github.com/deepinsight/insightface/tree/master/RetinaFace
pytorch框架
https://github.com/biubug6/Face-Detector-1MB-with-landmark
?
?
框架: mxnet
專業詞語:
facial attribute 面部特征
facial identity recognition面部識別
face alignment 人臉對齊
?pixel-wise face parsing 逐像素人臉分析
3D dense correspondence regression 三維密集對應回歸
occluded face detection 遮擋人臉檢測
quite coarse and does not contain semantic information相當粗糙,不包含語義信息
morphable models 變形模型
mesh decoder 網格解碼器
Context Modelling:上下文建模
deformable convolution network 可變形卷積網絡
model geometric transformations模型幾何變換
fast localised spectral filtering 快速局域譜濾波
VGA(640X480)大小圖像
介紹:
retinaface是insightface團隊提出的one-stage人臉檢測算法,并開源代碼和數據集,在widerface上有非常好的表現.它利用聯合監督和自我監督(這是啥?)的多任務學習,在各種人臉尺度上執行像素方面(這是?)的人臉定位.
論文主要貢獻:
1)在one-stage目標檢測網絡設計的基礎上,增加兩條平行分支,一支預測五個關鍵點,一支預測每個人臉像素的三維位置和對應關系,這樣網絡總共就是4條平行分支,見圖1;
2)在widerface上,retinaface性能優于現有技術水平預測AP1.1%(AP=91.4%)
3)在IJB-C數據集上,retinaface有助于改進ArcFace驗證精度,這表明更好的人臉定位可以顯著提高人臉識別.
4)通過采用輕量級骨干網絡,retinaface可以在單cpu核上實時運行,以實現vga分辨率的圖像
5)代碼開源并且將自己在widerface上手動標注的5個關鍵面部點數據開源,在這個額外的監督信號的幫助下觀察面部檢測的重要改進,
創新點:
1.整合:人臉檢測,人臉對齊,像素級的人臉分析,3D密集通信回歸
2.通過利用強監督和自監督(這是什么?代碼中體現在哪里)多任務損失函數來實現上述功能.
?
網絡與常規one-stage檢測網絡比較(例如yolo,retinanet)
主要相同點:
都是在不同下采樣層進行預測,且都采用固定的anchors,預測都是相對anchors的偏移量
主要不同點:
retinaface多了關鍵點檢測
訓練數據集已經轉成了MXNet binary format,網絡骨干層包含resnet, mobilefacenet, mobilenet, inceptionresnet_v2,densent,dpn
損失函數包含:softmax, sphereface, cosineface, arcface? and euclidean/angular loss
網絡大致結構
Lcls:人臉分類loss,
Lbox:人臉框回歸loss,
Lpts:人臉關鍵點回歸loss,5點,
Lpixel:自監督3D Mesh Renderer 稠密人臉回歸
??????????????????????????????????????????????????????????? 圖1
?
從該圖可以看出RetinaFace是4條平行的分支,
(1)第一條預測是否是人臉
(2)第二條預測人臉框的偏移量
(3)第三條預測人臉關鍵點的偏移量
(4)沒看懂
另外,類似于YOLO3,采用了多階段預測,就是在網絡不同的下采樣層做預測,論文里,最開始是5種下采樣,這種多階段預測本質上就是retinanet中同樣采用的特征金字塔網絡結構,單階稠密人臉定位,多任務loss學習
?
網絡輸入圖片尺寸為(640,640,3),
第一個下采樣,stride=4, 采樣后得到的特征圖尺寸:640/4=160
第2個下采樣,stride=8, 采樣后得到的特征圖尺寸:640/8=80
....
第5個下采樣,stride=64, 采樣后得到的特征圖尺寸:640/64=10
上述過程可以看成是構造了5層特征金字塔
每層特征圖中的每個點預測3種anchors,則總的anchors數量就是(160*160+80*80+40*40+20*20+10*10)*3=102300,
但是在代碼中,只有stride為(32,16,8)的輸出,且每個點只有兩個anchors
優點:
1.加入了關鍵點的分支,這樣可以確保檢測到的人臉質量,而且在損失函數中也只是將其作為一個比較小的約束項,不怎么會影響分類以及人臉框的判斷,但是一旦關鍵點太過偏離就會使loss相對變大,就會產生約束
總結
以上是生活随笔為你收集整理的人脸识别模块RetinaFace的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决Nvidia显示设置不可用,您当前未
- 下一篇: opencv实现人脸识别(四) 人脸识别