200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 深度学习day05-利用TensorFlow搭建图像分类感知机模型 并使用模型进行图片分类

深度学习day05-利用TensorFlow搭建图像分类感知机模型 并使用模型进行图片分类

时间:2022-07-08 03:27:40

相关推荐

深度学习day05-利用TensorFlow搭建图像分类感知机模型 并使用模型进行图片分类

今天在之前的基础上开始真正的进行图像分类了,如果有看不懂的地方,请翻看之前的文章。

目录

图片处理

模型搭建

模型使用

开始之前,先导入我们需要用到的包,绝大部分都在之前介绍过:

import numpy as npimport matplotlib.pyplot as pltimport tensorflow as tfimport cv2import osfrom glob import globfrom tensorflow.keras import datasets,layers,optimizers,losses,modelsfrom PIL import Image

图片处理

做图像分类模型,目的是要让机器来识别记忆图像的特征,所以输入的图片要先进行预处理,调整好统一的大小,格式。

首先写一个函数,将每一张图片转成我们需要的数组格式:

def read_image(img_path,shape):plt_img = Image.open(img_path)np_img = np.array(plt_img,dtype=np.uint8)np_img = cv2.resize(np_img,shape)return np_img

之后我们在图片路径下读取图片,用read_image来处理每一张图片:

folders = os.listdir("seg_train")//文件路径type_dict = {}imgs = []labs = []for i,type_name in enumerate(folders)://处理图片与标签type_dict[i] = type_nameimages = glob(os.path.join('seg_train',type_name,'*.jpg'))labels = [i] * len(images)imgs = [*imgs,*images]labs = [*labs,*labels]//X是图片矩阵,Y是对应的标签数值X_train = np.zeros([len(imgs),50,50,3])for index,img_path in enumerate(imgs):X_train[index,:,:,:] = read_image(img_path,(50,50))Y_train = np.zeros([len(labs),len(folders)])for i in range(len(labs)):Y_train[i,labs[i]] = 1.0X_train =np.reshape(X_train,[X_train.shape[0],50*50*3])

运行结果:

模型搭建

建立一个model,没有太多的技巧,使用的全是全连接层,

最后一层的结果6: 对应的是我有6种图像类型

具体的含义之前都有解释,这里直接上代码:

model = tf.keras.Sequential([# layers.Dense(67500, activation='relu'),# layers.Dense(50000,activation='relu'),# layers.Dense(25000, activation='relu'),# layers.Dense(12500,activation='relu'),# layers.Dense(7500, activation='relu'),layers.Dense(2500,activation='relu'),layers.Dense(1500,activation='relu'),layers.Dense(700,activation='relu'),layers.Dense(300,activation='relu'),layers.Dense(100,activation='relu'),layers.Dense(6,activation='softmax')])//定义优化、损失opt = optimizers.SGD(learning_rate=0.001)loss = losses.CategoricalCrossentropy()model.build(input_shape=[None,7500])pile(optimizer=opt,loss=loss,metrics=['accuracy'])model.fit(x=X_train,y=Y_train,batch_size=100,epochs=25,shuffle=True)model.save('model.h5')

跑一下,顺便保存一个模型,方便我们一会使用:

这台电脑没有GPU,不是不能运行,就是速度太慢了。

模型使用

使用也很简单,我们把保存的模型加载回来,输入一张照片,就可以判断了

model = tf.keras.models.load_model('model.h5')# model = tf.keras.models.load_modeltmp_img = np.reshape(img,[1,-1])pr_lab = model(tmp_img,training=False)pr_lab = np.array(pr_lab)pr_lab = np.argmax(pr_lab)print(type_dict[pr_lab])plt.figure()plt.imshow(img)plt.title(type_dict[pr_lab])plt.show()

看一下结果:

让我们看看这张照片究竟是不是山呢:

看来效果还不错。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。