def region_similarity(cls, img1, img2, proposal1, proposal2): feature1 = FeatureExtractor.iterate_feature(proposal1, img1, axis=1) feature2 = FeatureExtractor.iterate_feature(proposal2, img2, axis=1) sim_mat = distance.cdist(feature1, feature2, "cosine") feature_map1 = DiscriminativeDetector.hog_feature(img1) feature_map2 = DiscriminativeDetector.hog_feature(img2) dis_tensor1 = DiscriminativeDetector.batch_gen_dis_map(feature_map1) dis_tensor2 = DiscriminativeDetector.batch_gen_dis_map(feature_map2) dis_mat1 = DiscriminativeDetector.batch_dis_detector(dis_tensor1, proposal1, axis=1) dis_mat2 = DiscriminativeDetector.batch_dis_detector(dis_tensor2, proposal2, axis=1) dis_mat = np.dot(dis_mat1, dis_mat2.T) res = sim_mat * dis_mat res = np.amax(res, axis=1) return res
def prepare_feature(): model_path = "/home/ge/tests/vgg16_weights.h5" proposal_path = "../mid-data/proposals.npy" image_base_path = "../images/kyoto/" feature_path = "../mid-data/feature/" proposals = np.load(proposal_path) FeatureExtractor.initialize(model_path) for i in range(10, 500): img = imread(image_base_path + str(i) + ".jpg") feature = FeatureExtractor.iterate_feature(proposals[i], img, axis=1) np.save(feature_path + str(i) + ".npy", feature)
__author__ = 'admin' import scipy.io as sio import numpy as np from FeatureExtractor import FeatureExtractor from ProposalSizeFilter import ProposalSizeFilter from skimage.io import imread from scipy.spatial import distance import pickle proposal_path = "../proposals.mat" model_path = "/home/ge/tests/vgg16_weights.h5" image_base_path = "../" mat_cont = sio.loadmat(proposal_path) proposals = mat_cont["res"] proposals = proposals[0, :] ProposalSizeFilter.initialize(80, 8000) proposals = ProposalSizeFilter.filter(proposals) FeatureExtractor.initialize(model_path) img1 = imread(image_base_path + "1.jpg") img2 = imread(image_base_path + "2.jpg") feature1 = FeatureExtractor.iterate_feature(proposals[0], img1, axis=1) feature2 = FeatureExtractor.iterate_feature(proposals[1], img2, axis=1) dis_mat = distance.cdist(feature1, feature2, "cosine") f = open("dis_mat_cosine.pkl", "wb") pickle.dump(dis_mat, f) f.close()