def load_data_global_probs(dataset="train", latent=False): def padded_vstack(blub): a, b = blub if a.shape[0] > b.shape[0]: b = np.hstack([b, np.zeros((b.shape[0], a.shape[1] - b.shape[1]))]) return np.vstack([a, b]) data = load_data(dataset=dataset, which="piecewise") data = add_kraehenbuehl_features(data, which="train_30px") data = add_kraehenbuehl_features(data, which="train") data = add_edges(data) if latent: data = add_top_node(data) descs = np.load("/home/user/amueller/checkout/superpixel_crf/" "global_probs_%s.npy" % dataset) X = [] for x, glob_desc in zip(data.X, descs): if latent: x_ = padded_vstack([x[0], np.repeat(sigm(glob_desc)[np.newaxis, 1:], x[2], axis=0)]) else: x_ = np.hstack([x[0], np.repeat(sigm(glob_desc)[np.newaxis, :], x[0].shape[0], axis=0)]) # add features for latent node if len(x) == 3: X.append((x_, x[1], x[2])) else: X.append((x_, x[1])) return DataBunch(X, data.Y, data.file_names, data.superpixels)
def load_data_global_probs(dataset="train", latent=False): def padded_vstack(blub): a, b = blub if a.shape[0] > b.shape[0]: b = np.hstack([b, np.zeros((b.shape[0], a.shape[1] - b.shape[1]))]) return np.vstack([a, b]) data = load_data(dataset=dataset, which="piecewise") data = add_kraehenbuehl_features(data, which="train_30px") data = add_kraehenbuehl_features(data, which="train") data = add_edges(data) if latent: data = add_top_node(data) descs = np.load("/home/user/amueller/checkout/superpixel_crf/" "global_probs_%s.npy" % dataset) X = [] for x, glob_desc in zip(data.X, descs): if latent: x_ = padded_vstack([ x[0], np.repeat(sigm(glob_desc)[np.newaxis, 1:], x[2], axis=0) ]) else: x_ = np.hstack([ x[0], np.repeat(sigm(glob_desc)[np.newaxis, :], x[0].shape[0], axis=0) ]) # add features for latent node if len(x) == 3: X.append((x_, x[1], x[2])) else: X.append((x_, x[1])) return DataBunch(X, data.Y, data.file_names, data.superpixels)
def main(C=1, test=False): # load training data #independent = True independent = False data_train = load_data(which="piecewise") data_train = add_edges(data_train, independent=independent, fully_connected=True) data_train = add_kraehenbuehl_features(data_train, which="train_30px") data_train = add_kraehenbuehl_features(data_train, which="train") #data_train = load_data_global_probs() if not independent: data_train = add_edge_features(data_train) data_train = discard_void(data_train, 21) if test: data_val = load_data("val", which="piecewise_train") data_val = add_edges(data_val, independent=independent) data_val = add_kraehenbuehl_features(data_val, which="train_30px") data_val = add_kraehenbuehl_features(data_val, which="train") data_val = add_edge_features(data_val) data_val = discard_void(data_val, 21) data_train = concatenate_datasets(data_train, data_val) #X_.extend(data_val.X) #Y_.extend(data_val.Y) n_states = 21 print("number of samples: %s" % len(data_train.X)) class_weights = 1. / np.bincount(np.hstack(data_train.Y)) #class_weights[21] = 0 class_weights *= 21. / np.sum(class_weights) #class_weights = np.ones(n_states) print(class_weights) #model = crfs.GraphCRF(n_states=n_states, #n_features=data_train.X[0][0].shape[1], #inference_method='qpbo', class_weight=class_weights) model = crfs.EdgeFeatureGraphCRF(n_states=n_states, n_features=data_train.X[0][0].shape[1], inference_method='qpbo', class_weight=class_weights, n_edge_features=3, symmetric_edge_features=[0, 1], antisymmetric_edge_features=[2]) experiment_name = "fully_connected_%f" % C #warm_start = True warm_start = False ssvm = learners.OneSlackSSVM(model, verbose=2, C=C, max_iter=100000, n_jobs=-1, tol=0.0001, show_loss_every=50, inference_cache=50, cache_tol='auto', logger=SaveLogger(experiment_name + ".pickle", save_every=100), inactive_threshold=1e-5, break_on_bad=False, inactive_window=50, switch_to_ad3=False) #ssvm = learners.SubgradientSSVM( #model, verbose=3, C=C, max_iter=10000, n_jobs=-1, show_loss_every=10, #logger=SaveLogger(experiment_name + ".pickle", save_every=10), #momentum=0, learning_rate=0.001, decay_exponent=1) if warm_start: ssvm = SaveLogger(experiment_name + ".pickle").load() ssvm.logger = SaveLogger(file_name=experiment_name + "_refit.pickle", save_every=10) ssvm.learning_rate = 0.000001 #ssvm.model.inference_method = 'ad3' #ssvm.n_jobs = 1 ssvm.fit(data_train.X, data_train.Y, warm_start=warm_start) print("fit finished!") return
def main(C=1, test=False): # load training data #independent = True independent = False data_train = load_data(which="piecewise") data_train = add_edges(data_train, independent=independent, fully_connected=True) data_train = add_kraehenbuehl_features(data_train, which="train_30px") data_train = add_kraehenbuehl_features(data_train, which="train") #data_train = load_data_global_probs() if not independent: data_train = add_edge_features(data_train) data_train = discard_void(data_train, 21) if test: data_val = load_data("val", which="piecewise_train") data_val = add_edges(data_val, independent=independent) data_val = add_kraehenbuehl_features(data_val, which="train_30px") data_val = add_kraehenbuehl_features(data_val, which="train") data_val = add_edge_features(data_val) data_val = discard_void(data_val, 21) data_train = concatenate_datasets(data_train, data_val) #X_.extend(data_val.X) #Y_.extend(data_val.Y) n_states = 21 print("number of samples: %s" % len(data_train.X)) class_weights = 1. / np.bincount(np.hstack(data_train.Y)) #class_weights[21] = 0 class_weights *= 21. / np.sum(class_weights) #class_weights = np.ones(n_states) print(class_weights) #model = crfs.GraphCRF(n_states=n_states, #n_features=data_train.X[0][0].shape[1], #inference_method='qpbo', class_weight=class_weights) model = crfs.EdgeFeatureGraphCRF(n_states=n_states, n_features=data_train.X[0][0].shape[1], inference_method='qpbo', class_weight=class_weights, n_edge_features=3, symmetric_edge_features=[0, 1], antisymmetric_edge_features=[2]) experiment_name = "fully_connected_%f" % C #warm_start = True warm_start = False ssvm = learners.OneSlackSSVM( model, verbose=2, C=C, max_iter=100000, n_jobs=-1, tol=0.0001, show_loss_every=50, inference_cache=50, cache_tol='auto', logger=SaveLogger(experiment_name + ".pickle", save_every=100), inactive_threshold=1e-5, break_on_bad=False, inactive_window=50, switch_to_ad3=False) #ssvm = learners.SubgradientSSVM( #model, verbose=3, C=C, max_iter=10000, n_jobs=-1, show_loss_every=10, #logger=SaveLogger(experiment_name + ".pickle", save_every=10), #momentum=0, learning_rate=0.001, decay_exponent=1) if warm_start: ssvm = SaveLogger(experiment_name + ".pickle").load() ssvm.logger = SaveLogger( file_name=experiment_name + "_refit.pickle", save_every=10) ssvm.learning_rate = 0.000001 #ssvm.model.inference_method = 'ad3' #ssvm.n_jobs = 1 ssvm.fit(data_train.X, data_train.Y, warm_start=warm_start) print("fit finished!") return