Esempio n. 1
0
    def load_data(self, data: SampleCollection, dataset: Optional[Any] = None) -> Sequence[Dict[str, Any]]:
        self._validate(data)

        data.compute_metadata()
        classes = self._get_classes(data)
        class_map = ClassMap(classes)
        dataset.num_classes = len(class_map)

        parser = FiftyOneParser(data, class_map, self.label_field, self.iscrowd)
        records = parser.parse(data_splitter=SingleSplitSplitter())
        return [{DefaultDataKeys.INPUT: record} for record in records[0]]
Esempio n. 2
0
    def load_data(self,
                  data: SampleCollection,
                  dataset: Optional[Any] = None) -> Sequence[Dict[str, Any]]:
        self._validate(data)

        data.compute_metadata()

        filepaths = data.values("filepath")
        widths = data.values("metadata.width")
        heights = data.values("metadata.height")
        labels = data.values(self.label_field + ".detections.label")
        bboxes = data.values(self.label_field + ".detections.bounding_box")
        iscrowds = data.values(self.label_field + ".detections." +
                               self.iscrowd)

        classes = self._get_classes(data)
        class_to_idx = {cls_name: i for i, cls_name in enumerate(classes)}
        if dataset is not None:
            dataset.num_classes = len(classes)

        output_data = []
        img_id = 1
        for fp, w, h, sample_labs, sample_boxes, sample_iscrowd in zip(
                filepaths, widths, heights, labels, bboxes, iscrowds):
            output_boxes = []
            output_labs = []
            output_iscrowd = []
            output_areas = []
            for lab, box, iscrowd in zip(sample_labs, sample_boxes,
                                         sample_iscrowd):
                output_box, output_area = self._reformat_bbox(
                    box[0], box[1], box[2], box[3], w, h)
                output_areas.append(output_area)
                output_labs.append(class_to_idx[lab])
                output_boxes.append(output_box)
                if iscrowd is None:
                    iscrowd = 0
                output_iscrowd.append(iscrowd)
            output_data.append(
                dict(input=fp,
                     target=dict(
                         boxes=output_boxes,
                         labels=output_labs,
                         image_id=img_id,
                         area=output_areas,
                         iscrowd=output_iscrowd,
                     )))
            img_id += 1

        return output_data