


"""simple docstring"""


import unittest

from transformers import (
    MODEL_FOR_OBJECT_DETECTION_MAPPING,
    AutoFeatureExtractor,
    AutoModelForObjectDetection,
    ObjectDetectionPipeline,
    is_vision_available,
    pipeline,
)
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_pytesseract,
    require_tf,
    require_timm,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
	from PIL import Image
else:
	class     _UpperCamelCase    :
								'''simple docstring'''







								@staticmethod
								def      snake_case							(	*__a       ,  **__a      ):
											pass
@is_pipeline_test
@require_vision
@require_timm
@require_torch
class     _UpperCamelCase    (  unittest.TestCase						):
							'''simple docstring'''







							__UpperCAmelCase		:       List[Any]							 =MODEL_FOR_OBJECT_DETECTION_MAPPING

							def      snake_case							(	self       ,  __a       ,  __a       ,  __a      ):
										__lowerCAmelCase							       =     ObjectDetectionPipeline(model=__a       ,  image_processor=__a      )
										return object_detector, ["./tests/fixtures/tests_samples/COCO/000000039769.png"]

							def      snake_case							(	self       ,  __a       ,  __a      ):
										__lowerCAmelCase							       =     object_detector("./tests/fixtures/tests_samples/COCO/000000039769.png"       ,  threshold=0.0      )

										self.assertGreater(len(__a      )       ,  0      )
										for detected_object in outputs:
													self.assertEqual(
													    __a       ,  {
													        "score": ANY(__a      ),
													        "label": ANY(__a      ),
													        "box": {"xmin": ANY(__a      ), "ymin": ANY(__a      ), "xmax": ANY(__a      ), "ymax": ANY(__a      )},
													    }       ,  )

										import datasets

										__lowerCAmelCase							       =     datasets.load_dataset("hf-internal-testing/fixtures_image_utils"       ,  "image"       ,  split="test"      )

										__lowerCAmelCase							       =     [
										    Image.open("./tests/fixtures/tests_samples/COCO/000000039769.png"      ),
										    "http://images.cocodataset.org/val2017/000000039769.jpg",
										    # RGBA
										    dataset[0]["file"],
										    # LA
										    dataset[1]["file"],
										    # L
										    dataset[2]["file"],
										]
										__lowerCAmelCase							       =     object_detector(__a       ,  threshold=0.0      )

										self.assertEqual(len(__a      )       ,  len(__a      )      )
										for outputs in batch_outputs:
													self.assertGreater(len(__a      )       ,  0      )
													for detected_object in outputs:
																self.assertEqual(
																    __a       ,  {
																        "score": ANY(__a      ),
																        "label": ANY(__a      ),
																        "box": {"xmin": ANY(__a      ), "ymin": ANY(__a      ), "xmax": ANY(__a      ), "ymax": ANY(__a      )},
																    }       ,  )

							@require_tf
							@unittest.skip("Object detection not implemented in TF"      )
							def      snake_case							(	self      ):
										pass

							@require_torch
							def      snake_case							(	self      ):
										__lowerCAmelCase							       =     "hf-internal-testing/tiny-detr-mobilenetsv3"

										__lowerCAmelCase							       =     AutoModelForObjectDetection.from_pretrained(__a      )
										__lowerCAmelCase							       =     AutoFeatureExtractor.from_pretrained(__a      )
										__lowerCAmelCase							       =     ObjectDetectionPipeline(model=__a       ,  feature_extractor=__a      )

										__lowerCAmelCase							       =     object_detector("http://images.cocodataset.org/val2017/000000039769.jpg"       ,  threshold=0.0      )

										self.assertEqual(
										    nested_simplify(__a       ,  decimals=4      )       ,  [
										        {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_59, "ymin": 1_20, "xmax": 4_80, "ymax": 3_59}},
										        {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_59, "ymin": 1_20, "xmax": 4_80, "ymax": 3_59}},
										    ]       ,  )

										__lowerCAmelCase							       =     object_detector(
										    [
										        "http://images.cocodataset.org/val2017/000000039769.jpg",
										        "http://images.cocodataset.org/val2017/000000039769.jpg",
										    ]       ,  threshold=0.0       ,  )

										self.assertEqual(
										    nested_simplify(__a       ,  decimals=4      )       ,  [
										        [
										            {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_59, "ymin": 1_20, "xmax": 4_80, "ymax": 3_59}},
										            {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_59, "ymin": 1_20, "xmax": 4_80, "ymax": 3_59}},
										        ],
										        [
										            {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_59, "ymin": 1_20, "xmax": 4_80, "ymax": 3_59}},
										            {"score": 0.3_3_7_6, "label": "LABEL_0", "box": {"xmin": 1_59, "ymin": 1_20, "xmax": 4_80, "ymax": 3_59}},
										        ],
										    ]       ,  )

							@require_torch
							@slow
							def      snake_case							(	self      ):
										__lowerCAmelCase							       =     "facebook/detr-resnet-50"

										__lowerCAmelCase							       =     AutoModelForObjectDetection.from_pretrained(__a      )
										__lowerCAmelCase							       =     AutoFeatureExtractor.from_pretrained(__a      )
										__lowerCAmelCase							       =     ObjectDetectionPipeline(model=__a       ,  feature_extractor=__a      )

										__lowerCAmelCase							       =     object_detector("http://images.cocodataset.org/val2017/000000039769.jpg"      )
										self.assertEqual(
										    nested_simplify(__a       ,  decimals=4      )       ,  [
										        {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 40, "ymin": 70, "xmax": 1_75, "ymax": 1_17}},
										        {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_33, "ymin": 72, "xmax": 3_68, "ymax": 1_87}},
										        {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_39, "ymax": 4_73}},
										        {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 13, "ymin": 52, "xmax": 3_14, "ymax": 4_70}},
										        {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_45, "ymin": 23, "xmax": 6_40, "ymax": 3_68}},
										    ]       ,  )

										__lowerCAmelCase							       =     object_detector(
										    [
										        "http://images.cocodataset.org/val2017/000000039769.jpg",
										        "http://images.cocodataset.org/val2017/000000039769.jpg",
										    ]      )
										self.assertEqual(
										    nested_simplify(__a       ,  decimals=4      )       ,  [
										        [
										            {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 40, "ymin": 70, "xmax": 1_75, "ymax": 1_17}},
										            {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_33, "ymin": 72, "xmax": 3_68, "ymax": 1_87}},
										            {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_39, "ymax": 4_73}},
										            {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 13, "ymin": 52, "xmax": 3_14, "ymax": 4_70}},
										            {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_45, "ymin": 23, "xmax": 6_40, "ymax": 3_68}},
										        ],
										        [
										            {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 40, "ymin": 70, "xmax": 1_75, "ymax": 1_17}},
										            {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_33, "ymin": 72, "xmax": 3_68, "ymax": 1_87}},
										            {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_39, "ymax": 4_73}},
										            {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 13, "ymin": 52, "xmax": 3_14, "ymax": 4_70}},
										            {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_45, "ymin": 23, "xmax": 6_40, "ymax": 3_68}},
										        ],
										    ]       ,  )

							@require_torch
							@slow
							def      snake_case							(	self      ):
										__lowerCAmelCase							       =     "facebook/detr-resnet-50"

										__lowerCAmelCase							       =     pipeline("object-detection"       ,  model=__a      )

										__lowerCAmelCase							       =     object_detector("http://images.cocodataset.org/val2017/000000039769.jpg"      )
										self.assertEqual(
										    nested_simplify(__a       ,  decimals=4      )       ,  [
										        {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 40, "ymin": 70, "xmax": 1_75, "ymax": 1_17}},
										        {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_33, "ymin": 72, "xmax": 3_68, "ymax": 1_87}},
										        {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_39, "ymax": 4_73}},
										        {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 13, "ymin": 52, "xmax": 3_14, "ymax": 4_70}},
										        {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_45, "ymin": 23, "xmax": 6_40, "ymax": 3_68}},
										    ]       ,  )

										__lowerCAmelCase							       =     object_detector(
										    [
										        "http://images.cocodataset.org/val2017/000000039769.jpg",
										        "http://images.cocodataset.org/val2017/000000039769.jpg",
										    ]      )
										self.assertEqual(
										    nested_simplify(__a       ,  decimals=4      )       ,  [
										        [
										            {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 40, "ymin": 70, "xmax": 1_75, "ymax": 1_17}},
										            {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_33, "ymin": 72, "xmax": 3_68, "ymax": 1_87}},
										            {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_39, "ymax": 4_73}},
										            {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 13, "ymin": 52, "xmax": 3_14, "ymax": 4_70}},
										            {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_45, "ymin": 23, "xmax": 6_40, "ymax": 3_68}},
										        ],
										        [
										            {"score": 0.9_9_8_2, "label": "remote", "box": {"xmin": 40, "ymin": 70, "xmax": 1_75, "ymax": 1_17}},
										            {"score": 0.9_9_6_0, "label": "remote", "box": {"xmin": 3_33, "ymin": 72, "xmax": 3_68, "ymax": 1_87}},
										            {"score": 0.9_9_5_5, "label": "couch", "box": {"xmin": 0, "ymin": 1, "xmax": 6_39, "ymax": 4_73}},
										            {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 13, "ymin": 52, "xmax": 3_14, "ymax": 4_70}},
										            {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_45, "ymin": 23, "xmax": 6_40, "ymax": 3_68}},
										        ],
										    ]       ,  )

							@require_torch
							@slow
							def      snake_case							(	self      ):
										__lowerCAmelCase							       =     0.9_9_8_5
										__lowerCAmelCase							       =     "facebook/detr-resnet-50"

										__lowerCAmelCase							       =     pipeline("object-detection"       ,  model=__a      )

										__lowerCAmelCase							       =     object_detector("http://images.cocodataset.org/val2017/000000039769.jpg"       ,  threshold=__a      )
										self.assertEqual(
										    nested_simplify(__a       ,  decimals=4      )       ,  [
										        {"score": 0.9_9_8_8, "label": "cat", "box": {"xmin": 13, "ymin": 52, "xmax": 3_14, "ymax": 4_70}},
										        {"score": 0.9_9_8_7, "label": "cat", "box": {"xmin": 3_45, "ymin": 23, "xmax": 6_40, "ymax": 3_68}},
										    ]       ,  )



							@require_torch
							@require_pytesseract
							@slow
							def      snake_case							(	self      ):
										__lowerCAmelCase							       =     "Narsil/layoutlmv3-finetuned-funsd"
										__lowerCAmelCase							       =     0.9_9_9_3

										__lowerCAmelCase							       =     pipeline("object-detection"       ,  model=__a       ,  threshold=__a      )

										__lowerCAmelCase							       =     object_detector(
										    "https://huggingface.co/spaces/impira/docquery/resolve/2359223c1837a7587402bda0f2643382a6eefeab/invoice.png"      )
										self.assertEqual(
										    nested_simplify(__a       ,  decimals=4      )       ,  [
										        {"score": 0.9_9_9_3, "label": "I-ANSWER", "box": {"xmin": 2_94, "ymin": 2_54, "xmax": 3_43, "ymax": 2_64}},
										        {"score": 0.9_9_9_3, "label": "I-ANSWER", "box": {"xmin": 2_94, "ymin": 2_54, "xmax": 3_43, "ymax": 2_64}},
										    ]       ,  )








"""simple docstring"""


import unittest

from transformers import is_torch_available
from transformers.testing_utils import require_torch


if is_torch_available():
	import torch

	from transformers.activations import gelu_new, gelu_python, get_activation
@require_torch
class     _UpperCamelCase    (  unittest.TestCase						):
							'''simple docstring'''







							def      snake_case							(	self      ):
										__lowerCAmelCase							       =     torch.tensor([-1_00, -1, -0.1, 0, 0.1, 1.0, 1_00]      )
										__lowerCAmelCase							       =     get_activation("gelu"      )
										self.assertTrue(torch.allclose(gelu_python(__a      )       ,  torch_builtin(__a      )      )      )
										self.assertFalse(torch.allclose(gelu_python(__a      )       ,  gelu_new(__a      )      )      )

							def      snake_case							(	self      ):
										__lowerCAmelCase							       =     torch.tensor([-1_00, -1, -0.1, 0, 0.1, 1.0, 1_00]      )
										__lowerCAmelCase							       =     get_activation("gelu"      )
										__lowerCAmelCase							       =     get_activation("gelu_10"      )

										__lowerCAmelCase							       =     torch_builtin(__a      )
										__lowerCAmelCase							       =     geluaa(__a      )

										__lowerCAmelCase							       =     torch.where(y_gelu_aa < 1_0.0       ,  1       ,  0      )

										self.assertTrue(torch.max(__a      ).item() == 1_0.0      )
										self.assertTrue(torch.allclose(y_gelu * clipped_mask       ,  y_gelu_aa * clipped_mask      )      )

							def      snake_case							(	self      ):
										get_activation("gelu"      )
										get_activation("gelu_10"      )
										get_activation("gelu_fast"      )
										get_activation("gelu_new"      )
										get_activation("gelu_python"      )
										get_activation("gelu_pytorch_tanh"      )
										get_activation("linear"      )
										get_activation("mish"      )
										get_activation("quick_gelu"      )
										get_activation("relu"      )
										get_activation("sigmoid"      )
										get_activation("silu"      )
										get_activation("swish"      )
										get_activation("tanh"      )
										with self.assertRaises(__a      ):
													get_activation("bogus"      )
										with self.assertRaises(__a      ):
													get_activation(__a      )



							def      snake_case							(	self      ):
										__lowerCAmelCase							       =     get_activation("gelu"      )
										__lowerCAmelCase							       =     1
										__lowerCAmelCase							       =     get_activation("gelu"      )
										self.assertEqual(acta.a       ,  1      )
										with self.assertRaises(__a      ):
													__lowerCAmelCase							       =     acta.a




