PaddleHub人脸关键点检测
face_landmark_localization
人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别、表情分析、三维人脸重建及三维动画等其它人脸相关问题的前提和突破口。该 PaddleHub Module 的模型转换自 https://github.com/lsy17096535/face-landmark ,支持同一张图中的多个人脸检测。
NOTE: 如果您在本地运行该项目示例,需要首先安装PaddleHub。如果您在线运行,需要首先fork该项目示例。之后按照该示例操作
face_landmark_localization模型链接:https://www.paddlepaddle.org.cn/hubdetail?name=face_landmark_localization&en_category=KeyPointDetection
环境:PaddlePaddle2.0.0rc PaddleHub2.0.0b1 face_landmark_localization 1.0.2(最新版)
一、安装新版Hub
!pip install paddlehub==2.0.0b1 -i https://pypi.tuna.tsinghua.edu.cn/simple
二、定义待预测照片
以本示例中文件夹下face.jpg为待预测图片
image = "face.jpg"
三、API预测
def keypoint_detection(images=None,
paths=None,
batch_size=1,
use_gpu=False,
output_dir='face_landmark_output',
visualization=False)
识别输入图片中的所有人脸关键点,每张人脸检测出68个关键点(人脸轮廓17个点,左右眉毛各5个点,左右眼睛各6个点,鼻子9个点,嘴巴20个点)
参数
- images (list[numpy.ndarray]): 图片数据,ndarray.shape 为 [H, W, C],BGR格式;
- paths (list[str]): 图片的路径;
- batch_size (int): batch 的大小;
- use_gpu (bool): 是否使用 GPU;
- visualization (bool): 是否将识别结果保存为图片文件;
- output_dir (str): 图片的保存路径,当为 None 时,默认设为face_landmark_output。
返回
- res (list[dict]): 识别结果的列表,列表元素为 dict, 有以下两个字段:
- save_path : 可视化图片的保存路径(仅当visualization=True时存在);
- data: 图片中每张人脸的关键点坐标
四、加载预训练模型并预测
import paddlehub as hub
import cv2
face_landmark = hub.Module(name="face_landmark_localization")
# Replace face detection module to speed up predictions but reduce performance
# face_landmark.set_face_detector_module(hub.Module(name="ultra_light_fast_generic_face_detector_1mb_320"))
result = face_landmark.keypoint_detection(images=[cv2.imread(image)],visualization=True)
print(result)
# or
# result = face_landmark.keypoint_detection(paths=['/PATH/TO/IMAGE'])
五、命令行预测
!hub run face_landmark_localization --input_path "face.jpg"