keras读取model进行人脸预测
来源:互联网 发布:ae 编程 编辑:程序博客网 时间:2024/06/16 04:43
预测执行代码:
import numpy as npimport cv2import kerasimport osif __name__ == '__main__': # 获取模型 # 这里是读取已经训练好并保存下来的模型 model = keras.models.load_model( "/data/training/checkpoint/face/model-0026-0.9844-test-0.979492.hdf5") # 测试图片保存路径,该目录下保存了非人脸的图片,用于预测使用 sourceDir = "/data/dataset/face/images/test_4/no_face" # 循环对目录里的图片进行预测,并得出结果 for file in os.listdir(sourceDir): # 图片路径 imgPath = os.path.join(sourceDir, file) # 读取图片 x = cv2.imread(os.path.expanduser(imgPath)) # 图片预处理: # 1.由于我的模型训练是将所有图片缩放为50x50,所以这里也对图片做同样操作 x = cv2.resize(x,dsize=(50,50),interpolation=cv2.INTER_LINEAR) x = x.astype(float) # 2.模型训练时图片的处理操作(此处根据自己模型的实际情况处理) x *= (1./255) x = np.array([x]) # 开始预测 result = model.predict(x) # 打印结果 print(file + " --> " + str(result))
对于图片预处理,model训练时图片进行了那些预处理,那么这里预测时图片也需要进行相同的预处理过程。
Keras用
model.predict()
方法给出概率,model.predict_classes()
方法给出分类结果。
预测结果:
000001_0.jpg --> [[ 0.00865647 0.9913435 ]]000002_0.jpg --> [[ 0.1582682 0.84173179]]000003_0.jpg --> [[ 0.01170217 0.98829788]]000004_0.jpg --> [[ 0.02279873 0.97720122]]000006_0.jpg --> [[ 0.0026024 0.99739766]]000008_0.jpg --> [[ 0.01178346 0.98821658]]000009_0.jpg --> [[ 0.27088472 0.72911525]]....000052_0.jpg --> [[ 0.00128132 0.99871874]]000053_0.jpg --> [[ 0.0138923 0.98610771]]000053_1.jpg --> [[ 0.04132846 0.95867157]]000054_0.jpg --> [[ 0.0138923 0.98610771]]000054_1.jpg --> [[ 0.04132846 0.95867157]]000056_0.jpg --> [[ 0.01298052 0.98701942]]
模型训练时可以根据 testImageGenerator.class_indices
得到文件夹名与类的序号的对应字典。
我这里训练时文件夹名与类序号的字典是:{‘face’: 0, ‘no_face’: 1};所以索引为0的数据指代的是为人脸的概率,索引为1的数据指代的是不为人脸的概率。
以 000001_0.jpg --> [[ 0.00865647 0.9913435 ]]
为例,0.00865647代表为人脸的概率,0.9913435代表不为人脸的概率。所以这张图片不是人脸图片。
批量预测
import numpy as npimport cv2import kerasimport osif __name__ == '__main__': # 获取模型 # 这里是读取已经训练好并保存下来的模型 model = keras.models.load_model( "/data/training/checkpoint/face/tanjin_model/model-0010-0.9806-test-0.975586-****.hdf5") # 测试图片保存路径,该目录下保存了非人脸的图片,用于预测使用 sourceDir = "/data/dataset/face/images/test_4/no_face" images = [] # 循环对目录里的图片进行预测,并得出结果 for file in os.listdir(sourceDir): # 图片路径 imgPath = os.path.join(sourceDir, file) # 读取图片 x = cv2.imread(os.path.expanduser(imgPath)) # 图片预处理: # 1.由于我的模型训练是将所有图片缩放为50x50,所以这里也对图片做同样操作 x = cv2.resize(x,dsize=(50,50),interpolation=cv2.INTER_LINEAR) x = x.astype(float) # 2.模型训练时图片的处理操作(此处根据自己模型的实际情况处理) x *= (1./255) # 存入list images.append(x) xx = np.array(images) # 开始预测 result = model.predict(xx) # 打印结果 print(file + " --> " + str(result))
批量预测结果:
[[ 0.09544108 0.9045589 ] [ 0.02506179 0.97493821] [ 0.04170766 0.95829231] ..., [ 0.00471985 0.99528015] [ 0.07800388 0.92199606] [ 0.00772795 0.99227202]]
批量预测便于对多张图片进行同时预测并返回结果,在实际使用中还是会经常用到的。
个人在学习的过程中的一些理解。。
阅读全文
0 0
- keras读取model进行人脸预测
- keras中如何保存model的数据,以及如何重构模型进行数据预测
- Python中用Keras构建LSTM模型进行时间序列预测
- Keras学习之四:用RNN进行评论好恶预测
- 利用CNN进行人脸年龄预测
- Keras <一> 可视化model
- Keras 可视化 model visualization
- keras merged model
- keras系列︱迁移学习:利用InceptionV3进行fine-tuning及预测、完美案例(五)
- keras系列︱迁移学习:利用InceptionV3进行fine-tuning及预测、完美案例(五)
- 用keras对国产剧评论文本的情感进行预测
- keras使用神经网络预测销量
- keras load model 报错
- 利用opencv3读取tensorflow model,对图像进行分类
- 利用keras进行分类
- keras 模型用于预测时的注意事项
- 基于keras 的神经网络股价预测模型
- keras.model的保存与打开
- 数组与矩阵---未排序正数数组中累加和为指定值的最长子数组长度
- Oracle初步学习
- 用最小周长多边形(MPP)描述图像边界
- 应用层-3、web缓存和代理服务器技术
- python3种编辑方法
- keras读取model进行人脸预测
- float:left和display:inline一起用
- POJ
- PAT (Basic Level) Practise (中文) 1063. 计算谱半径(20)
- 数组的概念,定义格式,取值,赋值以及数组的初始化
- struts2的工作原理 及优缺点
- 跳台阶
- nginx安装,配置、虚拟主机、轮询、域名重定向
- 【C#】枚举类型Enum与状态设计模式