




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 						UpperCAmelCase  :







								'''simple docstring'''





								@staticmethod
								def 			snake_case__		(		*__lowercase				:	List[Any]			,      **__lowercase				:	Tuple		):






									"""simple docstring"""






									pass
@is_pipeline_test
@require_vision
@require_torch
class 						UpperCAmelCase  (							unittest.TestCase     ):







						'''simple docstring'''





						lowerCAmelCase_							=  MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING






						def 			snake_case__		(		self				:	Optional[int]			,      __lowercase				:	int			,      __lowercase				:	Dict			,      __lowercase				:	Optional[Any]		):






							"""simple docstring"""






							snake_case_						       =	pipeline(
							    "zero-shot-object-detection"			,      model="hf-internal-testing/tiny-random-owlvit-object-detection"		)

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






						def 			snake_case__		(		self				:	Union[str, Any]			,      __lowercase				:	Tuple			,      __lowercase				:	Dict		):






							"""simple docstring"""






							snake_case_						       =	object_detector(examples[0]			,      threshold=0.0		)

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






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






							"""simple docstring"""






							pass






						@require_torch
						def 			snake_case__		(		self				:	List[Any]		):






							"""simple docstring"""






							snake_case_						       =	pipeline(
							    "zero-shot-object-detection"			,      model="hf-internal-testing/tiny-random-owlvit-object-detection"		)

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

							self.assertEqual(
							    nested_simplify(__lowercase			,      decimals=4		)			,      [
							        {"score": 0.7235, "label": "cat", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
							        {"score": 0.7218, "label": "remote", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
							        {"score": 0.7184, "label": "couch", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
							        {"score": 0.6748, "label": "remote", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
							        {"score": 0.6656, "label": "cat", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
							        {"score": 0.6614, "label": "couch", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
							        {"score": 0.6456, "label": "remote", "box": {"xmin": 4_94, "ymin": 1_05, "xmax": 5_21, "ymax": 1_27}},
							        {"score": 0.642, "label": "remote", "box": {"xmin": 67, "ymin": 2_74, "xmax": 93, "ymax": 2_97}},
							        {"score": 0.6419, "label": "cat", "box": {"xmin": 4_94, "ymin": 1_05, "xmax": 5_21, "ymax": 1_27}},
							    ]			,      )

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

							self.assertEqual(
							    nested_simplify(__lowercase			,      decimals=4		)			,      [
							        [
							            {"score": 0.7235, "label": "cat", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
							            {"score": 0.7218, "label": "remote", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
							            {"score": 0.7184, "label": "couch", "box": {"xmin": 2_04, "ymin": 1_67, "xmax": 2_32, "ymax": 1_90}},
							            {"score": 0.6748, "label": "remote", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
							            {"score": 0.6656, "label": "cat", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
							            {"score": 0.6614, "label": "couch", "box": {"xmin": 5_71, "ymin": 83, "xmax": 5_98, "ymax": 1_03}},
							            {"score": 0.6456, "label": "remote", "box": {"xmin": 4_94, "ymin": 1_05, "xmax": 5_21, "ymax": 1_27}},
							            {"score": 0.642, "label": "remote", "box": {"xmin": 67, "ymin": 2_74, "xmax": 93, "ymax": 2_97}},
							            {"score": 0.6419, "label": "cat", "box": {"xmin": 4_94, "ymin": 1_05, "xmax": 5_21, "ymax": 1_27}},
							        ]
							    ]			,      )






						@require_torch
						@slow
						def 			snake_case__		(		self				:	Union[str, Any]		):






							"""simple docstring"""






							snake_case_						       =	pipeline("zero-shot-object-detection"		)

							snake_case_						       =	object_detector(
							    "http://images.cocodataset.org/val2017/000000039769.jpg"			,      candidate_labels=["cat", "remote", "couch"]			,      )
							self.assertEqual(
							    nested_simplify(__lowercase			,      decimals=4		)			,      [
							        {"score": 0.2868, "label": "cat", "box": {"xmin": 3_24, "ymin": 20, "xmax": 6_40, "ymax": 3_73}},
							        {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 1_77, "ymax": 1_15}},
							        {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 3_15, "ymax": 4_72}},
							        {"score": 0.1474, "label": "remote", "box": {"xmin": 3_35, "ymin": 74, "xmax": 3_71, "ymax": 1_87}},
							        {"score": 0.1208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 6_42, "ymax": 4_76}},
							    ]			,      )

							snake_case_						       =	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(__lowercase			,      decimals=4		)			,      [
							        [
							            {"score": 0.2868, "label": "cat", "box": {"xmin": 3_24, "ymin": 20, "xmax": 6_40, "ymax": 3_73}},
							            {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 1_77, "ymax": 1_15}},
							            {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 3_15, "ymax": 4_72}},
							            {"score": 0.1474, "label": "remote", "box": {"xmin": 3_35, "ymin": 74, "xmax": 3_71, "ymax": 1_87}},
							            {"score": 0.1208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 6_42, "ymax": 4_76}},
							        ],
							        [
							            {"score": 0.2868, "label": "cat", "box": {"xmin": 3_24, "ymin": 20, "xmax": 6_40, "ymax": 3_73}},
							            {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 1_77, "ymax": 1_15}},
							            {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 3_15, "ymax": 4_72}},
							            {"score": 0.1474, "label": "remote", "box": {"xmin": 3_35, "ymin": 74, "xmax": 3_71, "ymax": 1_87}},
							            {"score": 0.1208, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 6_42, "ymax": 4_76}},
							        ],
							    ]			,      )






						@require_tf
						@unittest.skip("Zero Shot Object Detection not implemented in TF"		)
						def 			snake_case__		(		self				:	List[Any]		):






							"""simple docstring"""






							pass






						@require_torch
						@slow
						def 			snake_case__		(		self				:	str		):






							"""simple docstring"""






							snake_case_						       =	0.2
							snake_case_						       =	pipeline("zero-shot-object-detection"		)

							snake_case_						       =	object_detector(
							    "http://images.cocodataset.org/val2017/000000039769.jpg"			,      candidate_labels=["cat", "remote", "couch"]			,      threshold=__lowercase			,      )
							self.assertEqual(
							    nested_simplify(__lowercase			,      decimals=4		)			,      [
							        {"score": 0.2868, "label": "cat", "box": {"xmin": 3_24, "ymin": 20, "xmax": 6_40, "ymax": 3_73}},
							        {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 1_77, "ymax": 1_15}},
							        {"score": 0.2537, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 3_15, "ymax": 4_72}},
							    ]			,      )






						@require_torch
						@slow
						def 			snake_case__		(		self				:	int		):






							"""simple docstring"""






							snake_case_						       =	2
							snake_case_						       =	pipeline("zero-shot-object-detection"		)

							snake_case_						       =	object_detector(
							    "http://images.cocodataset.org/val2017/000000039769.jpg"			,      candidate_labels=["cat", "remote", "couch"]			,      top_k=__lowercase			,      )
							self.assertEqual(
							    nested_simplify(__lowercase			,      decimals=4		)			,      [
							        {"score": 0.2868, "label": "cat", "box": {"xmin": 3_24, "ymin": 20, "xmax": 6_40, "ymax": 3_73}},
							        {"score": 0.277, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 1_77, "ymax": 1_15}},
							    ]			,      )






import numpy as np


def 		lowerCamelCase__       (						_A				):







	'''simple docstring'''





	return (2 / (1 + np.exp(-2 * vector				))) - 1


if __name__ == "__main__":
		import doctest

		doctest.testmod()
