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的人脸识别实现相关推荐

  1. 【Caffe实践】基于Caffe的人脸识别实现

    from: http://blog.csdn.net/chenriwei2/article/details/49500687 导言 深度学习深似海.尤其是在图像人脸识别领域,最近几年的顶会和顶刊常常会 ...

  2. 【深度学习】基于caffe的表情识别(二):数据集介绍及处理

    <基于caffe的表情识别>系列文章索引:http://blog.csdn.net/pangyunsheng/article/details/79434263 一.数据集介绍 在本实验中我 ...

  3. python人脸识别毕业设计-Python基于Dlib的人脸识别系统的实现

    之前已经介绍过人脸识别的基础概念,以及基于opencv的实现方式,今天,我们使用dlib来提取128维的人脸嵌入,并使用k临近值方法来实现人脸识别. 人脸识别系统的实现流程与之前是一样的,只是这里我们 ...

  4. 基于matlab的人脸五官边缘检测方法,基于MATLAB的人脸识别系统的设计

    基于MATLAB的人脸识别系统的设计(论文12000字,外文翻译,参考程序) 摘要:本文基于MATLAB平台设计了一款简单的人脸识别系统,通过USB摄像头来采集图像,经过肤色方法进行人脸检测与定位,然 ...

  5. python人脸识别训练模型_开源 | 基于Python的人脸识别:识别准确率高达99.38%!

    原标题:开源 | 基于Python的人脸识别:识别准确率高达99.38%! 该库使用 dlib 顶尖的深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wi ...

  6. 【计算机视觉】基于OpenCV的人脸识别

    一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...

  7. DeepMindVGG提出基于集合的人脸识别算法GhostVLAD,精度远超IJB-B数据集state-of-the-art...

    点击我爱计算机视觉标星,更快获取CVML新技术 在人脸识别应用中,很多场景能够获取某一个体的多幅人脸图像的集合(比如在监控视频中),使用人脸图像集来做识别,这个问题被称为基于模板的人脸识别(templ ...

  8. 基于OpenCV实现人脸识别--Python

    目录 前言 第一章 OpenCV介绍 第二章 功能描述 2.1 对已有的数据进行检测 2.2 陌生人检测并发出警告 2.3 保存陌生人的视频 2.4 输入图片进行检测 2.5 现场录用信息 第三章 功 ...

  9. C#基于虹软SDK人脸识别签到系统

    C#基于虹软SDK人脸识别签到系统 face-sign-in 基于C#WIINFORM的人脸识别的签到系统,可以使用,使用虹软的SDK开发包,实现了基本的人脸签到后台查看等功能,后续功能不断完善中,敬 ...

  10. 基于 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 ...

最新文章

  1. Python技术栈与Spark交叉数据分析双向整合技术实战--大数据ML样本集案例实战
  2. Android开发之Activity转场动画
  3. Python 循环拼接字符串_详解Python拼接字符串的七种方式
  4. poj 3254 Corn Fields 状态压缩dp
  5. 微信公众号开发扫码登录(java版)
  6. ABAP Decimal byte
  7. swagger api文档_带有Swagger的Spring Rest API –公开文档
  8. html 转换xslt,XSLT xsl:template 元素
  9. Eclipse:引用一个项目作为库(图文教程)
  10. 优达学城深度学习之一——Anaconda
  11. 判断字符串中是否存在的几种方案:string.indexof、string.contains、list.contains、list.any几种方式效率对比...
  12. Jfinal中使用Ueditor遇到的问题【解决办法】
  13. 阿克曼函数的c语言,C语言,关于阿克曼函数非递归实现的一点拙见
  14. FCM算法理论及其Python实现
  15. TI FMCW毫米波雷达基础(2)——测速原理
  16. webrtc 研究-带宽控制
  17. win7下iTools Android模拟器安装与配置
  18. 地火明夷 (易經大意 韓長庚)
  19. 解决挂过代理之后ip不变
  20. 全面分析前端的网络请求方式

热门文章

  1. python_类装饰器
  2. 微信支付开发(1) JS API支付V3版(转)
  3. leetcode------Flatten Binary Tree to Linked List
  4. 30而立--男人必须明白的事
  5. 课堂对Complex类运算符重载的小练习
  6. 转载几篇看过的几篇使用技术博文
  7. 认识并学会springCloud的使用
  8. [转]正确设置nginx/php-fpm/apache权限
  9. Maven生命周期和插件
  10. vim - 自动补齐