自定义数据集的丢失率和准确性都很高

时间:2019-08-13 16:32:35

标签: python image machine-learning keras classification

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:

0 个答案:

没有答案