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
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
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
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
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