def __init__(self, model_path, dataset): self.net_ = None self.dataset_ = None self.image_feats_ = None self.config_ = load_model_config(dataset) self.load_dataset(dataset) self.set_cnn_model(model_path, self.config_.deploy_file) self.load_cached_features()
def cache_features(net_, dataset): config = load_model_config(dataset) feat_path = config.FEAT_PATH if os.path.exists(feat_path): return loadmat(feat_path)['feats'] # make dir feat_rt = os.path.split(feat_path)[0] if not os.path.exists(feat_rt): os.makedirs(feat_rt) # extract feature print 'caching features' feats = extract_features(net_, config) savemat(feat_path, {'feats': feats}) return feats
def sketch_retrieval(net_, im, image_feats): config = load_model_config() im = imresize(im, config.input_dim) im = im.astype(np.single) - config.mean_val transformed = do_multiview_crop(im, config.crop_dim) num, chns, rows, cols = transformed.shape # reshape data layer net_.blobs['data'].reshape(*(num, chns, rows, cols)) # forward output = net_.forward(data=transformed.astype(np.float32, copy=False)) target = reshape_feature(output[config.feat_layer].copy()) # get retrieval results multiview_dists = compute_view_specific_distance(target, image_feats) ave_dist = multiview_dists.mean(axis=0) return ave_dist.flatten().argsort() # return ranklist