Ejemplo n.º 1
0
def main():
    args = parse_args()

    net = CrowdCounter(is_cuda)
    network.load_net(args.model_path, net)
    if is_cuda:
        net.cuda()
    print('eval:', net.eval())

    video = cv2.VideoCapture(args.video)
    nframe = 0
    hist = []
    while 1:
        ok, frame = video.read()
        frame = cv2.resize(frame, (0, 0), fx=args.resize_fx, fy=args.resize_fx)
        nframe += 1
        if nframe % args.estimate_rate != 0:
            continue
        print('nframe', nframe)

        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        imgarr = image_to_array(gray)

        den, cnt = run(net, imgarr)
        """
        if len(hist) > 5:
            hist.pop(0)
        hist.append(den)
        histden = sum(hist) / len(hist)
        """
        if show(frame, den, cnt):
            break
Ejemplo n.º 2
0
def evaluate_model(trained_model, data_loader):
    net = CrowdCounter()
    network.load_net(trained_model, net)
    net.cuda()
    net.eval()
    mae = 0.0
    mse = 0.0
    for blob in data_loader:
        im_data = blob['data']
        gt_data = blob['gt_density']
        density_map = net(im_data, gt_data)
        density_map = density_map.data.cpu().numpy()
        gt_count = np.sum(gt_data)
        et_count = np.sum(density_map)
        mae += abs(gt_count - et_count)
        mse += ((gt_count - et_count) * (gt_count - et_count))
    mae = mae / data_loader.get_num_samples()
    mse = np.sqrt(mse / data_loader.get_num_samples())
    return mae, mse
Ejemplo n.º 3
0
def main():
    args = parse_args()

    net = CrowdCounter(is_cuda)
    network.load_net(args.model_path, net)
    if is_cuda:
        net.cuda()
    print('eval:', net.eval())

    for filename in args.image_files:
        img = cv2.imread(filename)
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        imgarr = image_to_array(gray)
        den, cnt = run(net, imgarr)
        #if show(img, den, cnt): break
        display_results_count(img, den, cnt)
Ejemplo n.º 4
0
output_dir = './output/'
model_name = os.path.basename(model_path).split('.')[0]
file_results = os.path.join(output_dir,'results_' + model_name + '_.txt')
if not os.path.exists(output_dir):
    os.mkdir(output_dir)
output_dir = os.path.join(output_dir, 'density_maps_' + model_name)
if not os.path.exists(output_dir):
    os.mkdir(output_dir)


net = CrowdCounter()
      
trained_model = os.path.join(model_path)
network.load_net(trained_model, net)
net.cuda()
net.eval()
mae = 0.0
mse = 0.0

#load test data
data_loader = ImageDataLoader(data_path, gt_path, shuffle=False, gt_downsample=True, pre_load=True)

for blob in data_loader:                        
    im_data = blob['data']
    gt_data = blob['gt_density']
    density_map = net(im_data, gt_data)
    density_map = density_map.data.cpu().numpy()
    gt_count = np.sum(gt_data)
    et_count = np.sum(density_map)
    mae += abs(gt_count-et_count)
    mse += ((gt_count-et_count)*(gt_count-et_count))
Ejemplo n.º 5
0
def main():
    parser = argparse.ArgumentParser(description='mcnn worldexp.')
    parser.add_argument('--preload', type=int, default=0)
    parser.add_argument('--data',
                        type=str,
                        default="./minibus_data",
                        help='data path')
    parser.add_argument('--model',
                        type=str,
                        default="./saved_models/mcnn_worldexpo_2000.h5",
                        help='model path')
    parser.add_argument('--saveden', type=int, default=1)
    parser.add_argument('--vis', type=int, default=0)

    args = parser.parse_args()
    method = 'mcnn'
    dataset_name = 'minibus'
    output_dir = './saved_models/'

    data_path = args.data
    vis = args.vis

    gt_path = None
    model_path = args.model
    save_output = args.saveden

    output_dir = './output/'
    model_name = os.path.basename(model_path).split('.')[0]
    file_results = os.path.join(output_dir, 'results_' + model_name + '_.txt')
    if not os.path.exists(output_dir):
        os.mkdir(output_dir)
    output_dir = os.path.join(output_dir, 'density_maps_' + model_name)
    if not os.path.exists(output_dir):
        os.mkdir(output_dir)

    net = CrowdCounter()

    trained_model = os.path.join(model_path)
    network.load_net(trained_model, net)
    print("loaded: {}".format(trained_model))
    net.cuda()
    net.eval()
    mae = 0.0
    mse = 0.0

    #load test data
    data_loader = ExrImageDataLoader(data_path,
                                     None,
                                     mask_path=-1,
                                     shuffle=False,
                                     gt_downsample=True,
                                     pre_load=args.preload)

    for blob in data_loader:
        im_data = blob['data']
        gt_data = blob['gt_density']
        mask = blob["mask"]
        density_map = net(im_data, gt_data, mask)
        density_map = density_map.data.cpu().numpy()
        gt_count = np.asscalar(np.sum(gt_data))
        et_count = np.asscalar(np.sum(density_map))
        log_text = 'fname: %s gt_cnt: %4.1f, et_cnt: %4.1f' % (
            blob['fname'], gt_count, et_count)
        print(log_text)
        mae += abs(gt_count - et_count)
        mse += ((gt_count - et_count) * (gt_count - et_count))
        if vis:
            utils.display_results(im_data, gt_data, density_map)
        if save_output:
            utils.save_density_map(
                density_map, output_dir,
                'output_' + blob['fname'].split('.')[0] + '.png')

    mae = mae / data_loader.get_num_samples()
    mse = np.sqrt(mse / data_loader.get_num_samples())
    print('\nMAE: %0.2f, MSE: %0.2f' % (mae, mse))