mirror of
https://github.com/huggingface/transformers.git
synced 2025-07-04 13:20:12 +06:00

* initial commit * add processor, add fuyu naming * add draft processor * fix processor * remove dropout to fix loading of weights * add image processing fixes from Pedro * fix * fix processor * add basic processing fuyu test * add documentation and TODO * address comments, add tests, add doc * replace assert with torch asserts * add Mixins and fix tests * clean imports * add model tester, clean imports * fix embedding test * add updated tests from pre-release model * Processor: return input_ids used for inference * separate processing and model tests * relax test tolerance for embeddings * add test for logit comparison * make sure fuyu image processor is imported in the init * fix formattingh * more formatting issues * and more * fixups * remove some stuff * nits * update init * remove the fuyu file * Update integration test with release model * Update conversion script. The projection is not used, as confirmed by the authors. * improve geenration * Remove duplicate function * Trickle down patches to model call * processing fuyu updates * remove things * fix prepare_inputs_for_generation to fix generate() * remove model_input * update * add generation tests * nits * draft leverage automodel and autoconfig * nits * fix dtype patch * address comments, update READMEs and doc, include tests * add working processing test, remove refs to subsequences * add tests, remove Sequence classification * processing * update * update the conversion script * more processing cleanup * safe import * take out ModelTesterMixin for early release * more cl;eanup * more cleanup * more cleanup * and more * register a buffer * nits * add postprocessing of generate output * nits * updates * add one working test * fix test * make fixup works * fixup * Arthur's updates * nits * update * update * fix processor * update tests * passe more fixups * fix * nits * don't import torch * skip fuyu config for now * fixup done * fixup * update * oups * nits * Use input embeddings * no buffer * update * styling processing fuyu * fix test * update licence * protect torch import * fixup and update not doctested * kwargs should be passed * udpates * update the impofixuprts in the test * protect import * protecting imports * protect imports in type checking * add testing decorators * protect top level import structure * fix typo * fix check init * move requires_backend to functions * Imports * Protect types --------- Co-authored-by: Pedro Cuenca <pedro@huggingface.co> Co-authored-by: ArthurZucker <arthur.zucker@gmail.com> Co-authored-by: Arthur <48595927+ArthurZucker@users.noreply.github.com> Co-authored-by: Lysandre <lysandre@huggingface.co>
66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
import unittest
|
|
|
|
import numpy as np
|
|
|
|
from transformers import is_torch_available, is_vision_available
|
|
from transformers.testing_utils import (
|
|
require_torch,
|
|
require_torchvision,
|
|
require_vision,
|
|
)
|
|
|
|
|
|
if is_torch_available() and is_vision_available():
|
|
import torch
|
|
|
|
from transformers import FuyuImageProcessor
|
|
|
|
if is_vision_available():
|
|
from PIL import Image
|
|
|
|
|
|
@require_torch
|
|
@require_vision
|
|
@require_torchvision
|
|
class TestFuyuImageProcessor(unittest.TestCase):
|
|
def setUp(self):
|
|
self.processor = FuyuImageProcessor(target_height=160, target_width=320, padding_value=1.0)
|
|
self.batch_size = 3
|
|
self.channels = 3
|
|
self.height = 300
|
|
self.width = 300
|
|
|
|
self.image_input = torch.rand(self.batch_size, self.channels, self.height, self.width)
|
|
|
|
self.image_patch_dim_h = 30
|
|
self.image_patch_dim_w = 30
|
|
self.sample_image = np.zeros((450, 210, 3), dtype=np.uint8)
|
|
self.sample_image_pil = Image.fromarray(self.sample_image)
|
|
|
|
def test_patches(self):
|
|
expected_num_patches = self.processor.get_num_patches(
|
|
img_h=self.height, img_w=self.width, patch_dim_h=self.image_patch_dim_h, patch_dim_w=self.image_patch_dim_w
|
|
)
|
|
|
|
patches_final = self.processor.patchify_image(
|
|
image=self.image_input, patch_dim_h=self.image_patch_dim_h, patch_dim_w=self.image_patch_dim_w
|
|
)
|
|
assert (
|
|
patches_final.shape[1] == expected_num_patches
|
|
), f"Expected {expected_num_patches} patches, got {patches_final.shape[1]}."
|
|
|
|
def test_scale_to_target_aspect_ratio(self):
|
|
scaled_image = self.processor._scale_to_target_aspect_ratio(self.sample_image)
|
|
self.assertEqual(scaled_image.shape[0], 74)
|
|
self.assertEqual(scaled_image.shape[1], 160)
|
|
|
|
def test_apply_transformation_numpy(self):
|
|
transformed_image = self.processor.apply_transformation(self.sample_image)
|
|
self.assertEqual(transformed_image.shape[0], 160)
|
|
self.assertEqual(transformed_image.shape[1], 320)
|
|
|
|
def test_apply_transformation_pil(self):
|
|
transformed_image = self.processor.apply_transformation(self.sample_image_pil)
|
|
self.assertEqual(transformed_image.shape[0], 160)
|
|
self.assertEqual(transformed_image.shape[1], 320)
|