


'''simple docstring'''


import unittest

from transformers import MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING, is_vision_available, pipeline
from transformers.testing_utils import (
    is_pipeline_test,
    nested_simplify,
    require_tf,
    require_torch,
    require_vision,
    slow,
)

from .test_pipelines_common import ANY


if is_vision_available():
				from PIL import Image
else:





				class        lowercase__    :





											'''simple docstring'''


											@staticmethod
											def UpperCAmelCase_      (       *__snake_case       ,   **__snake_case    ):
															pass





@is_pipeline_test
@require_vision
@require_torch
class        lowercase__    (		unittest.TestCase   ):





							'''simple docstring'''


							A_				: Dict       =    MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING






							def UpperCAmelCase_      (       self       ,   __snake_case       ,   __snake_case       ,   __snake_case    ):
											_SCREAMING_SNAKE_CASE					:			List[Any]							= pipeline(
											    """zero-shot-object-detection"""       ,   model="""hf-internal-testing/tiny-random-owlvit-object-detection"""    )

											_SCREAMING_SNAKE_CASE					:			Union[str, Any]							= [
											    {
											        """image""": """./tests/fixtures/tests_samples/COCO/000000039769.png""",
											        """candidate_labels""": ["""cat""", """remote""", """couch"""],
											    }
											]
											return object_detector, examples






							def UpperCAmelCase_      (       self       ,   __snake_case       ,   __snake_case    ):
											_SCREAMING_SNAKE_CASE					:			Dict							= object_detector(examples[0]       ,   threshold=0.0    )

											_SCREAMING_SNAKE_CASE					:			int							= len(A_    )
											self.assertGreater(A_       ,   0    )
											self.assertEqual(
											    A_       ,   [
											        {
											            """score""": ANY(A_    ),
											            """label""": ANY(A_    ),
											            """box""": {"""xmin""": ANY(A_    ), """ymin""": ANY(A_    ), """xmax""": ANY(A_    ), """ymax""": ANY(A_    )},
											        }
											        for i in range(A_    )
											    ]       ,   )






							@require_tf
							@unittest.skip("""Zero Shot Object Detection not implemented in TF"""    )
							def UpperCAmelCase_      (       self    ):
											pass






							@require_torch
							def UpperCAmelCase_      (       self    ):
											_SCREAMING_SNAKE_CASE					:			Optional[Any]							= pipeline(
											    """zero-shot-object-detection"""       ,   model="""hf-internal-testing/tiny-random-owlvit-object-detection"""    )

											_SCREAMING_SNAKE_CASE					:			List[str]							= object_detector(
											    """./tests/fixtures/tests_samples/COCO/000000039769.png"""       ,   candidate_labels=["""cat""", """remote""", """couch"""]       ,   threshold=0.64       ,   )

											self.assertEqual(
											    nested_simplify(A_       ,   decimals=4    )       ,   [
											        {"""score""": 0.7235, """label""": """cat""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											        {"""score""": 0.7218, """label""": """remote""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											        {"""score""": 0.7184, """label""": """couch""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											        {"""score""": 0.6748, """label""": """remote""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											        {"""score""": 0.6656, """label""": """cat""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											        {"""score""": 0.6614, """label""": """couch""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											        {"""score""": 0.6456, """label""": """remote""", """box""": {"""xmin""": 494, """ymin""": 105, """xmax""": 521, """ymax""": 127}},
											        {"""score""": 0.642, """label""": """remote""", """box""": {"""xmin""": 67, """ymin""": 274, """xmax""": 93, """ymax""": 297}},
											        {"""score""": 0.6419, """label""": """cat""", """box""": {"""xmin""": 494, """ymin""": 105, """xmax""": 521, """ymax""": 127}},
											    ]       ,   )

											_SCREAMING_SNAKE_CASE					:			Any							= object_detector(
											    [
											        {
											            """image""": """./tests/fixtures/tests_samples/COCO/000000039769.png""",
											            """candidate_labels""": ["""cat""", """remote""", """couch"""],
											        }
											    ]       ,   threshold=0.64       ,   )

											self.assertEqual(
											    nested_simplify(A_       ,   decimals=4    )       ,   [
											        [
											            {"""score""": 0.7235, """label""": """cat""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											            {"""score""": 0.7218, """label""": """remote""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											            {"""score""": 0.7184, """label""": """couch""", """box""": {"""xmin""": 204, """ymin""": 167, """xmax""": 232, """ymax""": 190}},
											            {"""score""": 0.6748, """label""": """remote""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											            {"""score""": 0.6656, """label""": """cat""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											            {"""score""": 0.6614, """label""": """couch""", """box""": {"""xmin""": 571, """ymin""": 83, """xmax""": 598, """ymax""": 103}},
											            {"""score""": 0.6456, """label""": """remote""", """box""": {"""xmin""": 494, """ymin""": 105, """xmax""": 521, """ymax""": 127}},
											            {"""score""": 0.642, """label""": """remote""", """box""": {"""xmin""": 67, """ymin""": 274, """xmax""": 93, """ymax""": 297}},
											            {"""score""": 0.6419, """label""": """cat""", """box""": {"""xmin""": 494, """ymin""": 105, """xmax""": 521, """ymax""": 127}},
											        ]
											    ]       ,   )






							@require_torch
							@slow
							def UpperCAmelCase_      (       self    ):
											_SCREAMING_SNAKE_CASE					:			str							= pipeline("""zero-shot-object-detection"""    )

											_SCREAMING_SNAKE_CASE					:			Dict							= object_detector(
											    """http://images.cocodataset.org/val2017/000000039769.jpg"""       ,   candidate_labels=["""cat""", """remote""", """couch"""]       ,   )
											self.assertEqual(
											    nested_simplify(A_       ,   decimals=4    )       ,   [
											        {"""score""": 0.2868, """label""": """cat""", """box""": {"""xmin""": 324, """ymin""": 20, """xmax""": 640, """ymax""": 373}},
											        {"""score""": 0.277, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 72, """xmax""": 177, """ymax""": 115}},
											        {"""score""": 0.2537, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 55, """xmax""": 315, """ymax""": 472}},
											        {"""score""": 0.1474, """label""": """remote""", """box""": {"""xmin""": 335, """ymin""": 74, """xmax""": 371, """ymax""": 187}},
											        {"""score""": 0.1208, """label""": """couch""", """box""": {"""xmin""": 4, """ymin""": 0, """xmax""": 642, """ymax""": 476}},
											    ]       ,   )

											_SCREAMING_SNAKE_CASE					:			str							= object_detector(
											    [
											        {
											            """image""": """http://images.cocodataset.org/val2017/000000039769.jpg""",
											            """candidate_labels""": ["""cat""", """remote""", """couch"""],
											        },
											        {
											            """image""": """http://images.cocodataset.org/val2017/000000039769.jpg""",
											            """candidate_labels""": ["""cat""", """remote""", """couch"""],
											        },
											    ]       ,   )
											self.assertEqual(
											    nested_simplify(A_       ,   decimals=4    )       ,   [
											        [
											            {"""score""": 0.2868, """label""": """cat""", """box""": {"""xmin""": 324, """ymin""": 20, """xmax""": 640, """ymax""": 373}},
											            {"""score""": 0.277, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 72, """xmax""": 177, """ymax""": 115}},
											            {"""score""": 0.2537, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 55, """xmax""": 315, """ymax""": 472}},
											            {"""score""": 0.1474, """label""": """remote""", """box""": {"""xmin""": 335, """ymin""": 74, """xmax""": 371, """ymax""": 187}},
											            {"""score""": 0.1208, """label""": """couch""", """box""": {"""xmin""": 4, """ymin""": 0, """xmax""": 642, """ymax""": 476}},
											        ],
											        [
											            {"""score""": 0.2868, """label""": """cat""", """box""": {"""xmin""": 324, """ymin""": 20, """xmax""": 640, """ymax""": 373}},
											            {"""score""": 0.277, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 72, """xmax""": 177, """ymax""": 115}},
											            {"""score""": 0.2537, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 55, """xmax""": 315, """ymax""": 472}},
											            {"""score""": 0.1474, """label""": """remote""", """box""": {"""xmin""": 335, """ymin""": 74, """xmax""": 371, """ymax""": 187}},
											            {"""score""": 0.1208, """label""": """couch""", """box""": {"""xmin""": 4, """ymin""": 0, """xmax""": 642, """ymax""": 476}},
											        ],
											    ]       ,   )






							@require_tf
							@unittest.skip("""Zero Shot Object Detection not implemented in TF"""    )
							def UpperCAmelCase_      (       self    ):
											pass






							@require_torch
							@slow
							def UpperCAmelCase_      (       self    ):
											_SCREAMING_SNAKE_CASE					:			Any							= 0.2
											_SCREAMING_SNAKE_CASE					:			int							= pipeline("""zero-shot-object-detection"""    )

											_SCREAMING_SNAKE_CASE					:			Union[str, Any]							= object_detector(
											    """http://images.cocodataset.org/val2017/000000039769.jpg"""       ,   candidate_labels=["""cat""", """remote""", """couch"""]       ,   threshold=A_       ,   )
											self.assertEqual(
											    nested_simplify(A_       ,   decimals=4    )       ,   [
											        {"""score""": 0.2868, """label""": """cat""", """box""": {"""xmin""": 324, """ymin""": 20, """xmax""": 640, """ymax""": 373}},
											        {"""score""": 0.277, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 72, """xmax""": 177, """ymax""": 115}},
											        {"""score""": 0.2537, """label""": """cat""", """box""": {"""xmin""": 1, """ymin""": 55, """xmax""": 315, """ymax""": 472}},
											    ]       ,   )






							@require_torch
							@slow
							def UpperCAmelCase_      (       self    ):
											_SCREAMING_SNAKE_CASE					:			Union[str, Any]							= 2
											_SCREAMING_SNAKE_CASE					:			List[str]							= pipeline("""zero-shot-object-detection"""    )

											_SCREAMING_SNAKE_CASE					:			Dict							= object_detector(
											    """http://images.cocodataset.org/val2017/000000039769.jpg"""       ,   candidate_labels=["""cat""", """remote""", """couch"""]       ,   top_k=A_       ,   )
											self.assertEqual(
											    nested_simplify(A_       ,   decimals=4    )       ,   [
											        {"""score""": 0.2868, """label""": """cat""", """box""": {"""xmin""": 324, """ymin""": 20, """xmax""": 640, """ymax""": 373}},
											        {"""score""": 0.277, """label""": """remote""", """box""": {"""xmin""": 40, """ymin""": 72, """xmax""": 177, """ymax""": 115}},
											    ]       ,   )











from torch import nn


def 							__snake_case							(    lowerCAmelCase_	)				->						Tuple:
    if act_fn in ["swish", "silu"]:
        return nn.SiLU()
    elif act_fn == "mish":
        return nn.Mish()
    elif act_fn == "gelu":
        return nn.GELU()
    else:
        raise ValueError(f'''Unsupported activation function: {act_fn}'''	)
