from imutils import paths import argparse # construct the argument parse and ap = argparse.ArgumentParser() ap.add_argument("-d", "--dataset", required=True, help="Path to input dataset") args = vars(ap.parse_args()) # grab the list of images that we’ll be describing print("[INFO] loading images...") imagePaths = list(paths.list_images(args["dataset"])) # initialize the image preprocessor, load the dataset from disk, # and reshape the data matrix sp = SimplePreprocessor(32, 32) sdl = SimpleDatasetLoader(preprocessors=[sp]) (data, labels) = sdl.load(imagePaths, verbose=500) data = data.reshape((data.shape[0], 3072)) # encode the labels as integers le = LabelEncoder() labels = le.fit_transform(labels) # partition the data into training and testing splits using 75% of # 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=5) # loop over our set of regularizers
ap.add_argument("-d", "--dataset", required=True, help="path to input dataset") ap.add_argument("-k", "--neighbors", type=int, default=1, help="# of nearest neighbors for classification") ap.add_argument("-j", "--jobs", type=int, default=1, help="# of jobs for kNN distance (-1 uses all available cores)") args = vars(ap.parse_args()) # Grab the list of images that we will be describing print("[INFO] loading images...") imagePaths = list(paths.list_images(args["dataset"])) # Initialize the image preprocessor, load the dataset from disk, # and reshape the data matrix sp = SimplePreprocessor(32, 32) sdl = SimpleDatasetLoader(preprocessors=[sp]) (data, labels) = sdl.load(imagePaths, verbose=500) data = data.reshape(data.shape[0], 3072) # Show some information on memory consumption of the images print("[INFO] features matrix: {:.1f}MB".format( data.nbytes / (1024 * 1000.0) )) # Encode the labes as integers le = LabelEncoder() labels = le.fit_transform(labels) # Partition the data into training and testing splits using 75% of # 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)
classLabels = ["cat", "dog", "panda"] # grab the list of images in the dataset then randomly sample # indexes into the image paths list print("[INFO] sampling images...") imagePaths = np.array(list(paths.list_images(args["dataset"]))) idxs = np.random.randint(0, len(imagePaths), size=(10, )) imagePaths = imagePaths[idxs] # initialize the image preprocessors sp = SimplePreprocessor(32, 32) iap = ImageToArrayPreprocessor() # load the dataset from disk then scale the raw pixel intensities # to the range [0, 1] sdl = SimpleDatasetLoader(preprocessors=[sp, iap]) (data, labels) = sdl.load(imagePaths) data = data.astype("float") / 255.0 # load the pre-trained network print("[INFO] loading pre-trained network...") model = load_model(args["model"]) # make predictions on the images print("[INFO] predicting...") preds = model.predict(data, batch_size=32).argmax(axis=1) # loop over the sample images for (i, imagePath) in enumerate(imagePaths): # load the example image, draw the prediction, and display it # to our screen
classLabels = ["cat", "dog", "panda"] # grab the list of images in the dataset then randomly sample # indexes into the image paths list print("[INFO] sampling images...") imagePaths = np.array(list(paths.list_images(args["dataset"]))) idxs = np.random.randint(0, len(imagePaths), size=(10, )) imagePaths = imagePaths[idxs] # initialize the image preprocessors sp = SimplePreprocessor.SimplePreprocessor(32, 32) iap = imagetoarraypreprocessor.ImageToArrayPreprocessor() # load the dataset from disk then scale the raw pixel intensities # to the range [0, 1] sdl = SimpleDatasetLoader.SimpleDatasetLoader(preprocessors=[sp, iap]) (data, labels) = sdl.load(imagePaths) data = data.astype("float") / 255.0 # load the pre-trained network print("[INFO] loading pre-trained network...") model = load_model(args["model"]) # make predictions on the images print("[INFO] predicting...") preds = model.predict(data, batch_size=32).argmax(axis=1) # loop over the sample images for (i, imagePath) in enumerate(imagePaths): # load the example image, draw the prediction, and display it # to our screen
def main(): """Run image classification """ # construct the argument parse and parse the arguments args = argparse.ArgumentParser() args.add_argument("-d", "--dataset", required=True, help="path to input dataset") args = vars(args.parse_args()) # grab the list of images that we'll be describing, then extract # the class label names from the image paths print("[INFO] loading images...") image_paths = list(paths.list_images(args["dataset"])) class_names = [pt.split(os.path.sep)[-2] for pt in image_paths] class_names = [str(x) for x in np.unique(class_names)] # initialize the image preprocessors aspect_aware_preprocessor = AspectAwarePreprocessor(64, 64) image_to_array_preprocessor = ImageToArrayPreprocessor() # load the dataset from disk then scale the raw pixel intensities to the range [0, 1] sdl = SimpleDatasetLoader( preprocessors=[aspect_aware_preprocessor, image_to_array_preprocessor]) (data, labels) = sdl.load(image_paths, verbose=500) data = data.astype("float") / 255.0 # partition the data into training and testing splits using 75% of # the data for training and the remaining 25% for testing (train_x, test_x, train_y, test_y) = train_test_split(data, labels, test_size=0.25, random_state=42) # convert the labels from integers to vectors train_y = LabelBinarizer().fit_transform(train_y) test_y = LabelBinarizer().fit_transform(test_y) # 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 optimizer and model print("[INFO] compiling model...") opt = SGD(lr=0.05) model = MiniVGGNet.build(width=64, height=64, depth=3, classes=len(class_names)) model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") model_fit = model.fit_generator(aug.flow(train_x, train_y, batch_size=32), validation_data=(test_x, test_y), steps_per_epoch=len(train_x) // 32, epochs=100, verbose=1) # evaluate the network print("[INFO] evaluating network...") predictions = model.predict(test_x, batch_size=32) print( classification_report(test_y.argmax(axis=1), predictions.argmax(axis=1), target_names=class_names)) # plot the training loss and accuracy plt.style.use("ggplot") plt.figure() plt.plot(np.arange(0, 100), model_fit.history["loss"], label="train_loss") plt.plot(np.arange(0, 100), model_fit.history["val_loss"], label="val_loss") plt.plot(np.arange(0, 100), model_fit.history["acc"], label="train_acc") plt.plot(np.arange(0, 100), model_fit.history["val_acc"], label="val_acc") plt.title("Training Loss and Accuracy") plt.xlabel("Epoch #") plt.ylabel("Loss/Accuracy") plt.legend() plt.show()
classNames = [str(x) for x in np.unique(classNames)] data_dict = data.set_index('id')['breed'].to_dict() # le = LabelEncoder() # labels = le.fit_transform(labels) # labels_inv = le.inverse_transform(labels) # classNames = [pt.split(os.path.sep)[-2] for pt in imagePaths] # classNames = [str(x) for x in np.unique(classNames)] # initialize the image preprocessors aap = AspectAwarePreprocessor(config.INPUT_SIZE, config.INPUT_SIZE) iap = ImageToArrayPreprocessor() # load the dataset from disk then scale the raw pixel intensities to # the range [0, 1] sdl = SimpleDatasetLoader(preprocessors=[aap, iap]) (data, ids) = sdl.load(imagePaths, verbose=500) labels = [data_dict[i] for i in ids] data = data.astype("float") / 255.0 # partition the data into training and testing splits using 75% of # the data for training and the remaining 25% for testing (trainX, testX, trainY, testY) = train_test_split(data, labels, test_size=0.25, stratify=labels) # convert the labels to vectors trainY = LabelBinarizer().fit_transform(trainY) testY = LabelBinarizer().fit_transform(testY) # load the VGG16 network, ensuring the head FC layer sets are left # off
height_shift_range=0.1, shear_range=0.2, zoom_range=0.2, horizontal_flip=True) # Grab the list of images and extract class labels for evaluating print('[INFO] loading images...') image_paths = list(paths.list_images(args['dataset'])) class_names = [image_path.split(os.path.sep)[-2] for image_path in image_paths] class_names = [str(x) for x in np.unique(class_names)] # initialize image preprocessors aap, iap = AspectAwarePreprocessor(224, 224), ImageToArrayPreprocessor() # load dataset and scale to range[0, 1] sdl = SimpleDatasetLoader(preprocessors=[aap, iap]) data, labels = sdl.load(image_paths, verbose=500) data = data.astype('float') / 255 # split data to train and test set trainX, testX, trainY, testY = train_test_split(data, labels, test_size=0.25, random_state=42) # convert labels to vector le = LabelBinarizer() trainY = le.fit_transform(trainY) testY = le.transform(testY) # load VGG16, ensuring head FC layer sets are left off
def main(): """Train ShallowNet on animals dataset. """ # construct the argument parser and parse the arguments args = argparse.ArgumentParser() args.add_argument("-d", "--dataset", required=True, help="path to input dataset") args = vars(args.parse_args()) # grab the list of images that we'll be describing print("[INFO] loading images...") image_paths = list(paths.list_images(args["dataset"])) # initialize the image preprocessors simple_preprocessor = SimplePreprocessor(32, 32) image_to_array_preprocessor = ImageToArrayPreprocessor() # load the dataset from disk then scale the raw pixel intensities to the range [0, 1] dataset_loader = SimpleDatasetLoader(preprocessors=[simple_preprocessor, image_to_array_preprocessor]) (data, labels) = dataset_loader.load(image_paths, verbose=500) data = data.astype("float") / 255.0 # partition the data into training and testing splits using 75% of # the data for training and the remaining 25% for testing (train_x, test_x, train_y, test_y) = train_test_split(data, labels, test_size=0.25, random_state=42) # convert the labels from integers to vectors train_y = LabelBinarizer().fit_transform(train_y) test_y = LabelBinarizer().fit_transform(test_y) # initialize the optimizer and model print("[INFO] compiling model...") opt = SGD(lr=0.005) model = ShallowNet.build(width=32, height=32, depth=3, classes=3) model.compile(loss="categorical_crossentropy", optimizer=opt, metrics=["accuracy"]) # train the network print("[INFO] training network...") model_fit = model.fit(train_x, train_y, validation_data=(test_x, test_y), batch_size=32, epochs=100, verbose=1) # evaluate the network print("[INFO] evaluating network...") predictions = model.predict(test_x, batch_size=32) print(classification_report(test_y.argmax(axis=1), predictions.argmax(axis=1), target_names=["cat", "dog", "panda"])) # plot the training loss and accuracy plt.style.use("ggplot") plt.figure() plt.plot(np.arange(0, 100), model_fit.history["loss"], label="train_loss") plt.plot(np.arange(0, 100), model_fit.history["val_loss"], label="val_loss") plt.plot(np.arange(0, 100), model_fit.history["acc"], label="train_acc") plt.plot(np.arange(0, 100), model_fit.history["val_acc"], label="val_acc") plt.title("Training Loss and Accuracy") plt.xlabel("Epoch #") plt.ylabel("Loss/Accuracy") plt.legend() plt.show()
im = IM.MoveImageToLabel(dataPath=args['dataset']) im.makeFolder() im.move() print("[INFO] loading images...") imagePaths = [ x for x in list(paths.list_images(args['dataset'])) if x.split(os.path.sep)[-2] != 'jpg' ] classNames = [pt.split(os.path.sep)[-2] for pt in imagePaths] classNames = [str(x) for x in np.unique(classNames)] aap = AAP.AspectAwarePreprocesser(64, 64) iap = IAP.ImageToArrayPreprocess() sdl = SDL.SimpleDatasetLoader(preprocessors=[aap, iap]) (data, labels) = sdl.load(imagePaths, verbose=500) data = data.astype('float') / 255.0 (trainX, testX, trainY, testY) = train_test_split(data, labels, test_size=0.25, random_state=43) trainY = LabelBinarizer().fit_transform(trainY) testY = LabelBinarizer().fit_transform(testY) # construct the image generator for data augmentation aug = ImageDataGenerator(rotation_range=30, width_shift_range=0.1, height_shift_range=0.1,