深度学习之 人脸识别(3) 摄像头识别人脸 实例
继续介绍人脸识别实例,先训练模型(可以用已训练好的模型),SVM 人脸分类训练,预测USB摄像头捕捉的人脸。
1. 下载代码及数据集
开源工程下载,
https://github.com/davidsandberg/facenet
下载后解压出facenet-master文件夹
打开requirements.txt文件,删除tensorflow==1.7,执行命令,
pip3 install -r requirements.txt
下载数据集,
数据解压后放在和facenet-master同集目录下
CASIA-WebFace : 比较大,用于训练模型,读者可自行搜索下载。
lfw : 比较小用于验证模型,下载地址如下:
http://vis-www.cs.umass.edu/lfw/lfw.tgz
下载已训练好的模型,
下载链接:
https://drive.google.com/open?id=1EXPBSXwTaqrSC0OhUdXNmKSh9qJUQ55-
如果不能翻墙,请用下面链接进行下载:
https://download.csdn.net/download/hemro/11862096
2. 训练模型
2.1 使用已训练好的模型
1、下载已训练好的模型
2、人脸对齐
上上一篇已说明,在目标数据集上运行如下命令,会得到lfw_align_160目录:
python src/align/align_dataset_mtcnn.py …/lfw …/lfw_align_160 --image_size 160 --margin 32 --random_order
3、验证模型
在facenet-master目录下运行,20181205-090556为下载的训练好的模型:
python src/validate_on_lfw.py …/lfw_align_160/ …/models/20181205-090556
结果如下,准确率为0.998:
Model directory: …/models/20181205-090556
Metagraph file: model-20180402-114759.meta
Checkpoint file: model-20180402-114759.ckpt-275
Runnning forward pass on LFW images
…
Accuracy: 0.98467±0.00407
Validation rate: 0.90567±0.01995 @ FAR=0.00067
Area Under Curve (AUC): 0.998
Equal Error Rate (EER): 0.015
如果没有训练资源或先不想自己训练模型,直接跳到 “3. SVM分类训练及预测”
2.2 训练模型
1、人脸对齐
上上一篇已说明,在目标数据集上运行如下命令,会得到CASIA-WebFace_align_182目录:
python src/align/align_dataset_mtcnn.py …/CASIA-WebFace …/CASIA-WebFace_align_182 --image_size 182 --margin 44 --random_order
2、训练模型
万事已备只欠东风, 可以开始训练模型了,输入如下命令
python src/train_softmax.py --logs_base_dir …/log --models_base_dir …/models --data_dir …/CASIA-WebFace_align_182/ --model_def models.inception_resnet_v1 --image_size 160 --lfw_dir …/lfw_align_160/ --optimizer RMSPROP --learning_rate -1 --max_nrof_epochs 80 --random_crop --random_flip --learning_rate_schedule_file data/learning_rate_schedule_classifier_casia.txt --weight_decay 5e-5 --center_loss_factor 1e-2 --center_loss_alfa 0.9
看到如下界面,恭喜你,模型训练开始正常工作了。
在facenet-master同一级models目录下创建要一个将要保存模型的目录:
在log目录下看到相关日志:
模型训练运行n小时后结束,在20190704-100427下看到如下类似模型数据:
3、验证模型
和上面一样,模型换成训练出来的新mode即可:
python src/validate_on_lfw.py …/lfw_align_160/ …/models/20190704-100427
3. SVM分类训练及预测
模型已训练好,要排上用场了,用模型计算目标图片的向量,并使用SVM训练分类模型:
1、SVM分类训练
使用已训练好的模型在目标数据库上进行计算,得到每张图片的向量。因为图片都标量好,
所以通过SVM进行分类,得到分类超平面,保存
2、SVM分类验证
在目标数据集上验证其分类效果
下面开始实际操作
1)分类训练,训练好的模型保存到…/models/classifier.pkl
python src\classifier.py TRAIN …/test_images_align_160 …/models/20181205-170307 …/models/classifier.pkl
运行结果
Number of classes: 5
Number of images: 19
Loading feature extraction model
Model directory: …/models/20181205-170307
Metagraph file: model-20181205-170307.meta
Checkpoint file: model-20181205-170307.ckpt-79
Calculating features for images
Training classifier
Saved classifier model to file “…/models/classifier.pkl”
2)训练好的SVM模型分类验证
python src\classifier.py CLASSIFY …/test_images_align_160 …/models/20181205-170307 …/models/classifier.pkl
看到运行结果,分类准确率为100%
Loading feature extraction model
Model directory: …/models/20181205-170307
Metagraph file: model-20180402-114759.meta
Checkpoint file: model-20180402-114759.ckpt-275
Calculating features for images
Testing classifier
… …
14 Liuyifei: 0.910
15 Liuyifei: 0.886
… …
Accuracy: 1.000、
4. USB摄像头捕捉的人脸
USB 捕捉人脸并识别标出对应的姓名
1、构造预测人脸数据集和SVM分类器
其实每个步骤上面已经都做过了:
1)需要预测的人脸图像按名字建立文件夹,并放入相应的人脸照片,
2)人脸对其
3)训练SVM分类器
python src\classifier.py CLASSIFY …/test_images_align_160 …/models/20181205-170307 …/models/classifier.pkl
2、USB捕捉人脸并识别
一切就绪,开始应用了
插上USB摄像头,安装好驱动。
运行:
python contributed\real_time_face_recognition.py --debug
5. 代码导读
inception_resnet_v1.py、inception_resnet_v2.py
— 模型,上一篇已经详细说明,按照模型图读非常好理解。
train_softmax.py
— 使用中心损失训练的模型
Loss计算
L= L_softmax + λL_cneter = Softmax(W_i + b_yj) + λ1/2||f(x_i) - c_yj ||_2^2
prelogits_center_loss, _ = facenet.center_loss(prelogits, label_batch, args.center_loss_alfa, nrof_classes)
tf.add_to_collection(tf.GraphKeys.REGULARIZATION_LOSSES, prelogits_center_loss * args.center_loss_factor)
classifier.py
— SVM人脸分类训练
TRAIN
对提供的图片(目标目录下,每个目录为一个人脸图片)进行分类。这里分类时使用inception模型中输出的embeddings,
然后使用SVM进行分类。
两种模式:
CLASSIFY
目标图片计算embeddings,然后分类好的SVM模型进行分类,取最大概率值对应的类型。
predict.py
— 人脸判别
判断输入图片的人脸判别,这里先用人脸对其(即mtcnn来找到人脸,并把它提取出来),
然后使用classifier判断
train_tripletloss.py
— 三元组损失来训练模型
compare.py
— 计算算图片之间的“距离”
real_time_face_recognition.py
— 捕捉摄像头图片的中人脸并识别
通过网络摄像头捕捉的图片进行人脸判别,再使用classifier判断
深度学习之 人脸识别(3) 摄像头识别人脸 实例相关推荐
- CV:基于深度学习实现目标检测之GUI界面产品设计并实现图片识别、视频识别、摄像头识别(准确度非常高)
CV:基于深度学习实现目标检测之GUI界面产品设计并实现图片识别.视频识别.摄像头识别(准确度非常高) 目录 GUI编程设计界面 产品演示 GUI编程设计界面 产品演示 视频演示:https://bl ...
- 基于深度学习的高精度家禽猪检测识别系统(PyTorch+Pyside6+YOLOv5模型)
摘要:基于深度学习的高精度家禽猪检测识别系统可用于日常生活中或野外来检测与定位家禽猪目标,利用深度学习算法可实现图片.视频.摄像头等方式的家禽猪目标检测识别,另外支持结果可视化与图片或视频检测结果的导 ...
- 深度学习框架下群组行为识别算法综述
源自:电子学报 作者:邓海刚 王传旭 李成伟 林晓萌 摘 要 群组行为识别目前是计算机视觉领域的一个研究热点,在智能安防监控.社会角色理解和体育运动视频分析等方面具有广泛的应用价值. ...
- 基于深度学习的高精度牙齿健康检测识别系统(PyTorch+Pyside6+YOLOv5模型)
摘要:基于深度学习的高精度牙齿健康检测识别系统可用于日常生活中检测牙齿健康状况,利用深度学习算法可实现图片.视频.摄像头等方式的牙齿目标检测识别,另外支持结果可视化与图片或视频检测结果的导出.本系统采 ...
- 基于深度学习的番茄叶部病害识别模型
基于深度学习的番茄叶部病害识别模型 1.研究思路 为实现番茄叶病特征的自动 提取,并提高识别准确率,提出一种基于深度学习的番茄叶病识别模型.该模型基于卷积神经网络对番茄叶部病害特征进行自动提取,获得高 ...
- 无人驾驶汽车系统入门(十一)——深度前馈网络,深度学习的正则化,交通信号识别
无人驾驶汽车系统入门(十一)--深度前馈网络,深度学习的正则化,交通信号识别 在第九篇博客中我们介绍了神经网络,它是一种机器学习方法,基于经验风险最小化策略,凭借这神经网络的拟合任意函数的能力,我们可 ...
- 一种基于深度学习的遥感图像分类及农田识别方法
文章针对现有的神经网络收敛速度慢.识别准确率不高的缺点,提出了一种基于卷积神经网络的遥感图像农田分类及识别方法.该算法使用较大的卷积核,有效地提取梯度信息:设计深度为6层的卷积神经网络,提高了网络的分 ...
- AI Studio 飞桨 零基础入门深度学习笔记6.3-手写数字识别之数据处理
AI Studio 飞桨 零基础入门深度学习笔记6.3-手写数字识别之数据处理) 概述 前提条件 读入数据并划分数据集 扩展阅读:为什么学术界的模型总在不断精进呢? 训练样本乱序.生成批次数据 校验数 ...
- 【人工智能项目】深度学习实现10类猴子细粒度识别
[人工智能项目]深度学习实现10类猴子细粒度识别 任务说明 本次比赛需要选手准确识别10种猴子,数据集只有图片,没有boundbox等标注数据. 环境说明 !nvidia-smi Fri Mar 27 ...
- 深度学习-第T6周——好莱坞明星识别
深度学习-第T6周--好莱坞明星识别 深度学习-第T6周--好莱坞明星识别 一.前言 二.我的环境 三.前期工作 1.导入数据集 2.查看图片数目 3.查看数据 四.数据预处理 1. 加载数据 1.设 ...
最新文章
- linux中cooy命令_Linux复制指令
- Java数据结构 栈中添加辅助栈实现min函数
- Web离线应用解决方案——ServiceWorker
- 世园会开幕式上的机器人_【在国际智能制造大会暨智能机器人大会开幕式上的致辞】世界智能机器人大会...
- oracle expdp 多线程,Oracle expdp 过滤和并行
- 配置通过Apache(httpd)访问Subversion(SVN)1.7资源库
- 从3000米高空,一跃而下…
- 经典水墨素材点缀中国风海报|简约国际范
- 《小艾上班记》—— 读后总结
- android数据分析班,android缓存数据 分析
- 男人要走过几条路才称得上男子汉?
- 如何判断JavaScript数据具体类型
- AC日记——Flag Codeforces 16a
- MySQL 定时备份数据库(包含脚本)
- oracle 英文 简历,免费英文简历范文模板
- 重磅白皮书发布,华为持续引领未来智慧园区建设新模式
- 【解决方法】Windows7 任务计划程序 “任务计划程序服务不可用。任务计划程序将尝试重新与其建立连接。”
- 微信抢票环境配置——nginx + uwsgi + django配置服务器
- Tracing event
- Talk预告 | 上海交通大学计算机系博士生李杰锋方浩树:多人场景,全身136关键点检测与跟踪框架AlphaPose技术讲解