





from typing import Dict, Iterable, Optional, Union

import numpy as np

from ...image_processing_utils import BaseImageProcessor, BatchFeature, get_size_dict
from ...image_transforms import normalize, rescale, resize, to_channel_dimension_format, to_pil_image
from ...image_utils import (
    IMAGENET_STANDARD_MEAN,
    IMAGENET_STANDARD_STD,
    ChannelDimension,
    ImageInput,
    PILImageResampling,
    make_list_of_images,
    to_numpy_array,
    valid_images,
)
from ...utils import TensorType, is_pytesseract_available, is_vision_available, logging, requires_backends


if is_vision_available():
      import PIL

# soft dependency
if is_pytesseract_available():
      import pytesseract

SCREAMING_SNAKE_CASE_		     = logging.get_logger(__name__)



def      __lowercase     (   _SCREAMING_SNAKE_CASE				,		_SCREAMING_SNAKE_CASE				,		_SCREAMING_SNAKE_CASE			)				->     Union[str, Any]:


      '''simple docstring'''


      return [
          int(10_00 * (box[0] / width)			),
          int(10_00 * (box[1] / height)			),
          int(10_00 * (box[2] / width)			),
          int(10_00 * (box[3] / height)			),
      ]



def      __lowercase     (   _SCREAMING_SNAKE_CASE				,		_SCREAMING_SNAKE_CASE				,		_SCREAMING_SNAKE_CASE			)				->     List[Any]:


      '''simple docstring'''


      SCREAMING_SNAKE_CASE	=		to_pil_image(_SCREAMING_SNAKE_CASE			)
      SCREAMING_SNAKE_CASE,      SCREAMING_SNAKE_CASE	=		pil_image.size
      SCREAMING_SNAKE_CASE	=		pytesseract.image_to_data(_SCREAMING_SNAKE_CASE				,		lang=_SCREAMING_SNAKE_CASE				,		output_type="""dict"""				,		config=_SCREAMING_SNAKE_CASE			)
      SCREAMING_SNAKE_CASE,      SCREAMING_SNAKE_CASE,      SCREAMING_SNAKE_CASE,      SCREAMING_SNAKE_CASE,      SCREAMING_SNAKE_CASE	=		data["""text"""], data["""left"""], data["""top"""], data["""width"""], data["""height"""]

      # filter empty words and corresponding coordinates
      SCREAMING_SNAKE_CASE	=		[idx for idx, word in enumerate(_SCREAMING_SNAKE_CASE			) if not word.strip()]
      SCREAMING_SNAKE_CASE	=		[word for idx, word in enumerate(_SCREAMING_SNAKE_CASE			) if idx not in irrelevant_indices]
      SCREAMING_SNAKE_CASE	=		[coord for idx, coord in enumerate(_SCREAMING_SNAKE_CASE			) if idx not in irrelevant_indices]
      SCREAMING_SNAKE_CASE	=		[coord for idx, coord in enumerate(_SCREAMING_SNAKE_CASE			) if idx not in irrelevant_indices]
      SCREAMING_SNAKE_CASE	=		[coord for idx, coord in enumerate(_SCREAMING_SNAKE_CASE			) if idx not in irrelevant_indices]
      SCREAMING_SNAKE_CASE	=		[coord for idx, coord in enumerate(_SCREAMING_SNAKE_CASE			) if idx not in irrelevant_indices]

      # turn coordinates into (left, top, left+width, top+height) format
      SCREAMING_SNAKE_CASE	=		[]
      for x, y, w, h in zip(_SCREAMING_SNAKE_CASE				,		_SCREAMING_SNAKE_CASE				,		_SCREAMING_SNAKE_CASE				,		_SCREAMING_SNAKE_CASE			):
            SCREAMING_SNAKE_CASE	=		[x, y, x + w, y + h]
            actual_boxes.append(_SCREAMING_SNAKE_CASE			)

      # finally, normalize the bounding boxes
      SCREAMING_SNAKE_CASE	=		[]
      for box in actual_boxes:
            normalized_boxes.append(normalize_box(_SCREAMING_SNAKE_CASE				,		_SCREAMING_SNAKE_CASE				,		_SCREAMING_SNAKE_CASE			)			)

      assert len(_SCREAMING_SNAKE_CASE			) == len(_SCREAMING_SNAKE_CASE			), "Not as many words as there are bounding boxes"

      return words, normalized_boxes



class 	UpperCamelCase__				(   lowerCAmelCase_     ):



     '''simple docstring'''

     __snake_case					:			Optional[Any]				=    ["pixel_values"]






     def __init__(							self		:					Union[str, Any]		,lowerCamelCase__		:					bool = True		,lowerCamelCase__		:					Dict[str, int] = None		,lowerCamelCase__		:					PILImageResampling = PILImageResampling.BILINEAR		,lowerCamelCase__		:					bool = True		,lowerCamelCase__		:					float = 1 / 255		,lowerCamelCase__		:					bool = True		,lowerCamelCase__		:					Union[float, Iterable[float]] = None		,lowerCamelCase__		:					Union[float, Iterable[float]] = None		,lowerCamelCase__		:					bool = True		,lowerCamelCase__		:					Optional[str] = None		,lowerCamelCase__		:					Optional[str] = ""		,**lowerCamelCase__		:					str		,)  ->	None:




           '''simple docstring'''


           super().__init__(**lowerCamelCase__ )
           SCREAMING_SNAKE_CASE	=		size if size is not None else {"""height""": 224, """width""": 224}
           SCREAMING_SNAKE_CASE	=		get_size_dict(lowerCamelCase__ )

           SCREAMING_SNAKE_CASE	=		do_resize
           SCREAMING_SNAKE_CASE	=		size
           SCREAMING_SNAKE_CASE	=		resample
           SCREAMING_SNAKE_CASE	=		do_rescale
           SCREAMING_SNAKE_CASE	=		rescale_value
           SCREAMING_SNAKE_CASE	=		do_normalize
           SCREAMING_SNAKE_CASE	=		image_mean if image_mean is not None else IMAGENET_STANDARD_MEAN
           SCREAMING_SNAKE_CASE	=		image_std if image_std is not None else IMAGENET_STANDARD_STD
           SCREAMING_SNAKE_CASE	=		apply_ocr
           SCREAMING_SNAKE_CASE	=		ocr_lang
           SCREAMING_SNAKE_CASE	=		tesseract_config






     def        SCREAMING_SNAKE_CASE__						(							self		:					int		,lowerCamelCase__		:					np.ndarray		,lowerCamelCase__		:					Dict[str, int]		,lowerCamelCase__		:					PILImageResampling = PILImageResampling.BILINEAR		,lowerCamelCase__		:					Optional[Union[str, ChannelDimension]] = None		,**lowerCamelCase__		:					Dict		,)  ->	np.ndarray:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE	=		get_size_dict(lowerCamelCase__ )
           if "height" not in size or "width" not in size:
                 raise ValueError(F"""The size dictionary must contain the keys 'height' and 'width'. Got {size.keys()}""" )
           SCREAMING_SNAKE_CASE	=		(size["""height"""], size["""width"""])
           return resize(lowerCamelCase__		,size=lowerCamelCase__		,resample=lowerCamelCase__		,data_format=lowerCamelCase__		,**lowerCamelCase__ )






     def        SCREAMING_SNAKE_CASE__						(							self		:					Optional[Any]		,lowerCamelCase__		:					np.ndarray		,lowerCamelCase__		:					Union[int, float]		,lowerCamelCase__		:					Optional[Union[str, ChannelDimension]] = None		,**lowerCamelCase__		:					List[Any]		,)  ->	np.ndarray:




           '''simple docstring'''


           return rescale(lowerCamelCase__		,scale=lowerCamelCase__		,data_format=lowerCamelCase__		,**lowerCamelCase__ )






     def        SCREAMING_SNAKE_CASE__						(							self		:					List[str]		,lowerCamelCase__		:					np.ndarray		,lowerCamelCase__		:					Union[float, Iterable[float]]		,lowerCamelCase__		:					Union[float, Iterable[float]]		,lowerCamelCase__		:					Optional[Union[str, ChannelDimension]] = None		,**lowerCamelCase__		:					Optional[int]		,)  ->	np.ndarray:




           '''simple docstring'''


           return normalize(lowerCamelCase__		,mean=lowerCamelCase__		,std=lowerCamelCase__		,data_format=lowerCamelCase__		,**lowerCamelCase__ )






     def        SCREAMING_SNAKE_CASE__						(							self		:					List[str]		,lowerCamelCase__		:					ImageInput		,lowerCamelCase__		:					bool = None		,lowerCamelCase__		:					Dict[str, int] = None		,lowerCamelCase__		:					Dict=None		,lowerCamelCase__		:					bool = None		,lowerCamelCase__		:					float = None		,lowerCamelCase__		:					bool = None		,lowerCamelCase__		:					Union[float, Iterable[float]] = None		,lowerCamelCase__		:					Union[float, Iterable[float]] = None		,lowerCamelCase__		:					bool = None		,lowerCamelCase__		:					Optional[str] = None		,lowerCamelCase__		:					Optional[str] = None		,lowerCamelCase__		:					Optional[Union[str, TensorType]] = None		,lowerCamelCase__		:					ChannelDimension = ChannelDimension.FIRST		,**lowerCamelCase__		:					Union[str, Any]		,)  ->	PIL.Image.Image:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE	=		do_resize if do_resize is not None else self.do_resize
           SCREAMING_SNAKE_CASE	=		size if size is not None else self.size
           SCREAMING_SNAKE_CASE	=		get_size_dict(lowerCamelCase__ )
           SCREAMING_SNAKE_CASE	=		resample if resample is not None else self.resample
           SCREAMING_SNAKE_CASE	=		do_rescale if do_rescale is not None else self.do_rescale
           SCREAMING_SNAKE_CASE	=		rescale_factor if rescale_factor is not None else self.rescale_factor
           SCREAMING_SNAKE_CASE	=		do_normalize if do_normalize is not None else self.do_normalize
           SCREAMING_SNAKE_CASE	=		image_mean if image_mean is not None else self.image_mean
           SCREAMING_SNAKE_CASE	=		image_std if image_std is not None else self.image_std
           SCREAMING_SNAKE_CASE	=		apply_ocr if apply_ocr is not None else self.apply_ocr
           SCREAMING_SNAKE_CASE	=		ocr_lang if ocr_lang is not None else self.ocr_lang
           SCREAMING_SNAKE_CASE	=		tesseract_config if tesseract_config is not None else self.tesseract_config

           SCREAMING_SNAKE_CASE	=		make_list_of_images(lowerCamelCase__ )

           if not valid_images(lowerCamelCase__ ):
                 raise ValueError(
                     """Invalid image type. Must be of type PIL.Image.Image, numpy.ndarray, """
                     """torch.Tensor, tf.Tensor or jax.ndarray.""" )

           if do_resize and size is None:
                 raise ValueError("""Size must be specified if do_resize is True.""" )

           if do_rescale and rescale_factor is None:
                 raise ValueError("""Rescale factor must be specified if do_rescale is True.""" )

           if do_normalize and (image_mean is None or image_std is None):
                 raise ValueError("""If do_normalize is True, image_mean and image_std must be specified.""" )

           # All transformations expect numpy arrays.
           SCREAMING_SNAKE_CASE	=		[to_numpy_array(lowerCamelCase__ ) for image in images]

           # Tesseract OCR to get words + normalized bounding boxes
           if apply_ocr:
                 requires_backends(self		,"""pytesseract""" )
                 SCREAMING_SNAKE_CASE	=		[]
                 SCREAMING_SNAKE_CASE	=		[]
                 for image in images:
                       SCREAMING_SNAKE_CASE,      SCREAMING_SNAKE_CASE	=		apply_tesseract(lowerCamelCase__		,lowerCamelCase__		,lowerCamelCase__ )
                       words_batch.append(lowerCamelCase__ )
                       boxes_batch.append(lowerCamelCase__ )

           if do_resize:
                 SCREAMING_SNAKE_CASE	=		[self.resize(image=lowerCamelCase__		,size=lowerCamelCase__		,resample=lowerCamelCase__ ) for image in images]

           if do_rescale:
                 SCREAMING_SNAKE_CASE	=		[self.rescale(image=lowerCamelCase__		,scale=lowerCamelCase__ ) for image in images]

           if do_normalize:
                 SCREAMING_SNAKE_CASE	=		[self.normalize(image=lowerCamelCase__		,mean=lowerCamelCase__		,std=lowerCamelCase__ ) for image in images]

           SCREAMING_SNAKE_CASE	=		[to_channel_dimension_format(lowerCamelCase__		,lowerCamelCase__ ) for image in images]

           SCREAMING_SNAKE_CASE	=		BatchFeature(data={"""pixel_values""": images}		,tensor_type=lowerCamelCase__ )

           if apply_ocr:
                 SCREAMING_SNAKE_CASE	=		words_batch
                 SCREAMING_SNAKE_CASE	=		boxes_batch
           return data









from __future__ import annotations

import inspect
import unittest

import numpy as np

from transformers import ResNetConfig
from transformers.testing_utils import require_tf, require_vision, slow
from transformers.utils import cached_property, is_tf_available, is_vision_available

from ...test_configuration_common import ConfigTester
from ...test_modeling_tf_common import TFModelTesterMixin, floats_tensor, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_tf_available():
      import tensorflow as tf

      from transformers import TFResNetForImageClassification, TFResNetModel
      from transformers.models.resnet.modeling_tf_resnet import TF_RESNET_PRETRAINED_MODEL_ARCHIVE_LIST


if is_vision_available():
      from PIL import Image

      from transformers import AutoImageProcessor

class 	UpperCamelCase__				:



     '''simple docstring'''

     def __init__(							self		:					str		,lowerCamelCase__		:					int		,lowerCamelCase__		:					List[str]=3		,lowerCamelCase__		:					Optional[Any]=32		,lowerCamelCase__		:					Any=3		,lowerCamelCase__		:					Any=10		,lowerCamelCase__		:					Any=[10, 20, 30, 40]		,lowerCamelCase__		:					Any=[1, 1, 2, 1]		,lowerCamelCase__		:					Union[str, Any]=True		,lowerCamelCase__		:					List[str]=True		,lowerCamelCase__		:					Union[str, Any]="relu"		,lowerCamelCase__		:					Dict=3		,lowerCamelCase__		:					Any=None		,)  ->	Union[str, Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE	=		parent
           SCREAMING_SNAKE_CASE	=		batch_size
           SCREAMING_SNAKE_CASE	=		image_size
           SCREAMING_SNAKE_CASE	=		num_channels
           SCREAMING_SNAKE_CASE	=		embeddings_size
           SCREAMING_SNAKE_CASE	=		hidden_sizes
           SCREAMING_SNAKE_CASE	=		depths
           SCREAMING_SNAKE_CASE	=		is_training
           SCREAMING_SNAKE_CASE	=		use_labels
           SCREAMING_SNAKE_CASE	=		hidden_act
           SCREAMING_SNAKE_CASE	=		num_labels
           SCREAMING_SNAKE_CASE	=		scope
           SCREAMING_SNAKE_CASE	=		len(lowerCamelCase__ )






     def        SCREAMING_SNAKE_CASE__						(							self		:					Any )  ->	Optional[int]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE	=		floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size] )

           SCREAMING_SNAKE_CASE	=		None
           if self.use_labels:
                 SCREAMING_SNAKE_CASE	=		ids_tensor([self.batch_size]		,self.num_labels )

           SCREAMING_SNAKE_CASE	=		self.get_config()

           return config, pixel_values, labels






     def        SCREAMING_SNAKE_CASE__						(							self		:					List[str] )  ->	Union[str, Any]:




           '''simple docstring'''


           return ResNetConfig(
               num_channels=self.num_channels		,embeddings_size=self.embeddings_size		,hidden_sizes=self.hidden_sizes		,depths=self.depths		,hidden_act=self.hidden_act		,num_labels=self.num_labels		,image_size=self.image_size		,)






     def        SCREAMING_SNAKE_CASE__						(							self		:					Dict		,lowerCamelCase__		:					Union[str, Any]		,lowerCamelCase__		:					Tuple		,lowerCamelCase__		:					List[Any] )  ->	Union[str, Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE	=		TFResNetModel(config=lowerCamelCase__ )
           SCREAMING_SNAKE_CASE	=		model(lowerCamelCase__ )
           # expected last hidden states: B, C, H // 32, W // 32
           self.parent.assertEqual(
               result.last_hidden_state.shape		,(self.batch_size, self.hidden_sizes[-1], self.image_size // 32, self.image_size // 32)		,)






     def        SCREAMING_SNAKE_CASE__						(							self		:					Optional[int]		,lowerCamelCase__		:					Optional[int]		,lowerCamelCase__		:					Union[str, Any]		,lowerCamelCase__		:					Dict )  ->	str:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE	=		self.num_labels
           SCREAMING_SNAKE_CASE	=		TFResNetForImageClassification(lowerCamelCase__ )
           SCREAMING_SNAKE_CASE	=		model(lowerCamelCase__		,labels=lowerCamelCase__ )
           self.parent.assertEqual(result.logits.shape		,(self.batch_size, self.num_labels) )






     def        SCREAMING_SNAKE_CASE__						(							self		:					Optional[Any] )  ->	Optional[Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE	=		self.prepare_config_and_inputs()
           SCREAMING_SNAKE_CASE,      SCREAMING_SNAKE_CASE,      SCREAMING_SNAKE_CASE	=		config_and_inputs
           SCREAMING_SNAKE_CASE	=		{"""pixel_values""": pixel_values}
           return config, inputs_dict

@require_tf
class 	UpperCamelCase__				(   lowerCAmelCase_							,   lowerCAmelCase_							,   unittest.TestCase     ):



     '''simple docstring'''

     __snake_case					:			Union[str, Any]				=    (TFResNetModel, TFResNetForImageClassification) if is_tf_available() else ()
     __snake_case					:			int				=    (
         {"feature-extraction": TFResNetModel, "image-classification": TFResNetForImageClassification}
         if is_tf_available()
         else {}
     )

     __snake_case					:			Optional[int]				=    False
     __snake_case					:			int				=    False
     __snake_case					:			Optional[Any]				=    False
     __snake_case					:			Union[str, Any]				=    False
     __snake_case					:			str				=    False






     def        SCREAMING_SNAKE_CASE__						(							self		:					Union[str, Any] )  ->	List[Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE	=		TFResNetModelTester(self )
           SCREAMING_SNAKE_CASE	=		ConfigTester(self		,config_class=lowerCamelCase__		,has_text_modality=lowerCamelCase__ )






     def        SCREAMING_SNAKE_CASE__						(							self		:					Union[str, Any] )  ->	Union[str, Any]:




           '''simple docstring'''


           self.create_and_test_config_common_properties()
           self.config_tester.create_and_test_config_to_json_string()
           self.config_tester.create_and_test_config_to_json_file()
           self.config_tester.create_and_test_config_from_and_save_pretrained()
           self.config_tester.create_and_test_config_with_num_labels()
           self.config_tester.check_config_can_be_init_without_params()
           self.config_tester.check_config_arguments_init()






     def        SCREAMING_SNAKE_CASE__						(							self		:					int )  ->	List[Any]:




           '''simple docstring'''


           return






     @unittest.skip(reason="""ResNet does not use inputs_embeds""" )
     def        SCREAMING_SNAKE_CASE__						(							self		:					Tuple )  ->	Any:




           '''simple docstring'''


           pass






     @unittest.skip(reason="""ResNet does not support input and output embeddings""" )
     def        SCREAMING_SNAKE_CASE__						(							self		:					Optional[int] )  ->	Optional[int]:




           '''simple docstring'''


           pass






     def        SCREAMING_SNAKE_CASE__						(							self		:					Optional[int] )  ->	List[str]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE,      SCREAMING_SNAKE_CASE	=		self.model_tester.prepare_config_and_inputs_for_common()

           for model_class in self.all_model_classes:
                 SCREAMING_SNAKE_CASE	=		model_class(lowerCamelCase__ )
                 SCREAMING_SNAKE_CASE	=		inspect.signature(model.call )
                 # signature.parameters is an OrderedDict => so arg_names order is deterministic
                 SCREAMING_SNAKE_CASE	=		[*signature.parameters.keys()]

                 SCREAMING_SNAKE_CASE	=		["""pixel_values"""]
                 self.assertListEqual(arg_names[:1]		,lowerCamelCase__ )






     def        SCREAMING_SNAKE_CASE__						(							self		:					Optional[int] )  ->	Union[str, Any]:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE	=		self.model_tester.prepare_config_and_inputs()
           self.model_tester.create_and_check_model(*lowerCamelCase__ )






     def        SCREAMING_SNAKE_CASE__						(							self		:					int )  ->	List[Any]:




           '''simple docstring'''


           def check_hidden_states_output(lowerCamelCase__		:					str		,lowerCamelCase__		:					Dict		,lowerCamelCase__		:					Dict ):
                 SCREAMING_SNAKE_CASE	=		model_class(lowerCamelCase__ )
                 SCREAMING_SNAKE_CASE	=		model(**self._prepare_for_class(lowerCamelCase__		,lowerCamelCase__ ) )

                 SCREAMING_SNAKE_CASE	=		outputs.encoder_hidden_states if config.is_encoder_decoder else outputs.hidden_states

                 SCREAMING_SNAKE_CASE	=		self.model_tester.num_stages
                 self.assertEqual(len(lowerCamelCase__ )		,expected_num_stages + 1 )

                 # ResNet's feature maps are of shape (batch_size, num_channels, height, width)
                 self.assertListEqual(
                     list(hidden_states[0].shape[-2:] )		,[self.model_tester.image_size // 4, self.model_tester.image_size // 4]		,)

           SCREAMING_SNAKE_CASE,      SCREAMING_SNAKE_CASE	=		self.model_tester.prepare_config_and_inputs_for_common()
           SCREAMING_SNAKE_CASE	=		["""basic""", """bottleneck"""]
           for model_class in self.all_model_classes:
                 for layer_type in layers_type:
                       SCREAMING_SNAKE_CASE	=		layer_type
                       SCREAMING_SNAKE_CASE	=		True
                       check_hidden_states_output(lowerCamelCase__		,lowerCamelCase__		,lowerCamelCase__ )

                       # check that output_hidden_states also work using config
                       del inputs_dict["output_hidden_states"]
                       SCREAMING_SNAKE_CASE	=		True

                       check_hidden_states_output(lowerCamelCase__		,lowerCamelCase__		,lowerCamelCase__ )






     def        SCREAMING_SNAKE_CASE__						(							self		:					Any )  ->	Tuple:




           '''simple docstring'''


           SCREAMING_SNAKE_CASE	=		self.model_tester.prepare_config_and_inputs()
           self.model_tester.create_and_check_for_image_classification(*lowerCamelCase__ )






     @slow
     def        SCREAMING_SNAKE_CASE__						(							self		:					Optional[int] )  ->	List[Any]:




           '''simple docstring'''


           for model_name in TF_RESNET_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
                 SCREAMING_SNAKE_CASE	=		TFResNetModel.from_pretrained(lowerCamelCase__ )
                 self.assertIsNotNone(lowerCamelCase__ )



def      __lowercase     (   )				->     Union[str, Any]:


      '''simple docstring'''


      SCREAMING_SNAKE_CASE	=		Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png"""			)
      return image



@require_tf
@require_vision
class 	UpperCamelCase__				(   unittest.TestCase     ):



     '''simple docstring'''

     @cached_property
     def        SCREAMING_SNAKE_CASE__						(							self		:					Tuple )  ->	Dict:




           '''simple docstring'''


           return (
               AutoImageProcessor.from_pretrained(TF_RESNET_PRETRAINED_MODEL_ARCHIVE_LIST[0] )
               if is_vision_available()
               else None
           )






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




           '''simple docstring'''


           SCREAMING_SNAKE_CASE	=		TFResNetForImageClassification.from_pretrained(TF_RESNET_PRETRAINED_MODEL_ARCHIVE_LIST[0] )

           SCREAMING_SNAKE_CASE	=		self.default_image_processor
           SCREAMING_SNAKE_CASE	=		prepare_img()
           SCREAMING_SNAKE_CASE	=		image_processor(images=lowerCamelCase__		,return_tensors="""tf""" )

           # forward pass
           SCREAMING_SNAKE_CASE	=		model(**lowerCamelCase__ )

           # verify the logits
           SCREAMING_SNAKE_CASE	=		tf.TensorShape((1, 1000) )
           self.assertEqual(outputs.logits.shape		,lowerCamelCase__ )

           SCREAMING_SNAKE_CASE	=		tf.constant([-11.1069, -9.7877, -8.3777] )

           self.assertTrue(np.allclose(outputs.logits[0, :3].numpy()		,lowerCamelCase__		,atol=1e-4 ) )


