当前位置: 首页 > 编程笔记 >

Python-使用keras进行图像分类

仉梓
2023-03-14
本文向大家介绍Python-使用keras进行图像分类,包括了Python-使用keras进行图像分类的使用技巧和注意事项,需要的朋友参考一下

图像分类是一种使用某种方法将图像分类为各自类别的方法-

  • 从头开始训练小型网络

  • 使用VGG16微调模型的顶层

示例

#First, include following libraries:
# Importing all necessary libraries
from keras.preprocessing.image import ImageDataGenerator
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras import backend as K
#Here, the train_data_dir is the train dataset directory. validation_data_dir is the
#directory for validation data. nb_train_samples is the total number train #samples. nb_validation_samples is the total number of validation samples.
img_width, img_height = 224, 224
train_data_dir = 'v_data/train'
validation_data_dir = 'v_data/test'
nb_train_samples =400
nb_validation_samples = 100
epochs = 10
batch_size = 16
#checking the format of the image
if K.image_data_format() == 'channels_first':
   input_shape = (3, img_width, img_height)
else:
   input_shape = (img_width, img_height, 3)
model = Sequential()#Conv2D is the layer to convolve the image into multiple images
model.add(Conv2D(32, (2, 2), input_shape=input_shape))
#Activation is the activation function.
model.add(Activation('relu'))
#MaxPooling2D is used to max pool the value from the given size #matrix and same is used for the next 2 layers.
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (2, 2)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
#MaxPooling2D is used to max pool the value from the given size
#matrix and same is used for the next 2 layers.
model.add(Flatten())
#Dense is used to make this a fully connected model and is the
#hidden layer.
model.add(Dense(64))
model.add(Activation('relu'))
#Dropout is used to avoid overfitting on the dataset.
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
#Compile function is used here that involve use of loss, optimizers
#and metrics.here loss function used is binary_crossentropy,
#optimizer used is rmsprop.
model.compile(loss='binary_crossentropy',optimizer='rmsprop', metrics=['accuracy'])
#ImageDataGenerator that rescales the image, applies shear in some
#range, zooms the image #and does horizontal flipping with the
#image. This ImageDataGenerator includes all possible
#orientation
#of the image.
train_datagen = ImageDataGenerator(rescale=1. / 255,shear_range=0.2, zoom_range=0.2,horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1. / 255)
#train_datagen.flow_from_directory is the function that is used to
#prepare data from the train_dataset directory Target_size specifies
#the target size of the image.
train_generator = train_datagen.flow_from_directory( train_data_dir,
target_size=(img_width, img_height),batch_size=batch_size,class_mode='binary')
validation_generator = test_datagen.flow_from_directory( validation_data_dir, target_size=(img_width, img_height),
batch_size=batch_size, class_mode='binary')
#fit_generator is used to fit the data into the model made above,
#other factors used are steps_per_epochs tells us about the number
#of times the model will execute for the training data.
#epochs tells us the number of times model will be trained in forward
#and backward pass.
#validation_data is used to feed the validation/test data into the #model.
#validation_steps denotes the number of validation/test samples.
model.fit_generator(train_generator,steps_per_epoch=nb_train_samples // batch_size,
epochs=epochs, validation_data=validation_generator,
validation_steps=nb_validation_samples // batch_size)
#Save the model
model.save_weights('ImgmodelKeras_saved.h5')
 类似资料:
  • 本文向大家介绍使用Keras预训练模型ResNet50进行图像分类方式,包括了使用Keras预训练模型ResNet50进行图像分类方式的使用技巧和注意事项,需要的朋友参考一下 Keras提供了一些用ImageNet训练过的模型:Xception,VGG16,VGG19,ResNet50,InceptionV3。在使用这些模型的时候,有一个参数include_top表示是否包含模型顶部的全连接层,如

  • 问题说明: 实例化顺序模型 下面是我的代码: 我对这个角色感到困惑

  • 本文向大家介绍tensorflow 1.0用CNN进行图像分类,包括了tensorflow 1.0用CNN进行图像分类的使用技巧和注意事项,需要的朋友参考一下 tensorflow升级到1.0之后,增加了一些高级模块: 如tf.layers, tf.metrics, 和tf.losses,使得代码稍微有些简化。 任务:花卉分类 版本:tensorflow 1.0 数据:flower-photos

  • 本文向大家介绍python opencv进行图像拼接,包括了python opencv进行图像拼接的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python opencv进行图像拼接的具体代码,供大家参考,具体内容如下 思路和方法 思路 1、提取要拼接的两张图片的特征点、特征描述符; 2、将两张图片中对应的位置点找到,匹配起来; 3、如果找到了足够多的匹配点,就能将两幅图拼接起来,

  • 上传图像做预测时出错消息 ValueError:层block1\u conv1的输入0与层不兼容:输入形状的ed轴-1应具有值3,但接收到带有形状的输入[无,2 24,224,4] 代码处理/图像预处理 def model\U predict(img,模型):img=img。调整大小((224224)) 培训课程的产出 flow/compiler/xla/service/service.cc:17

  • 问题内容: 嗨,我有很多需要分类的图像(下百万)。我正在使用Spark,并设法以大RDD格式读取所有图像。 但是,我真的很困惑如何处理图像的unicode表示。 这是一个图像/文件的示例: 仔细看,实际上有些字符看起来像元数据 我以前的经验是使用包scipy和相关功能(例如“ imread”),并且输入通常是文件名。现在,我真的迷失了那些unicode的含义,以及如何将其转换为我熟悉的格式。 谁能