使用tensorflow的keras和estimator进行图像识别

本文介绍了如何利用TensorFlow的Keras和Estimator库进行图像识别任务。首先,数据集包含68个人的多张照片,目标是构建一个CNN模型以区分照片中的人物。模型采用SqueezeNet结构,并从官方GitHub仓库获取Keras实现。接着,详细描述了数据预处理,包括将数据转换为3维图像,调整numpy数组的dtype,并洗牌以防止同一标签集中出现。然后,定义了输入函数`train_input_fn`和`eval_input_fn`,以及训练和评估模型的代码。最后,展示了模型的预测过程,强调Estimator的输入函数必须以lambda函数形式编写,并且在预测阶段不需要提供标签。
摘要由CSDN通过智能技术生成

任务

数据集来自https://blog.csdn.net/hahajinbu/article/details/72877998
有68个人,每个人有若干张照片。编写CNN模型来分辨某张照片是哪一个人

模型

使用sqeeze net模型,来自论文官方github的keras实现
https://github.com/DT42/squeezenet_demo

生成数据

import numpy as np
import tensorflow as tf
import os
import os.path
from PIL import Image
from squeeze_net import SqueezeNet


DIR = r'使用你的数据文件夹地址'
CLASS = 68  # 68个人
LEARNING_RATE = 1e-4


def pics_to_arrs(directory: str='.', to_npy=False, from_npy=False):
    """
    这个数据集中同一个人的脸都放在一个文件夹中,‘s1’-‘s68’
    :param directory:包含‘s1’-‘s68’文件夹的父文件夹
    :param to_npy: 保存到npy文件'pic_arrs.npy'、'pic_labs.npy'中
    :param from_npy:直接从npy文件中读取数组
    :return: pic_arrs, pic_labs, 即X与Y
    """
    if from_npy:
        pic_arrs = np.load('pic_arrs.npy')
        pic_labs = np.load('pic_labs.npy')
        return pic_arrs, pic_labs
    pic_arr_li = []
    pic_lab_li = []
    for person in os.listdir(directory):
        # 注意person是相对路径,即名字
        if not person.startswith('s'):
            continue    # 跳过不是的文件
        person_num = int(person[1:]) - 1  # 编号、y标签, 从0开始
        person_dir = os.path.join(directory, person)
        for file in os.listdir(person_dir):
            if not file.endswith(('jpg', 'jpeg')):
                continue    # 跳过不是的文件
            pic_abs = os.path.join(person_dir, file)
            ima = np.array(Image.open(pic_abs), 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值