def train_car(): car_idx = np.where(classes == "car")[0] data_train = load_data("train", independent=False) car_images = np.array( [i for i, y in enumerate(data_train.Y) if np.any(y == car_idx)]) n_states_per_label = np.ones(22, dtype=np.int) n_states_per_label[car_idx] = 6 X, Y, file_names, images, all_superpixels = zip( *[(data_train.X[i], data_train.Y[i], data_train.file_names[i], data_train.images[i], data_train.superpixels[i]) for i in car_images]) problem = GraphCRF(n_states=22, inference_method='ad3', n_features=21 * 6) ssvm = learners.SubgradientStructuredSVM(problem, verbose=2, C=.001, max_iter=5000, n_jobs=-1, show_loss_every=10, learning_rate=0.0001, decay_exponent=0.5) ssvm.fit(X, Y) Y_pred = ssvm.predict(X) plot_results(images, file_names, Y, Y_pred, all_superpixels, folder="cars_only") data_val = load_data("val", independent=False) car_images_val = np.array( [i for i, y in enumerate(data_val.Y) if np.any(y == car_idx)]) X_val, Y_val, file_names_val, images_val, all_superpixels_val = \ zip(*[(data_val.X[i], data_val.Y[i], data_val.file_names[i], data_val.images[i], data_val.superpixels[i]) for i in car_images_val]) Y_pred_val = ssvm.predict(X_val) plot_results(images_val, file_names_val, Y_val, Y_pred_val, all_superpixels_val, folder="cars_only_val") # C=10 ## train: #0.92743060939680566V #> ssvm.score(X_val, Y_val) #0.52921719955898561 # test 0.61693548387096775 tracer()