Example #1
0
class Tester:
    def __init__(self):
        self.results = Results()

    def load_data(self):
        self.results.build_article_dataset()
        topic_count = len(self.results.get_data())
        min_set = topic_count/4
        self.total_data = self.results.get_data()

        dev_keys = self.total_data.keys()[0:min_set*3]
        eval_keys = self.total_data.keys()[min_set*3:len(self.total_data)]

        self.dev_set = dict((k,v) for k, v in self.total_data.iteritems() if k in dev_keys)
        self.eval_set = dict((k,v) for k, v in self.total_data.iteritems() if k in eval_keys)
Example #2
0
class Tester:
    def __init__(self):
        self.results = Results()

    def load_data(self):
        self.results.build_article_dataset()
        topic_count = len(self.results.get_data())
        min_set = topic_count / 4
        self.total_data = self.results.get_data()

        dev_keys = self.total_data.keys()[0:min_set * 3]
        eval_keys = self.total_data.keys()[min_set * 3:len(self.total_data)]

        self.dev_set = dict(
            (k, v) for k, v in self.total_data.iteritems() if k in dev_keys)
        self.eval_set = dict(
            (k, v) for k, v in self.total_data.iteritems() if k in eval_keys)
Example #3
0
 def __init__(self):
     self.results = Results()
Example #4
0
 def __init__(self):
     self.results = Results()
Example #5
0
def run(images_path="media/",
        filename="",
        num_of_results=1,
        hm_lvl=0,
        certainty=0,
        data_dir=DATA_DIR):
    """execute face detection than vgg face and finally grad-cam

    :param filename: query image filename (default = "")
    :param images_path: query and output image path (default = "media/")
    :param data_dir: openCV directory path (default = DATA_DIR)
    :return TODO
    """

    res = Results(certainty)

    file_path = os.path.join(images_path, filename)
    if not file_path:
        res.err_msg = "ERROR: cannot load input image {}".format(filename)
        res.err_code = 1
        message(res.err_msg)
        return res

    face = FaceDetect(data_dir, file_path)
    if not face.is_valid:
        res.err_msg = "ERROR: cannot load input image {}".format(filename)
        res.err_code = 1
        message(res.err_msg)
        return res

    face.load_cascades()
    if not face.is_loaded:
        res.err_msg = "ERROR: cannot load cascades from: {}".format(data_dir)
        res.err_code = 2
        message(res.err_msg)
        return res

    face.detect_face()
    if not face.has_face:
        res.err_msg = "ERROR: sorry, frontal face wasn't detected"
        res.err_code = 3
        message(res.err_msg)
        return res

    # Crop faces from query image
    im = cv2.imread(file_path)
    # If found more than one face, pick the biggest one (w * h)
    cropped_im = crop_rect(im, max(face.features, key=lambda f: f[2] * f[3]))
    cv2.imwrite(os.path.join(images_path, "cropped.jpg"), cropped_im)

    # Run forward pass and GradCam on cropped image
    pred_labels, err_msg = classifier_gcam.predict(images_path, num_of_results)
    if (pred_labels is None) or (len(pred_labels) == 0):
        res.err_msg = err_msg
        res.err_code = 4
        message(res.err_msg)
        return res

    # Get predicted label from Torch output
    pred_ids = get_prediction_from_names(pred_labels)
    if len(pred_labels) == 0:
        res.err_msg = "ERROR: could not load names.txt file"
        res.err_code = 5
        message(res.err_msg)
        return res

    res.set_results(cropped_im, pred_ids[0], pred_labels[0], pred_ids[1:],
                    hm_lvl)
    res.find_significant_features()

    return res