3.2D和3D面部关键点检测
在上一小节中,我们从零开始构建了面部关键点检测器模型。在本节中,我们将学习如何利用专门为2D和3D关键点检测而构建的预训练模型来获取面部的2D和3D关键点。为了完成此任务,我们将使用face-alignment 库.
1 2D关键点检测
import face_alignmentimport cv2import torch._dynamotorch._dynamo.config.suppress_errors = True
file = 'Abdel_Aziz_Al-Hakim_00.jpg'
im = cv2.imread(file)
input = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
fa = face_alignment.FaceAlignment(face_alignment.LandmarksType.TWO_D, flip_input=False, device='cpu')
preds = fa.get_landmarks(input)[0]
print(preds.shape)
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(5, 5))
plt.imshow(input)
ax.scatter(preds[:, 0], preds[:, 1], marker='+', c='r')
plt.show()

2 3D关键点检测
import face_alignmentimport cv2import torch._dynamo
torch._dynamo.config.suppress_errors = Truetorch._dynamo.config.disable = True
file = 'Abdel_Aziz_Al-Hakim_00.jpg'
im = cv2.imread(file)input = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
fa = face_alignment.FaceAlignment(face_alignment.LandmarksType.THREE_D,
flip_input=False, device='cpu')
im = cv2.imread(file)input = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
preds = fa.get_landmarks(input)[0]
import pandas as pddf = pd.DataFrame(preds)df.columns = ['x', 'y', 'z']
import plotly.express as pxfig = px.scatter_3d(df, x='x', y='y', z='z')fig.show()
PyTorch深度学习实战(16)——面部关键点检测