Example #1
0
 def __init__(self):
     self.d = Dataset('full_pascal_trainval')
     self.d_val = Dataset('full_pascal_test')
     self.cls = 'dog'
     suffix = 'default'
     self.csc = CSCClassifier(suffix, self.cls, self.d, self.d_val)
     csc_test = np.load(config.get_ext_dets_filename(self.d, 'csc_default'))
     self.dets = csc_test[()]
Example #2
0
def train_csc_svms(d_train, d_val, kernel, C):
    # d: trainval
    # d_train: train  |   trainval
    # d_val: val      |   test
    dp = DatasetPolicy(d_train, d_train, detectors=['csc_default'])

    for cls_idx in range(mpi.comm_rank, len(d_train.classes), mpi.comm_size):
        cls = d_train.classes[cls_idx]
        ext_detector = dp.actions[cls_idx].obj
        csc = CSCClassifier('default', cls, d_train, d_val)
        csc.train_for_cls(ext_detector, kernel, C)
Example #3
0
    def __init__(self, dataset, train_dataset, cls, dets, detname):
        """
    Expects cached detections in Table format to be passed in.
    The dets should not have the 'cls_ind' column, as they should all be of the
    same class.
    """
        Detector.__init__(self, dataset, train_dataset, cls, detname)
        self.dets = dets
        # TODO: hack for csc_X
        suffix = detname[4:]

        if self.detname == 'dpm':
            self.classif = DPMClassifier()
        else:
            self.classif = CSCClassifier(suffix, cls, train_dataset, dataset)
Example #4
0
def test_csc_svm(d_train, d_val):
    dp = DatasetPolicy(d_val, d_train, detectors=['csc_default'])

    table = np.zeros((len(d_val.images), len(d_val.classes)))
    for cls_idx in range(mpi.comm_rank, len(d_val.classes), mpi.comm_size):
        cls = d_val.classes[cls_idx]
        ext_detector = dp.actions[cls_idx].obj
        # Load the classifier we trained in train_csc_svms
        csc = CSCClassifier('default', cls, d_train, d_val)
        table[:, cls_idx] = csc.eval_cls(ext_detector)

    print '%d is at safebarrier' % mpi.comm_rank
    safebarrier(comm)

    print 'passed safebarrier'
    table = comm.reduce(table, op=MPI.SUM, root=0)
    if mpi.comm_rank == 0:
        print 'save table'
        print table
        cPickle.dump(table, open('table', 'w'))
        print 'saved'
    return table
Example #5
0
    print table
    #cPickle.dump(table, open('tab_linear_5','w'))
    return table


if __name__ == '__main__':
    d_train = Dataset('full_pascal_trainval')
    d_val = Dataset('full_pascal_val')

    train_gt = d_train.get_cls_ground_truth()
    val_gt = d_val.get_cls_ground_truth()

    if mpi.comm_rank == 0:
        filename = os.path.join(
            config.get_classifier_dataset_dirname(
                CSCClassifier('default', 'dog', d_train, d_val), d_train),
            'crossval.txt')

    kernels = ['linear']
    Cs = [50]

    settings = list(itertools.product(kernels, Cs))

    for setin in settings:
        kernel = setin[0]
        C = setin[1]

        #train_csc_svms(d_train, d_val, kernel, C)
        safebarrier(comm)
        table_arr = test_csc_svm(d_train, d_val)