Ejemplo n.º 1
0
def script_temp():

    path_to_val = "/disk2/imagenet/val"
    ext = "JPEG"

    out_dir = "/disk2/novemberExperiments/nn_imagenet_try"
    if not os.path.exists(out_dir):
        os.mkdir(out_dir)

    in_file_pre = "list_of_ims_for_nn"
    in_file_pre = os.path.join(out_dir, in_file_pre)

    path_to_classify = ".."
    trainFlag = False
    # caffe_model='/home/maheenrashid/Downloads/caffe/caffe-rc2/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel';
    caffe_model = "/disk2/octoberExperiments/nn_performance_without_pascal/snapshot_iter_450000.caffemodel"
    caffe_deploy = "/disk2/octoberExperiments/nn_performance_without_pascal/deploy.prototxt"
    caffe_mean = "/disk2/octoberExperiments/nn_performance_without_pascal/mean.npy"
    gpu_no = 0
    layers = ["pool5", "fc6", "fc7"]
    out_file = "nn_non_trained"
    out_file = os.path.join(out_dir, out_file)

    db_path_out = "sqlite://///disk2/novemberExperiments/nn_imagenet/nn_imagenet.db"

    synset_words = "../../data/ilsvrc12/synset_words.txt"
    val_gt_file = "../../data/ilsvrc12/val.txt"

    idx_chosen = pickle.load(open("/disk2/novemberExperiments/nn_imagenet/equal_mix_ids.p", "rb"))

    im_files_gt_classes = imagenet.selectTestSetByID(val_gt_file, idx_chosen, path_to_val=path_to_val)
    im_files = list(zip(*im_files_gt_classes)[0])
    gt_classes = list(zip(*im_files_gt_classes)[1])
    print len(im_files)
    print len(gt_classes)
    print len(set(gt_classes))
    per_file = len(im_files)

    # in_files,_=writeInputImageFiles(im_files,in_file_pre,per_file);
    in_files = [in_file_pre + "_" + str(0) + ".txt"]
    print in_files
    out_files = []
    for idx, in_file_curr in enumerate(in_files):
        out_file_curr = out_file + "_" + str(idx)
        out_files.append(
            caffe_wrapper.saveFeaturesOfLayers(
                in_file_curr,
                path_to_classify,
                gpu_no,
                layers,
                ext=ext,
                out_file=out_file_curr,
                meanFile=caffe_mean,
                deployFile=caffe_deploy,
                modelFile=caffe_model,
            )
        )

    print in_files
    print out_files

    file_list_all = []
    for in_file_curr in in_files:
        with open(in_file_curr, "rb") as f:
            file_list = f.readlines()
            file_list_all.extend([file_curr.strip("\n") for file_curr in file_list])
    print len(file_list_all)

    imagenet_idx_mapped, imagenet_ids_mapped, imagenet_labels_mapped = imagenet.getMappingInfo(
        file_list_all, synset_words, val_gt_file
    )

    print "about to combine"
    t = time.time()
    val_combined = combineDeepFeaturesFromFiles(out_files, layers)
    print time.time() - t

    for layer_curr in layers:
        print "about to nn for ", layer_curr
        t = time.time()
        indices, distances = nearest_neighbor.doCosineDistanceNN(val_combined[layer_curr], numberOfN=None)
        print time.time() - t
        #     break;
        # return

        print indices.shape
        print distances.shape

        print "writing to db"
        mani = Imagenet_Manipulator(db_path_out)
        mani.openSession()
        for idx in range(len(file_list_all)):
            if idx % 100 == 0:
                print layer_curr, idx, len(file_list_all)
            idx_out_file = idx / per_file
            out_file_layers = out_file + "_" + str(idx_out_file) + ".npz"

            mani.insert(
                idx,
                file_list_all[idx],
                layer_curr,
                out_file_layers,
                trainFlag,
                imagenet_idx_mapped[idx],
                imagenet_ids_mapped[idx],
                caffe_model,
                class_label_imagenet=imagenet_labels_mapped[idx],
                neighbor_index=indices[idx],
                neighbor_distance=distances[idx],
            )

        mani.closeSession()