keras和tensorflow猫狗图像分类

Posted 我要学习java和python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keras和tensorflow猫狗图像分类相关的知识,希望对你有一定的参考价值。

import tensorflow as tf
import sys
import os,random
from matplotlib.pyplot import imshow
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import pyplot
from keras.utils import to_categorical
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Dense
from keras.layers import  Flatten
from keras.optimizers import SGD
from  keras.models  import load_model
from keras.utils import plot_model
from PIL import Image
from keras.preprocessing.image import ImageDataGenerator
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)

#创建一个cnn模型
def  cnn_model():
    #使用序列模型
    model=Sequential()
    #卷积层
    model.add(Conv2D(32,(3,3),activation="relu",padding="same",input_shape=(200,200,3)))
    #最大池化层
    model.add(MaxPooling2D((2,2)))
    #Flatten层
    model.add(Flatten())
    #全连接层
    model.add(Dense(128,activation="relu"))
    model.add(Dense(1,activation="sigmoid"))
    #编译模型
    opt=SGD(lr=0.001,momentum=0.9)
    model.compile(optimizer=opt,loss='binary_crossentropy',metrics=['accuracy'])
    return model
# model=cnn_model()
# plot_model(model,to_file='cnn_model.png',dpi=100,show_shapes=True,show_layer_names=True)

def train_cnn_model():
    #实例化模型
    model=cnn_model()
    #创建图片生成器
    datagen=ImageDataGenerator(rescale=1.0/255.0)
    train_it=datagen.flow_from_directory('./datasets/train1/',class_mode='binary',batch_size=64,target_size=(200,200))
    #训练模型
    model.fit_generator(train_it,steps_per_epoch=len(train_it),epochs=1,verbose=1)


def predict(pli_im,model):
    pli_im=pli_im.resize((200,200))
    array_im=np.asarray(pli_im)
    array_im = array_im[np.newaxis,:]
    result=model.predict([[array_im]])
    if result[0][0]>0.5:
        print("预测结果是狗")
    else:
        print("预测结果是猫")

model_path= "./datasets/dogs_cats/model/basic_cnn_model.h5"
model=load_model(model_path)
folder=r"./datasets/dogs_cats/data/test/"
file_path=folder+random.choice(os.listdir(folder))
pli_im=Image.open(file_path,'r')
imshow(np.asarray(pli_im))
predict(pli_im,model)
plt.show()

以上是关于keras和tensorflow猫狗图像分类的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch深度学习实战 | 猫狗分类

DenseNet实战:tensorflow2.X版本,DenseNet121图像分类任务(小数据集)

卷积神经网络猫狗分类

卷积神经网络猫狗分类

keras-VGG16 猫狗分类器

利用CNN进行图像分类的流程(猫狗大战为例)