1616
1717from transformers .image_utils import SizeDict
1818from transformers .testing_utils import require_torch , require_vision
19- from transformers .utils import is_torch_available
2019
2120from ...test_image_processing_common import ImageProcessingTester , ImageProcessingTestMixin
2221
2322
24- if is_torch_available ():
25- import torch
26-
27-
2823class Ovis2ImageProcessingTester (ImageProcessingTester ):
2924 def __init__ (self , ** kwargs ):
3025 # Image processor init kwargs
@@ -38,6 +33,8 @@ def __init__(self, **kwargs):
3833@require_vision
3934class Ovis2ProcessingTest (ImageProcessingTestMixin , unittest .TestCase ):
4035 image_processor_tester_class = Ovis2ImageProcessingTester
36+ # Pillow >= 13 can reverse bicubic resize passes, increasing isolated pixel differences.
37+ backend_equivalence_atol = 0.5
4138
4239 def test_backends_equivalence_crop_to_patches (self ):
4340 """Test equivalence between backends when cropping to patches."""
@@ -52,11 +49,17 @@ def test_backends_equivalence_crop_to_patches(self):
5249 encodings [backend_name ] = image_processor (dummy_image , return_tensors = "pt" )
5350
5451 backend_names = list (encodings .keys ())
55- reference_encoding = encodings [backend_names [0 ]].pixel_values
52+ reference_backend = backend_names [0 ]
53+ reference_encoding = encodings [reference_backend ]
5654 for backend_name in backend_names [1 :]:
57- self .assertTrue (torch .allclose (reference_encoding , encodings [backend_name ].pixel_values , atol = 1e-1 ))
58- self .assertLessEqual (
59- torch .mean (torch .abs (reference_encoding - encodings [backend_name ].pixel_values )).item (), 1e-3
55+ # Use the shared mean-error limit for patches resized in a different pass order.
56+ self ._assert_encodings_equivalence (
57+ reference_encoding ,
58+ encodings [backend_name ],
59+ reference_backend ,
60+ backend_name ,
61+ atol = self .backend_equivalence_atol ,
62+ rtol = 1e-5 ,
6063 )
6164
6265 def test_backends_equivalence_batched_crop_to_patches (self ):
@@ -76,11 +79,17 @@ def test_backends_equivalence_batched_crop_to_patches(self):
7679 encodings [backend_name ] = image_processor (dummy_images , return_tensors = "pt" )
7780
7881 backend_names = list (encodings .keys ())
79- reference_encoding = encodings [backend_names [0 ]].pixel_values
82+ reference_backend = backend_names [0 ]
83+ reference_encoding = encodings [reference_backend ]
8084 for backend_name in backend_names [1 :]:
81- self .assertTrue (torch .allclose (reference_encoding , encodings [backend_name ].pixel_values , atol = 1e-1 ))
82- self .assertLessEqual (
83- torch .mean (torch .abs (reference_encoding - encodings [backend_name ].pixel_values )).item (), 1e-3
85+ # Use the shared mean-error limit for patches resized in a different pass order.
86+ self ._assert_encodings_equivalence (
87+ reference_encoding ,
88+ encodings [backend_name ],
89+ reference_backend ,
90+ backend_name ,
91+ atol = self .backend_equivalence_atol ,
92+ rtol = 1e-5 ,
8493 )
8594
8695 def test_crop_to_patches (self ):
0 commit comments