def create_model(labels, data, location_of_model, EPOCHS=50, INIT_LR=1e-3, BS=32): (trainX, testX, trainY, testY) = train_test_split(data, labels, test_size=0.25, random_state=42) # convert the labels from integers to vectors trainY = to_categorical(trainY, num_classes=2) testY = to_categorical(testY, num_classes=2) # construct the image generator for data augmentation aug = ImageDataGenerator( rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # initialize the model model = LeNet.build(width=56, height=56, depth=3, classes=2) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network H = model.fit_generator(aug.flow( trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1) # save the model to disk model.save(location_of_model)
# convert the labels from integers to vectors trainY = to_categorical(trainY, num_classes=3) testY = to_categorical(testY, num_classes=3) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # initialize the model print("[INFO] compiling model...") model = LeNet.build(width=100, height=100, depth=3, classes=3) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") H = model.fit_generator(aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1) # save the model to disk print("[INFO] serializing network...")
labels.append(label) data = np.array(data, dtype="float") / 255.0 labels = np.array(labels) (treinoEntrada, testeEntrada, treinoSaida, testeSaida) = train_test_split(data, labels, test_size=0.25, random_state=42) aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") model = LeNet.build(width=56, height=56, depth=3, classes=14) opt = Adam(lr=1e-3, decay=1e-3 / 44) model.compile(loss="sparse_categorical_crossentropy", optimizer=opt,metrics=["accuracy"]) history = model.fit_generator(aug.flow(treinoEntrada, treinoSaida, batch_size=32), validation_data=(testeEntrada, testeSaida), steps_per_epoch=len(treinoEntrada) // 32, 44=44, verbose=1) model.save('/home/thassio/Desktop/image-classification-keras/Naipes.model') plt.plot(history.history['accuracy'])
test_size=0.2, random_state=42) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=25, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # initialize the model print("[INFO] compiling model...") model = LeNet.build(width=IMAGE_DIMS[1], height=IMAGE_DIMS[0], depth=IMAGE_DIMS[2], classes=len(lb.classes_)) #model = SmallerVGGNet.build(width=IMAGE_DIMS[1], height=IMAGE_DIMS[0], depth=IMAGE_DIMS[2], classes=len(lb.classes_)) plot_model(model, to_file='size_perception_model.png', show_shapes=True, show_layer_names=True) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="sparse_categorical_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") H = model.fit_generator(aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY),
# the data for training and the remaining 25% for testing (trainX, testX, trainY, testY) = train_test_split(data, labels, test_size=0.25, random_state=42) # convert the labels from integers to vectors trainY = to_categorical(trainY, num_classes=2) testY = to_categorical(testY, num_classes=2) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # initialize the model print("[INFO] compiling model...") model = LeNet.build(width=50, height=50, depth=3, classes=2) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") H = model.fit_generator(aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1) # save the model to disk print("[INFO] serializing network...") model.save(args["model"]) """
trainY = to_categorical(trainY, num_classes=94) testY = to_categorical(testY, num_classes=94) valY = to_categorical(valY, num_classes=94) print("Training size: ",str(int(100*trainX.size/data.size)),"%") print("Test size: ",str(int(100*testX.size/data.size)),"%") print("Validation size: ",str(int(100*valX.size/data.size)),"%") # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # initialize the model print("[INFO] compiling model...") model = LeNet.build(width=pxsize, height=pxsize, depth=3, classes=94) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") H = model.fit_generator(aug.flow(trainX, trainY, batch_size=BS), validation_data=(valX, valY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1, shuffle=True, max_queue_size=10) # save the model to disk print("[INFO] serializing network...") model.save(args["model"]) # plot the training loss and accuracy
trainY = to_categorical(trainY, num_classes=2) testY = to_categorical(testY, num_classes=2) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # initialize the model print("[INFO] compiling model...") model = LeNet.build(width=cam_config.net_size[0], height=cam_config.net_size[1], depth=3, classes=2) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") H = model.fit_generator(aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1) # save the model to disk print("[INFO] serializing network...") model.save(args.model)
testY = to_categorical(testY, num_classes=2) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") ## we’ll perform some data augmentation, enabling us to generate “additional” training data by ## randomly transforming the input images using the parameters above: # initialize the model print("[INFO] compiling model...") model = LeNet.build(width=28, height=28, depth=3, classes=2) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) ## Since this is a two-class classification problem we’ll want to use binary cross-entropy as our loss function. ## If you are performing classification with > 2 classes, be sure to swap out the loss for categorical_crossentropy . # train the network print("[INFO] training network...") H = model.fit_generator( aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, ##// is the floor division operator epochs=EPOCHS, verbose=1) ## Training our network is initiated where we call model.fit_generator , ## supplying our data augmentation object, training/testing data, and the number of epochs we wish to train for.
# convert the labels from integers to vectors trainY = to_categorical(trainY, num_classes=21) testY = to_categorical(testY, num_classes=21) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=False, fill_mode="nearest") # initialize the model print("[INFO] compiling model...") model = LeNet.build(width=150, height=150, depth=1, classes=21) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) #opt = SGD(lr=INIT_LR, momentum=0.6, decay=INIT_LR / EPOCHS, nesterov=False) model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") H = model.fit_generator(aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1)
# convert the labels from integers to vectors trainY = to_categorical(trainY, num_classes=num_labels) testY = to_categorical(testY, num_classes=num_labels) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # initialize the model print("[INFO] compiling model...") model = LeNet.build(width=28, height=28, depth=3, classes=num_labels) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") H = model.fit_generator(aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1) # save the model to disk print("[INFO] serializing network...") model.save(args["model"])
print("trainX", trainX.shape) print("testX", testX.shape) # convert the labels from integers to vectors trainY = to_categorical(trainY, num_classes=2) testY = to_categorical(testY, num_classes=2) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # initialize the model print("[INFO] compiling model...") # model = LeNet.build(width=178, height=218, depth=3, classes=2) model = LeNet.build(width=178//2, height=218//2, depth=3, classes=2) # model.summary() # opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) # deberia ser SGD porque converge muy rapido # en keras Adam tiene otros optimizers opt = SGD(lr=INIT_LR, momentum=0.9) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) tbcallback = TensorBoard(log_dir='./graph', histogram_freq=0, write_graph=True, write_images=True) # para tensorflow # tensorboard --logdir ./graph # train the network
# the data for training and the remaining 25% for testing (trainX, testX, trainY, testY) = train_test_split(data, labels, test_size=0.25, random_state=42) # convert the labels from integers to vectors trainY = to_categorical(trainY, num_classes=2) testY = to_categorical(testY, num_classes=2) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # initialize the model print("[INFO] compiling model...") model = LeNet.build(width=28, height=28, depth=3, classes=2) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") H = model.fit_generator(aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1) # save the model to disk print("[INFO] serializing network...") model.save(args["model"]) # plot the training loss and accuracy
trainY = to_categorical(trainY, num_classes=CATEGORIES) testY = to_categorical(testY, num_classes=CATEGORIES) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # initialize the model print("[INFO] compiling model...") model = LeNet.build(width=IMAGE_WIDTH, height=IMAGE_HEIGHT, depth=3, classes=CATEGORIES) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") H = model.fit(x=aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1) # save the model to disk
data.append(image) label= imagePath.split(os.path.sep)[-2] label=1 if label=='Helmet' else 0 labels.append(label) data=np.array(data, dtype='float')/255.0 labels=np.array(labels) trainHelmet, validationHelmet, trainLabel, validationLabel = train_test_split(data, labels, test_size=0.25, random_state=42) trainLabel=to_categorical(trainLabel, num_classes=2) validationLabel=to_categorical(validationLabel, num_classes=2) aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest') model = LeNet.build(width=64, height=64, depth=3, classes=2) opt = Adam(lr=INIT_LR, decay=INIT_LR/EPOCHS) model.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy']) H= model.fit_generator(aug.flow(trainHelmet,trainLabel, batch_size=BS),validation_data=(validationHelmet,validationLabel),steps_per_epoch=len(trainHelmet)//BS, epochs=EPOCHS, verbose=1) # plot the training loss and accuracy plt.style.use("ggplot") plt.figure() N = EPOCHS plt.plot(np.arange(0, N), H.history["loss"], label="train_loss") plt.plot(np.arange(0, N), H.history["val_loss"], label="val_loss") plt.title("Training Loss and Accuracy on Santa/Not Santa") plt.xlabel("Epoch #") plt.ylabel("Loss") plt.legend(loc="lower left")
# convert the labels from integers to vectors trainY = to_categorical(trainY, num_classes=num_class) testY = to_categorical(testY, num_classes=num_class) # construct the image generator for data augmentation ''' aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") ''' #aug = ImageDataGenerator( zoom_range=0.2, # horizontal_flip=True, fill_mode="nearest") # initialize the model print("[INFO] Compiling Model...") model = LeNet.build(width=128, height=128, depth=3, classes=num_class) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) model.summary() # train the network print("[INFO] Training Network...") ''' H = model.fit_generator( aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1 ) ''' # save the model to disk print("[INFO] Saving Model...") #model_base=args["model111"]+'.h5'
# convert the labels from integers to vectors trainY = to_categorical(trainY, num_classes=2) testY = to_categorical(testY, num_classes=2) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # initialize the model print("[INFO] compiling model...") model = LeNet.build(width=28, height=28, depth=3, classes=2) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") H = model.fit_generator(aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1) # save the model to disk print("[INFO] serializing network...") model.save(args["model"])
(trainX, testX, trainY, testY) = train_test_split(data, labels, test_size=0.25, random_state=42) # convert the labels from integers to vectors # [0,1,0] => [[1,0], [0,1], [1,0]] trainY = to_categorical(trainY, num_classes=2) testY = to_categorical(testY, num_classes=2) # construct the image generator for data augmentation # @see https://keras.io/preprocessing/image/ aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode="nearest") # init the model print("[INFO] compiling model...") model = LeNet.build(width=WIDTH, height=WIDTH, depth=3, classes=2) opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS) model.compile(loss="binary_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") H = model.fit_generator(aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS, verbose=1) # save the model to disk print("[INFO] serializing network...") model.save(args["model"]) # plot the training loss and accuracy plt.style.use("ggplot") plt.figure()