def evaluate(self, category, train=True):
        print "Evaluting discriminator pipeline for category", category
        evaluated_train = Evaluator("sigmoid_normal3", "ade20k")
        evaluated_val = Evaluator("sigmoid_normal3", "ade20k_val")
        im_list_train = evaluated_train.get_im_list_by_category(category)
        im_list_val = evaluated_val.get_im_list_by_category(category)

        print "Train instances:", len(im_list_train)
        print "Val instances:", len(im_list_val)

        if train:
            print "Training..."
            self.train(category, im_list_train)
            print "Training Done"
        else:
            print "Skipping training"

        print "Running on validation data"
        output_fn = "{}-ade20k_val.txt".format(category)
        fn_val = self.run(category, im_list_val, output_fn=output_fn)
        plot.plot(fn_val, evaluated_val, category, "ade20k_val")

        print "Running on training data"
        output_fn = "{}-ade20k.txt".format(category)
        fn_train = self.run(category, im_list_train, output_fn=output_fn)
        plot.plot(fn_train, evaluated_train, category, "ade20k")

        plot.vis(fn_val, evaluated_val, category, "ade20k_val",
                 self.datasource_val)
    config = utils.get_config(args.project)
    if args.prediction is not None:
        config["pspnet_prediction"] = args.prediction

    datasource = DataSource(config)
    evaluator = Evaluator(args.name, args.project,
                          datasource)  # Evaluation results
    vis = ProjectVisualizer(args.project,
                            datasource,
                            MAX=args.number,
                            evaluator=evaluator)

    # Image List
    im_list = None
    if args.im_list:
        # Open specific image list
        im_list = utils.open_im_list(args.im_list)
    elif args.category:
        im_list = evaluator.get_im_list_by_category(args.category)
    else:
        # Open default image list
        im_list = utils.open_im_list(config["im_list"])

    if args.randomize:
        # Shuffle image list
        random.seed(3)
        random.shuffle(im_list)

    im_list = im_list[args.start:]
    vis.visualize_images(im_list, category=args.category)