Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
 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()
Ejemplo n.º 5
0
  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