fix the get_size_with_aspect_ratio in max_size situation (#30902)
* fix the get_size_with_aspect_ratio in max_size situation * make fix-up * add more general solution * consider when max_size is not defined * fix typo * fix typo * simple fix * fix error * fix if else error * fix error of size overwrite * fix yolos image processing * fix detr image processing * make * add longest related test script * Update src/transformers/models/yolos/image_processing_yolos.py Co-authored-by: amyeroberts <22614925+amyeroberts@users.noreply.github.com> * add more test * add test script about longest size * remove deprecated --------- Co-authored-by: amyeroberts <22614925+amyeroberts@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
e4628434d8
commit
874ac129bb
@@ -575,3 +575,55 @@ class GroundingDinoImageProcessingTest(AnnotationFormatTestMixin, ImageProcessin
|
||||
)
|
||||
inputs = image_processor(images=[image_1, image_2], return_tensors="pt")
|
||||
self.assertEqual(inputs["pixel_values"].shape, torch.Size([2, 3, 150, 100]))
|
||||
|
||||
def test_longest_edge_shortest_edge_resizing_strategy(self):
|
||||
image_1 = torch.ones([958, 653, 3], dtype=torch.uint8)
|
||||
|
||||
# max size is set; width < height;
|
||||
# do_pad=False, longest_edge=640, shortest_edge=640, image=958x653 -> 640x436
|
||||
image_processor = GroundingDinoImageProcessor(
|
||||
size={"longest_edge": 640, "shortest_edge": 640},
|
||||
do_pad=False,
|
||||
)
|
||||
inputs = image_processor(images=[image_1], return_tensors="pt")
|
||||
self.assertEqual(inputs["pixel_values"].shape, torch.Size([1, 3, 640, 436]))
|
||||
|
||||
image_2 = torch.ones([653, 958, 3], dtype=torch.uint8)
|
||||
# max size is set; height < width;
|
||||
# do_pad=False, longest_edge=640, shortest_edge=640, image=653x958 -> 436x640
|
||||
image_processor = GroundingDinoImageProcessor(
|
||||
size={"longest_edge": 640, "shortest_edge": 640},
|
||||
do_pad=False,
|
||||
)
|
||||
inputs = image_processor(images=[image_2], return_tensors="pt")
|
||||
self.assertEqual(inputs["pixel_values"].shape, torch.Size([1, 3, 436, 640]))
|
||||
|
||||
image_3 = torch.ones([100, 120, 3], dtype=torch.uint8)
|
||||
# max size is set; width == size; height > max_size;
|
||||
# do_pad=False, longest_edge=118, shortest_edge=100, image=120x100 -> 118x98
|
||||
image_processor = GroundingDinoImageProcessor(
|
||||
size={"longest_edge": 118, "shortest_edge": 100},
|
||||
do_pad=False,
|
||||
)
|
||||
inputs = image_processor(images=[image_3], return_tensors="pt")
|
||||
self.assertEqual(inputs["pixel_values"].shape, torch.Size([1, 3, 98, 118]))
|
||||
|
||||
image_4 = torch.ones([128, 50, 3], dtype=torch.uint8)
|
||||
# max size is set; height == size; width < max_size;
|
||||
# do_pad=False, longest_edge=256, shortest_edge=50, image=50x128 -> 50x128
|
||||
image_processor = GroundingDinoImageProcessor(
|
||||
size={"longest_edge": 256, "shortest_edge": 50},
|
||||
do_pad=False,
|
||||
)
|
||||
inputs = image_processor(images=[image_4], return_tensors="pt")
|
||||
self.assertEqual(inputs["pixel_values"].shape, torch.Size([1, 3, 128, 50]))
|
||||
|
||||
image_5 = torch.ones([50, 50, 3], dtype=torch.uint8)
|
||||
# max size is set; height == width; width < max_size;
|
||||
# do_pad=False, longest_edge=117, shortest_edge=50, image=50x50 -> 50x50
|
||||
image_processor = GroundingDinoImageProcessor(
|
||||
size={"longest_edge": 117, "shortest_edge": 50},
|
||||
do_pad=False,
|
||||
)
|
||||
inputs = image_processor(images=[image_5], return_tensors="pt")
|
||||
self.assertEqual(inputs["pixel_values"].shape, torch.Size([1, 3, 50, 50]))
|
||||
|
||||
Reference in New Issue
Block a user