Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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)