Exemplo n.º 1
0
    print('model: {}, caffemodel: {}, prototxt: {}'.format(
        modelname, caffemodel, prototxt))

    net = model(modelname, caffemodel, prototxt, layername, gpu_id)

    dataset = Dataset(dataset)

    image_iters = dataset.get_image_list()

    #image_iters = image_iters[0:100]

    for idx, image_iter in enumerate(image_iters):
        image_name = image_iter.split('.')[0]

        image_id = dataset.get_image_id(image_name)

        if image_id:
            image_path = os.path.join(dataset.data_path, image_name + '.jpg')
            image = cv2.imread(image_path)
            net_time = Timer()

            net_time.tic()
            feature = copy.deepcopy(net.forward(image, layername))
            net_time.toc()

            dataset.add_feature(image_name, feature, image_id)

            view_bar(idx, len(image_iters))

            #if idx % 5000 == 0:
Exemplo n.º 2
0
def main():
    image_root = os.path.join(cfg.DATA_DIR, cfg.DATASET, 'image')
    datasetname = cfg.DATASET
    dataset = Dataset(datasetname)
    query_lists, _ = dataset.get_retrieval_list()
    feature_file = open(os.path.join(cfg.FEATURE_DIR, cfg.DATASET, \
                                     cfg.MODEL, cfg.DISTANCE_METRIC, \
                                     cfg.SAVE_NAME), 'rb')
    feature_dict = cPickle.load(feature_file)

    save_root = os.path.join(cfg.RESULT_DIR, cfg.DATASET, cfg.MODEL,
                             cfg.DISTANCE_METRIC)
    if not os.path.exists(save_root):
        os.makedirs(save_root)

    net = model(cfg.MODEL, cfg.CAFFEMODEL, cfg.PROTOTXT, cfg.FEATURE_NAME[0],
                cfg.GPU_ID)

    for idx, query_list in enumerate(query_lists):
        query_name, query_id = query_list.strip().split(' ')

        if query_name in feature_dict.keys():
            q_feature = copy.deepcopy(feature_dict[query_name]['feature'])
            q_id = copy.deepcopy(feature_dict[query_name]['id'])
        else:
            image_path = os.path.join(image_root, query_name + '.jpg')
            image = cv2.imread(image_path)
            q_feature = copy.deepcopy(net.forward(image, cfg.FEATURE_NAME[0]))
            q_id = dataset.get_image_id(query_name)

        retrieval_results = []

        for key in feature_dict.keys():
            p_feature = feature_dict[key]['feature']
            p_id = feature_dict[key]['id']

            if cfg.DISTANCE_METRIC == 'L2':
                tmp = norm_L2_distance(q_feature, p_feature)
            elif cfg.DISTANCE_METRIC == 'cosin':
                tmp = norm_cosin_distance(q_feature, p_feature)

            retrieval_results.append({
                'filename': key,
                'distance': tmp,
                'id': p_id
            })

        retrieval_results.sort(lambda x, y: cmp(y['distance'], x['distance']))
        #pdb.set_trace()

        f = open(os.path.join(save_root, query_name + '.txt'), 'w')

        # query image is also store in dataset
        for i in range(0, cfg.TOP_K + 1):
            filename = retrieval_results[i]['filename']
            distance = retrieval_results[i]['distance']
            f.writelines(
                str(query_name) + '_' + str(filename) + ' ' + str(distance) +
                '\n')
        f.close()

        view_bar(idx, len(query_lists))