网页采集器的自动识别算法(3.关键步骤3.1人脸数据训练自己的网络,训练好网络)
优采云 发布时间: 2021-10-26 03:08网页采集器的自动识别算法(3.关键步骤3.1人脸数据训练自己的网络,训练好网络)
基于卷积神经网络的人脸识别实现
使用opencv获取人脸,采集人脸数据,将采集到的人脸数据加载到内存中,构建自己的卷积神经网络,用人脸数据训练自己的网络,保存训练好的网络,最后使用opencv 获取实时人脸,并使用之前训练好的模型来识别人脸。
1.前言
随着社会的不断进步和各方面对快速有效的自动身份验证的迫切要求,生物特征识别技术在近几十年来得到了迅速发展。生物特征作为人类的固有属性,具有很强的自我稳定性和个体差异性,已成为自动身份验证最理想的依据。目前的生物识别技术主要有:指纹识别、视网膜识别、虹膜识别、步态识别、静脉识别、人脸识别等。与其他识别方式相比,人脸识别具有直接、友好、方便的特点,没有任何心理阴影。给用户带来障碍,容易被用户接受,
2.系统设计
2.1 系统开发环境
硬件:
杯:英特尔酷睿 I7-6500U
GPU:NVIDIA GeForce 940M
内存:8G
硬盘:PCIE SSD 256G
软件:
Python 3.5
2.2 系统使用工具
集成开发环境:
IDLE(安装python后自动安装的集成开发环境)
插入:
opencv3.4.3、numpy1.14.6、keras2.2.4、tensorflow cpu1.11.0 和 sklearn0.20.0。
这些插件的具体安装步骤可以在网上找到具体教程,这里不再赘述。
2.3 系统功能需求
通过计算机本地*敏*感*词*实时拍摄人脸照片,与训练好的卷积神经网络模型中存储的人脸信息进行对比,将识别出的人脸标签值显示在桌面上。
3.关键步骤
3.1 获取人脸数据
使用opencv调用*敏*感*词*,获取实时视频流,通过opencv自带的人脸分类器haar对人脸区域进行识别和标记,并将当前帧作为图片保存到指定文件夹。
代码显示如下:
#catchpicture.py
import cv2
cap = cv2.VideoCapture(0)
num = 0
while cap.isOpened():
ret, frame = cap.read() #读取一帧数据
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#将图片转化成灰度
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_alt2.xml")
face_cascade.load('F:\python35\haarcascade_frontalface_alt2.xml')#一定要告诉编译器文件所在的具体位置
'''此文件是opencv的haar人脸特征分类器'''
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
if len(faces) > 0:
for (x,y,w,h) in faces:
#将当前帧保存为图片
img_name = '%s/%d.jpg'%("F:\data\me", num)
image = frame[y - 10: y + h + 10, x - 10: x + w + 10]
cv2.imwrite(img_name, image)
num += 1
if num > 1000: #如果超过指定最大保存数量退出循环
break
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)
#显示当前捕捉到了多少人脸图片
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(frame,'num:%d'%(num),(x + 30,y + 30),font,1,(255,0,255),4)
#超过指定最大保存数量结束程序
if num > 1000 :break
#显示图像并等待10毫秒按键输入,输入‘q’退出程序
cv2.imshow("capture", frame)
if cv2.waitKey(10) & 0xFF == ord('q'):
break
#释放*敏*感*词*并销毁所有窗口
cap.release()
cv2.destroyAllWindows()
3.2 图片预处理
第一步得到的人脸图片集中每张图片的大小都不一样。为方便后续操作,需要将抓拍的人脸图片压缩成像素值为6464并灰显。因此,图片预处理分为两部分。首先,它被压缩到6464的比例。第一步定义了一个resize_image()函数。功能是先将图片填充成正方形,然后压缩成64*64的像素值。第二步使用 opencv 内置的 cvtColor() 函数会对图片进行灰度化。
代码显示如下:
<p>#picturepraction.py
import os
import cv2
IMAGE_SIZE = 64
def resize_image(image, height=IMAGE_SIZE, width=IMAGE_SIZE):
top, bottom, left, right = (0, 0, 0, 0)
h, w, _ = image.shape
longest_edge = max(h, w)
if h