19.1.7--利用keras库训练人脸识别模型

本文记录了根据原博主的教程使用keras库训练人脸识别模型的过程,包括解决ModuleNotFoundError和TypeError的问题,以及图片大小调整的注意事项。代码实现中遇到了sklearn模块版本问题和keras版本不兼容的问题,通过调整代码成功运行。同时指出原博主的教程分段清晰,适合逐步学习。作者表示将进一步深入学习基础理论。
摘要由CSDN通过智能技术生成

学习来源:https://www.cnblogs.com/neo-T/p/6477378.html
原博主写得非常详细,我只是用他的代码实现一遍,修改的地方不多,把一些遇到的问题记录一下而已,更详细的讲解建议去看原博主的。

修改:

  1. 出现 ModuleNotFoundError: No module named ‘sklearn.cross_validation’ 问题:sklearn.cross_validation是sklearn老版本的模块,新版本都迁移到了sklearn.model_selection。修改代码为
    from sklearn.model_selection import train_test_split
  2. TypeError: softmax() got an unexpected keyword argument ‘axis’:keras 2.1.6的softmax没有axis这个参数了,回退一下:
    pip install keras==2.1
  3. 图片没有被缩放到64*64:原博客好像在调用了resize后没有加cv2.imwrite(full_path, image),所以未保存。
  4. 原博主是分段来的,每次贴上一段代码然后进行解释,清晰明了。我直接把代码全贴上了,训练和测试改一下注释就好。
#图片缩放代码:
#在原博主的基础上进行了一些修改:
#1.原本把每一帧截图下来的时候就已经是正方形了,所以不需要调整形状,直接缩放就好了
#2.添加了cv2.imwrite(full_path, image)保存好缩放到64*64后的
#3.把控制台输入路径直接用了 path = "D:\\pycharm\\MyWorks\\MyFace\\data"

# -*- coding: utf-8 -*-

import os
import numpy as np
import cv2

IMAGE_SIZE = 64
images = []
labels = []

def read_path(path_name):
    for dir_item in os.listdir(path_name):
        # 从初始路径开始叠加,合并成可识别的操作路径
        full_path = os.path.abspath(os.path.join(path_name, dir_item))
        if os.path.isdir(full_path):  # 如果是文件夹,继续递归调用
            read_path(full_path)
        else:  # 文件
            if dir_item.endswith('.jpg'):
                image = cv2.imread(full_path)
                image = cv2.resize(image, (IMAGE_SIZE, IMAGE_SIZE), interpolation=cv2.INTER_CUBIC)
                cv2.imwrite(full_path, image)
                images.append(image)
                labels.append(path_name)
    return images, labels


# 从指定路径读取训练数据
def load_dataset(path_name):
    images, labels = read_path(path_name)
    images = np.array(images)
    print(images.shape)
    #pm是我的人脸数据所在文件夹标注为0,另一个是我室友的标注为1
    labels = np.array([0 if label.endswith('pm') else 1 for label in labels])
    return images, labels


path = "D:\\pycharm\\MyWorks\\MyFace\\data"
if __name__ == '__main__':
    images, labels = load_dataset(path)

#模型建立、保存与评估

# -*- coding: utf-8 -*-
import cv2
import random
from sklearn.model_selection import train_test_split
from keras.preproce
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值