class Xceptionmodel(CNNmodel):
    def __init__(self, data_directory, batch_size=16):
        self.cnn = CNNmodel(data_directory)
        self.height, self.width, self.depth = (48, 48, 1)
        self.batch_size = batch_size
        self.xception = Xception(include_top=True,
                                 weights=None,
                                 input_shape=(self.height, self.width,
                                              self.depth),
                                 classes=4)

    def summary(self):
        print(self.xception.summary())

    def train(self,
              optimizer='adam',
              loss='categorical_crossentropy',
              epoch=20):

        self.xception.compile(loss="categorical_crossentropy",
                              optimizer=optimizer,
                              metrics=["accuracy"])
        print("[INFO] training network...")
        es = EarlyStopping(monitor='val_acc',
                           mode='max',
                           verbose=1,
                           patience=4)
        self.history = self.xception.fit(self.cnn.train_data,
                                         epochs=epoch,
                                         validation_data=self.cnn.val_data,
                                         verbose=1,
                                         callbacks=[es])

        print("[INFO] Saving model...")
        pickle.dump(self.xception, open('xception.pkl', 'wb'))
        print("[INFO] Done...")
Пример #2
0
from keras.utils import to_categorical
from keras import losses,metrics
from keras.callbacks import ModelCheckpoint
import Dataset_mobile
import os

if __name__ == '__main__':

    save_dir = os.path.join(os.getcwd(), 'saved_models')
    model_name = 'xceptionMobile_wood_model.h5'
    model_path = os.path.join(save_dir, model_name)

    x_train, y_train, x_test, y_test, dictionary = Dataset_mobile.read_data()

    x_train_resized = Dataset_mobile.resize_imgs(x_train)
    x_test_resized = Dataset_mobile.resize_imgs(x_test)

    y_train = to_categorical(y_train, num_classes=2)
    y_test = to_categorical(y_test, num_classes=2)

    model = Xception(include_top=True, weights=None, classes=2)

    opt = Adam(lr=5e-6)
    model.compile(optimizer=opt, loss=losses.categorical_crossentropy, metrics=[metrics.categorical_accuracy])
    model.fit(x_train_resized,y_train,epochs=20,batch_size=6)
    model.save(model_path)

    score1 = model.evaluate(x_train_resized, y_train, batch_size=6)
    score2 = model.evaluate(x_test_resized, y_test, batch_size=6)
    print(score1)
    print(score2)
Пример #3
0
import datetime
import numpy as np
num_samples = 1000
height = 224
width = 224
num_classes = 1000

start = datetime.datetime.now()
with tf.device('/cpu:0'):
    model = Xception(weights=None,
                     input_shape=(height, width, 3),
                     classes=num_classes)
    model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
    x = np.random.random((num_samples, height, width, 3))
    y = np.random.random((num_samples, num_classes))
    model.fit(x, y, epochs=3, batch_size=16)
    model.save('my_model.h5')

end = datetime.datetime.now()
time_delta = end - start
print('GPU 처리시간:', time_delta)

start = datetime.datetime.now()
with tf.device('/cpu:0'):
    model = Xception(weights=None,
                     input_shape=(height, width, 3),
                     classes=num_classes)
    model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
    x = np.random.random((num_samples, height, width, 3))
    y = np.random.random((num_samples, num_classes))
    model.fit(x, y, epochs=3, batch_size=16)
Пример #4
0
    save_dir = os.path.join(os.getcwd(), 'saved_models')
    model_name = 'xception_wood_model.hdf5'
    weight_name = 'xception_wood_weight.hdf5'
    model_path = os.path.join(save_dir, model_name)
    weight_path = os.path.join(save_dir, weight_name)

    x_train, y_train, x_test, y_test = image_crop.read_data()

    x_train_resized = image_crop.resize_imgs(x_train)

    y = to_categorical(y_train, num_classes=34)

    model = Xception(include_top=True, weights=None, classes=34)

    checkpoint = ModelCheckpoint(filepath=os.path.join(
        save_dir, 'weight.{epoch:02d}-{loss:.2f}.hdf5'),
                                 verbose=1)

    opt = RMSprop(lr=2e-5)
    model.compile(optimizer=opt,
                  loss=losses.categorical_crossentropy,
                  metrics=[metrics.categorical_accuracy])
    model.fit(x_train_resized,
              y,
              epochs=10,
              batch_size=36,
              callbacks=[checkpoint])

    model.save(model_path)
    model.save_weights(weight_path)