def ready(self):
     # This global variable will be used by views.py.
     # read_trained_data() only needs to be read once here, instead
     # of every time a request comes in.``
     global myFaceRecognizer
     myFaceRecognizer = FaceRecognizer()
     logger.info("Created myFaceRecognizer")
Esempio n. 2
0
    def __init__(self,
                 dataset=FaceRecData.Yalefaces_A,
                 data_directory='data',
                 part=[70, 10, 20],
                 loud=False,
                 d_tuning=[25, 100, 25],
                 k_tuning=[1, 15],
                 var_tuning=[1000, 10000, 1000],
                 skip_tuning=False,
                 d_value=0,
                 k_value=3,
                 var_value=10000,
                 use_kernel=False):  # TODO: Better way to init this?
        '''
        Constructor for FaceRecTest.

        Args (optional):
            dataset (FaceRecData.value): The dataset to use.
            data_directory (str): The directory where the data lives.
            part (int): What percentage of the data should be used for
                training, dev, and test.
            loud (bool): Whether the classifier should print out fine details.
            d_tuning (tuple<int>): The range of PCA dimensions to observe
                during tuning.
            k_tuning (tuple<int>): The ranke of k for the kNN classifier to
                observe during tuning.
        '''

        self.dataset = dataset
        self.data_directory = data_directory
        self.trn_part = part[0]
        self.dev_part = part[1]
        self.tst_part = part[2]
        self.loud = loud
        self.d_tuning = d_tuning
        self.k_tuning = k_tuning
        self.var_tuning = var_tuning
        self.skip_tuning = skip_tuning
        self.d_value = d_value
        self.k_value = k_value
        self.var_value = var_value
        self.use_kernel = use_kernel

        self.face_recognizer = FaceRecognizer(use_kernel=use_kernel)

        self.instances = None
        self.trn_data = None
        self.dev_data = None
        self.tst_data = None

        if sum(part) != 100:
            raise RuntimeError('Train/Dev/Test partitions don\'t add up '
                               'to 100%')
        if len(d_tuning) != 3:
            raise RuntimeError('3 parameters are required for tuning d '
                               '({} found)'.format(len(d_tuning)))
        if len(k_tuning) != 2:
            raise RuntimeError('2 parameters are required for tuning k '
                               '({} found)'.format(len(d_tuning)))