利用Python中tensorflow框架进行深度学习

# 2.1 导入实验环境
# 导入模块
#from skimage
import glob
import os
import cv2
import tensorflow as tf
from tensorflow.keras import layers, optimizers, datasets, Sequential
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split'''#设置初始化环境
# 数据集的地址 改为你自己的
path = './flower_photos/'
#path = ‘E:\桌面\11.14上机\’
#缩放图片大小为 100*100
w = 100
h = 100
c = 3
#此处为划分小节处,请标注:物理203_202011060176_郑曜(截图1)#2.2 导入实验数据集
# 步骤一 构建读取图片数据集函数
def read_img(path):
# 定义函数 read_img,用于读取图像数据,并且对图像进行 resize 格式统一处理cate=[path+x for x in os.listdir(path) if os.path.isdir(path+x)]
# 创建层级列表 cate,用于对数据存放目录下面的数据文件夹进行遍历,os.path.isdir 用于判断文件是否是目录,然后对是目录文件的文件进行遍历imgs=[]
# 创建保存图像的空列表labels=[]
# 创建用于保存图像标签的空列表for idx,folder in enumerate(cate):# enumerate 函数用于将一个可遍历的数据对象组合为一个索引序列,同时列出数据和下标,一般用在 for循环当中for im in glob.glob(folder+'/*.jpg'):# 利用 glob.glob 函数搜索每个层级文件下面符合特定格式“/*.jpg”进行遍历print('reading the images:%s'%(im))# 遍历图像的同时,打印每张图片的“路径+名称”信息img = cv2.imread(im)# 利用 cv2.imread 函数读取每一张被遍历的图像并将其赋值给 imgimg = cv2.resize(img, (w, h))# 利用 cv2.resize 函数对每张 img 图像进行大小缩放,统一处理为大小为 w*h(即 100*100)的图像imgs.append(img)# 将每张经过处理的图像数据保存在之前创建的 imgs 空列表当中labels.append(idx)# 将每张经过处理的图像的标签数据保存在之前创建的 labels 列表当中return np.asarray(imgs,np.float32),np.asarray(labels,np.int32)# 利用 np.asarray 函数对生成的 imgs 和 labels 列表数据进行转化,之后转化成数组数据(imgs 转成浮点数型,labels 转成整数型)# 最后返回 imgs 和 labels 数组数据#步骤2 读取图片数据集
# 加载数据集
# 将 read_img 函数处理之后的数据定义为样本数据 data 和标签数据 label
data,label=read_img(path)
print("shape of data:",data.shape) # 查看样本数据的大小
print("shape of label:",label.shape) # 查看标签数据的大小#划分训练集与测试集
# 保证生成的随机数具有可预测性,即相同的种子(seed 值)所产生的随机数是相同的
seed = 785
np.random.seed(seed)
#切分数据集
(x_train, x_val, y_train, y_val) = train_test_split(data, label,
test_size=0.20, random_state=seed)
x_train = x_train / 255
x_val = x_val / 255
#创建图像标签列表
flower_dict = {0:'dasiy',1:'dandelion',2:'roses',3:'sunflowers',4:'tulips'}# 2.3 构建 CNN 图像识别模型
# 步骤 1 构建 CNN 神经网络
#创建模型。模型包括 3 个卷积层和三个 RELU 激活函数,两个池化层
model = Sequential([
#调用 layer.Con2D()创建了一个卷积层。32 表示 kernel 的数量。padding=“same”表示填充输入以使输出具有与原始输入相同的长度,使用 RELU 函数layers.Conv2D(32, kernel_size=[5, 5], padding="same",activation=tf.nn.relu),#调用 layers.MaxPool2D()创建最大池化层,步长为 2,padding=“same”表示填充输入以使输出具有与原始输入相同的长度。layers.MaxPool2D(pool_size=[2, 2], strides=2, padding='same'),#利用 dropout 随机丢弃 25%的神经元layers.Dropout(0.25),#继续添加两个卷积层和一个最大池化层layers.Conv2D(64, kernel_size=[3, 3], padding="same",activation=tf.nn.relu),layers.Conv2D(64, kernel_size=[3, 3], padding="same",activation=tf.nn.relu),layers.MaxPool2D(pool_size=[2, 2], strides=2, padding='same'),layers.Dropout(0.25),# 继续添加两个卷积层和一个最大池化层layers.Conv2D(128, kernel_size=[3, 3], padding="same",activation=tf.nn.relu),layers.MaxPool2D(pool_size=[2, 2], strides=2, padding='same'),#利用 dropout 随机丢弃 25%的神经元layers.Dropout(0.25),#Flatten 层用来将输入“压平”,即把多维的输入一维化layers.Flatten(),#调用 layers.Dense()创建全连接层layers.Dense(512, activation=tf.nn.relu),layers.Dense(256, activation=tf.nn.relu),#添加全连接层,最后输出每个分类(5)的数值layers.Dense(5, activation='softmax')])# 步骤 2 构建优化器
#使用 Adam 优化器,优化模型参数。lr(learning_rate, 学习率)
opt = optimizers.Adam(learning_rate=0.0001)
# 编译模型
# 定义准确率函数,用于模型效果验证。
#编译模型以供训练。metrics=['accuracy']即评估模型在训练和测试时的性能的指标。
model.compile(optimizer=opt,loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 步骤 3 训练 CNN 图像识别模型
#训练模型,决定训练集和验证集,batch size:进行梯度下降时每个 batch 包含的样本数。
#verbose:日志显示,0 为不在标准输出流输出日志信息,1 为输出进度条记录,2 为每个 epoch 输出一行记录
model.fit(x_train, y_train, epochs=30, validation_data=(x_val,y_val),batch_size=100, verbose=2)
#输出模型的结构和参数量
model.summary()步骤 4 保存模型
model.save('./Model/model.h5')
'''#2.2.1 导入实验环境
#from skimage
import glob
import os
import cv2
import tensorflow as tf
from tensorflow.keras import layers, optimizers, datasets, Sequential
import numpy as np
import matplotlib.pyplot as plt
from keras.models import load_model
from sklearn.model_selection import train_test_split
model = load_model('./Model/model.h5')
# 步骤 2 设置初始化环境
# 数据集的地址 (改为自己的)
path_test = './TestImages/'
w=100
h=100# 2.2.2 导入测试数据
# 从 5 类图像数据中各自任意抽取一张用来进行模型效果测试。以下是每张图像的路径与名称。
# 步骤 1 加载测试数据
imgs=[] # 创建保存图像的空列表
for im in glob.glob(path_test+'/*.jpg'):
# 利用 glob.glob 函数搜索每个层级文件下面符合特定格式“/*.jpg”进行遍历#print('reading the images:%s'%(im)# 遍历图像的同时,打印每张图片的“路径+名称”信息img=cv2.imread(im) # 利用 io.imread 函数读取每一张被遍历的图像并将其赋值给imgimg=cv2.resize(img,(w,h))# 利用 cv2.resize 函数对每张 img 图像进行大小缩放,统一处理为大小为 w*h(即 100*100)的图像imgs.append(img) # 将每张经过处理的图像数据保存在之前创建的 imgs 空列表当中
imgs = np.asarray(imgs,np.float32)
print("shape of data:",imgs.shape)# 2.2.3 模型验证
# 步骤 1 模型验证
#将图像导入模型进行预测
prediction = model.predict(imgs)
prediction = np.argmax(prediction,axis=1)
#绘制预测图像
for i in range(np.size(prediction)):
#打印每张图像的预测结果flower_dict={'0':'dasiy','1':'dandelion','2':'roses','3':'sunflowers','4':'tulips'}print("第",i+1,"朵花预测:"+flower_dict[str(prediction[i])])img = plt.imread(path_test+"/"+"test"+str(i+1)+".jpg")plt.imshow(img)plt.show()

图像识别python相关推荐

  1. 图像识别python cnn_MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网络训练实现及比较(一)...

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 全连接神经网络是深度学习的基础,理解它就可以掌握深度学习的核心概念:前向传播.反向误差传递.权重.学习 ...

  2. 【深度学习】一文弄懂CNN及图像识别(Python)

    一.卷积神经网络简介 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算的前馈神经网络,是基于图像任务的平移不变性(图像识别的对象在不同位置有相同的 ...

  3. 图像识别python模块_人工智能之Python人脸识别技术--face_recognition模块

    一.环境搭建1.系统环境Ubuntu 17.04 Python 2.7.14 pycharm 开发工具1 2 32.开发环境,安装各种系统包人脸检测基于dlib,dlib依赖Boost和cmake$ ...

  4. ai图像识别python的项目_Python3调用百度AI识别图片中的文字功能示例【测试可用】...

    本文实例讲述了Python3调用百度AI识别图片中的文字功能.分享给大家供大家参考,具体如下: 首先pip install命令安装baidu-aip模块,如下图所示(这里使用pip3 install ...

  5. 百度图像识别API调用(python)

    申请百度API的账户 创建应用 代码编写 图像识别 Python SDK目录结构 ├── README.md ├── aip //SDK目录 │ ├── __init__.py //导出类 │ ├── ...

  6. Python爬虫开发从入门到实战

    Python爬虫开发从入门到实战(微课版) 第1章 绪论 爬虫的主要目的是获取网页内容并解析.只要能达到这个目的,用什么方法都没有问题. 关于获取网页,本书主要介绍了Python的两个第三方模块,一个 ...

  7. 【机器学习】树模型遇上类别型特征(Python)

    在数据挖掘项目的数据中,数据类型可以分为两种:有序的连续数值 和 无序的类别型特征. 对于xgboost.GBDT等boosting树模型,基学习通常是cart回归树,而cart树的输入通常只支持连续 ...

  8. 人工智能换脸pythonapp小视频_人工智能几行代码实现换脸,python+dlib实现图文教程...

    图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息.随着计算机技术的发展,人类对图像识别技术的认识越来越深刻.图像识别技术的过程分为信息的获取.预处理.特征抽 ...

  9. 学会用python识别图像

    用 Python 进行 OCR 图像识别 Python中文社区 全球Python中文开发者的精神部落 数据采集就怕遇到图片,只能看不能复制怎么办.手动将文字提取出来,要耗费很大的工作量. 例如下图,某 ...

最新文章

  1. 一代数学大家--John Conway逝世,丘成桐、陶哲轩纷纷发文缅怀!
  2. linux查找部署目录,mac/linux 查找软件安装、配置路径
  3. 简单定制自己的Centos系统(第三版)
  4. Android应用程序进程启动过程的源代码分析(2)
  5. 从零开始学python微课视频版-从零开始学Python(微课视频版)
  6. 一个简单的遮罩弹出层效果
  7. suse 新增用户oracle,在SUSE Linux中让其他用户能运行Oracle命令
  8. python操作memcahed
  9. 100元左右的鼠标推荐
  10. python编程的基本方法有哪些_Python编程中常用的基础知识有哪些?
  11. 砂.随笔.九.12.14公司停电,冒雨修爪爪
  12. 设计HTML标签title属性值换行
  13. 会员管理系统适用于哪些行业
  14. 2022年前端自学全套路线总结(黑马版)
  15. 【历史上的今天】12 月 26 日:现代计算机鼻祖诞生;手机之父出生;美国史上最大信息盗窃案
  16. ClickHouse可视化DBM Release 1.12.0
  17. QPS、TPS、并发用户数、吞吐量
  18. lua知识点-unpack
  19. 《Adobe Premiere Pro CS5经典教程》——1.7 定制工作区
  20. 国内哪家云服务器最便宜?国内主流三大云厂商的价格差异

热门文章

  1. 三分钟手写RPC调用 (三)
  2. 二.ARM裸机学习之S5PV210刷机
  3. CP.12图、网络、关联矩阵
  4. Python让Excel飞起来—批量处理行、列和单元格
  5. JVM 垃圾回收(GC)
  6. 帅到没朋友分数 20
  7. 数据结构(四)—— 线性表的链式存储
  8. [LOJ#6617][THUPC2019]摆家具(矩阵乘法 + 子集和变换)
  9. python glob.glob使用
  10. 试题 C: 数列求值