图像分类算法需要多长时间?

我编写了以下代码用于识别图像。

# Importing the Keras libraries and packagesfrom keras.models import Sequentialfrom keras.layers import Conv2Dfrom keras.layers import MaxPooling2Dfrom keras.layers import Flattenfrom keras.layers import Dense# Initialising the CNNclassifier = Sequential()# Step 1 - Convolutionclassifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))# Step 2 - Poolingclassifier.add(MaxPooling2D(pool_size = (2, 2)))# Adding a second convolutional layerclassifier.add(Conv2D(32, (3, 3), activation = 'relu'))classifier.add(MaxPooling2D(pool_size = (2, 2)))# Step 3 - Flatteningclassifier.add(Flatten())# Step 4 - Full connectionclassifier.add(Dense(units = 128, activation = 'relu'))classifier.add(Dense(units = 1, activation = 'sigmoid'))# Compiling the CNNclassifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])# Part 2 - Fitting the CNN to the imagesfrom keras.preprocessing.image import ImageDataGeneratortrain_datagen = ImageDataGenerator(rescale = 1./255,shear_range = 0.2,zoom_range = 0.2,horizontal_flip = True)test_datagen = ImageDataGenerator(rescale = 1./255)training_set = train_datagen.flow_from_directory('E:\\ML_R&D\\training_set\\cats1',target_size = (64, 64),batch_size = 32,class_mode = 'binary')test_set = test_datagen.flow_from_directory('E:\\ML_R&D\\test_set\\cats1',target_size = (64, 64),batch_size = 32,class_mode = 'binary')classifier.fit_generator(training_set,steps_per_epoch = 8000,epochs = 25,validation_data = test_set,validation_steps = 2000)# Part 3 - Making new predictionsimport numpy as npfrom keras.preprocessing import imagetest_image = image.load_img('E:\\ML_R&D\\cat.jpg', target_size = (64, 64))test_image = image.img_to_array(test_image)test_image = np.expand_dims(test_image, axis = 0)result = classifier.predict(test_image)training_set.class_indicesif result[0][0] == 1:    prediction = 'dog'else:    prediction = 'cat'

当我运行这段代码时,它可以成功运行而没有任何错误,但等待了几个小时(2小时)后没有任何结果显示。屏幕上只显示以下内容:

Found 0 images belonging to 0 classes.Found 0 images belonging to 0 classes.Epoch 1/25


回答:

问题出在你提供的目录结构上。

training_set = train_datagen.flow_from_directory('E:\\ML_R&D\\training_set\\cats1',target_size = (64, 64),batch_size = 32,class_mode = 'binary')

这里的路径 E:\\ML_R&D\\training_set\\cats1 必须包含子文件夹(代表每个类别),每个子文件夹内应包含属于该类别的图像。

例如

/home/tlokeshkumar/Documents/image_data 是我的数据集所在的位置。

image_data    class_1        class_1_1.jpg        class_1_2.jpg        ...    class_2        class_2_1.jpg        class_2_2.jpg        class_2_3.jpg        ...    class_3    class_4    ...

如果遵循这种结构,你必须输入主文件夹的路径(image_data)。

training_set = train_datagen.flow_from_directory('home/tlokeshkumar/Documents/image_data',target_size = (64, 64),batch_size = 32,class_mode = 'binary')

对于快速图像分类,你可以查看我的代码库,其中我使用了Keras编写了一个图像分类器,该分类器使用瓶颈特征来训练,比正常的训练过程快得多。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注