예제 #1
0
    def _collate_and_decode(
        self,
        data: Tuple[np.ndarray, int],
        *,
        decoder: Optional[Callable[[io.IOBase], torch.Tensor]],
    ) -> Dict[str, Any]:
        image_array, category_idx = data

        image: Union[Image, io.BytesIO]
        if decoder is raw:
            image = Image(image_array)
        else:
            image_buffer = image_buffer_from_array(image_array.transpose((1, 2, 0)))
            image = decoder(image_buffer) if decoder else image_buffer  # type: ignore[assignment]

        label = Label(category_idx, category=self.categories[category_idx])

        return dict(image=image, label=label)
예제 #2
0
파일: svhn.py 프로젝트: vballoli/vision
    def _collate_and_decode_sample(
        self,
        data: Tuple[np.ndarray, np.ndarray],
        *,
        decoder: Optional[Callable[[io.IOBase], torch.Tensor]],
    ) -> Dict[str, Any]:
        image_array, label_array = data

        if decoder is raw:
            image = Image(image_array.transpose((2, 0, 1)))
        else:
            image_buffer = image_buffer_from_array(image_array)
            image = decoder(
                image_buffer
            ) if decoder else image_buffer  # type: ignore[assignment]

        return dict(
            image=image,
            label=Label(int(label_array) % 10),
        )
예제 #3
0
    def _collate_and_decode_sample(
        self,
        data: Dict[str, Any],
        *,
        decoder: Optional[Callable[[io.IOBase], torch.Tensor]],
    ) -> Dict[str, Any]:
        raw_image = torch.tensor([int(idx) for idx in data["pixels"].split()], dtype=torch.uint8).reshape(48, 48)
        label_id = data.get("emotion")
        label_idx = int(label_id) if label_id is not None else None

        image: Union[Image, io.BytesIO]
        if decoder is raw:
            image = Image(raw_image)
        else:
            image_buffer = image_buffer_from_array(raw_image.numpy())
            image = decoder(image_buffer) if decoder else image_buffer  # type: ignore[assignment]

        return dict(
            image=image,
            label=Label(label_idx, category=self.info.categories[label_idx]) if label_idx is not None else None,
        )
예제 #4
0
    def _collate_and_decode(
        self,
        data: Tuple[torch.Tensor, torch.Tensor],
        *,
        config: DatasetConfig,
        decoder: Optional[Callable[[io.IOBase], torch.Tensor]],
    ) -> Dict[str, Any]:
        image, label = data

        if decoder is raw:
            image = Image(image)
        else:
            image_buffer = image_buffer_from_array(image.numpy())
            image = decoder(
                image_buffer
            ) if decoder else image_buffer  # type: ignore[assignment]

        label = Label(label,
                      dtype=torch.int64,
                      category=self.info.categories[int(label)])

        return dict(image=image, label=label)
예제 #5
0
    def _collate_and_decode_sample(
        self,
        data: Tuple[str, ...],
        *,
        decoder: Optional[Callable[[io.IOBase], torch.Tensor]],
    ) -> Dict[str, Any]:
        image_data = torch.tensor([float(pixel) for pixel in data[:256]],
                                  dtype=torch.uint8).reshape(16, 16)
        label_data = [int(label) for label in data[256:] if label]

        if decoder is raw:
            image = image_data.unsqueeze(0)
        else:
            image_buffer = image_buffer_from_array(image_data.numpy())
            image = decoder(
                image_buffer
            ) if decoder else image_buffer  # type: ignore[assignment]

        label = next((idx for idx, one_hot_label in enumerate(label_data)
                      if one_hot_label))
        category = self.info.categories[label]
        return dict(image=image, label=label, category=category)