





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    :





        @staticmethod
        def 		UpperCamelCase(     *_UpperCamelCase				,							**_UpperCamelCase					):
           pass




@is_pipeline_test
@require_vision
@require_torch
class 			__UpperCamelCase    (							unittest.TestCase    ):
     __A	:  Union[str, Any]							  =   MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING





     def 		UpperCamelCase(     self				,							_UpperCamelCase				,							_UpperCamelCase				,							_UpperCamelCase					):
        _UpperCAmelCase           =   pipeline(
            '''zero-shot-object-detection'''				,							model='''hf-internal-testing/tiny-random-owlvit-object-detection'''					)

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





     def 		UpperCamelCase(     self				,							_UpperCamelCase				,							_UpperCamelCase					):
        _UpperCAmelCase           =   object_detector(examples[0]				,							threshold=0.0					)

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





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





     @require_torch
     def 		UpperCamelCase(     self					):
        _UpperCAmelCase           =   pipeline(
            '''zero-shot-object-detection'''				,							model='''hf-internal-testing/tiny-random-owlvit-object-detection'''					)

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

        self.assertEqual(
            nested_simplify(_UpperCamelCase				,							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}},
            ]				,							)

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

        self.assertEqual(
            nested_simplify(_UpperCamelCase				,							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					):
        _UpperCAmelCase           =   pipeline('''zero-shot-object-detection'''					)

        _UpperCAmelCase           =   object_detector(
            '''http://images.cocodataset.org/val2017/000000039769.jpg'''				,							candidate_labels=['''cat''', '''remote''', '''couch''']				,							)
        self.assertEqual(
            nested_simplify(_UpperCamelCase				,							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}},
            ]				,							)

        _UpperCAmelCase           =   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(_UpperCamelCase				,							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					):
        _UpperCAmelCase           =   0.2
        _UpperCAmelCase           =   pipeline('''zero-shot-object-detection'''					)

        _UpperCAmelCase           =   object_detector(
            '''http://images.cocodataset.org/val2017/000000039769.jpg'''				,							candidate_labels=['''cat''', '''remote''', '''couch''']				,							threshold=_UpperCamelCase				,							)
        self.assertEqual(
            nested_simplify(_UpperCamelCase				,							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					):
        _UpperCAmelCase           =   2
        _UpperCAmelCase           =   pipeline('''zero-shot-object-detection'''					)

        _UpperCAmelCase           =   object_detector(
            '''http://images.cocodataset.org/val2017/000000039769.jpg'''				,							candidate_labels=['''cat''', '''remote''', '''couch''']				,							top_k=_UpperCamelCase				,							)
        self.assertEqual(
            nested_simplify(_UpperCamelCase				,							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}},
            ]				,							)







"""simple docstring"""



import unittest

from transformers import is_torch_available
from transformers.testing_utils import require_sentencepiece, require_tokenizers, require_torch, slow


if is_torch_available():
 import torch

 from transformers import XLMRobertaModel




@require_sentencepiece
@require_tokenizers
@require_torch
class 			lowerCAmelCase__			(    unittest.TestCase   ):
   @slow
   def       __a							(		self      :	Tuple							):


        '''simple docstring'''
        UpperCAmelCase__						:    List[str]							=							XLMRobertaModel.from_pretrained("xlm-roberta-base"							)
        UpperCAmelCase__						:    str							=							torch.tensor([[0, 5_8_1, 1_0_2_6_9, 8_3, 9_9_9_4_2, 1_3_6, 6_0_7_4_2, 2_3, 7_0, 8_0_5_8_3, 1_8_2_7_6, 2]]							)
        # The dog is cute and lives in the garden house

        UpperCAmelCase__						:    Tuple							=							torch.Size((1, 1_2, 7_6_8)							)  # batch_size, sequence_length, embedding_vector_dim
        UpperCAmelCase__						:    Optional[int]							=							torch.tensor(
            [[-0.0101, 0.1218, -0.0803, 0.0801, 0.1327, 0.0776, -0.1215, 0.2383, 0.3338, 0.3106, 0.0300, 0.0252]]							)
        #  xlmr = torch.hub.load('pytorch/fairseq', 'xlmr.base')
        #  xlmr.eval()
        #  expected_output_values_last_dim = xlmr.extract_features(input_ids[0])[:, :, -1]
        with torch.no_grad():
             UpperCAmelCase__						:    int							=							model(snake_case__							)["last_hidden_state"].detach()
        self.assertEqual(output.shape							,			snake_case__							)
        # compare the actual values for a slice of last dim
        self.assertTrue(torch.allclose(output[:, :, -1]							,			snake_case__							,			atol=1e-3							)							)




   @slow
   def       __a							(		self      :	Optional[Any]							):


        '''simple docstring'''
        UpperCAmelCase__						:    Any							=							XLMRobertaModel.from_pretrained("xlm-roberta-large"							)
        UpperCAmelCase__						:    Tuple							=							torch.tensor([[0, 5_8_1, 1_0_2_6_9, 8_3, 9_9_9_4_2, 1_3_6, 6_0_7_4_2, 2_3, 7_0, 8_0_5_8_3, 1_8_2_7_6, 2]]							)
        # The dog is cute and lives in the garden house

        UpperCAmelCase__						:    Union[str, Any]							=							torch.Size((1, 1_2, 1_0_2_4)							)  # batch_size, sequence_length, embedding_vector_dim
        UpperCAmelCase__						:    Optional[Any]							=							torch.tensor(
            [[-0.0699, -0.0318, 0.0705, -0.1241, 0.0999, -0.0520, 0.1004, -0.1838, -0.4704, 0.1437, 0.0821, 0.0126]]							)
        #  xlmr = torch.hub.load('pytorch/fairseq', 'xlmr.large')
        #  xlmr.eval()
        #  expected_output_values_last_dim = xlmr.extract_features(input_ids[0])[:, :, -1]
        with torch.no_grad():
             UpperCAmelCase__						:    Optional[Any]							=							model(snake_case__							)["last_hidden_state"].detach()
        self.assertEqual(output.shape							,			snake_case__							)
        # compare the actual values for a slice of last dim
        self.assertTrue(torch.allclose(output[:, :, -1]							,			snake_case__							,			atol=1e-3							)							)


