61 lines
1.7 KiB
Matlab
61 lines
1.7 KiB
Matlab
%% Etract IDE features
|
|
clear;clc;
|
|
addpath('../caffe/matlab/');
|
|
addpath(genpath('utils/'));
|
|
% load model and creat network
|
|
caffe.set_device(0);
|
|
caffe.set_mode_gpu();
|
|
netname = 'ResNet_50'; % network: CaffeNet or ResNet_50 or googlenet
|
|
|
|
% set your path to the prototxt and model
|
|
model = ['../models/Market-1501/' netname '/' netname '_test.prototxt'];
|
|
weights = ['../output/Market-1501_train/' netname '_IDE_iter_50000.caffemodel'];
|
|
net = caffe.Net(model, weights, 'test');
|
|
|
|
if strcmp(netname, 'ResNet_50')
|
|
im_size = 224;
|
|
feat_dim = 2048;
|
|
elseif strcmp(netname, 'CaffeNet')
|
|
im_size = 227;
|
|
feat_dim = 4096;
|
|
else
|
|
im_size = 227;
|
|
feat_dim = 1024;
|
|
end
|
|
|
|
% mean data
|
|
mean_data = importdata('../caffe/matlab/+caffe/imagenet/ilsvrc_2012_mean.mat');
|
|
image_mean = mean_data;
|
|
off = floor((size(image_mean,1) - im_size)/2)+1;
|
|
image_mean = image_mean(off:off+im_size-1, off:off+im_size-1, :);
|
|
|
|
ef_path = {'data/Market-1501/bounding_box_train/', 'data/Market-1501/bounding_box_test/', 'data/Market-1501/query/'};
|
|
ef_name = {'train', 'test', 'query'};
|
|
|
|
if ~exist('feat/Market-1501/')
|
|
mkdir('featMarket-1501/')
|
|
end
|
|
|
|
% extract features
|
|
for i = 1:3
|
|
img_path = ef_path{i};
|
|
img_file = dir([img_path '*.jpg']);
|
|
feat = single(zeros(feat_dim, length(img_file)));
|
|
|
|
for n = 1:length(img_file)
|
|
if mod(n, 1000) ==0
|
|
fprintf('%s: %d/%d\n',ef_name{i}, n, length(img_file))
|
|
end
|
|
img_name = [img_path img_file(n).name];
|
|
im = imread(img_name);
|
|
im = prepare_img( im, image_mean, im_size);
|
|
feat_img = net.forward({im});
|
|
feat(:, n) = single(feat_img{1}(:));
|
|
end
|
|
|
|
save(['feat/Market-1501/' netname '_IDE_' ef_name{i} '.mat'], 'feat');
|
|
feat = [];
|
|
end
|
|
|
|
caffe.reset_all();
|