美文网首页
人脸Landmark Detection

人脸Landmark Detection

作者: johnzhang123 | 来源:发表于2019-01-09 12:21 被阅读0次

    前言

        因工作需要,最近研究了一些人脸合成的东西。之前并没有接触过cv方面的东西,一切都要从零开始学起。学着学着,发现cv真的挺有意思的,想深入钻研下,当然也想在简书上记录下足迹。好久之前也零零星星写过几篇文字,就没有然后了。这次一定要坚持下来:)
        人脸合成学名叫face morph. 最简单的是2d图片的融合,比如把几个不同人的脸融合在一起,再比如插值生成两图之间的中间状态等。这里既包含了人脸处理里的几个重要的算法,实现起来又不复杂(注:主要参考    learnopencv(https://www.learnopencv.com)里的内容,同时结合自己的理解和实践)
    一般我会分两块来说技术,第一块是背景和理论;第二块是实现和代码。处理人脸的第一步一般都是Landmark Detection(标记检测),所以先说它。

    背景和理论

        计算机处理人脸,先要找到face在哪。怎么找?就是检测landmark。landmark是什么意思呢?就是在脸上绘制的若干标记点,标记点一般画在边、角、轮廓、交叉、等分等关键位置,借助它们就可以描述人脸的形态(shape).
        现在常用的开源landmark检测工具是dlib,其开源模型中的landmark包含68个点,按顺序来说: 0-16是下颌线(红),17-21是右眼眉(橙),22-26是左眼眉(黄),27-35是鼻子(浅绿),36-41是右眼(深绿),42-47是左眼(浅蓝),48-60是嘴外轮廓(深蓝),61-67是嘴内轮廓(紫)。

    obama_landmark.png

        那么dlib是如何做到的呢?算法是基于histogram of oriented gradients (HOG) 和linear classifier,论文是这篇:One Millisecond Face Alignment with an Ensemble of Regression Trees by# Vahid Kazemi and Josephine Sullivan, CVPR 2014, 以后会研究一下。其开源model(shape_predictor_68_face_landmarks)是用300w的图片库训练的( iBUG 300-W face landmark dataset),直接拿来用就是了。

    实现

        dlib有python的封装,所以用起来非常简单。shape_predictor_68_face_landmarks.dat是模型,可以直接下载(http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2),get_facial_landmarks函数返回一个68*2的numpy array就是landmark了。

    import dlib
    import cv2
    
    predictor_path = 'shape_predictor_68_face_landmarks.dat'
    detector = dlib.get_frontal_face_detector()
    predictor = dlib.shape_predictor(predictor_path)
    
    def get_facial_landmarks(image):
        # detect face(s)
        dets = detector(image, 1);
        shape = np.empty([1,1])
        for k, d in enumerate(dets):
            # Get the landmarks/parts for the face in box d.
            shape = predictor(image, d);
            shape = face_utils.shape_to_np(shape);
        return shape;
    
    img = cv2.imread('pic/obama.jpg')
    landmarks = get_facial_landmarks(image)
    print(landmarks)
    

    相关文章

      网友评论

          本文标题:人脸Landmark Detection

          本文链接:https://www.haomeiwen.com/subject/uobwrqtx.html