def make_birds(): train_data, val_data, test_data = corpus.load_birds() by_bird = defaultdict(list) all_birds = [] for datum in val_data: id_parts = datum.image_id.split("_") bird_name = "_".join(id_parts[:-2]) by_bird[bird_name].append(datum) all_birds.append(datum) counter = 0 with open("experiments/all_same/birds.ids.txt", "w") as id_f: for bird in by_bird: if counter == 100: break birds = by_bird[bird] np.random.shuffle(birds) bird1 = birds[0] for bird2 in birds: if bird2.image_id == bird1.image_id: continue print >> id_f, "%s,%s,0" % (bird1.image_id, bird2.image_id) counter += 1 with open("experiments/one_different/birds.ids.txt", "w") as id_f: for i in range(100): bird1 = all_birds[np.random.randint(len(all_birds))] bird2 = all_birds[np.random.randint(len(all_birds))] print >> id_f, "%s,%s,0" % (bird1.image_id, bird2.image_id) with open("experiments/by_similarity/birds.ids.txt", "w") as id_f: pass
def make_birds(): train_data, val_data, test_data = corpus.load_birds() by_bird = defaultdict(list) all_birds = [] for datum in val_data: id_parts = datum.image_id.split("_") bird_name = "_".join(id_parts[:-2]) by_bird[bird_name].append(datum) all_birds.append(datum) counter = 0 with open("experiments/all_same/birds.ids.txt", "w") as id_f: for bird in by_bird: if counter == 100: break birds = by_bird[bird] np.random.shuffle(birds) bird1 = birds[0] for bird2 in birds: if bird2.image_id == bird1.image_id: continue print >>id_f, "%s,%s,0" % (bird1.image_id, bird2.image_id) counter += 1 with open("experiments/one_different/birds.ids.txt", "w") as id_f: for i in range(100): bird1 = all_birds[np.random.randint(len(all_birds))] bird2 = all_birds[np.random.randint(len(all_birds))] print >>id_f, "%s,%s,0" % (bird1.image_id, bird2.image_id) with open("experiments/by_similarity/birds.ids.txt", "w") as id_f: pass
def main(): apollocaffe.set_device(0) #apollocaffe.set_cpp_loglevel(0) apollocaffe.set_random_seed(0) np.random.seed(0) job = sys.argv[1] corpus_name = sys.argv[2] config = util.Struct(**yaml.load(CONFIG)) if corpus_name == "abstract": train_scenes, dev_scenes, test_scenes = corpus.load_abstract() else: assert corpus_name == "birds" train_scenes, dev_scenes, test_scenes = corpus.load_birds() apollo_net = ApolloNet() print "loaded data" print "%d training examples" % len(train_scenes) listener0_model = Listener0Model(apollo_net, config.model) speaker0_model = Speaker0Model(apollo_net, config.model) sampling_speaker1_model = SamplingSpeaker1Model(apollo_net, config.model) compiled_speaker1_model = CompiledSpeaker1Model(apollo_net, config.model) if job == "train.base": train(train_scenes, dev_scenes, listener0_model, apollo_net, config.opt) train(train_scenes, dev_scenes, speaker0_model, apollo_net, config.opt) apollo_net.save("models/%s.base.caffemodel" % corpus_name) exit() if job == "train.compiled": apollo_net.load("models/%s.base.caffemodel" % corpus_name) print "loaded model" train(train_scenes, dev_scenes, compiled_speaker1_model, apollo_net, config.opt) apollo_net.save("models/%s.compiled.caffemodel" % corpus_name) exit() if job in ("sample.base", "sample.compiled"): if job == "sample.base": apollo_net.load("models/%s.base.caffemodel" % corpus_name) else: apollo_net.load("models/%s.compiled.caffemodel" % corpus_name) print "loaded model" if job == "sample.base": models = { "sampling_speaker1": sampling_speaker1_model, } elif job == "sample.compiled": models = { "compiled_speaker1": compiled_speaker1_model, } name = job.split(".")[1] run_experiment("one_different", corpus_name, name, models, dev_scenes) run_experiment("by_similarity", corpus_name, name, models, dev_scenes) run_experiment("all_same", corpus_name, name, models, dev_scenes)