人脸实践篇 | 基于Caffe的年龄&性别识别

2019 年 3 月 19 日 计算机视觉战队





人脸检测及对应属性的识别是现在比较流行的一个技术之一。今天我们“计算机视觉战队”就和大家说说该技术的一些详细细节。

随着社会的发展,快速有效的自动身份验证在安防领域变的越来越迫切。

由于生物特性是人的内在属性,具有很强的自身稳定性和个体差异性,是身份验证的最理想依据。利用人脸属性进行身份验证又是最自然最直接的手段,相比其它人类生物特性,它具有直接、方便的特点,更容易被用户所接受且不易察觉。

近几年也是有很多相关的Paper及技术得到了实现,如:

  • 2015年的一篇文章就简单得到了实现,只要你懂得Alexnet,实现这篇文献的算法,会比较容易。最后的实验结果,Gender accuracy 在86.8%,Age预测精准的值准确率在50.7%,预测年龄段准确率在 84.7%,使用的数据集是Adience;

  • 基于传统方法也有,比如基于LBP,亮度、形状直方图的多尺度特征融合的性别识别,在性别识别中融入信息论概念,对PCA、LDA等经典识别算法进行简化,在简化过程中根据信息熵、互信息量等指标提出一套特征选择理论。最后结果,Gender accuracy基于像素增强为87.85%,基于shape features可以达到91.59%,基于LBP纹理特征也可以到达93.46%,利用三种特征可以得到95.33%,都是在常用的FERET数据集中。

  • 基于形状特征和深度神经网络的现实人脸性别分类,先对人脸进行对齐操作,用深度网络的方法进行分类,在LFW数据库的非正向人脸样本部分做实验,识别率可达到89.3%。

性别识别


性别识别是利用计算机视觉来辨别图像中的人脸性别属性。多年来,人脸性别因为实际场景的需求,如在身份认证、人机接口、视频检索以及机器人视觉中的潜在应用而备受关注。

性别识别是一个复杂的大规模二分类问题,分类器将数据录入并划分男女性别。目前性别识别方法主要有:基于特征脸的性别识别算法(等传统方法)及基于深度学习方法。

基于特征脸的性别识别算法 

基于特征脸的性别识别算法主要是使用PCA。在计算过程中通过消除数据中的相关性,将高维图像降低到低维空间,而训练集中的样本则被映射成低维空间中的一点。当需要判断测试图片性别时,就需要先将测试图片映射到低维空间中,然后计算离测试图片最近样本点是哪一个,将最近样本点的性别赋值给测试图片即可。

下面我们主要讲深度学习方法,那我们开始吧!

年龄及性别识别


import os
import numpy as np
import matplotlib.pyplot as plt
import sys
import caffe
%matplotlib inline  

caffe_root = './caffe/'
sys.path.insert(0, caffe_root + 'python')
plt.rcParams['figure.figsize'] = (10, 10)
plt.rcParams['image.interpolation'] = 'nearest'
plt.rcParams['image.cmap'] = 'gray'

然后我们读取均值文件:

mean_filename='./mean_file/mean.binaryproto'
proto_data = open(mean_filename, "rb").read()
temp = caffe.io.caffe_pb2.BlobProto.FromString(proto_data)
mean  = caffe.io.blobproto_to_array(temp)[0]

读取之前训练好的模型文件:

age_net_pretrained='./models/age_net.caffemodel'
age_net_model_file='./deploy_age.prototxt'
age_net = caffe.Classifier(age_net_model_file, age_net_pretrained,mean=mean,channel_swap=(2,1,0),raw_scale=255,image_dims=(256, 256))

读取Label文件:

age_list=['(0, 2)','(4, 6)','(8, 12)','(15, 20)','(25, 32)','(38, 43)','(48, 53)','(60, 100)']
gender_list=['Male','Female']

读取预测图像及预测结果:

example_image = './example_image.jpg'
input_image = caffe.io.load_image(example_image)
_=plt.imshow(input_image)

prediction = age_net.predict([input_image])  
print('predicted age:', age_list[prediction[0].argmax()])

prediction = gender_net.predict([input_image])
print('predicted gender:', gender_list[prediction[0].argmax()])

特征可视化

做这个的原因,是想通过学习特征过程,其重点学习的特征到底是什么样子的,好让我们有一个空间想象力。

COV1第一层卷积滤波器学习特征的可视化结果,该层主要学习颜色、纹理、边缘等特征,属于较低层特征。

COV1第一层卷积后的可视化结果:

END

今天主要以简单的操作为主,详细的框架介绍及训练和情感属性识别,我们会在“计算机视觉协会知识星球给同学们详细解释。之后,我们“计算机视觉战队公众号平台也会详细和大家一起学习,分享相关的知识推送。

如果想加入我们“计算机视觉战队”,请扫二维码加入学习群。计算机视觉战队主要涉及机器学习、深度学习等领域,由来自于各校的硕博研究生组成的团队,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。

登录查看更多
1

相关内容

【CMU】基于图神经网络的联合检测与多目标跟踪
专知会员服务
56+阅读 · 2020年6月24日
专知会员服务
160+阅读 · 2020年4月21日
【浙江大学】人脸反欺诈活体检测综述
专知会员服务
31+阅读 · 2020年4月15日
【斯坦福&Google】面向机器人的机器学习,63页PPT
专知会员服务
24+阅读 · 2019年11月19日
快速准确的人脸检测&识别新框架(进阶)(文末附源码)
计算机视觉战队
8+阅读 · 2019年8月29日
快速准确的人脸检测、识别和验证新框架(文末附源码)
计算机视觉战队
5+阅读 · 2019年8月28日
干货实践 | 计算机视觉花卉识别模型(代码分享)
计算机视觉战队
10+阅读 · 2019年3月13日
计算机视觉方向简介 | 人脸识别中的活体检测算法综述
计算机视觉life
9+阅读 · 2018年9月26日
人脸表情分类与识别:人脸检测+情绪分类
北京思腾合力科技有限公司
27+阅读 · 2017年12月18日
keras实战︱人脸表情分类与识别:人脸检测+情绪分类
数据挖掘入门与实战
21+阅读 · 2017年12月16日
人脸检测与识别总结
计算机视觉战队
21+阅读 · 2017年11月29日
用户画像之用户性别识别
大数据杂谈
6+阅读 · 2017年6月24日
Learning Recommender Systems from Multi-Behavior Data
Arxiv
7+阅读 · 2018年11月29日
Arxiv
9+阅读 · 2018年3月28日
Arxiv
3+阅读 · 2018年2月12日
VIP会员
相关资讯
快速准确的人脸检测&识别新框架(进阶)(文末附源码)
计算机视觉战队
8+阅读 · 2019年8月29日
快速准确的人脸检测、识别和验证新框架(文末附源码)
计算机视觉战队
5+阅读 · 2019年8月28日
干货实践 | 计算机视觉花卉识别模型(代码分享)
计算机视觉战队
10+阅读 · 2019年3月13日
计算机视觉方向简介 | 人脸识别中的活体检测算法综述
计算机视觉life
9+阅读 · 2018年9月26日
人脸表情分类与识别:人脸检测+情绪分类
北京思腾合力科技有限公司
27+阅读 · 2017年12月18日
keras实战︱人脸表情分类与识别:人脸检测+情绪分类
数据挖掘入门与实战
21+阅读 · 2017年12月16日
人脸检测与识别总结
计算机视觉战队
21+阅读 · 2017年11月29日
用户画像之用户性别识别
大数据杂谈
6+阅读 · 2017年6月24日
Top
微信扫码咨询专知VIP会员