




'''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 						_UpperCamelCase (*a       :  Union[str, Any]    ,		**a       :  Tuple    )       ->   str:






        """simple docstring"""


        pass

@is_pipeline_test
@require_vision
@require_torch
class 	_snake_case(			unittest.TestCase      ):
 __snake_case:							Any						=					MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING






 def 						_UpperCamelCase (self       :  Union[str, Any]    ,		a       :  Tuple    ,		a       :  List[Any]    ,		a       :  Optional[int]    )       ->   Dict:






    """simple docstring"""


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

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






 def 						_UpperCamelCase (self       :  str    ,		a       :  Any    ,		a       :  Dict    )       ->   List[str]:






    """simple docstring"""


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

    A__       =     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       :  Dict    )       ->   Optional[Any]:






    """simple docstring"""


    pass






 @require_torch
 def 						_UpperCamelCase (self       :  List[Any]    )       ->   str:






    """simple docstring"""


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

    A__       =     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': 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}},
        ]    ,		)

    A__       =     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': 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 						_UpperCamelCase (self       :  str    )       ->   Optional[int]:






    """simple docstring"""


    A__       =     pipeline('zero-shot-object-detection'    )

    A__       =     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': 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}},
        ]    ,		)

    A__       =     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': 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 						_UpperCamelCase (self       :  List[str]    )       ->   int:






    """simple docstring"""


    pass






 @require_torch
 @slow
 def 						_UpperCamelCase (self       :  Optional[int]    )       ->   List[str]:






    """simple docstring"""


    A__       =     0.2
    A__       =     pipeline('zero-shot-object-detection'    )

    A__       =     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': 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 						_UpperCamelCase (self       :  Dict    )       ->   List[str]:






    """simple docstring"""


    A__       =     2
    A__       =     pipeline('zero-shot-object-detection'    )

    A__       =     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': 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}},
        ]    ,		)






A				:       Any      =  '\n# Transformers installation\n! pip install transformers datasets\n# To install from source instead of the last release, comment the command above and uncomment the following one.\n# ! pip install git+https://github.com/huggingface/transformers.git\n'

A				:       Optional[int]      =  [{'type': 'code', 'content': INSTALL_CONTENT}]
A				:       Optional[int]      =  {
    '{processor_class}': 'FakeProcessorClass',
    '{model_class}': 'FakeModelClass',
    '{object_class}': 'FakeObjectClass',
}





