Esempio n. 1
0
def visualize():
    print("Load images")
    v_ims1 = common.load_images("data/vehicles/", color='RGB')
    v_ims2 = common.load_images("data/OwnCollection/vehicles/", color='RGB')
    nv_ims1 = common.load_images("data/non-vehicles/", color='RGB')
    nv_ims2 = common.load_images("data/OwnCollection/non-vehicles/",
                                 color='RGB')
    ncols, nrows = (16, ) * 2
    n = ncols * nrows // 4
    ims = [
        v_ims1[np.random.randint(v_ims1.shape[0], size=n)],
        v_ims2[np.random.randint(v_ims2.shape[0], size=n)],
        nv_ims1[np.random.randint(nv_ims1.shape[0], size=n)],
        nv_ims2[np.random.randint(nv_ims2.shape[0], size=n)]
    ]
    print("Load images done")
    ims = np.concatenate(ims)
    fig, axes = plt.subplots(ncols=ncols, nrows=nrows)
    fig.canvas.set_window_title('Dataset images')
    print("Visualize images {0}x{0}".format(ncols))
    size = ims.shape[0]
    for r, row_ax in enumerate(axes):
        for c, ax in enumerate(row_ax):
            i = r * ncols + c
            ax.imshow(ims[i])
            ax.get_xaxis().set_visible(False)
            ax.get_yaxis().set_visible(False)
            ax.set_xticklabels([])
            ax.set_yticklabels([])
            #ax.set_aspect('equal')
    fig.subplots_adjust(wspace=0, hspace=0)
    print("Show images")
    fig.show()
Esempio n. 2
0
def train(extract_features,
          if_grayscale=False,
          if_normalize_images=True,
          svm_c_param=SVM_C_PARAM,
          svm_gamma_param=SVM_GAMMA_PARAM,
          **kwargs):
    # Load images
    (images, labels) = load_images(if_grayscale=if_grayscale,
                                   if_normalize_images=if_normalize_images)

    # Split images into train and test set
    test_set_ratio = TEST_SET_RATIO
    print('Splitting dataset to train & test set with test_set_ratio=' +
          str(test_set_ratio) + '...')
    (images_train, images_test, labels_train, labels_test) = \
        model_selection.train_test_split(images, labels, test_size=test_set_ratio)

    # Extract features from images
    print('Extracting features for train & test set...')
    (X_train, X_test) = extract_features(images_train, images_test, **kwargs)
    y_train = labels_train
    y_test = labels_test

    # Visualize features
    if IF_VISUALIZE_FEATURES:
        from .visualize_features import visualize_features
        visualize_features(X_train, y_train)

    # Train SVM model with train set
    gamma = svm_gamma_param if svm_gamma_param != 0 else 'auto'
    print('Training SVM with c=' + str(svm_c_param) + ', gamma=' +
          str(svm_gamma_param) + '...')
    model = svm.SVC(max_iter=MAX_ITERATIONS,
                    C=svm_c_param,
                    gamma=gamma,
                    probability=True)
    model.fit(X_train, y_train)
    # Return the distance of the sample from all other hyperplane
    # Higher value of the distance higher confidence
    confidence_of_model = model.predict_proba(X_train)
    confidence_example = np.amax(confidence_of_model, axis=1)
    print(stats.describe(confidence_example))
    #print(str(confidence_average))
    #print(str(confidence_of_model))

    # Test SVM model
    y_train_predict = np.array(model.predict(X_train))
    y_test_predict = np.array(model.predict(X_test))
    (train_accuracy,
     train_confusion_matrix) = get_accuracy(y_train_predict, y_train)
    (test_accuracy,
     test_confusion_matrix) = get_accuracy(y_test_predict, y_test)
    print('Train accuracy: ' + str(train_accuracy))
    print('Train confusion matrix:')
    print(train_confusion_matrix)
    print('Test accuracy: ' + str(test_accuracy))
    print('Test confusion matrix:')
    print(test_confusion_matrix)
    return test_accuracy
Esempio n. 3
0
 def __init__(self, load=True,
              vehicles=["data/vehicles/"],
              nonvehicles=["data/non-vehicles"],
              color='HSL'):
     if load == True:
         self.color = color
         veh = common.load_images(*vehicles, color=color)
         nonveh = common.load_images(*nonvehicles, color=color)
         veh_lbl = np.array([1] * veh.shape[0])
         nonveh_lbl = np.array([0] * nonveh.shape[0])
         self.x_orig = np.concatenate([veh, nonveh])
         self.y_orig = np.concatenate([veh_lbl, nonveh_lbl])
     else:
         self.x_orig = None
         self.y_orig = None
     self.x = None
     self.colormap = color
Esempio n. 4
0
 def __init__(self, screen):
     pygame.sprite.Sprite.__init__(self)
     self.counter = 0
     self.imgs = common.load_images('TN2.png', 'TE2.png',
                                    'TS2.png', 'TW2.png',
                                    'TNW2.png', 'TSW2.png',
                                    'TSE2.png', 'TNE2.png')
     self.masks = {}
     for item in self.imgs:
         self.masks[self.counter] = pygame.mask.from_surface(self.imgs[self.counter])
         self.counter += 1
     self.image = pygame.image.load('../resources/images/TN2.png').convert_alpha()
     PlayerTank.__init__(self, screen)
Esempio n. 5
0
 def __init__(self, screen):
     pygame.sprite.Sprite.__init__(self)
     self.counter = 0
     self.imgs = common.load_images('TN2.png', 'TE2.png', 'TS2.png',
                                    'TW2.png', 'TNW2.png', 'TSW2.png',
                                    'TSE2.png', 'TNE2.png')
     self.masks = {}
     for item in self.imgs:
         self.masks[self.counter] = pygame.mask.from_surface(
             self.imgs[self.counter])
         self.counter += 1
     self.image = pygame.image.load(
         '../resources/images/TN2.png').convert_alpha()
     PlayerTank.__init__(self, screen)
Esempio n. 6
0
def train(extract_features, if_grayscale=False, if_normalize_images=True,
    svm_c_param=SVM_C_PARAM, svm_gamma_param=SVM_GAMMA_PARAM, **kwargs):
    # Load images
    (images, labels) = load_images(if_grayscale=if_grayscale, if_normalize_images=if_normalize_images)

    # Split images into train and test set
    test_set_ratio = TEST_SET_RATIO
    print('Splitting dataset to train & test set with test_set_ratio=' + str(test_set_ratio) + '...')
    (images_train, images_test, labels_train, labels_test) = \
        model_selection.train_test_split(images, labels, test_size=test_set_ratio)

    # Extract features from images
    print('Extracting features for train & test set...')
    (X_train, X_test) = extract_features(images_train, images_test, **kwargs)
    y_train = labels_train
    y_test = labels_test

    # Visualize features
    if IF_VISUALIZE_FEATURES:
        from .visualize_features import visualize_features
        visualize_features(X_train, y_train)

    # Train SVM model with train set
    gamma = svm_gamma_param if svm_gamma_param != 0 else 'auto'
    print('Training SVM with c=' + str(svm_c_param) + ', gamma=' + str(svm_gamma_param) + '...')
    model = svm.SVC(max_iter=MAX_ITERATIONS, C=svm_c_param, gamma=gamma, probability=True)
    model.fit(X_train, y_train)
    # Return the distance of the sample from all other hyperplane
    # Higher value of the distance higher confidence
    confidence_of_model = model.predict_proba(X_train)
    confidence_example = np.amax(confidence_of_model, axis=1)
    print(stats.describe(confidence_example))
    #print(str(confidence_average))
    #print(str(confidence_of_model))


    # Test SVM model
    y_train_predict = np.array(model.predict(X_train))
    y_test_predict = np.array(model.predict(X_test))
    (train_accuracy, train_confusion_matrix) = get_accuracy(y_train_predict, y_train)
    (test_accuracy, test_confusion_matrix) = get_accuracy(y_test_predict, y_test)
    print('Train accuracy: ' + str(train_accuracy))
    print('Train confusion matrix:')
    print(train_confusion_matrix)
    print('Test accuracy: ' + str(test_accuracy))
    print('Test confusion matrix:')
    print(test_confusion_matrix)
    return test_accuracy
Esempio n. 7
0
"""Face dataset

Attributes
----------
IMAGES : np.array
    Data matrix for the faces dataset. 640x2500.

TEST_IMAGES : np.array
    Data matrix for test images. 2x2500.
"""

from common import load_images

_IMAGE_NAMES = ["data/{idx}.png".format(idx=str(i + 1)) for i in range(640)]
IMAGES = load_images(_IMAGE_NAMES)

_TESTS = ["testcase/test_01.png", "testcase/test_02.png"]
TEST_IMAGES = load_images(_TESTS)
Esempio n. 8
0
# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt
import common
import seaborn as sns

setname = 'DENIS'
size = (256, 256) if setname in ['SDO', 'SDO-Hard'] else None
fformat = '.jpg' if setname in ['CELEBa', 'INRIA'] else '.png'

training = common.load_images(f'../Clean/sets/{setname}-training', fformat)
testing = common.load_images(f'../Clean/sets/{setname}-testing', fformat)

#%%

mses = np.zeros(len(testing))

for i, x in enumerate(testing):
    err = np.mean(np.mean((training - x)**2, 1), 1)
    mses[i] = err.min()

#%%
plt.figure()
plt.title(f'{setname} : {np.mean(mses):0.2e}')
sns.distplot(mses)
plt.xlabel('Closest Error')
plt.ylabel('Frequency')
plt.grid()
plt.savefig(f'alignement_{setname}.eps')
np.savetxt(f"{setname}_align.csv", mses)