コード例 #1
0
 def _load_features_nocache(self, data: DataSetBase, image):
     points, features, colors, segmentation_data = data.load_features(image)
     if points is None:
         logger.error("Could not load features for image {}".format(image))
     else:
         points = np.array(points[:, :3], dtype=float)
     return points, features, colors, segmentation_data
コード例 #2
0
 def _load_features_nocache(self, data: DataSetBase,
                            image: str) -> Optional[ft.FeaturesData]:
     features_data = data.load_features(image)
     if features_data is None:
         logger.error("Could not load features for image {}".format(image))
         return None
     else:
         features_data.points = np.array(features_data.points[:, :3],
                                         dtype=float)
     return features_data
コード例 #3
0
def load_features(dataset: DataSetBase, images):
    logging.info("reading features")
    features = {}
    colors = {}
    segmentations = {}
    instances = {}
    for im in images:
        p, f, c, s = dataset.load_features(im)
        features[im] = p[:, :3]
        colors[im] = c
        segmentations[im] = s["segmentations"] if s else None
        instances[im] = s["instances"] if s else None
    return features, colors, segmentations, instances
コード例 #4
0
def features_statistics(data: DataSetBase, tracks_manager, reconstructions):
    stats = {}
    detected = []
    for im in data.images():
        features_data = data.load_features(im)
        if not features_data:
            continue
        detected.append(len(features_data.points))
    if len(detected) > 0:
        stats["detected_features"] = {
            "min": min(detected),
            "max": max(detected),
            "mean": int(np.mean(detected)),
            "median": int(np.median(detected)),
        }
    else:
        stats["detected_features"] = {
            "min": -1,
            "max": -1,
            "mean": -1,
            "median": -1
        }

    per_shots = defaultdict(int)
    for rec in reconstructions:
        all_points_keys = set(rec.points.keys())
        for shot_id in rec.shots:
            if shot_id not in tracks_manager.get_shot_ids():
                continue
            for point_id in tracks_manager.get_shot_observations(shot_id):
                if point_id not in all_points_keys:
                    continue
                per_shots[shot_id] += 1
    per_shots = list(per_shots.values())

    stats["reconstructed_features"] = {
        "min": int(min(per_shots)) if len(per_shots) > 0 else -1,
        "max": int(max(per_shots)) if len(per_shots) > 0 else -1,
        "mean": int(np.mean(per_shots)) if len(per_shots) > 0 else -1,
        "median": int(np.median(per_shots)) if len(per_shots) > 0 else -1,
    }
    return stats
コード例 #5
0
def load_features(dataset: DataSetBase, images):
    logging.info("reading features")
    features = {}
    colors = {}
    segmentations = {}
    instances = {}
    for im in images:
        features_data = dataset.load_features(im)

        if not features_data:
            continue

        features[im] = features_data.points[:, :3]
        colors[im] = features_data.colors

        semantic_data = features_data.semantic
        if semantic_data:
            segmentations[im] = semantic_data.segmentation
            instances[im] = semantic_data.instances

    return features, colors, segmentations, instances