基于人脸5个关键点的人脸对齐(人脸纠正)

摘要:人脸检测模型输出人脸目标框坐标和5个人脸关键点,在进行人脸比对前,需要对检测得到的人脸框进行对齐(纠正),本文将通过5个人脸关键点信息对人脸就行对齐(纠正)。

一、输入图像就行人脸检测:

人脸检测模型输出每个人脸的目标框坐标以及5个关键点坐标。

二、利用5个特征点进行人脸对齐(纠正)

人脸1:

人脸1纠正结果:

人脸2:

人脸2纠正后结果:

人脸3:

人脸3纠正后结果:

三、人脸对齐(纠正)代码示例:

python 复制代码
import cv2
import numpy as np
import skimage.transform


ST_KEYPOINT = np.array(
    [
        [0.34191607, 0.46157411],
        [0.65653393, 0.45983393],
        [0.500225, 0.64050536],
        [0.37097589, 0.82469196],
        [0.63151696, 0.82325089]]
    , dtype=np.float32)


def get_aligned_face(image, keypoint, align_size):
    '''
    Args:
        image: origin imsge
        keypoint: five keypoints with shape of (5, 2)
        align_size: output size of (w, h), exp: (112, 112)
    Returns:
        aligned face with the size of align_size
    '''

    st_kp = ST_KEYPOINT * np.array(align_size)
    st = skimage.transform.SimilarityTransform()  # define the  function of affine transformation
    st.estimate(keypoint, st_kp)  # calculate the matrix of affine transformation
    align_face = cv2.warpAffine(image, st.params[0:2, :], align_size, flags=cv2.INTER_LINEAR, borderValue=0.0)  # face align
    return align_face
相关推荐
THMAIL20 小时前
机器学习从入门到精通 - 机器学习调参终极手册:网格搜索、贝叶斯优化实战
人工智能·python·算法·机器学习·支持向量机·数据挖掘·逻辑回归
ERP老兵-冷溪虎山20 小时前
Python/JS/Go/Java同步学习(第三篇)四语言“切片“对照表: 财务“小南“纸切片术切凭证到崩溃(附源码/截图/参数表/避坑指南/老板沉默术)
java·javascript·python·golang·中医编程·四语言同步学习·职场生存指南
科技树支点20 小时前
无GC的Java创新设计思路:作用域引用式自动内存管理
java·python·go·web·编程语言·编译器
THMAIL1 天前
机器学习从入门到精通 - 集成学习核武器:随机森林与XGBoost工业级应用
人工智能·python·算法·随机森林·机器学习·集成学习·sklearn
%KT%1 天前
简单聊聊3D高斯与传统深度学习在使用CUDA时的不同
人工智能·深度学习
程序员miki1 天前
Pytorch的CUDA版本安装使用教程
人工智能·pytorch·python
小冷coding1 天前
随时随地写代码:Jupyter Notebook+cpolar让远程开发像在本地一样流畅
ide·python·jupyter
Ronin-Lotus1 天前
深度学习篇---pytorch数据集
人工智能·pytorch·深度学习
偷心伊普西隆1 天前
Pandas DataFrame 指南
python·数据分析·pandas
Yokon_D1 天前
Pycharm终端pip install的包都在C:\Users\\AppData\Roaming\Python\解决办法
python·pycharm·pip