






'''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    a__				(					*__lowerCamelCase     :     str				,     **__lowerCamelCase     :     Tuple     )							->							Dict:

      '''simple docstring'''




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


    '''simple docstring'''

    lowerCAmelCase__      				=							MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING

    def    a__				(					self     :     int				,     __lowerCamelCase     :     str				,     __lowerCamelCase     :     Optional[int]				,     __lowerCamelCase     :     str     )							->							Any:

     '''simple docstring'''




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

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

    def    a__				(					self     :     List[str]				,     __lowerCamelCase     :     Tuple				,     __lowerCamelCase     :     int     )							->							Any:

     '''simple docstring'''




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

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

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

     '''simple docstring'''




     pass

    @require_torch
    def    a__				(					self     :     str     )							->							Dict:

     '''simple docstring'''




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

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

     self.assertEqual(
         nested_simplify(__lowerCamelCase				,     decimals=4     )				,     [
             {"score": 0.7_2_3_5, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
             {"score": 0.7_2_1_8, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
             {"score": 0.7_1_8_4, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
             {"score": 0.6_7_4_8, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
             {"score": 0.6_6_5_6, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
             {"score": 0.6_6_1_4, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
             {"score": 0.6_4_5_6, "label": "remote", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
             {"score": 0.6_4_2, "label": "remote", "box": {"xmin": 67, "ymin": 274, "xmax": 93, "ymax": 297}},
             {"score": 0.6_4_1_9, "label": "cat", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
         ]				,     )

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

     self.assertEqual(
         nested_simplify(__lowerCamelCase				,     decimals=4     )				,     [
             [
                 {"score": 0.7_2_3_5, "label": "cat", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                 {"score": 0.7_2_1_8, "label": "remote", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                 {"score": 0.7_1_8_4, "label": "couch", "box": {"xmin": 204, "ymin": 167, "xmax": 232, "ymax": 190}},
                 {"score": 0.6_7_4_8, "label": "remote", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                 {"score": 0.6_6_5_6, "label": "cat", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                 {"score": 0.6_6_1_4, "label": "couch", "box": {"xmin": 571, "ymin": 83, "xmax": 598, "ymax": 103}},
                 {"score": 0.6_4_5_6, "label": "remote", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
                 {"score": 0.6_4_2, "label": "remote", "box": {"xmin": 67, "ymin": 274, "xmax": 93, "ymax": 297}},
                 {"score": 0.6_4_1_9, "label": "cat", "box": {"xmin": 494, "ymin": 105, "xmax": 521, "ymax": 127}},
             ]
         ]				,     )

    @require_torch
    @slow
    def    a__				(					self     :     Any     )							->							Union[str, Any]:

     '''simple docstring'''




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

     lowerCamelCase__  =     object_detector(
         "http://images.cocodataset.org/val2017/000000039769.jpg"				,     candidate_labels=["cat", "remote", "couch"]				,     )
     self.assertEqual(
         nested_simplify(__lowerCamelCase				,     decimals=4     )				,     [
             {"score": 0.2_8_6_8, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
             {"score": 0.2_7_7, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
             {"score": 0.2_5_3_7, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
             {"score": 0.1_4_7_4, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
             {"score": 0.1_2_0_8, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
         ]				,     )

     lowerCamelCase__  =     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(__lowerCamelCase				,     decimals=4     )				,     [
             [
                 {"score": 0.2_8_6_8, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
                 {"score": 0.2_7_7, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
                 {"score": 0.2_5_3_7, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
                 {"score": 0.1_4_7_4, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
                 {"score": 0.1_2_0_8, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
             ],
             [
                 {"score": 0.2_8_6_8, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
                 {"score": 0.2_7_7, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
                 {"score": 0.2_5_3_7, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
                 {"score": 0.1_4_7_4, "label": "remote", "box": {"xmin": 335, "ymin": 74, "xmax": 371, "ymax": 187}},
                 {"score": 0.1_2_0_8, "label": "couch", "box": {"xmin": 4, "ymin": 0, "xmax": 642, "ymax": 476}},
             ],
         ]				,     )

    @require_tf
    @unittest.skip("Zero Shot Object Detection not implemented in TF"     )
    def    a__				(					self     :     Tuple     )							->							List[str]:

     '''simple docstring'''




     pass

    @require_torch
    @slow
    def    a__				(					self     :     Any     )							->							List[Any]:

     '''simple docstring'''




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

     lowerCamelCase__  =     object_detector(
         "http://images.cocodataset.org/val2017/000000039769.jpg"				,     candidate_labels=["cat", "remote", "couch"]				,     threshold=__lowerCamelCase				,     )
     self.assertEqual(
         nested_simplify(__lowerCamelCase				,     decimals=4     )				,     [
             {"score": 0.2_8_6_8, "label": "cat", "box": {"xmin": 324, "ymin": 20, "xmax": 640, "ymax": 373}},
             {"score": 0.2_7_7, "label": "remote", "box": {"xmin": 40, "ymin": 72, "xmax": 177, "ymax": 115}},
             {"score": 0.2_5_3_7, "label": "cat", "box": {"xmin": 1, "ymin": 55, "xmax": 315, "ymax": 472}},
         ]				,     )




    @require_torch
    @slow
    def    a__				(					self     :     Union[str, Any]     )							->							Optional[int]:

     '''simple docstring'''




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

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









'''simple docstring'''





from collections import OrderedDict
from typing import Mapping

from packaging import version

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


__A							:							Optional[Any]  							=		logging.get_logger(__name__)

__A							:							int  							=		{
    """google/vit-base-patch16-224""": """https://huggingface.co/vit-base-patch16-224/resolve/main/config.json""",
    # See all ViT models at https://huggingface.co/models?filter=vit
}
class 				lowercase       (							_lowerCamelCase      ):


    '''simple docstring'''

    lowerCAmelCase__      				=							"vit"

    def __init__(					self     :     Optional[int]				,     __lowerCamelCase     :     Tuple=768				,     __lowerCamelCase     :     Tuple=12				,     __lowerCamelCase     :     Tuple=12				,     __lowerCamelCase     :     int=3072				,     __lowerCamelCase     :     Optional[Any]="gelu"				,     __lowerCamelCase     :     Optional[int]=0.0				,     __lowerCamelCase     :     Tuple=0.0				,     __lowerCamelCase     :     Optional[Any]=0.0_2				,     __lowerCamelCase     :     int=1E-12				,     __lowerCamelCase     :     Tuple=224				,     __lowerCamelCase     :     int=16				,     __lowerCamelCase     :     Optional[int]=3				,     __lowerCamelCase     :     List[str]=True				,     __lowerCamelCase     :     str=16				,     **__lowerCamelCase     :     Optional[int]				,     )							->							str:

     '''simple docstring'''




     super().__init__(**__lowerCamelCase     )

     lowerCamelCase__  =     hidden_size
     lowerCamelCase__  =     num_hidden_layers
     lowerCamelCase__  =     num_attention_heads
     lowerCamelCase__  =     intermediate_size
     lowerCamelCase__  =     hidden_act
     lowerCamelCase__  =     hidden_dropout_prob
     lowerCamelCase__  =     attention_probs_dropout_prob
     lowerCamelCase__  =     initializer_range
     lowerCamelCase__  =     layer_norm_eps
     lowerCamelCase__  =     image_size
     lowerCamelCase__  =     patch_size
     lowerCamelCase__  =     num_channels
     lowerCamelCase__  =     qkv_bias
     lowerCamelCase__  =     encoder_stride
class 				lowercase       (							_lowerCamelCase      ):


    '''simple docstring'''

    lowerCAmelCase__      				=							version.parse("1.11"      )

    @property
    def    a__				(					self     :     Optional[int]     )							->							Mapping[str, Mapping[int, str]]:

     '''simple docstring'''




     return OrderedDict(
         [
             ("pixel_values", {0: "batch", 1: "num_channels", 2: "height", 3: "width"}),
         ]     )




    @property
    def    a__				(					self     :     Optional[int]     )							->							float:

     '''simple docstring'''




     return 1E-4

