1. 实现功能: 载入LFW数据集的每张图片,作为比对数据库。采集摄像头中的人脸进行比对,计算出与你最像的人

LFW (LFW(Labeled Faces in the Wild Home)
lfw数据集是为了研究 非限制环境下的人脸识别问题而建立。LFW 数据库主要是从互联网上搜集图像,而不是实验室,一共含有13000 多张人脸图像,每张图像都被标识出对应的人的名字。
LFW数据集主要测试人脸识别的准确率,该数据库从中随机选择了6000对人脸组成了人脸辨识图片对,其中3000对属于同一个人2张人脸照片,3000对属于不同的人每人1张人脸照片。测试过程LFW给出一对照片,询问测试中的系统两张照片是不是同一个人,系统给出“是”或“否”的答案。通过6000对人脸测试结果的系统答案与真实答案的比值可以得到人脸识别准确率。 这个集合被广泛应用于评价 face verification算法的性能。

  1. 代码实现
# LFW数据集加载识别人脸
import face_recognition
import cv2
import os
import numpy as npdef face(path):#存储知道人名列表known_names=[] #存储知道的特征值known_encodings=[]cnt = 0cnt_error = 0for image_name in os.listdir(path):for real_image in os.listdir(path+image_name):   cnt = cnt + 1 load_image = face_recognition.load_image_file(path+image_name+'/'+real_image) #加载图片if not len(face_recognition.face_encodings(load_image)): cnt_error = cnt_error+1print(cnt_error,"pictures can't be recognized")else:image_face_encoding = face_recognition.face_encodings(load_image)[0] #获得128维特征值known_names.append(image_name)known_encodings.append(image_face_encoding)if cnt%10 ==0: print(cnt,'pictures loaded')  print(cnt,'pictures succesfully loaded.')#打开摄像头,0表示内置摄像头video_capture = cv2.VideoCapture(0) process_this_frame = Truewhile True:ret, frame = video_capture.read()# opencv的图像是BGR格式的,而我们需要是的RGB格式的,因此需要进行一个转换。rgb_frame = frame[:, :, ::-1]if process_this_frame:face_locations = face_recognition.face_locations(rgb_frame)#获得所有人脸位置face_encodings = face_recognition.face_encodings(rgb_frame, face_locations) #获得人脸特征值face_names = [] #存储出现在画面中人脸的名字for face_encoding in face_encodings:         distance_list = face_recognition.face_distance(known_encodings,face_encoding)idx=np.argmin(distance_list)name = known_names[idx]face_names.append(name)process_this_frame = not process_this_frame# 将捕捉到的人脸显示出来for (top, right, bottom, left), name in zip(face_locations, face_names):cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2) # 画人脸矩形框# 加上人名标签cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)font = cv2.FONT_HERSHEY_DUPLEX cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)cv2.imshow('frame', frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakvideo_capture.release()cv2.destroyAllWindows()if __name__=='__main__':face("F:/traindata/lfw/") #存放已知图像路径
  1. 结果与分析

(1) face_recognition对IFW数据集的人脸识别情况

LFW数据集包含5749个人物,每个人物有多张图片,共有13233张图片
从结果来看,57张人物不能识别到人脸,face_recognition对LFW数据集的人脸识别率99.57%(不是识别准确率)

(2)摄像头中的我和谁最像

识别到我和Zaini_Abdullah最像,再使用我的文章人脸识别(二)中的人脸比对程序看一下,相似度达到79%

  1. 讨论
    (1)最大的问题是,加载1万多张图片时间长达数小时,然而IFW还是一个较小的数据集

后续可考虑将人脸编码的128维特征值存入数据库,直接读出人脸数据,应该会快一些

(2)科研与工业中的人脸识别不同,准确率基本上难以做到100%,而目前应用的人脸识别应用只是起到一个筛选的作用,常常需要配合其他方式进行双重或多重认证 ,或者局限于某些场景中较少的人多环境(不同的光线、角度等)的识别,工业应用更加注重快速落地

人脸识别(三) 摄像头中的人脸识别+LFW数据集测试相关推荐

  1. 使用OpenCV-python识别图片视频中的人脸和眼睛

    文章目录 思路和核心代码 识别图像中的人脸 识别视频中的人脸和眼睛 思路和核心代码 思路如下: 首先需要一个训练好的人脸和眼睛特征数据库,用于识别人脸和眼睛 识别出人脸和眼睛之后,返回所在的区域(一般 ...

  2. CNN实现摄像头中人物的识别

    在此之前我已经大概说过tensorflow的简单流程,中间应用函数我会在例子中加以注释(更详细的可以查阅tensorflow中的函数讲解).应用cnn实现的视频中人物识别,本想先讲一下cnn的原理,但 ...

  3. OpenCV从摄像头中检测人脸

    准备工作 首先从GitHub(https://github.com/opencv/opencv)下载文件并解压,从data文件夹中的haarcascades复制一下文件放在自己的项目中 代码实现 # ...

  4. frame中src怎么设置成一个变量_OpenCV图像人脸检测及视频中的人脸检测(附源码)...

    文章目录 一.数据和知识准备 1. 下载HAAR与LBP数据 2. opencv相关知识 二.python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检测 3. 视频中人脸检测 ...

  5. python+opencv 实现图像人脸检测及视频中的人脸检测

    执着于理想,纯粹于当下. 文章目录 一.数据和知识准备 1. 下载HAAR与LBP数据 2. opencv相关知识 二.python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检 ...

  6. iphone win7无法识别_win7系统中iTools无法识别苹果设备的解决方法

    很多win7系统用户都喜欢在电脑中安装iTools来对苹果设备进行管理,然而有时候会遇到iTools无法识别苹果设备的情况,该怎么办呢,下面就随系统城小编一起来看看win7系统中iTools无法识别苹 ...

  7. OpenCvSharp人脸识别系统(视频中的人脸)

    前段时间因项目中有用到人脸识别,折腾了好久才解决了问题.现将简单的人脸识别功能分享出来,供大家研究. 是基于OpenCVSharp写的人脸识别功能,启用电脑自带的摄像头,识别到人脸图片,并以视频的形式 ...

  8. [Python图像处理] 二十八.OpenCV快速实现人脸检测及视频中的人脸

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  9. Python 计算机视觉(十六)—— 图像和视频中的人脸识别

    参考的一些文章以及论文我都会给大家分享出来 -- 链接就贴在原文,论文我上传到资源中去,大家可以免费下载学习,如果当天资源区找不到论文,那就等等,可能正在审核,审核完后就可以下载了.大家一起学习,一起 ...

  10. 【OpenCV图像处理入门学习教程六】基于Python的网络爬虫与OpenCV扩展库中的人脸识别算法比较

    OpenCV图像处理入门学习教程系列,上一篇第五篇:基于背景差分法的视频目标运动侦测 一.网络爬虫简介(Python3) 网络爬虫,大家应该不陌生了.接下来援引一些Jack-Cui在专栏<Pyt ...

最新文章

  1. MySQL和PostgreSQL数据库安全配置
  2. 两个命令把 Vim 打造成 Python IDE
  3. innodb_flush_log_at_trx_commit配置
  4. JavaScript Document对象DOM
  5. 《JavaScript核心技术》
  6. gdal库的三个使用心得
  7. php查看加载的配置文件路径,thinkphp5.0 配置文件加载路径说明
  8. 几种常用的数据校验(异常检测)总结(3σ、肖维勒准则、狄克逊准则、格拉布斯准则、皮尔士准则、卡方检验、T检验等等)
  9. Moment js 计算时间差
  10. Denoising DNA deep sequencing data—high-throughput sequencing errors and t对DNA深度测序数据进行去噪-高通量测序错误及其校正
  11. 小猫特别聪明的shoow
  12. 分布式下如何实现统一日志系统?
  13. 3d可视化虚拟建模vr展示三维模型方案
  14. Jenkins-API
  15. 【考研数学】九. 无穷级数
  16. 2022年国自然正式放榜,如何解读基金立项结果?(附查询方法)
  17. 一个大四前端实习生的2018年总结
  18. Centos7开放3306端口
  19. BMfont制作图片中的自定义字体,无需字体文件
  20. 张飞硬件第四部--空气进化通风系统总结

热门文章

  1. (Giser源数据获取必备)地理空间数据云
  2. 地理空间数据下载 积累
  3. 浅谈Java及应用学java
  4. “5G+工业互联网”重点企业,苏州真趣成功入选
  5. jdk16新特性_jdk8到jdk16新特性
  6. gps 数据解析-NMEA 0183协议
  7. Teechart图表应用技术详解—第四章之工具组件概述
  8. Dataformatstring属性设置(详解)
  9. 各版本JQuery文件下载
  10. Visual Foxpro 6.0教程