Unverified Commit c86d020e authored by Albert Villanova del Moral's avatar Albert Villanova del Moral Committed by GitHub
Browse files

Fix test transposing image with EXIF Orientation tag (#30319)

* Fix test with exif_transpose image

* Replace datasets with PIL to load image in tests
parent 57b92bbf
...@@ -16,11 +16,13 @@ ...@@ -16,11 +16,13 @@
import os import os
import tempfile import tempfile
import unittest import unittest
from io import BytesIO
from typing import Optional
import datasets
import numpy as np import numpy as np
import pytest import pytest
from huggingface_hub.file_download import http_get import requests
from huggingface_hub.file_download import hf_hub_url, http_get
from requests import ConnectTimeout, ReadTimeout from requests import ConnectTimeout, ReadTimeout
from tests.pipelines.test_pipelines_document_question_answering import INVOICE_URL from tests.pipelines.test_pipelines_document_question_answering import INVOICE_URL
...@@ -39,6 +41,11 @@ if is_vision_available(): ...@@ -39,6 +41,11 @@ if is_vision_available():
from transformers.image_utils import get_image_size, infer_channel_dimension_format, load_image from transformers.image_utils import get_image_size, infer_channel_dimension_format, load_image
def get_image_from_hub_dataset(dataset_id: str, filename: str, revision: Optional[str] = None) -> "PIL.Image.Image":
url = hf_hub_url(dataset_id, filename, repo_type="dataset", revision=revision)
return PIL.Image.open(BytesIO(requests.get(url).content))
def get_random_image(height, width): def get_random_image(height, width):
random_array = np.random.randint(0, 256, (height, width, 3), dtype=np.uint8) random_array = np.random.randint(0, 256, (height, width, 3), dtype=np.uint8)
return PIL.Image.fromarray(random_array) return PIL.Image.fromarray(random_array)
...@@ -540,9 +547,11 @@ class LoadImageTester(unittest.TestCase): ...@@ -540,9 +547,11 @@ class LoadImageTester(unittest.TestCase):
def test_load_img_rgba(self): def test_load_img_rgba(self):
# we use revision="refs/pr/1" until the PR is merged # we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1 # https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
dataset = datasets.load_dataset("hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1") img = get_image_from_hub_dataset(
"hf-internal-testing/fixtures_image_utils", "0-test-lena.png", revision="refs/pr/1"
)
img = load_image(dataset[0]["image"]) # img with mode RGBA img = load_image(img) # img with mode RGBA
img_arr = np.array(img) img_arr = np.array(img)
self.assertEqual( self.assertEqual(
...@@ -553,9 +562,11 @@ class LoadImageTester(unittest.TestCase): ...@@ -553,9 +562,11 @@ class LoadImageTester(unittest.TestCase):
def test_load_img_la(self): def test_load_img_la(self):
# we use revision="refs/pr/1" until the PR is merged # we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1 # https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
dataset = datasets.load_dataset("hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1") img = get_image_from_hub_dataset(
"hf-internal-testing/fixtures_image_utils", "1-test-parrots.png", revision="refs/pr/1"
)
img = load_image(dataset[1]["image"]) # img with mode LA img = load_image(img) # img with mode LA
img_arr = np.array(img) img_arr = np.array(img)
self.assertEqual( self.assertEqual(
...@@ -566,9 +577,11 @@ class LoadImageTester(unittest.TestCase): ...@@ -566,9 +577,11 @@ class LoadImageTester(unittest.TestCase):
def test_load_img_l(self): def test_load_img_l(self):
# we use revision="refs/pr/1" until the PR is merged # we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1 # https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
dataset = datasets.load_dataset("hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1") img = get_image_from_hub_dataset(
"hf-internal-testing/fixtures_image_utils", "2-test-tree.png", revision="refs/pr/1"
)
img = load_image(dataset[2]["image"]) # img with mode L img = load_image(img) # img with mode L
img_arr = np.array(img) img_arr = np.array(img)
self.assertEqual( self.assertEqual(
...@@ -579,9 +592,10 @@ class LoadImageTester(unittest.TestCase): ...@@ -579,9 +592,10 @@ class LoadImageTester(unittest.TestCase):
def test_load_img_exif_transpose(self): def test_load_img_exif_transpose(self):
# we use revision="refs/pr/1" until the PR is merged # we use revision="refs/pr/1" until the PR is merged
# https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1 # https://hf.co/datasets/hf-internal-testing/fixtures_image_utils/discussions/1
dataset = datasets.load_dataset("hf-internal-testing/fixtures_image_utils", split="test", revision="refs/pr/1")
img_without_exif_transpose = dataset[3]["image"] img_without_exif_transpose = get_image_from_hub_dataset(
"hf-internal-testing/fixtures_image_utils", "3-test-cat-rotated.jpg", revision="refs/pr/1"
)
img_arr_without_exif_transpose = np.array(img_without_exif_transpose) img_arr_without_exif_transpose = np.array(img_without_exif_transpose)
self.assertEqual( self.assertEqual(
...@@ -589,7 +603,7 @@ class LoadImageTester(unittest.TestCase): ...@@ -589,7 +603,7 @@ class LoadImageTester(unittest.TestCase):
(333, 500, 3), (333, 500, 3),
) )
img_with_exif_transpose = load_image(dataset[3]["image"]) img_with_exif_transpose = load_image(img_without_exif_transpose)
img_arr_with_exif_transpose = np.array(img_with_exif_transpose) img_arr_with_exif_transpose = np.array(img_with_exif_transpose)
self.assertEqual( self.assertEqual(
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment