コード例 #1
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(mpi.comm_rank, len(all_settings), mpi.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)
コード例 #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(mpi.comm_rank, len(all_settings), mpi.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)
コード例 #3
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(mpi.comm_rank, len(setts), mpi.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 = gist.svm.predict_proba(val_gist_table)[:, 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' % mpi.comm_rank
    safebarrier(comm)
    gist_scores = comm.reduce(gist_scores)
    if mpi.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
コード例 #4
0
def read_best_svms_from_file(d_train):
  all_settings = []
  for cls in config.pascal_classes:
    filename = config.get_gist_crossval_filename(d_train, cls)
    lines = open(filename,'r').readlines()
    best_ap = 0
    best_line_idx = -1
    for line_idx, line in enumerate(lines):
      ap = float(line.split()[-1])
      if ap > best_ap:
        best_ap = ap
        best_line_idx = line_idx
    
    best_line = lines[best_line_idx].split()
    kernel = best_line[0]
    C = int(best_line[1].split('=')[1])
    gamma = float(best_line[2].split('=')[1])
    all_settings.append([cls, C, kernel, gamma, best_ap])
       
  return all_settings
コード例 #5
0
def read_best_svms_from_file(d_train):
    all_settings = []
    for cls in config.pascal_classes:
        filename = config.get_gist_crossval_filename(d_train, cls)
        lines = open(filename, 'r').readlines()
        best_ap = 0
        best_line_idx = -1
        for line_idx, line in enumerate(lines):
            ap = float(line.split()[-1])
            if ap > best_ap:
                best_ap = ap
                best_line_idx = line_idx

        best_line = lines[best_line_idx].split()
        kernel = best_line[0]
        C = int(best_line[1].split('=')[1])
        gamma = float(best_line[2].split('=')[1])
        all_settings.append([cls, C, kernel, gamma, best_ap])

    return all_settings
コード例 #6
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(mpi.comm_rank, len(setts), mpi.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 = gist.svm.predict_proba(val_gist_table)[:,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'%mpi.comm_rank
  safebarrier(comm)
  gist_scores = comm.reduce(gist_scores)
  if mpi.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