python 图像识别男女_keras实现简单性别识别(二分类问题)

2023-10-30

importosimportrandomimportcv2importnumpy as npfrom tensorflow.contrib.keras.api.keras.preprocessing.image importImageDataGenerator,img_to_arrayfrom tensorflow.contrib.keras.api.keras.models importSequentialfrom tensorflow.contrib.keras.api.keras.layers importDense, Dropout, Activation, Flattenfrom tensorflow.contrib.keras.api.keras.layers importConv2D, MaxPooling2Dfrom tensorflow.contrib.keras.api.keras.optimizers importSGD

IMAGE_SIZE= 182

#训练图片大小

epochs = 150#原来是50#遍历次数

batch_size = 32

#批量大小

nb_train_samples = 512*2

#训练样本总数

nb_validation_samples = 128*2

#测试样本总数

train_data_dir = 'D:\\code\\learn\\data_sex\\train_data\\'validation_data_dir= 'D:\\data_sex\\test_data\\'

#样本图片所在路径

FILE_PATH = 'Gender_new.h5'

#模型存放路径

classDataset(object):def __init__(self):

self.train=None

self.valid=Nonedef read(self, img_rows=IMAGE_SIZE, img_cols=IMAGE_SIZE):

train_datagen=ImageDataGenerator(

rescale=1. / 255,

horizontal_flip=True)

test_datagen= ImageDataGenerator(rescale=1. / 255)

train_generator=train_datagen.flow_from_directory(

train_data_dir,

target_size=(img_rows, img_cols),

batch_size=batch_size,

class_mode='binary')

validation_generator=test_datagen.flow_from_directory(

validation_data_dir,

target_size=(img_rows, img_cols),

batch_size=batch_size,

class_mode='binary')

self.train=train_generator

self.valid=validation_generatorclassModel(object):def __init__(self):

self.model=Sequential()

self.model.add(Conv2D(32, (3, 3), input_shape=(IMAGE_SIZE,IMAGE_SIZE,3)))

self.model.add(Activation('relu'))

self.model.add(MaxPooling2D(pool_size=(2, 2)))

self.model.add(Conv2D(32, (3, 3)))

self.model.add(Activation('relu'))

self.model.add(MaxPooling2D(pool_size=(2, 2)))

self.model.add(Conv2D(64, (3, 3)))

self.model.add(Activation('relu'))

self.model.add(MaxPooling2D(pool_size=(2, 2)))

self.model.add(Flatten())

self.model.add(Dense(64))

self.model.add(Activation('relu'))

self.model.add(Dropout(0.5))

self.model.add(Dense(1))

self.model.add(Activation('sigmoid'))def train(self, dataset, batch_size=batch_size, nb_epoch=epochs):

self.model.compile(loss='binary_crossentropy',

optimizer='adam',

metrics=['accuracy'])

self.model.fit_generator(dataset.train,

steps_per_epoch=nb_train_samples //batch_size,

epochs=epochs,

validation_data=dataset.valid,

validation_steps=nb_validation_samples//batch_size)def save(self, file_path=FILE_PATH):print('Model Saved.')

self.model.save_weights(file_path)def load(self, file_path=FILE_PATH):print('Model Loaded.')

self.model.load_weights(file_path)defpredict(self, image):#预测样本分类

img = image.resize((1, IMAGE_SIZE, IMAGE_SIZE, 3))

img= image.astype('float32')

img/= 255

#归一化

result =self.model.predict(img)print(result)#概率

result =self.model.predict_classes(img)print(result)#0/1

returnresult[0]defevaluate(self, dataset):#测试样本准确率

score = self.model.evaluate_generator(dataset.valid,steps=2)print("样本准确率%s: %.2f%%" % (self.model.metrics_names[1], score[1] * 100))if __name__ == '__main__':

dataset=Dataset()

dataset.read()

model=Model()

model.load()

model.train(dataset)

model.evaluate(dataset)

model.save()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 图像识别男女_keras实现简单性别识别(二分类问题) 的相关文章

  • C# 获取qq邮箱的未读邮件

    第一步 先在QQ邮箱进行设置 获取授权码 第一步 打开QQ邮箱并点击设置 第二步 点击账户 并滑到下面 第三步 开启POP3 IMAP SMTP Exchange CardDAV服务并生成授权码 在这个页面找到下图这个位置 在IMAP SM
  • 2PC 两阶段提交

    这是使用Java实现两阶段提交的简单代码示例 public abstract class BaseTwoPhaseCommit public abstract void commit public abstract void rollbac
  • 华为 进入和退出Fastboot、eRecovery和Recovery升级模式

    手机关机状态下 可以进入Fastboot eRecovery Recovery 升级这几种模式 需要连接电脑 Fastboot模式 长按音量下键 电源键 eRecovery 模式 长按音量上键 电源键 不需要连接电脑 Recovery 模式
  • java bufferedimage颜色_java – 如何在BufferedImage中使颜色透明并保存为PNG

    我最近这样做 是为了回答我的项目经理的一个问题 将灰色变为透明度的功能是 private Image TransformGrayToTransparency BufferedImage image ImageFilter filter ne
  • 用Python开发了一个进销存管理的小软件

    研究生毕业之后 就进入国企工作 工作内容偏产品和售前 几乎没写过代码了 有个朋友是开游泳馆的 也会有少量商品的售卖 问我能不能给她开发一个小软件 记录商品的入库出库 统计下金额 恰好工作中今年也用到了python写一个小工具 觉得非常好用
  • 因为一个函数strlen的陷阱,我懂得了看源码的重要性

    因为一个函数strlen的陷阱 我懂得了看源码的重要性 在程序开发中 我们经常会使用各种函数库来提高效率 其中字符串处理函数是开发中最常用的函数之一 在这些函数中 strlen是一个很重要的函数 它用来计算字符串的长度 然而 有时候使用st
  • 吴恩达深度学习第一课第四周课后作业2参考

    Deep Neural Network for Image Classification Application 深度神经网络应用 When you finish this you will have finished the last p
  • 队列(Queue)——class Stack 和 class Stack T 实现

    这是对于Queue类的实现 PS 这是队列链式存储 带头节点 的类和模板实现 静态循环序列本质也只是封装类和套模板 class Stack实现代码如下 myqueue h include
  • VMware虚拟机从一台电脑复制到另一台电脑【亲测,成功】

    在一台电脑上利用虚拟机创建了centos 如果想在家里的电脑虚拟机上也运行centos 不用再重新安装以及漫长的安装等待了 可以利用先前在虚拟机上安装centos生成的 vmx文件和 vmdk文件 拷贝到U盘 再重新导入到新电脑就可以了 省
  • 孤立森林(isolation forest)

    1 简介 孤立森林 Isolation Forest 是另外一种高效的异常检测算法 它和随机森林类似 但每次选择划分属性和划分点 值 时都是随机的 而不是根据信息增益或者基尼指数来选择 在建树过程中 如果一些样本很快就到达了叶子节点 即叶子
  • synchronized关键字在同步方法中的应用

    synchronized 同步方法 synchronized关键字可用来保障原子性 可见性和有序性 非线程安全问题会在多个线程对同一个对象中的实例变量进行并发访问时发生 产生的后果就是 脏读 也就是读取到的数据其实是被更改过的 线程安全是指
  • pmap 命令

    NAME pmap report memory map of a process SYNOPSIS pmap x d q pids pmap V 常用参数 x 显示扩展格式 d 显示设备格式 q 不显示header footer行 V 显示
  • 一文搞定:SpringBoot 集成 Apollo 配置中心

    公众号后台回复 面试 获取精品学习资料 扫描下方海报了解专栏详情 本文来源 http www mydlq club article 42 Java工程师面试突击 第3季 重磅升级 由原来的70讲增至160讲 内容扩充一倍多 升级部分内容请参
  • 浅谈java中的锁

    JAVA中的锁 自旋锁 当一个线程要获取锁的时候 该锁被其他线程获取 那么该线程将循环等待 不判断该锁是否能够被成功获取 直到获取到该锁才会退出循环 自旋锁实现例子 通过CAS操作实现加锁与解锁逻辑 循环等待占用锁的线程解锁 自旋锁代码实现
  • Ubuntu 16.04系统安装jdk1.8

    笔者环境 主系统Win7 VMware Workstation 12 Player虚拟机 虚拟机系统ubuntu 16 04 desktop amd64 安装jdk jdk 8u102 linux 一 在Oracle官方网站下载JDK 1
  • 跨域问题之手机号码登录验证

    1 构建登录组件 router js 设置路由 import Vue from vue import Router from vue router Vue use Router const router new Router mode hi
  • javaweb jsp的认识

    1 java 程序片 1 在jsp中 之间的书写叫做java 程序片 一个jsp中页面中可以有多个java 程序片 在java 程序片声明的变量 在它们所在的jsp中的所有java 程序片及表达式中都有效 java 程序片中声明的变量 只在
  • 测试用例设计白皮书--判定表驱动分析方法

    测试用例设计白皮书 判定表驱动分析方法 Author Vince 来源 http blog csdn net vincetest 一 方法简介 1 定义 判定表是分析和表达多逻辑条件下执行不同操作的情况的工具 2 判定表的优点 能够将复杂的

随机推荐