基于Caffe的人脸识别实现
http://blog.csdn.net/chenriwei2/article/details/46432727
导言
深度学习深似海、尤其是在图像人脸识别领域,最近几年的顶会和顶刊常常会出现没有太多的理论创新的文章,但是效果摆在那边。
DeepID是深度学习方法进行人脸识别中的一个简单,却高效的一个网络模型,其结构的特点可以概括为两句话:1、训练一个多个人脸的分类器,当训练好之后,就可以把待测试图像放入网络中进行提取特征,2对于提取到的特征,然后就是利用其它的比较方法进行度量。具体的论文可以参照我的一篇论文笔记:【深度学习论文笔记】Deep Learning Face Representation from Predicting 10,000 Classes
首先我们完全参考论文的方法用Caffe设计一个网络结构:
其拓扑图如图1所示:
图1:DeepID的网络结构,图像比较大,需要放大才能看的清楚
网络定义文件:
略
- 1
2. 数据选择
训练一个好的深度模型,一个好的训练数据是必不可少的。针对人脸识别的数据,目前公开的数据也有很多:比如最近的MegaFace、港大的Celbra A、中科研的WebFace 等等。在这里,我选择WebFace人脸数据库作为训练(人脸库不是很干净,噪声较多),图像公共50万张左右,共10575个人,但是数据不平衡。
要评测一个算法的性能,需要找一个公平的比对数据库来评测,在人脸验证中,LFW数据库无疑是最好的选择。在lfw评测中,给出6000千对人脸图像对进行人匹配。
3. 数据处理
训练数据和测试数据都选择好之后,就需要进行数据处理了,为了提供较好的识别准确度,我采用了训练数据和测试数据统一的预处理方法(虽然LFW上有提供已经预处理过的人脸图像,但是预处理的具体参数还是未知的),测试数据和训练数据都采样相同的人脸检测和对齐方法。
主要分为3个步骤:
1,人脸检测
2,人脸特征点检测
3、人脸的对齐
这三个步骤可以用我做的一个小工具:FaceTools 来一键完成。
具体来说,需要选择一个标准的人脸图像作为对齐的基准,我挑选一位帅哥当标准图像:
如图:
训练数据通过对齐后是这样的:
LFW测试数据通过对齐后是这样的:
4.数据转换
图像处理好之后,需要将其转化为Caffe 可以接受的格式。虽然Caffe支持直接读图像文件的格式进行训练,但是这种方式磁盘IO会比较的大,所以我这里不采用图像列表的方式,而是将训练和验证图片都转化为LMDB的格式处理。
4.1 划分训练集验证集
划分训练集和验证集(我采样的是9:1的比例)
脚本如下:
略
- 1
4.2 数据转换
再调用Caffe 提供的转化函数:
脚本如下:
略
- 1
这样之后,训练的数据就准备好了。
训练网络
上面的这些步骤之后,数据就已经处理好了,现在需要指定网络的超参数:
具体超参数设置如下:
略
- 1
训练的时候,可以查看学习曲线:
6.LFW上测试
LFW上,提供了6000对的人脸图像对来作为评测数据,由于我采用的是自己选的人脸检测和对齐方法,所以有些人脸在我的预处理里面丢失了(检测不到),为了简单的处理这种情况,在提特征的时候,没有检测到的图像就用原来的图像去替代。
略
- 1
然后进行人脸的比对
略
- 1
结果ROC曲线:
通过选择合适的脚本,得到的准确度为:0.826333333333, 有点低。
7.结果分析
实验的结果没有理想中的那么好,主要的原因分为几个:
1、数据集不够好:有较多的噪声数据
2、数据集合不平衡:每个人的图片个数从几十张到几百张不等。
3,、网络结构没优化:原始的DeepID的大小为:48*48,而我选择的人脸图像大小为64*64,网络结构却没有相对应的调整。(主要影响在于全连接层的个数太多了)
基于Caffe的人脸识别实现相关推荐
- 【Caffe实践】基于Caffe的人脸识别实现
from: http://blog.csdn.net/chenriwei2/article/details/49500687 导言 深度学习深似海.尤其是在图像人脸识别领域,最近几年的顶会和顶刊常常会 ...
- 【深度学习】基于caffe的表情识别(二):数据集介绍及处理
<基于caffe的表情识别>系列文章索引:http://blog.csdn.net/pangyunsheng/article/details/79434263 一.数据集介绍 在本实验中我 ...
- python人脸识别毕业设计-Python基于Dlib的人脸识别系统的实现
之前已经介绍过人脸识别的基础概念,以及基于opencv的实现方式,今天,我们使用dlib来提取128维的人脸嵌入,并使用k临近值方法来实现人脸识别. 人脸识别系统的实现流程与之前是一样的,只是这里我们 ...
- 基于matlab的人脸五官边缘检测方法,基于MATLAB的人脸识别系统的设计
基于MATLAB的人脸识别系统的设计(论文12000字,外文翻译,参考程序) 摘要:本文基于MATLAB平台设计了一款简单的人脸识别系统,通过USB摄像头来采集图像,经过肤色方法进行人脸检测与定位,然 ...
- python人脸识别训练模型_开源 | 基于Python的人脸识别:识别准确率高达99.38%!
原标题:开源 | 基于Python的人脸识别:识别准确率高达99.38%! 该库使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wi ...
- 【计算机视觉】基于OpenCV的人脸识别
一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...
- DeepMindVGG提出基于集合的人脸识别算法GhostVLAD,精度远超IJB-B数据集state-of-the-art...
点击我爱计算机视觉标星,更快获取CVML新技术 在人脸识别应用中,很多场景能够获取某一个体的多幅人脸图像的集合(比如在监控视频中),使用人脸图像集来做识别,这个问题被称为基于模板的人脸识别(templ ...
- 基于OpenCV实现人脸识别--Python
目录 前言 第一章 OpenCV介绍 第二章 功能描述 2.1 对已有的数据进行检测 2.2 陌生人检测并发出警告 2.3 保存陌生人的视频 2.4 输入图片进行检测 2.5 现场录用信息 第三章 功 ...
- C#基于虹软SDK人脸识别签到系统
C#基于虹软SDK人脸识别签到系统 face-sign-in 基于C#WIINFORM的人脸识别的签到系统,可以使用,使用虹软的SDK开发包,实现了基本的人脸签到后台查看等功能,后续功能不断完善中,敬 ...
- 基于 PCA 的人脸识别系统及人脸姿态分析
文章目录 1 PCA 1.1 原理 1.2 算法流程 1.2.1 零均值化 1.2.2 计算协方差矩阵 1.2.3 特征值和特征向量 1.2.4 降维得到 K 维特征 1.2.5 PCA 的优缺点 2 ...
最新文章
- Python技术栈与Spark交叉数据分析双向整合技术实战--大数据ML样本集案例实战
- Android开发之Activity转场动画
- Python 循环拼接字符串_详解Python拼接字符串的七种方式
- poj 3254 Corn Fields 状态压缩dp
- 微信公众号开发扫码登录(java版)
- ABAP Decimal byte
- swagger api文档_带有Swagger的Spring Rest API –公开文档
- html 转换xslt,XSLT xsl:template 元素
- Eclipse:引用一个项目作为库(图文教程)
- 优达学城深度学习之一——Anaconda
- 判断字符串中是否存在的几种方案:string.indexof、string.contains、list.contains、list.any几种方式效率对比...
- Jfinal中使用Ueditor遇到的问题【解决办法】
- 阿克曼函数的c语言,C语言,关于阿克曼函数非递归实现的一点拙见
- FCM算法理论及其Python实现
- TI FMCW毫米波雷达基础(2)——测速原理
- webrtc 研究-带宽控制
- win7下iTools Android模拟器安装与配置
- 地火明夷 (易經大意 韓長庚)
- 解决挂过代理之后ip不变
- 全面分析前端的网络请求方式