Exemplo n.º 1
0
def batch_up_image(
    image: torch.Tensor,
    desired_batch_size: Optional[int] = None,
    loader: Optional[DataLoader] = None,
) -> torch.Tensor:
    def extract_batch_size_from_loader(loader: DataLoader) -> int:
        batch_size = loader.batch_size
        if batch_size is not None:
            return batch_size

        try:
            batch_size = loader.batch_sampler.batch_size  # type: ignore[union-attr]
            assert isinstance(batch_size, int)
            return batch_size
        except (AttributeError, AssertionError):
            raise RuntimeError

    if desired_batch_size is None and loader is None:
        raise RuntimeError

    if desired_batch_size is None:
        desired_batch_size = extract_batch_size_from_loader(
            cast(DataLoader, loader))

    if is_single_image(image):
        image = make_batched_image(image)
    elif extract_batch_size(image) > 1:
        raise RuntimeError

    return image.repeat(desired_batch_size, 1, 1, 1)
Exemplo n.º 2
0
def test_make_single_image():
    batched_image = torch.empty(1, 1, 1, 1)
    single_image = image_.make_single_image(batched_image)
    assert image_.is_single_image(single_image)

    batched_image = torch.empty(2, 1, 1, 1)
    with pytest.raises(RuntimeError):
        image_.make_single_image(batched_image)
        def get_single_and_batched_pystiche_images(pystiche_image):
            if is_single_image(pystiche_image):
                pystiche_single_image = pystiche_image
                pystiche_batched_image = make_batched_image(
                    pystiche_single_image)
            else:
                pystiche_batched_image = pystiche_image
                pystiche_single_image = make_single_image(
                    pystiche_batched_image)

            return pystiche_single_image, pystiche_batched_image
Exemplo n.º 4
0
def batch_up_image(
    image: torch.Tensor,
    desired_batch_size: Optional[int] = None,
    loader: Optional[DataLoader] = None,
) -> torch.Tensor:
    if desired_batch_size is None and loader is None:
        raise RuntimeError

    if is_single_image(image):
        image = make_batched_image(image)
    elif extract_batch_size(image) > 1:
        raise RuntimeError

    if desired_batch_size is None:
        desired_batch_size = loader.batch_size
    if desired_batch_size is None:
        try:
            desired_batch_size = loader.batch_sampler.batch_size
        except AttributeError:
            raise RuntimeError

    return image.repeat(desired_batch_size, 1, 1, 1)
Exemplo n.º 5
0
 def identity(single_image):
     assert image_.is_single_image(single_image)
     return single_image
Exemplo n.º 6
0
def test_is_single_image():
    single_image = torch.zeros(1, 1, 1)
    assert image_.is_single_image(single_image)
    assert not image_.is_single_image(single_image.byte())
    assert not image_.is_single_image(single_image.unsqueeze(0))