人脸识别(基于Caffe, 来自tyd)

人脸识别(判断是否为人脸)

LMDB(数据库, 为Caffe支持的分类数据源)

  • mkdir face_detect
  • cd face_detect
  • mkdir train val
  • mkdir train/{0,1}
  • mkdir val/{0,1}
  • 将人脸数据放到train/1val/1
  • 将非人脸数据放到val/0val/0
  • vim train.txt

0/xxx.jpg 0
1/xxx.jpg 1
  • vim val.txt

1/xxx.jpg 1
0/xxx.jpg 0
  • 拷贝Caffe自带的脚本根据上面的train.txt和val.txt制作LMDB数据源, 名为face_detect_lmdb.sh
# 修改部分
EXAMPLE=/home/jh/face_detect
DATA=/home/jh/face_detect
TOOLS=caffe安装目录/build/tools TRAIN_DATA_ROOT=/home/jh/face_detect/train/
VAL_DATA_ROOT=/home/jh/face_detect/val/ # 对输入的数据进行大小的调整, 大小的调整是要根据我们要使用的网络模型, 比如AlexNet或者VGG(速度慢)为227x227
RESIZE=true
if $RESIZE; then
RESIZE_HEIGHT=227
RESIZE_WIDTH=227
else
RESIZE_HEIGHT=0
RESIZE_WIDTH=0
fi # 接着修改GLOG_logtostderr那里的$DATA/train.txt, 这个为那个train.txt, $EXAMPLE/face_train_lmdb, 这个为生成的lmdb数据源的位置
# 下面也一样, 修改为val.txt, $EXAMPLE/face_val_lmdb, 这个为val的lmdb数据源生成的位置
  • 指定face_detect_lmdb.sh脚本文件, 如果那些face_val_lmdb已经存在则直接报错, 在执行过程中, 可能会出现Could not open ..., 这个没有关系, 执行的细节为, 先配置train, 在配置val
  • 因为数据源很大, 大约4W, 我们生成的lmdb文件为好几个GB, 再提一下, model大概为好几百MB

模型调优

  • 选择更深的网络, 改用VGG-16
  • 调整学习率
  • 图像增强

训练AlexNet网络(忘了, 去网上找AlexNet的结构图)

  • 对AlexNet进行简单的修改, 对最后的全连接层从1000改为2
  • 创建train.prototxt文件, 在里面写神经网络结构
  • 创建solver.prototxt文件
    • 指定test_iter, 测试多少个batch
    • test_interval: 1000, 迭代1000次进行测试
    • base_lr: 0.001: 基础学习率
    • max_iter: 10000: 最大迭代次数
    • gamma: 0.1
    • stepsize: 20000
    • display: 1000: 每1000次迭代显示一次
    • momentum: 0.9
    • weight_decay: 0.0005
    • snapshot: 10000: 每个10000次保存一次model
    • snapshot_prefix: "/path/to/model": 模型保存的目录
    • solver_mode: CPU: 使用CPU还是GPU

执行模型

  • 创建一个train.sh脚本

/path/to/caffe train --solver=/path/to/solver.prototxt
  • sh train.sh执行
  • 结束会生成一个模型文件(就一个, 就可以直接拿来用了)

网络训练速度限制

  • 网络大小
  • 输入数据的大小, 图片大小

人脸检测

  • Multi-Scale变换

    • 进行多个Scale变换->会导致有多个bbox, 后续需要NMS
    • 保存原始的bboxes, 在后续的时候通过scale factor映射到原始图形上
  • 滑动窗口

    • 多尺度的Scale变换, 对小人脸(如50x50)进行放大转为224x224, 对大脸进行缩小; 对原始图像进行多此缩放, 也就是不断的乘以scale factor知道到一个临界值, 变成一个图像金字塔

人脸识别(基于Caffe)的更多相关文章

  1. 基于人脸识别+IMDB-WIFI+Caffe的性别识别

    本文用记录基于Caffe的人脸性别识别过程.基于imdb-wiki模型做finetune,imdb-wiki数据集合模型可从这里下载:https://data.vision.ee.ethz.ch/cv ...

  2. 【Python+OpenCV】人脸识别基于环境Windows+Python3 version_3(Anaconda3)+OpenCV3.4.3安装配置最新版安装配置教程

    注:本次安装因为我要安装的是win10(64bit)python3.7与OpenCV3.4.3教程(当下最新版,记录下时间2018-11-17),实际中这个教程的方法对于win10,32位又或是64位 ...

  3. 人脸检测数据源制作与基于caffe构架的ALEXNET神经网络训练

    本篇文章主要记录的是人脸检测数据源制作与ALEXNET网络训练实现检测到人脸(基于caffe). 1.数据获取 数据获取: ① benchmark是一个行业的基准(数据库.论文.源码.结果),例如WI ...

  4. paper 97:异质人脸识别进展的资讯

    高新波教授团队异质人脸图像识别研究取得新突破,有望大大降低刑侦过程人力耗费并提高办案效率         近日,西安电子科技大学高新波教授带领的研究团队,在异质人脸图像识别研究领域取得重要进展,其对香 ...

  5. Python Face Recognition 实现人脸识别

    一.Face Recognition软件包 我们的人脸识别基于face_recognition库.face_recognition基于dlib实现,用深度学习训练数据,模型准确率高达99.38%. 人 ...

  6. OpenCV学习(38) 人脸识别(3)

                前面我们学习了基于特征脸的人脸识别,现在我们学习一下基于Fisher脸的人脸识别,Fisher人脸识别基于LDA(线性判别算法)算法,算法的详细介绍可以参考下面两篇教程内容: ...

  7. Python3利用Dlib19.7实现摄像头人脸识别的方法

    0.引言 利用python开发,借助Dlib库捕获摄像头中的人脸,提取人脸特征,通过计算欧氏距离来和预存的人脸特征进行对比,达到人脸识别的目的: 可以自动从摄像头中抠取人脸图片存储到本地,然后提取构建 ...

  8. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  9. 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

随机推荐

  1. TSQL--标示列、GUID 、序列

    --1. IDENTIY 列不能为空,不能设默认值,创建后不能使用ALTER TABLE TableName ALTER COLUMN修改,每张表只能有一个自增列--2. 查看当前值:SELECT I ...

  2. 细节之strcat

    写代码也这么多年了,有些非常基础的东西却让我差点栽跟头: 有如下一种场景的需求代码: char tmp; ]; memset(input, , ); ) // ptr是得到了某块全局内存的 { tmp ...

  3. pageadmin CMS网站建设教程:站点添加自定义字段

    首先看看pagedmin默认的站点设置都有什么,如下图: 这里只有一些最基本的参数设置,用过3.0版本或用过其他公司开发的cms的用户应该有这种体验,在站点设置中可以设置logo图片,备案号,底部内容 ...

  4. “全栈2019”Java第九十八章:局部内部类访问作用域成员详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. 详解sizeof与strlen

    一,sizeof是C语言的一种单目运算符,与C语言的其他运算符++,--一样,它并不是函数:sizeof()以字节为单位给出了操作数的大小:sizeof的值是无符号int. strlen是一个函数,只 ...

  6. 设置、读取、删除cookie

    刚才用虚拟机当服务器,开了两个服务(端口号不同),发现同样的cookie:在别的网站下面没有发现该cookie.说明cookie只是对应相应的网站的(自己得出的结论) ---------------- ...

  7. 两个div标签,控制标签左边固定,右边自适应(滴滴面试题)

    <div id="lt">1</div> <div id="rt">2</div> #lt{ float:lef ...

  8. jquery源码解析:jQuery数据缓存机制详解2

    上一课主要讲了jQuery中的缓存机制Data构造方法的源码解析,这一课主要讲jQuery是如何利用Data对象实现有关缓存机制的静态方法和实例方法的.我们接下来,来看这几个静态方法和实例方法的源码解 ...

  9. Linux之Ubuntu中的安装应用

    在Ubuntu中我们经常会使用apt install “APP name” 来安装需要的应用. 从图中我们可以看到,我们使用apt install map命令安装一个map小游戏,这个小游戏是一个用四 ...

  10. django文章收藏

    http://www.cnblogs.com/suoning/p/5818869.html