def gist_evaluate_svms(d_train, d_val): gist_scores = np.zeros((len(d_val.images), len(d_val.classes))) gist_table = np.load(config.get_gist_dict_filename(d_train.name)) kernels = ['rbf', 'linear', 'poly'] Cs = [1,10,100] gammas = [0,0.3,1] setts = list(itertools.product(kernels, Cs, gammas)) val_gt = d_val.get_cls_ground_truth() for cls_idx in range(len(d_val.classes)): cls = d_val.classes[cls_idx] gist = GistClassifier(cls, d_train, gist_table=gist_table, d_val=d_val) filename = config.get_gist_crossval_filename(d_train, cls) # doing some crossval right here!!! for set_idx in range(comm_rank, len(setts), comm_size): sett = setts[len(setts)-1-set_idx] kernel = sett[0] C = sett[1] gamma = sett[2] train_ap = gist.train_svm(d_train, kernel, C, gamma) val_gist_table = np.load(config.get_gist_dict_filename(d_val.name)) gist_scores = svm_proba(val_gist_table, gist.svm)[:,1] val_ap,_,_ = Evaluation.compute_cls_pr(gist_scores, val_gt.subset_arr(cls)) w = open(filename, 'a') w.write('%s C=%d gamma=%f - train: %f, val: %f\n'%(kernel, C, gamma, train_ap, val_ap)) w.close() print 'ap on val: %f'%val_ap print '%d at safebarrier'%comm_rank safebarrier(comm) gist_scores = comm.reduce(gist_scores) if comm_rank == 0: print gist_scores filename = config.get_gist_classifications_filename(d_val) cPickle.dump(gist_scores, open(filename,'w')) res = Evaluation.compute_cls_pr(gist_scores, val_gt.arr) print res
def gist_train_good_svms(all_settings, d_train): gist_table = np.load(config.get_gist_dict_filename(d_train.name)) for sett_idx in range(comm_rank, len(all_settings), comm_size): sett = all_settings[sett_idx] cls = sett[0] C = sett[1] kernel = sett[2] gamma = sett[3] gist = GistClassifier(cls, d_train, gist_table) filename = config.get_gist_crossval_filename(d_train, cls) gist.train_svm(d_train, kernel, C, gamma)
def init_actions(self, train=False): """ Return list of actions, which involves initializing the detectors. If train==True, the external detectors will load trainset detections. """ dataset = self.dataset if train: dataset = self.train_dataset actions = [] for detector in self.detectors: # synthetic perfect detector if detector == 'perfect': for cls in dataset.classes: det = PerfectDetector(dataset, self.train_dataset, cls) actions.append(ImageAction('%s_%s' % (detector, cls), det)) # GIST classifier elif detector == 'gist': # Make a single action that runs all the GIST classifiers dets = [] for cls in self.dataset.classes: gist_table = np.load( config.get_gist_dict_filename(self.dataset)) dets.append( GistClassifier(cls, self.train_dataset, gist_table, self.dataset)) gist_all = GistForAllClasses(dets) actions.append(ImageAction('gist', gist_all)) # real detectors, with pre-cached detections elif detector in ['dpm', 'csc_default', 'csc_half']: # load the dets from cache file and parcel out to classes all_dets = self.load_ext_detections(dataset, detector) for cls in dataset.classes: cls_ind = dataset.get_ind(cls) all_dets_for_cls = all_dets.filter_on_column('cls_ind', cls_ind, omit=True) det = ExternalDetector(dataset, self.train_dataset, cls, all_dets_for_cls, detector) actions.append(ImageAction('%s_%s' % (detector, cls), det)) else: raise RuntimeError("Unknown mode in detectors: %s" % self.detectors) return actions
def __init__(self, cls, train_d, gist_table=None, val_d=None): """ Load all gist features right away """ self.train_d = train_d self.val_d = val_d Classifier.__init__(self) self.tt.tic() if gist_table == None: print("Started loading GIST") self.gist_table = np.load(config.get_gist_dict_filename(train_d)) print("Time spent loading gist: %.3f"%self.tt.qtoc()) else: self.gist_table = gist_table self.cls = cls self.svm = self.load_svm()
def init_actions(self,train=False): """ Return list of actions, which involves initializing the detectors. If train==True, the external detectors will load trainset detections. """ dataset = self.dataset if train: dataset = self.train_dataset actions = [] for detector in self.detectors: # synthetic perfect detector if detector=='perfect': for cls in dataset.classes: det = PerfectDetector(dataset, self.train_dataset, cls) actions.append(ImageAction('%s_%s'%(detector,cls), det)) # GIST classifier elif detector=='gist': # Make a single action that runs all the GIST classifiers dets = [] for cls in self.dataset.classes: gist_table = np.load(config.get_gist_dict_filename(self.dataset)) dets.append(GistClassifier(cls, self.train_dataset,gist_table, self.dataset)) gist_all = GistForAllClasses(dets) actions.append(ImageAction('gist', gist_all)) # real detectors, with pre-cached detections elif detector in ['dpm','csc_default','csc_half']: # load the dets from cache file and parcel out to classes all_dets = self.load_ext_detections(dataset, detector) for cls in dataset.classes: cls_ind = dataset.get_ind(cls) all_dets_for_cls = all_dets.filter_on_column('cls_ind',cls_ind,omit=True) det = ExternalDetector( dataset, self.train_dataset, cls, all_dets_for_cls, detector) actions.append(ImageAction('%s_%s'%(detector,cls), det)) else: raise RuntimeError("Unknown mode in detectors: %s"%self.detectors) return actions