im使用自定义的花朵数据集构建图像分类器。它由102种花朵和18540种花朵图像组成。在excel文件中,每朵花都分配有一个类。 所以我已经将所有图像加载到变量X中,并将标签加载到变量y中。 因此X将包含图像数组,例如array([[[[54],...,[47]]] 和y将包含[77,81,52,72,...] 这里的X的第一张图像属于77类,第二张图像属于81 ans等
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten
from tensorflow.keras.layers import Conv2D, MaxPooling2D
import matplotlib.pyplot as plt
import numpy as np
import os
import pandas as pd
from tensorflow.python.keras.utils import np_utils
from tqdm import tqdm
import cv2
import pickle
CATEGORIES = [] #it will contain classes of flowers in numbers .[1,2,......,102]
# transfer excel data to categories list
file_location = "C:/Users/ROHIT/Downloads/data/train.xlsx"
sheet = pd.read_excel(file_location)
for i in sheet.index:
CATEGORIES.append(sheet['category'][i])
# location of training images stored in DATADIR var
DATADIR = "C:/Users/ROHIT/Downloads/data/train"
IMG_SIZE = 32
training_data = []
def create_training_data():
path = DATADIR
for img in tqdm(os.listdir(path)): # iterate over each image
img_array = cv2.imread(os.path.join(path,img)) # convert to array
img_array = cv2.cvtColor (img_array, cv2.COLOR_BGR2GRAY)
input_img_resize = cv2.resize (img_array, (32, 32))
training_data.append (input_img_resize)
create_training_data()
X = training_data #will hold images
y = CATEGORIES #will hold categories like 1,2,3....102
X = np.array(training_data)
X = X.reshape(18540, 32, 32, 1)
#X.shape gives this -> (18540, 32, 32, 1)
y = np.array(y)
y = to_categorical(y-1)
#y.shape gives this -> (18540, 102)
model = Sequential()
model.add(Conv2D(64, kernel_size=(3, 3),activation='relu',input_shape=(32,32,1)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(102, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='Adam',
metrics=['accuracy'])
model.fit(X, y, epochs=10)
这是输出
Epoch 1/10
6080/18540 [========>.....................] - ETA: 14:11 - loss: 63.4230 - acc: 0.0000e+0 - ETA: 9:32 - loss: 60.9470 - acc: 0.0000e+0 - ETA: 8:10 - loss: 47.2358 - acc: 0.0000e+ - ETA: 7:30 - loss: 36.6253 - acc: 0.0078 - ETA: 6:57 - loss: 30.2254 - acc: 0.00 - ETA: 6:35 - loss: 25.9565 - acc: 0.00 - ETA: 6:18 - loss: 22.9089 - acc: 0.00 - ETA: 6:05 - loss: 20.6233 - acc: 0.00 - ETA: 5:55 - loss: 18.8456 - acc: 0.00 - ETA: 5:54 - loss: 17.4225 - acc: 0.00 - ETA: 5:50 - loss: 16.2672 - acc: 0.00 - ETA: 5:48 - loss: 15.2925 - acc: 0.01 - ETA: 5:45 - loss: 14.4715 - acc: 0.00 - ETA: 5:41 - loss: 13.7661 - acc: 0.00 - ETA: 5:37 - loss: 13.1531 - acc: 0.00 - ETA: 5:33 - loss: 12.6180 - acc: 0.00 - ETA: 5:28 - loss: 12.1508 - acc: 0.01 - ETA: 5:25 - loss: 11.7345 - acc: 0.01 - ETA: 5:22 - loss: 11.3639 - acc: 0.01 - ETA: 5:23 - loss: 11.0268 - acc: 0.01 - ETA: 5:21 - loss: 10.7218 - acc: 0.01 - ETA: 5:19 - loss: 10.4446 - acc: 0.01 - ETA: 5:20 - loss: 10.1914 - acc: 0.01 - ETA: 5:19 - loss: 9.9594 - acc: 0.0156 - ETA: 5:17 - loss: 9.7459 - acc: 0.015 - ETA: 5:15 - loss: 9.5488 - acc: 0.014 - ETA: 5:13 - loss: 9.3663 - acc: 0.013 - ETA: 5:14 - loss: 9.1969 - acc: 0.014 - ETA: 5:12 - loss: 9.0391 - acc: 0.015 - ETA: 5:11 - loss: 8.8918 - acc: 0.014 - ETA: 5:14 - loss: 8.7540 - acc: 0.016 - ETA: 5:13 - loss: 8.6249 - acc: 0.015 - ETA: 5:12 - loss: 8.5036 - acc: 0.015 - ETA: 5:11 - loss: 8.3893 - acc: 0.015 - ETA: 5:10 - loss: 8.2817 - acc: 0.015 - ETA: 5:09 - loss: 8.1802 - acc: 0.014 - ETA: 5:08 - loss: 8.0833 - acc: 0.015 - ETA: 5:07 - loss: 7.9922 - acc: 0.014 - ETA: 5:05 - loss: 7.9058 - acc: 0.015 - ETA: 5:04 - loss: 7.8236 - acc: 0.014 - ETA: 5:03 - loss: 7.7454 - acc: 0.015 - ETA: 5:01 - loss: 7.6710 - acc: 0.015 - ETA: 5:00 - loss: 7.6000 - acc: 0.016 - ETA: 4:59 - loss: 7.5323 - acc: 0.016 - ETA: 4:58 - loss: 7.4676 - acc: 0.016 - ETA: 4:56 - loss: 7.4057 - acc: 0.017 - ETA: 4:55 - loss: 7.3463 - acc: 0.017 - ETA: 4:54 - loss: 7.2894 - acc: 0.016 - ETA: 4:53 - loss: 7.2350 - acc: 0.017 - ETA: 4: