



"""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       snake_case_    :






												@staticmethod
												def snake_case_	( *a_      ,  **a_   ):
														pass




@is_pipeline_test
@require_vision
@require_torch
class       snake_case_    (    unittest.TestCase					):
							__lowerCAmelCase            =       MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING






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

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






							def snake_case_	( self      ,  a_      ,  a_   ):
									a_  :   List[str]			    =  object_detector(examples[0]      ,  threshold=0.0   )

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






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






							@require_torch
							def snake_case_	( self   ):
									a_  :   Tuple			    =  pipeline(
									    "zero-shot-object-detection"      ,  model="hf-internal-testing/tiny-random-owlvit-object-detection"   )

									a_  :   Optional[int]			    =  object_detector(
									    "./tests/fixtures/tests_samples/COCO/000000039769.png"      ,  candidate_labels=["cat", "remote", "couch"]      ,  threshold=0.64      ,  )

									self.assertEqual(
									    nested_simplify(SCREAMING_SNAKE_CASE_      ,  decimals=4   )      ,  [
									        {"score": 0.7_235, "label": "cat", "box": {"xmin": 2_0_4, "ymin": 1_6_7, "xmax": 2_3_2, "ymax": 1_9_0}},
									        {"score": 0.7_218, "label": "remote", "box": {"xmin": 2_0_4, "ymin": 1_6_7, "xmax": 2_3_2, "ymax": 1_9_0}},
									        {"score": 0.7_184, "label": "couch", "box": {"xmin": 2_0_4, "ymin": 1_6_7, "xmax": 2_3_2, "ymax": 1_9_0}},
									        {"score": 0.6_748, "label": "remote", "box": {"xmin": 5_7_1, "ymin": 8_3, "xmax": 5_9_8, "ymax": 1_0_3}},
									        {"score": 0.6_656, "label": "cat", "box": {"xmin": 5_7_1, "ymin": 8_3, "xmax": 5_9_8, "ymax": 1_0_3}},
									        {"score": 0.6_614, "label": "couch", "box": {"xmin": 5_7_1, "ymin": 8_3, "xmax": 5_9_8, "ymax": 1_0_3}},
									        {"score": 0.6_456, "label": "remote", "box": {"xmin": 4_9_4, "ymin": 1_0_5, "xmax": 5_2_1, "ymax": 1_2_7}},
									        {"score": 0.642, "label": "remote", "box": {"xmin": 6_7, "ymin": 2_7_4, "xmax": 9_3, "ymax": 2_9_7}},
									        {"score": 0.6_419, "label": "cat", "box": {"xmin": 4_9_4, "ymin": 1_0_5, "xmax": 5_2_1, "ymax": 1_2_7}},
									    ]      ,  )

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

									self.assertEqual(
									    nested_simplify(SCREAMING_SNAKE_CASE_      ,  decimals=4   )      ,  [
									        [
									            {"score": 0.7_235, "label": "cat", "box": {"xmin": 2_0_4, "ymin": 1_6_7, "xmax": 2_3_2, "ymax": 1_9_0}},
									            {"score": 0.7_218, "label": "remote", "box": {"xmin": 2_0_4, "ymin": 1_6_7, "xmax": 2_3_2, "ymax": 1_9_0}},
									            {"score": 0.7_184, "label": "couch", "box": {"xmin": 2_0_4, "ymin": 1_6_7, "xmax": 2_3_2, "ymax": 1_9_0}},
									            {"score": 0.6_748, "label": "remote", "box": {"xmin": 5_7_1, "ymin": 8_3, "xmax": 5_9_8, "ymax": 1_0_3}},
									            {"score": 0.6_656, "label": "cat", "box": {"xmin": 5_7_1, "ymin": 8_3, "xmax": 5_9_8, "ymax": 1_0_3}},
									            {"score": 0.6_614, "label": "couch", "box": {"xmin": 5_7_1, "ymin": 8_3, "xmax": 5_9_8, "ymax": 1_0_3}},
									            {"score": 0.6_456, "label": "remote", "box": {"xmin": 4_9_4, "ymin": 1_0_5, "xmax": 5_2_1, "ymax": 1_2_7}},
									            {"score": 0.642, "label": "remote", "box": {"xmin": 6_7, "ymin": 2_7_4, "xmax": 9_3, "ymax": 2_9_7}},
									            {"score": 0.6_419, "label": "cat", "box": {"xmin": 4_9_4, "ymin": 1_0_5, "xmax": 5_2_1, "ymax": 1_2_7}},
									        ]
									    ]      ,  )






							@require_torch
							@slow
							def snake_case_	( self   ):
									a_  :   List[str]			    =  pipeline("zero-shot-object-detection"   )

									a_  :   Optional[int]			    =  object_detector(
									    "http://images.cocodataset.org/val2017/000000039769.jpg"      ,  candidate_labels=["cat", "remote", "couch"]      ,  )
									self.assertEqual(
									    nested_simplify(SCREAMING_SNAKE_CASE_      ,  decimals=4   )      ,  [
									        {"score": 0.2_868, "label": "cat", "box": {"xmin": 3_2_4, "ymin": 2_0, "xmax": 6_4_0, "ymax": 3_7_3}},
									        {"score": 0.277, "label": "remote", "box": {"xmin": 4_0, "ymin": 7_2, "xmax": 1_7_7, "ymax": 1_1_5}},
									        {"score": 0.2_537, "label": "cat", "box": {"xmin": 1, "ymin": 5_5, "xmax": 3_1_5, "ymax": 4_7_2}},
									        {"score": 0.1_474, "label": "remote", "box": {"xmin": 3_3_5, "ymin": 7_4, "xmax": 3_7_1, "ymax": 1_8_7}},
									        {"score": 0.1_208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 6_4_2, "ymax": 4_7_6}},
									    ]      ,  )

									a_  :   Any			    =  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(SCREAMING_SNAKE_CASE_      ,  decimals=4   )      ,  [
									        [
									            {"score": 0.2_868, "label": "cat", "box": {"xmin": 3_2_4, "ymin": 2_0, "xmax": 6_4_0, "ymax": 3_7_3}},
									            {"score": 0.277, "label": "remote", "box": {"xmin": 4_0, "ymin": 7_2, "xmax": 1_7_7, "ymax": 1_1_5}},
									            {"score": 0.2_537, "label": "cat", "box": {"xmin": 1, "ymin": 5_5, "xmax": 3_1_5, "ymax": 4_7_2}},
									            {"score": 0.1_474, "label": "remote", "box": {"xmin": 3_3_5, "ymin": 7_4, "xmax": 3_7_1, "ymax": 1_8_7}},
									            {"score": 0.1_208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 6_4_2, "ymax": 4_7_6}},
									        ],
									        [
									            {"score": 0.2_868, "label": "cat", "box": {"xmin": 3_2_4, "ymin": 2_0, "xmax": 6_4_0, "ymax": 3_7_3}},
									            {"score": 0.277, "label": "remote", "box": {"xmin": 4_0, "ymin": 7_2, "xmax": 1_7_7, "ymax": 1_1_5}},
									            {"score": 0.2_537, "label": "cat", "box": {"xmin": 1, "ymin": 5_5, "xmax": 3_1_5, "ymax": 4_7_2}},
									            {"score": 0.1_474, "label": "remote", "box": {"xmin": 3_3_5, "ymin": 7_4, "xmax": 3_7_1, "ymax": 1_8_7}},
									            {"score": 0.1_208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 6_4_2, "ymax": 4_7_6}},
									        ],
									    ]      ,  )






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






							@require_torch
							@slow
							def snake_case_	( self   ):
									a_  :   Optional[int]			    =  0.2
									a_  :   int			    =  pipeline("zero-shot-object-detection"   )

									a_  :   List[Any]			    =  object_detector(
									    "http://images.cocodataset.org/val2017/000000039769.jpg"      ,  candidate_labels=["cat", "remote", "couch"]      ,  threshold=SCREAMING_SNAKE_CASE_      ,  )
									self.assertEqual(
									    nested_simplify(SCREAMING_SNAKE_CASE_      ,  decimals=4   )      ,  [
									        {"score": 0.2_868, "label": "cat", "box": {"xmin": 3_2_4, "ymin": 2_0, "xmax": 6_4_0, "ymax": 3_7_3}},
									        {"score": 0.277, "label": "remote", "box": {"xmin": 4_0, "ymin": 7_2, "xmax": 1_7_7, "ymax": 1_1_5}},
									        {"score": 0.2_537, "label": "cat", "box": {"xmin": 1, "ymin": 5_5, "xmax": 3_1_5, "ymax": 4_7_2}},
									    ]      ,  )






							@require_torch
							@slow
							def snake_case_	( self   ):
									a_  :   Any			    =  2
									a_  :   List[Any]			    =  pipeline("zero-shot-object-detection"   )

									a_  :   List[Any]			    =  object_detector(
									    "http://images.cocodataset.org/val2017/000000039769.jpg"      ,  candidate_labels=["cat", "remote", "couch"]      ,  top_k=SCREAMING_SNAKE_CASE_      ,  )
									self.assertEqual(
									    nested_simplify(SCREAMING_SNAKE_CASE_      ,  decimals=4   )      ,  [
									        {"score": 0.2_868, "label": "cat", "box": {"xmin": 3_2_4, "ymin": 2_0, "xmax": 6_4_0, "ymax": 3_7_3}},
									        {"score": 0.277, "label": "remote", "box": {"xmin": 4_0, "ymin": 7_2, "xmax": 1_7_7, "ymax": 1_1_5}},
									    ]      ,  )




import numpy as np







def  lowerCAmelCase_	(lowerCAmelCase__:		np.ndarray		,						lowerCAmelCase__:		float  ):





			"""simple docstring"""


			return np.where(vector > 0		,						lowerCAmelCase__		,						(alpha * (np.exp(lowerCAmelCase__  ) - 1))  )


if __name__ == "__main__":
	import doctest

	doctest.testmod()






