人脸识别IU(李知恩)(2)
文章目录
- 前言
- 一、项目结构
- 二、使用步骤
- 1.生成特征向量
- 2.训练模型
- 3.运行结果
- 总结
前言
在之前的对IU的人脸识别中,在使用face_recognition库进行人脸提取的过程中,发现这个人脸识别库还有一个提取特征点的功能,可以根据人脸提取出特征向量。而之前那个利用siamenetwork的效果并不好,我猜测是网络结构不佳,或是数据集没处理好,导致对人脸的特征提取和学习都不够好。那么既然这个face_recognition库能够提取人脸的特征向量,那么可不可以就利用这个向量来训练模型。正是基于这样的想法,我进行了本次尝试。
利用face_recognition库对人物图片提取人脸,并生成特征向量,利用SVM(支持向量机)进行学习,实现二分类任务(是IU/不是IU)。
项目环境:Python 3.6
一、项目结构
二、使用步骤
1.生成特征向量
打开路径中的每一张人脸,生成特征向量后,添加到face_encodings中,最后再统一存放到对应路径下的.npy文件中去。代码如下:
import face_recognition
import numpy as np
import osif __name__ == '__main__':mark1 = 'IU' # 文件标志,用于路径mark2 = 'Other'marks = [mark1, mark2]for mark in marks:root = "E:/Table/学习数据集/face_recognition/data/processed/train/" + mark + '/'img = os.listdir(root)face_encodings = []for i in range(len(img)):try:path = root + '%d.JPG' % iprint(path)image = face_recognition.load_image_file(path)face_encoding = face_recognition.face_encodings(image)[0] # 计算图片对应的编码except (IndexError):print('too much faces, continue')continueelse:face_encodings.append(face_encoding)new_path = "E:/Table/学习数据集/face_recognition/data/" + mark + '.npy'np.save(new_path, face_encodings)
2.训练模型
先读入IU.npy,记录数据长度,将对应标签置为0。再读入Other.npy,将对应标签置为1。利用sklearn库中的svm进行训练,可以得到一个二分类的分类器。将待分辨的人脸提取出特征向量放入分类器clf,得到的结果若是0,则说明是IU,将对应图片复制到指定文件夹下。 代码如下:
from sklearn import model_selection, svm
import numpy as np
import os
from PIL import Image
import face_recognition
import shutilGET_IU = 1if __name__ == '__main__':label = []data_iu = np.load("E:/Table/学习数据集/face_recognition/data/IU.npy")print(len(data_iu))for i in range(len(data_iu)):label.append(0)print(len(label))data_other = np.load("E:/Table/学习数据集/face_recognition/data/Other.npy")print(len(data_other))for i in range(len(data_other)):label.append(1)label = np.asarray(label)label = label.reshape(-1, 1)print(len(label))data = np.vstack((data_iu, data_other))print(len(data))train_data, test_data, train_label, test_label \= model_selection.train_test_split(data, label, random_state=1, train_size=0.6, test_size=0.4)print(train_data.shape)print(train_label.shape)clf = svm.SVC(C=0.8, kernel='rbf', gamma=20, decision_function_shape='ovr')clf.fit(train_data, train_label)print('训练集准确率:%.03f%%' %(100 * clf.score(train_data, train_label)))print('测试集准确率:%.03f%%' %(100 * clf.score(test_data, test_label)))# 开始判别,从’待分辨人脸‘中找出IU存放到’IU_pic‘#############################################################################################if GET_IU == 1:judge_root = 'E:/Table/学习数据集/face_recognition/face_for_judge/'img_judge = os.listdir(judge_root)new_path = 'E:/Table/学习数据集/face_recognition/IU_pic/'result = []n = 0for i in range(len(img_judge)):try:path = judge_root + '%d.JPG' % iprint(path)image = face_recognition.load_image_file(path)face_encoding = face_recognition.face_encodings(image)[0] # 计算图片对应的编码except (IndexError):print('too much faces, continue')continueelse:face_encoding = face_encoding.reshape(1, 128)id = clf.predict(face_encoding)if id == 0:shutil.copy(judge_root + img_judge[i], new_path)n += 1print('/n在%d张图片中,共找到%d张IU的图片' % (len(img_judge), n))#############################################################################################
3.运行结果
在数据集上可以达到很好的效果,但是在实际使用过程中,对IU的人脸识别还是不是很准确。猜测有一部分的可能性是因为我从网上爬取的人物图片中,IU的图片只占了很小一部分(9/1000),这导致二分类的分类器工作难免有较大的误差。将爬取图片中IU图片的比例增大(500/1500),效果确实会好一点点,但也不明显。
总结
我又失败啦,果然在自己爬取的数据集上进行人脸识别还是比较困难的呀。
人脸识别IU(李知恩)(2)相关推荐
- 什么是iu组装服务器,IU李知恩和“买家秀”在“教科书”级别的私有服务器共享是邻居...
T恤在很多女孩心目中可以算是百搭,但是很难穿上一种新时尚单品,因为宽松的款式很难满足女孩突出身材的需求,而极高的舒适性也让她们无法完全抛弃T恤.如果你不知道热门的夏天在t恤上看起来如何好看,让我们看看 ...
- 人脸识别IU(李知恩)
文章目录 前言 一.项目结构 二.数据集准备 三.网络模型 四.具体代码 1.get_face.py 2.find_iu.py 3.spider_iu.py 4.file_deal.py 5.netw ...
- 机器学习——SVM(支持向量机)与人脸识别
目录 系列文章目录 一.SVM的概念与原理 1.SVM简介 2.SVM基本流程 3.SVM在多分类中的推广 二.经典SVM运用于图像识别分类 三.SVM运用于人脸识别 1.预处理 1.1 数据导入与处 ...
- 机器学习——LR(线性回归)、LRC(线性回归分类)与人脸识别
目录 系列文章目录 一.LR的概念.原理与LR用于简单数据的预测 1.LR简介 2.LR算法模型 3.LR用于简单数据的预测 二.LRC的简介与算法流程 1.LRC(线性回归分类)简介 2.LRC算法 ...
- 基于人脸识别的商业大数据1
主要内容: 人脸识别登录 根据人脸识别与浏览记录相结合的方式进行商品和广告推荐 根据表情识别来分别客户对广告推荐的喜好程度 功能性需求: 人脸检测: 通过摄像头获取人脸轮 ...
- 【开发教程15】AI语音人脸识别(会议记录仪/人脸打卡机)-加解密及数据协议
CC3200AI实验教程 --疯壳·开发板系列 加解密及数据协议 在<AI人脸系统架构>一节中,我们提到AI设备与服务器之间的通信协议及TEA加密.这一节主要来讲解一下TEA加密另附上&l ...
- 人脸识别原理详细讲解
人脸识别原理(以GitHub项目face_recognition为例) - 知乎 Github开源人脸识别项目face_recognition - 知乎
- 开源毕业设计:基于嵌入式ARM-Linux的应用OpenCV和QT实现的人脸识别系统(源码+论文)
毕业一载有余,把毕业设计作品分享一下,希望能帮助到有需要的同学们. 资料获取: 帮助/答疑/辅导...等请联系博主,请点如下链接: linux_face.txt · zengzr/share_cont ...
- Python吴恩达深度学习作业16 -- 人脸识别
人脸识别 - the Happy House 在此次作业中,你将学习构建人脸识别系统. 人脸识别问题通常分为两类: 人脸验证:比如在某些机场,系统通过扫描你的护照,然后确认你(携带护照的人)是本人,从 ...
最新文章
- ISME:南土所梁玉婷组-不同气候条件下微生物代谢及残体介导施肥对土壤有机碳的影响...
- Angular2 - Starter - Routes, Route Resolver
- 故障恢复 stm32_硬件编程:77条STM32知识汇总
- Django 模型字段 —— ImageField
- 大学php老师,php高校教师总结计划系统
- 为什么要做漏洞扫描呢?
- 复制中文到linux系统,怎么是的window文字复制到linux下
- Spring之AOP代理模式
- 最新抗灾诗作:生死不离
- 关于hibernate的缓存使用
- 利用Python实现Shp格式向GeoJSON的转换!
- 实习僧-竞品分析报告
- qq人脸更换_QQ安全中心现在怎么替换人脸设置或删除人脸?
- 傅里叶分解、叠加《matplotlib学习》
- [分享]下载电影文件英文标识的含义
- mac电脑显示器分辨率显示异常
- JS Worker执行多线程
- dva处理_dva 源码解读
- 普林斯顿和宾大沃顿早申录取公布,常青藤精英教育一举拿下
- tinymce富文本编辑器的使用