人臉矯正工程實現

2021-10-01 07:28:50 字數 4122 閱讀 6130

face landmark

[1]. mtcnn-pytorch | joint face detection and alignment using multi-task cascaded convolutional networks[2016]

[2]. mtcnn-blog: 

[3]. pfld-pytorch  |  pfld: a practical facial landmark detector[2019-arxiv]

[4]. metricface-pytorch | pytorch for sphereface, cosface, addface, arcface.

opencv : aligment-*****

def face_alignment(img, points, scale=1.0):

# 以mtcnn輸出的5-landmark為例

center = tuple(points[:2,:].mean(axis=0).astype(int)) # 以眉心作為中心

# center = tuple(points[2].astype(int)) # 鼻尖為中心

模型假設:對於任意的人臉[必須與模板人臉(正臉)的尺度相同],可以通過旋轉和平移這兩個操作來得到正臉!

數學表達:x * t = m 或者 x = m * t^(-1)這裡m和x依次表示正臉和任意狀態的臉,t表示變換矩陣。

最優解:t* = argmin_t ||x * t - m||^2

下面以mtcnn得到的5-keypoints為例,詳解face-alignment的細節:

step - 1. 確定正臉模板landmark引數(這裡以module_size = 250 x 250為例子)

dst_pts = np.array([[78.89219125 115.39352792], [170.65572739 114.95848213], [125.06562471 160.1263455 ], 

[ 87.36797174 206.1729942 ], [163.35910559 205.8127267 ]],dtype=np.float32)

step - 2.利用mtcnn獲取待矯正人臉的face_landmark: 

bbox, src_pts = mtcnn.detect_face(src_img)  # mtcnn-pytorch, src_img.shape = (250, 250, 3)
step - 3.求解變換矩陣trans, [詳見gettransmatrix函式]

step - 4.利用變換矩陣trans來align人臉 

python 連續矯正 Python 進行人臉校正

問題描述 在做人臉識別的時候,前期的資料處理過程中可能會遇到乙個問題,即將人臉從不同尺寸的影象中擷取出來,再進行 對齊 操作。這樣可以使每乙個擷取的人臉中的眼睛等位置處於同一位置,會對後面的識別演算法起到一定的優化作用。比如,下面 3 張所示,人臉的位置,影象的大小各不一樣。我們所需要做的就是,將人...

OpenCV實現影像畸變矯正GPU

opencv實現影像矯正使用的是 initundistortrectifymap 計算畸變的對映 remap 計算對映,其詳解見 opencv函式remap詳解 注 k1,k2,p1,p2,k3的順序 只能糾正不考慮skew扭曲引數的情況。mat src cpu imread in filename...

人臉識別工程主要流程

功能 首先將人臉入庫,每個人採集10張人臉影象 然後可以檢測某個人臉是否屬於這個人臉庫中的某個人 一.利用opencv開啟攝像頭並捕捉影象 二.影象預處理 1.影象灰度化 ptr j colorimage width x char 0.072169 colorimage imagedata 3 j ...