class LDAExtractor(AbstractSigExtractor): def __init__(self, pca_file, lda_file): super(LDAExtractor, self).__init__() self.lda = LDA.load_from_file(lda_file) self.pca = PCA() self.pca.load_from_xml_file(pca_file) def project_signature(self, feats): pca_feats = self.pca.project(feats) return self.lda.project(pca_feats, whiten=True) def encode(self): dla_dict = {} dla_dict['extractor_type'] = 'lda_extractor' dla_dict['lda'] = self.lda.encode() dla_dict['pca'] = self.pca.encode() return dla_dict @classmethod def decode(cls, lda_dict): lda_dict['pca'] = PCA.decode(lda_dict['pca']) lda_dict['lda'] = LDA.decode(lda_dict['lda']) lda_extractor = cls.__new__(LDAExtractor) lda_extractor.__dict__ = lda_dict return lda_extractor
class DLAExtractor(AbstractSigExtractor): def __init__(self, pca_file, dla_file): """ Args: pca_file : the xml file that is saved as part of PCA learning dla_file : pickle file storing the dla """ super(DLAExtractor, self).__init__() self.dla = DLA.load_from_file(dla_file) self.pca = PCA() self.pca.load_from_xml_file(pca_file) def project_signature(self, feats): pca_feats = self.pca.project(feats) return self.dla.project(pca_feats) def encode(self): dla_dict = {} dla_dict['extractor_type'] = 'dla_extractor' dla_dict['dla'] = self.dla.encode() dla_dict['pca'] = self.pca.encode() return dla_dict @classmethod def decode(cls, dla_dict): dla_dict['pca'] = PCA.decode(dla_dict['pca']) dla_dict['dla'] = DLA.decode(dla_dict['dla']) dla_extractor = cls.__new__(DLAExtractor) dla_extractor.__dict__ = dla_dict return dla_extractor
class SubspaceExtractor(AbstractSigExtractor): def __init__(self, model_dir): super(SubspaceExtractor, self).__init__() self.model_dir = model_dir self.pca_file = os.path.join(self.model_dir, 'learned_pca.xml') assert os.path.exists(self.pca_file), self.pca_file self.pca = PCA() self.pca.load_from_xml_file(self.pca_file) self.subspace_file = os.path.join(self.model_dir, 'learned_subspace.xml') assert os.path.exists(self.subspace_file), self.subspace_file self.get_projection_matrix() def get_projection_matrix(self): WI = np.asarray(cv.Load(self.subspace_file, name='WI')) WI_wh = np.asarray(cv.Load(self.subspace_file, name='WI_wh')) WL = np.asarray(cv.Load(self.subspace_file, name='WL')) self.projection_mat = np.dot(WL, np.dot(WI_wh, WI)).transpose() def project(self, feats): return np.dot(feats, self.projection_mat) def project_signature(self, feats): red_feats = self.pca.project(feats) return self.project(red_feats)
class PCAExtractor(AbstractSigExtractor): PCA_TAR_BALL_NAME = 'pca' def __init__(self): super(PCAExtractor, self).__init__() pca_file = self.grab_projection_files() self.pca = PCA() self.pca.load_from_xml_file(pca_file) def grab_projection_files(self): download_dir = os.path.join(config.scratch_detector_path(), self.PCA_TAR_BALL_NAME) bucket = config.s3_detector_bucket() logger.info('Downloading files from s3') s3client.download_tarball(bucket, self.PCA_TAR_BALL_NAME, download_dir) pca_file = os.path.join(download_dir, 'pca.xml') assert os.path.exists(pca_file), pca_file return pca_file def project_signature(self, feats): return self.pca.project(feats) def encode(self): pca_dict = {} pca_dict['extractor_type'] = 'pca_extractor' pca_dict['pca'] = self.pca.encode() return pca_dict @classmethod def decode(cls, pca_dict): pca_dict['pca'] = PCA.decode(pca_dict['pca']) pca_extractor = cls.__new__(cls) pca_extractor.__dict__ = pca_dict return pca_extractor
def __init__(self, pca_file, dla_file): """ Args: pca_file : the xml file that is saved as part of PCA learning dla_file : pickle file storing the dla """ super(DLAExtractor, self).__init__() self.dla = DLA.load_from_file(dla_file) self.pca = PCA() self.pca.load_from_xml_file(pca_file)
def __init__(self, model_dir): super(SubspaceExtractor, self).__init__() self.model_dir = model_dir self.pca_file = os.path.join(self.model_dir, 'learned_pca.xml') assert os.path.exists(self.pca_file), self.pca_file self.pca = PCA() self.pca.load_from_xml_file(self.pca_file) self.subspace_file = os.path.join(self.model_dir, 'learned_subspace.xml') assert os.path.exists(self.subspace_file), self.subspace_file self.get_projection_matrix()
def decode(cls, dla_dict): dla_dict['pca'] = PCA.decode(dla_dict['pca']) dla_dict['dla'] = DLA.decode(dla_dict['dla']) dla_extractor = cls.__new__(DLAExtractor) dla_extractor.__dict__ = dla_dict return dla_extractor
def decode(cls, lda_dict): lda_dict['pca'] = PCA.decode(lda_dict['pca']) lda_dict['lda'] = LDA.decode(lda_dict['lda']) lda_extractor = cls.__new__(LDAExtractor) lda_extractor.__dict__ = lda_dict return lda_extractor
def __init__(self, pca_file, lda_file): super(LDAExtractor, self).__init__() self.lda = LDA.load_from_file(lda_file) self.pca = PCA() self.pca.load_from_xml_file(pca_file)
def decode(cls, pca_dict): pca_dict['pca'] = PCA.decode(pca_dict['pca']) pca_extractor = cls.__new__(cls) pca_extractor.__dict__ = pca_dict return pca_extractor
def __init__(self): super(PCAExtractor, self).__init__() pca_file = self.grab_projection_files() self.pca = PCA() self.pca.load_from_xml_file(pca_file)