caffe 人脸关键点检测_【Caffe实践】基于Caffe的人脸关键点检测实现

引言如果关注Kaggle 机器学习项目的同学,一定很熟悉人脸关键点检测这个任务,在2013 年的时候,ICML举办一个的challgene,现在放在kaggle 上作为 一种最常规kaggle入门任务而存在。本文的主要目的在于验证深度学习模型在人脸点检测效果,踩踩里面的坑。任务介绍人脸关键点检测,也称之为人脸点检测,是在一张已经被人脸检测器检测到的人脸图像中,再进一步检测出五官等关键点的二维坐标信...
摘要由CSDN通过智能技术生成

引言

如果关注Kaggle 机器学习项目的同学,一定很熟悉人脸关键点检测这个任务,在2013 年的时候,ICML举办一个的challgene,现在放在kaggle 上作为 一种最常规kaggle入门任务而存在。

本文的主要目的在于验证深度学习模型在人脸点检测效果,踩踩里面的坑。

任务介绍

人脸关键点检测,也称之为人脸点检测,是在一张已经被人脸检测器检测到的人脸图像中,再进一步检测出五官等关键点的二维坐标信息,以便于后期的人脸对齐(face alignment)任务。

根据不同的任务,需要检测的关键点数目有多有少,有些仅要求检测2只眼睛的坐标位置,有些要求检测眼睛、嘴巴、鼻子的5个坐标位置,还有更多的,68个位置,它包含了五官的轮廓信息。

如图所示:

根据任务,可以把要学习的模型函数表示为:

Y=F(X,W)

其中,X 是输入的人脸图像,W是我们要学习的模型参数,Y∈[(x1,y1),(x2,y2),(x3,y3),(x4,y4),(x5,y5)] 是我们需要检测的人脸点坐标位置。

这是一个典型的回归问题,可以采用最简单的平方误差损失函数,然后用机器学习方法学习这个模型。

Loss=15∑i=15((xi?xi′)2+(yi?yi′)2)

其中(xi,yi)为预测的位置,(xi′,yi′) 为标注的关键点位置。

很显然,也很容易的就将该任务放到caffe中进行学习。

实验过程:

数据准备

由于港中文[1]他们有公开了训练集,所以我们就可以直接使用他们提供的图像库就好了。

数据是需要转化的:

1、框出人脸图像部分,从新计算关键点的坐标

2、缩放人脸框大小,同时更新计算的关键点坐标

3、一些数据增强处理:我只采样了左右对称的增强方法(还可以采用的数据增强方法有旋转图像,图像平移部分)

转换脚本如下:

# -*- coding: utf-8 -*-

# -*- coding: utf-8 -*-

"""

Created on Wed Nov 04 16:36:33 2015

@author: RiweiChen

"""

import skimage

import skimage.io

import numpy as np

import cv2

def face_draw_point(filelist,savePath):

'''

人脸的剪切

'''

fid = open(filelist)

lines = fid.readlines()

fid.close()

for line in lines:

words = line.split(' ')

filename = words[0]

#im=skimage.io.imread(filename)

im=cv2.imread(filename)

#保存人脸的点,需要经过转换

point = np.zeros((10,))

point[0]=float(words[5])

point[1]=float(words[6])

point[2]=float(words[7])

point[3]=float(words[8])

point[4]=float(words[9])

point[5]=float(words[10])

point[6]=float(words[11])

point[7]=float(words[12])

point[8]=float(words[13])

point[9]=float(words[14])

for i in range(0,10,2):

#skimage.draw.circle(point[i+1],point[i])

cv2.circle(im, (int(point[i]),int(point[i+1])), 5, [0,0,255])

#skimage.io.imsave(savePath+filename,imcrop)

cv2.imwrite(savePath+filename,im)

#print words[0]

#print words[1]

def face_prepare(filelist,fileout,savePath,w,h):



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值