TensorFlow实操之--服装图像识别问题-基于Keras
2020-01-13 13:50
253 查看
文章目录
问题描述
这里我们还是以MNIST数据为例,与上一篇的不同在于上一篇是关于手写体数字识别,本篇是关于服装的简单识别。Fashion Mnist数据集由70,000张黑白图片构成,每张图片大小为 28x28,由十类服饰图片构成。另一个MNIST数据集是手写数字,Fashion MNIST 与之相比更有挑战性,适合用来验证算法
解决思路
一般滴,识别思路是
- 获取数据,包括训练数据和测试数据。
- 模型建立
- 训练
- 模型验证
这篇文档使用高级APItf.keras在TensorFlow中搭建和训练模型。 下面简单介绍一下Keras。
Keras简介
Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验。能够以最小的时延把你的想法转换为实验结果,是做好研究的关键。官方网址是https://keras.io/zh/。使用Keras主要下面几个步骤
- 准备好数据,并做好预处理。
- 构建模型。Keras 的核心数据结构是 model,一种组织网络层的方式。最简单的模型是 Sequential 顺序模型,它由多个网络层线性堆叠。对于更复杂的结构,你应该使用 Keras 函数式 API,它允许构建任意的神经网络图。可以简单地使用 .add() 来堆叠模型。
- 在完成了模型的构建后, 可以使用 .compile() 来配置学习过程
- 训练,给模型喂数据
- 只需一行代码就能评估模型性能:
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
- 对新的数据生成预测:
classes = model.predict(x_test, batch_size=128)
Keras的基本架构和使用层次如下图所示:
神经网络服装识别
下面我们利用keras采用神经网络的方法对服装图像进行识别。
引入必要的包
from __future__ import absolute_import, division, print_function, unicode_literals import tensorflow as tf from tensorflow import keras import matplotlib.pyplot as plt import numpy as np
获取数据
#获取数据 fashion_mnist=keras.datasets.fashion_mnist (train_images,train_labels),(test_images,test_labels)=fashion_mnist.load_data() print(train_images.shape) # print(train_images[1]) print(train_labels[1])
我们获取了数据,通过shape可以查看大小,并可以看看内部的数值。
数据预处理
在训练网络之前,必须对数据进行预处理。当前数据的像素值在0-255之间,统一不同数据间的量纲,有助于我们接下来对数据进行分析和计算,即对数据进行归一化处理。
#对数据进行归一化处理 train_images=train_images/255 test_images=test_images/255
构建网络模型
通过keras的Sequential创建模型,并添加神经网络的层次
#构建网络模型 model=keras.Sequential([keras.layers.Flatten(input_shape=(28,28)), keras.layers.Dense(128,activation='relu'), keras.layers.Dense(10,activation='softmax') ])
配置网络模型
keras的配置网络也是一句话的事儿,可以看到设置了优化器,损失函数等。
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
评估模型
也是一句话
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
预测
如有必要,我们对新的数据进行预测,这里举个例子,所有的测试数据进行预测。
predictions = model.predict(test_images)#对所有标签与图片进行预测
神经网络图像识别小结
训练模型在整个测试数据集的表现情况如下,测试准确率接近88%。
60000/60000 [==============================] - 2s 35us/step - loss: 0.2384 - acc: 0.9115 Test accuracy: 0.8796
从对keras的神经网络图像识别可以看到
- Keras使用起来简直太简单了,太友好了。把深度学习的细节完全封装好,甚至把学习框架也封装了。可以说是非常容易上手。但是这种简单的,又让人害怕和担心,长期使用keras岂不是比掉包侠还调包虾,所以对深度学习的内部原理还是要细细研究的。
- 上面的方法如手写数字识别的第一个方法一样,没用利用隐藏层,没有加入正则化,没有还用CNN,相信通过把模型建立的更合理更科学,效果会更好。我们后续再操作。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- TensorFlow实操之---基于Keras+CNN实现服装图像识别
- 在实时音视频中,基于 TensorFlow 实现图像识别
- 基于Tensorflow的人工智能Mnist图像识别训练实战
- 基于 TensorFlow 的图像识别(R实现)
- 基于OpenCV及Python的数独问题识别与求解(二)边框识别与图像矫正
- 基于OpenCV及Python的数独问题识别与求解(一)图像预处理
- 图像识别实例(CNN):CIFAR-10-基于keras的python学习笔记(十二--五)
- 基于TensorFlow的MNIST(手写图像识别)的一点经验
- [置顶] 基于 TensorFlow 的图像识别(R实现)
- Keras基于TensorFlow实现的简单分类问题
- Android-图像识别项目OpenCV(4):开发思路以及问题
- 基于TensorFlow的车牌号识别系统
- 深度学习视觉识别之CNN卷积神经网络原理+图像识别应用Keras实现代码示例
- 网络隔离条件下,基于图像识别的NoMachine代码提取方案
- TensorFlow实现基于深度学习的图像补全
- Tensorflow利用训练好的Inception模型进行图像识别分类
- TensorFlow识别复杂验证码以及搭建生产环境(8)—— 基于Python的调用
- 读书笔记之《基于深度学习的高分辨率遥感图像识别与分类研究》
- 基于tensorflow深度学习的中文的命名实体识别
- 基于最小距离分类器的图像识别