Ejemplo n.º 1
0
def _arm_inference(_id):
    logits, bboxes = threat_detect_inference(_id, 'arm')
    arcs = build_arcs('arm', logits, bboxes, _id)
    prediction_strings = []
    for i in range(len(arcs)):
        arc = arcs[i]
        zone = i + 1
        predict_proba = ArmCalibrationModel().calibrate(
            arc.calibration_featurize('arm'))
        prediction_strings.append('{0}_Zone{1},{2}'.format(
            _id, zone, predict_proba))
    for s in prediction_strings:
        print(s)
Ejemplo n.º 2
0
def _curate_arm_calibration(data_set):
    ids = Table().read_table(dp.ids_by_data_set(data_set)).column('Id')
    X, y_label, y_zone = [], [], []

    for _id in ids:
        print(_id)
        logits, bboxes = threat_detect_inference(_id, 'arm')
        arcs = build_arcs('arm', logits, bboxes, _id)
        for i in range(len(arcs)):
            arc = arcs[i]
            X.append(arc.to_list())
            zone = i + 1
            y_label.append(_ground_truth_label(_id, zone))
            y_zone.append(zone)

    X, y_label, y_zone = np.array(X), np.array(y_label), np.array(y_zone)
    return X, y_label, y_zone, ids
Ejemplo n.º 3
0
def _curate_torso_calibration(data_set):
    ids = Table().read_table(dp.ids_by_data_set(data_set)).column('Id')
    X, y_label, y_zone, example_ids = [], [], [], []
    xml_base_zone_path = dp.REPO_HOME_PATH + '/data/bbox/aps_threats/zone_{2}/{0}_{1}.xml'
    for _id in ids:
        print(_id)
        logits, bboxes = threat_detect_inference(_id, 'torso')
        _, cropped_bbox = crop_and_pad(_id,
                                       file_format='aps',
                                       region='torso',
                                       slc=0,
                                       keypoint_pad=None)
        arcs = build_arcs('torso', logits, bboxes, _id)
        for i in range(len(arcs)):
            arc = arcs[i]
            matched = False
            for zone in [5, 6, 7, 17]:
                num_matches = 0
                original_scale_boxes = arc.original_scale_boxes(cropped_bbox)
                for i in range(original_scale_boxes.shape[0]):
                    gt_xml_path = xml_base_zone_path.format(i, _id, zone)
                    if os.path.exists(gt_xml_path):
                        gt_bboxes = np.array(parse_bbox_xml(gt_xml_path))
                        if gt_bboxes.size > 0:
                            if np.max(
                                    _iou(gt_bboxes, original_scale_boxes[i][
                                        np.newaxis])) > 0.5:
                                num_matches += 1
                matched = num_matches / np.sum(
                    np.sum(original_scale_boxes, axis=1) > 0) >= 0.5
                if matched:
                    X.append(arc.to_list())
                    y_label.append(int(matched))
                    y_zone.append(zone)
                    example_ids.append(_id)
                    break
            if not matched:
                X.append(arc.to_list())
                y_label.append(int(matched))
                y_zone.append(zone)
                example_ids.append(_id)

    X, y_label, y_zone = np.array(X), np.array(y_label), np.array(y_zone)
    return X, y_label, y_zone, example_ids
Ejemplo n.º 4
0
def _thigh_inference(_id):
    logits, bboxes = threat_detect_inference(_id, 'thigh')
    arcs = build_arcs('thigh', logits, bboxes)
    zone_predictions = {i: [] for i in [8, 9, 10, 11, 12]}
    for i in range(len(arcs)):
        arc = arcs[i]
        predict_proba = ThighCalibrationModel().calibrate(
            arc.calibration_featurize('thigh'))
        zone = ThighCalibrationModel().zone(arc.zone_featurize('thigh'))[0]
        zone_predictions[zone].append(predict_proba)
    prediction_strings = []
    for zone in [8, 9, 10, 11, 12]:
        preds = np.array(sorted(zone_predictions[zone])[::-1])
        if len(preds) == 0:
            predict_proba = MIN_PREDICTION
        else:
            predict_proba = preds[0] + (1 - preds[0]) * min(
                np.sum(preds[1:]), 1)
        prediction_strings.append('{0}_Zone{1},{2}'.format(
            _id, zone, predict_proba))
    for s in prediction_strings:
        print(s)