MCNN代码
https://github.com/svishwa/crowdcount-mcnn
ShanghaiTech Dataset
Dropbox: https://www.dropbox.com/s/fipgjqxl7uj8hd5/ShanghaiTech.zip?dl=0
下载mcnn代码和ShanghaiTech Dataset,按照代码所说,在代码文件夹中创建 data/original/shanghaitech/ ,如图所示。
然后把上海tech的partA和partB放入shanghaitech这个文件夹。一定要按照他所说的来,不然接下来你要自己改路径比较麻烦。
然后在matlab中打开crowdcount-mcnn-master文件夹中的 create_gt_test_set_shtech.m
这里面主要是对test文件根据mat生成csv,如果你要生成train文件把路径改了即可。
一定要注意如果你要生成train的一定要修改 num_images 的个数,因为train和test图片数量不同。然后要生成B的把dataset = 'A';改成dataset = 'B';
下面是生成csv的matlab代码。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% File to create grount truth density map for test set%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc; clear all;
dataset = 'B';
dataset_name = ['shanghaitech_part_' dataset ];
path = ['../data/original/shanghaitech/part_' dataset '_final/test_data/images/'];
gt_path = ['../data/original/shanghaitech/part_' dataset '_final/test_data/ground_truth/'];
gt_path_csv = ['../data/original/shanghaitech/part_' dataset '_final/test_data/ground_truth_csv/'];
mkdir(gt_path_csv )
if (dataset == 'B')
num_images = 316; # 这里原本是判断如果是B数据集test是多少张图片,是A是多少,如果你要生成 B的train的csv就自己改一下num_images的数量就行了
else
num_images = 182;
end
for i = 1:num_images
if (mod(i,10)==0)
fprintf(1,'Processing %3d/%d files\n', i, num_images);
end
load(strcat(gt_path, 'GT_IMG_',num2str(i),'.mat')) ;
input_img_name = strcat(path,'IMG_',num2str(i),'.jpg');
im = imread(input_img_name);
[h, w, c] = size(im);
if (c == 3)
im = rgb2gray(im);
end
annPoints = image_info{1}.location;
[h, w, c] = size(im);
im_density = get_density_map_gaussian(im,annPoints);
csvwrite([gt_path_csv ,'IMG_',num2str(i) '.csv'], im_density);
end