face_recognition人脸识别项目——优化版本

想比之前的face_recognition人脸识别项目的优化有如下几点
1、用MySQL数据库存储人脸特征信息
2、调用网络摄像头识别人脸,将待识别的人物进行识别,并实时地与数据库中的人脸特征信息进行比对,同时判断出被识别者的身份。
3、把识别者的名字输出由英文变成了汉字
4、在dlib上启用了GPU加速
一、用MySQL数据库存储人脸特征信息(mysql的学习笔记)
对于MySQL数据库的操作采用Navicat可视化工具,数据库为test,表为face.设计结构如图:
在这里插入图片描述
database.py

import face_recognition
import pymysql

# 加载图像及获取人脸特征
def load_image(input_image, input_name):
    # 加载本地图像文件到一个numpy ndarray类型的对象上
    image = face_recognition.load_image_file(input_image)
    # 返回图像中每个面的128维人脸编码
    # 图像中可能存在多张人脸,取下标为0的人脸编码,表示识别出来的最清晰的人脸
    image_face_encoding = face_recognition.face_encodings(image)[0]

    # 将numpy array类型转化为列表
    encoding__array_list = image_face_encoding.tolist()

    # 将列表里的元素转化为字符串
    encoding_str_list = [str(i) for i in encoding__array_list]

    # 拼接列表里的字符串
    encoding_str = ','.join(encoding_str_list)

    # 被识别者姓名
    name = input_name

    # 将人脸特征编码存进数据库
    save_encoding(encoding_str, name)


# 人脸特征信息保存
def save_encoding(encoding_str, name):
    # 创建数据库连接对象
    conn = pymysql.connect(
        # 数据库的IP地址
        host="localhost",
        # 数据库用户名称
        user="root",
        # 数据库用户密码
        password="123456",
        # 数据库名称
        db="test",
        # 数据库端口名称
        port=3306,
        # 数据库的编码方式 注意是utf8
        charset="utf8"
    )

    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = conn.cursor()

    # SQL插入语句
    insert_sql = "insert into face(name,encoding) values(%s,%s)"
    try:
        # 执行sql语句
        cursor.execute(insert_sql, (name, encoding_str))
        # 提交到数据库执行
        conn.commit()
    except Exception as e:
        # 如果发生错误则回滚并打印错误信息
        conn.rollbac
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
深度学习(DL,Deep Learning)是机器学习(ML,Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI,Artificial Intelligence)。 [1] 深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字、图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。 深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。 [1] 深度学习在搜索技术、数据挖掘、机器学习、机器翻译、自然语言处理、多媒体学习、语音、推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。 [1] 深度学习是一类模式分析方法的统称,就具体研究内容而言,主要涉及三类方法: [2] (1)基于卷积运算的神经网络系统,即卷积神经网络(CNN)。 [2] (2)基于多层神经元的自编码神经网络,包括自编码(Auto encoder)以及近年来受到广泛关注的稀疏编码两类(Sparse Coding)。 [2] (3)以多层自编码神经网络的方式进行预训练,进而结合鉴别信息进一步优化神经网络权值的深度置信网络(DBN)。 [2] 通过多层处理,逐渐将初始的“低层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂的分类等学习任务。由此可将深度学习理解为进行“特征学习”(feature learning)或“表示学习”(representation learning)。 [3] 以往在机器学习用于现实任务时,描述样本的特征通常需由人类专家来设计,这成为“特征工程”(feature engineering)。众所周知,特征的好坏对泛化性能有至关重要的影响,人类专家设计出好特征也并非易事;特征学习(表征学习)则通过机器学习技术自身来产生好特征,这使机器学习向“全自动数据分析”又前进了一步。 [3] 近年来,研究人员也逐渐将这几类方法结合起来,如对原本是以有监督学习为基础的卷积神经网络结合自编码神经网络进行无监督的预训练,进而利用鉴别信息微调网络参数形成的卷积深度置信网络。与传统的学习方法相比,深度学习方法预设了更多的模型参数,因此模型训练难度更大,根据统计学习的一般规律知道,模型参数越多,需要参与训练的数据量也越大。 [2] 20世纪八九十年代由于计算机计算能力有限和相关技术的限制,可用于分析的数据量太小,深度学习在模式分析中并没有表现出优异的识别性能。自从2006年,Hinton等提出快速计算受限玻耳兹曼机(RBM)网络权值及偏差的CD-K算法以后,RBM就成了增加神经网络深度的有力工具,导致后面使用广泛的DBN(由Hin

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值