深度学习与人脸识别系列(3)__基于VGGNet的人脸识别系统

2023-11-03

作者:wjmishuai

出处: http://blog.csdn.net/wjmishuai/article/details/50854155
声明:版权所有,转载请联系作者并注明出处

1.引言

本文中介绍的人脸识别系统是基于这两篇论文:

《Very deep convolutional networks for large-scale image recognition

第一篇论文介绍了海量数据集下的图片检索方法。第二篇文章将这种思想应用到人脸识别系统中,实现基于深度学习的人脸识别。
论文和模型打包下载地址:链接:http://pan.baidu.com/s/1qX4Ozc4 密码:3arl

2.关于深度学习的简要介绍

    现阶段为止, 对于图像分类来说,都是使用人工提取特征的方式来提取图像的特征。为了提高识别的准确率,我们首先需要收集大量的数据,然后利用更强大的模型提取特征,并使用更好的算法来防止过拟合。直到最近几年,带有标签的数据集的规模还是很小的。如果识别任务比较简单,利用小规模的数据集完全可以。例如,针对MNIST数据集上的数字识别程序已经 接近人类的识别能力了 ,并且错误率<0.3%。但是我们都清楚,实际环境中的物体和实验环境中的物体之间的差异还是比较大的,所以,如果想要识别自然环境中的目标,必须使用更大的训练集。事实上,图片数据集过小的问题已经被广泛认可的,并且得到了解决。比如ImageNet数据集由 22000个类别, 15000000多张带标记的高分辨率图像组成

    如何从数以百万计的图像中学习成千上万的目标?我们需要一个学习能力较强的模型。然而,由于识别目标的任务有巨大的复杂性,这就意味着这一问题无法仅仅通过指定大型的数据集,比如引入ImageNet是无法解决问题的。因此我们训练的模型必须弥补先验知识中没有的信息。利用卷积神经网络(CNN)构成的模型,通过深度学习较强的学习能力来表达一张图片可以很好的对图片进行分类。
    VGG是2014年谷歌公司参与imagenet竞赛的一个模型,对于图像分类的效果很好 。因此我们将这个网络应用到人脸识别中。

3. 人脸识别系统的原理

神经网络提取特征的过程:

    一张人脸图片是由基本的edge构成。但是更结构化,更复杂,具有概念性的特征如何表示?这就需要更高层次的特征表示,比如V2,V4。因此V1是像素级特征。V2看V1是像素级的,层次递进,高层表达由低层表达的组合而成。专业点说就是基basis。V1取提出的basis是边缘,然后V2层是V1层这些basis的组合,这时候V2区得到的又是高一层的basis。即上一层的basis组合的结果,上上层又是上一层的组合basis……


直观上说,就是找到make sense的小patch再将其进行combine,就得到了上一层的feature,递归地向上learning feature。

在不同object上做training是,所得的edge basis 是非常相似的,但object parts和models 就会completely different了(那咱们分辨car或者face是不是容易多了):


从文本来说,一个doc表示什么意思?我们描述一件事情,用什么来表示比较合适?用一个一个字嘛,我看不是,字就是像素级别了,起码应该是term,换句话说每个doc都由term构成,但这样表示概念的能力就够了嘛,可能也不够,需要再上一步,达到topic级,有了topic,再到doc就合理。但每个层次的数量差距很大,比如doc表示的概念->topic(千-万量级)->term(10万量级)->word(百万量级)


VGG_Face 网络的配置,列出了每一层滤波器的大小和数量,并且指明了步长和padding的方式:


相关参数的介绍:http://blog.csdn.net/wjmishuai/article/details/50890214


4. 模型的训练过程

如果没有实验条件的话,不建议训练vgg_net。时间太长了,除非你有泰坦x显卡或者更好的显卡,这里给出训练的过程(基于caffe框架),有条件的可以做一下:


5.预训练好的模型

我们这里直接给出训练好的人脸识别模型:链接:http://pan.baidu.com/s/1qX4Ozc4 密码:3arl


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习与人脸识别系列(3)__基于VGGNet的人脸识别系统 的相关文章

随机推荐

  • Python-爬虫(期末报告)

    爬取的是房价网的数据 然后进行展示 初学爬虫 和同组的小伙伴 其实一个组就俩人 一起写的 我写的爬取 只用了正则表达式拿到网页源码里我想要的数据 还有个AJAX请求直接抓取相应对象然后拿到其中有用的数据即可 注释没写完 另一个小伙伴拿我爬取
  • Fully Convolutional Adaptation Networks for Semantic Segmentation

    参考 论文解析之 Fully Convolutional Adaptation Networks for Semantic Segmentation 云 社区 腾讯云 论文网址 Fully Convolutional Adaptation
  • C语言二维数组作为函数参数

    设有整型二维数组a 3 4 如下 0 1 2 34 5 6 78 9 10 11 它的定义为 int a 3 4 0 1 2 3 4 5 6 7 8 9 10 11 设数组a的首地址为1000 各下标变量的首地址及其值如图所示 前面介绍过
  • Android sdk 收集信息,采集SDK-Android 报错

    采集SDK Android 报错 small detect model 找不到 这是说明文档 https ai baidu com docs Face Android SDK top 文档里完全没提到这个文件 我想知道这个文件在哪下载 有什
  • QList中的removeAt()

    QList removeAt removeAt后其他元素的索引值会相应的减小 QList
  • 图像生成质量fid、inception score、KID计算

    FID 简介 fid是一个非常常用的评估图像生成质量的指标 图像生成的论文中经常会用到 fid是一种度量两个图片数据集相似度的方法 我们生成的图片与真实图片越相似越好 相似度高对应的是fid值小 安装 想进一步学的的伙伴可以从理论出发 然后
  • 封装自己的SDK

    我们在开发Spring项目时常常会引入各种xxx spring boot starter的依赖包 然后在配置文件中填入必要的信息 就可以使用依赖提供好的容器 这里是在鱼皮新项目直播中学习到的 特此记录一下 可在未来封装自己的SDK进行封装与
  • openswan安装部署

    Lclient gt Lserver Rserver lt Rclient 172 16 10 16 10 86 10 17 10 86 10 18 192 168 10 16 首先要保证 lclient ping通lserver和rser
  • mysql中的mvcc机制

    MVCC全称是 Multi Version ConCurrency Control 即多版本控制协议 MVCC的主要是靠在每行记录上增加隐藏列和使用undo log来实现的 隐藏列主要包括 改行数据创建的版本号 递增的 删除时间 指向und
  • sql手工注入练习拿flag

    sql手工注入练习拿flag 记录一下自己重新开始学习web安全之路 1 找注入点 url 搜索框 登录框 2 找交互点 用单引号判断是否存在交互点 发现回显不正常 说明url存在有交互点 3 判断类型 char类型 利用and 1 1 和
  • hdu 6127 Hard challenge

    Problem acm hdu edu cn showproblem php pid 6127 Meaning 平面上有 n 个不重合的点 任意三点不共线 任意两点所在直线不经原点 每个点有个 value 任意两个点连出的线段的 value
  • Java 输出数组中指定元素的下标

    输出数组指定元素的下标 public static void main String args 定义一个数组 int array new int 123 456 789 321 654 987 int index printArray ar
  • Chisel入门(三)------Chisel的基本语法2

    概述 继续介绍Chisel的基本语法 3 组件 3 1 Chisel中的组件是模块 Chisel中的每个模块都拓展了class 并包含了接口的io字段 接口是由封装为IO 的Bundle所定义的 Bundle包含的字段表示模块的输入输出端口
  • 用Python3实现文本转语音

    本文首次在公众号 零妖阁 上发表 为了方便阅读和分享 我们将在其他平台进行自动同步 由于不同平台的排版格式可能存在差异 为了避免影响阅读体验 建议如有排版问题 可前往公众号查看原文 感谢您的阅读和支持 利用文本朗读库pyttsx3实现文字转
  • Linux环境rpm yum与dnf详解

    目录 一 rpm工具 1 1 简介 1 2 参数介绍 1 3 常用情景命令 二 yum工具 2 1简介 2 2 常用命令 三 dnf工具 3 1简介 3 2常用命令 本篇文章主要从使用的角度来介绍Linux下rpm yum与dnf三种工具
  • 搭建docker+sonarqube并使用scanner、maven分析项目

    一 搭建docker sonarqube 步骤1 进入服务器 创建一个文件夹sonarqube ssh root ip mkdir sonarqube cd sonarqube 可以选用临时或者正式部署方案 临时部署方案 通用部署 dock
  • 厂房效果图制作

    关于厂房 工厂园区规划 及钢结构类项目效果图制作过程中所经常遇到的一些问题 在这里予以汇总整理 并对场景搭建的流程给予简述 三维场景创建 首先需要把CAD平面规划图纸 或是PDF电子版文档 或是手绘稿等弄清楚 场地占地多少亩 有多少厂房 办
  • 1.1 初识基准测试(Benchmark)

    基准测试 Benchmark 是Go语言中用于衡量代码性能的重要工具 通过编写基准测试函数 并使用testing B提供的方法来记录执行时间和其他指标 我们可以准确地评估代码的性能表现 在开发过程中 合理使用基准测试可以帮助我们优化代码 提
  • 面试系列之基础篇

    强引用 软引用 弱引用 虚引用 一般面试官会这样问 你知道Java中对象的引用类型有哪几种吗 分别讲讲这几种之间的区别 强引用 只要强引用还存在 垃圾收集器永远不会回收被引用的对象 软引用 描述一些还有用但是并非必需的对象 将要发生内存溢出
  • 深度学习与人脸识别系列(3)__基于VGGNet的人脸识别系统

    作者 wjmishuai 出处 http blog csdn net wjmishuai article details 50854155 声明 版权所有 转载请联系作者并注明出处 1 引言 本文中介绍的人脸识别系统是基于这两篇论文 Ver