

'''simple docstring'''


import copy
from typing import Any, Dict, List, Optional, Union

import numpy as np

from ...audio_utils import mel_filter_bank, spectrogram, window_function
from ...feature_extraction_sequence_utils import SequenceFeatureExtractor
from ...feature_extraction_utils import BatchFeature
from ...utils import TensorType, logging


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




class     a			(				UpperCAmelCase__       ):






						"""simple docstring"""




						__UpperCAmelCase			     =    ["""input_features"""]







						def __init__(							self					:      int			,			snake_case_					:      Dict=8_0			,			snake_case_					:      int=1_6_0_0_0			,			snake_case_					:      Optional[Any]=1_6_0			,			snake_case_					:      Union[str, Any]=3_0			,			snake_case_					:      Union[str, Any]=4_0_0			,			snake_case_					:      Optional[int]=0.0			,			snake_case_					:      Union[str, Any]=False			,			**snake_case_					:      Union[str, Any]			,			):



								'''simple docstring'''



								super().__init__(
								    feature_size=__lowerCAmelCase			,			sampling_rate=__lowerCAmelCase			,			padding_value=__lowerCAmelCase			,			return_attention_mask=__lowerCAmelCase			,			**__lowerCAmelCase			,			)
								snake_case__						:       Any       						=  n_fft
								snake_case__						:       Optional[Any]       						=  hop_length
								snake_case__						:       int       						=  chunk_length
								snake_case__						:       int       						=  chunk_length * sampling_rate
								snake_case__						:       str       						=  self.n_samples // hop_length
								snake_case__						:       Optional[int]       						=  sampling_rate
								snake_case__						:       Any       						=  mel_filter_bank(
								    num_frequency_bins=1 + n_fft // 2			,			num_mel_filters=__lowerCAmelCase			,			min_frequency=0.0			,			max_frequency=8_0_0_0.0			,			sampling_rate=__lowerCAmelCase			,			norm='''slaney'''			,			mel_scale='''slaney'''			,			)







						def       __magic_name__							(							self					:      Optional[Any]			,			snake_case_					:      np.array  ):



								'''simple docstring'''



								snake_case__						:       int       						=  spectrogram(
								    __lowerCAmelCase			,			window_function(self.n_fft			,			'''hann'''  )			,			frame_length=self.n_fft			,			hop_length=self.hop_length			,			power=2.0			,			mel_filters=self.mel_filters			,			log_mel='''log10'''			,			)
								snake_case__						:       Tuple       						=  log_spec[:, :-1]
								snake_case__						:       Union[str, Any]       						=  np.maximum(__lowerCAmelCase			,			log_spec.max() - 8.0  )
								snake_case__						:       List[Any]       						=  (log_spec + 4.0) / 4.0
								return log_spec







						@staticmethod
						# Copied from transformers.models.wav2vec2.feature_extraction_wav2vec2.Wav2Vec2FeatureExtractor.zero_mean_unit_var_norm
						def       __magic_name__							(							snake_case_					:      List[np.ndarray]			,			snake_case_					:      List[np.ndarray]			,			snake_case_					:      float = 0.0  ):



								'''simple docstring'''



								if attention_mask is not None:
										snake_case__						:       List[Any]       						=  np.array(__lowerCAmelCase			,			np.intaa  )
										snake_case__						:       Union[str, Any]       						=  []

										for vector, length in zip(__lowerCAmelCase			,			attention_mask.sum(-1  )  ):
												snake_case__						:       str       						=  (vector - vector[:length].mean()) / np.sqrt(vector[:length].var() + 1e-7  )
												if length < normed_slice.shape[0]:
														snake_case__						:       Tuple       						=  padding_value

												normed_input_values.append(__lowerCAmelCase  )
								else:
										snake_case__						:       Dict       						=  [(x - x.mean()) / np.sqrt(x.var() + 1e-7  ) for x in input_values]

								return normed_input_values







						def __call__(							self					:      str			,			snake_case_					:      Union[np.ndarray, List[float], List[np.ndarray], List[List[float]]]			,			snake_case_					:      bool = True			,			snake_case_					:      Optional[int] = None			,			snake_case_					:      Optional[Union[str, TensorType]] = None			,			snake_case_					:      Optional[bool] = None			,			snake_case_					:      Optional[str] = "max_length"			,			snake_case_					:      Optional[int] = None			,			snake_case_					:      Optional[int] = None			,			snake_case_					:      Optional[bool] = None			,			**snake_case_					:      str			,			):



								'''simple docstring'''



								if sampling_rate is not None:
										if sampling_rate != self.sampling_rate:
												raise ValueError(
												    F"""The model corresponding to this feature extractor: {self.__class__.__name__} was trained using a"""
												    F""" sampling rate of {self.sampling_rate}. Please make sure that the provided `raw_speech` input"""
												    F""" was sampled with {self.sampling_rate} and not {sampling_rate}."""  )
								else:
										logger.warning(
										    '''It is strongly recommended to pass the `sampling_rate` argument to this function. '''
										    '''Failing to do so can result in silent errors that might be hard to debug.'''  )

								snake_case__						:       str       						=  isinstance(__lowerCAmelCase			,			np.ndarray  ) and len(raw_speech.shape  ) > 1
								if is_batched_numpy and len(raw_speech.shape  ) > 2:
										raise ValueError(F"""Only mono-channel audio is supported for input to {self}"""  )
								snake_case__						:       Union[str, Any]       						=  is_batched_numpy or (
								    isinstance(__lowerCAmelCase			,			(list, tuple)  ) and (isinstance(raw_speech[0]			,			(np.ndarray, tuple, list)  ))
								)

								if is_batched:
										snake_case__						:       Optional[Any]       						=  [np.asarray([speech]			,			dtype=np.floataa  ).T for speech in raw_speech]
								elif not is_batched and not isinstance(__lowerCAmelCase			,			np.ndarray  ):
										snake_case__						:       Dict       						=  np.asarray(__lowerCAmelCase			,			dtype=np.floataa  )
								elif isinstance(__lowerCAmelCase			,			np.ndarray  ) and raw_speech.dtype is np.dtype(np.floataa  ):
										snake_case__						:       List[str]       						=  raw_speech.astype(np.floataa  )

								# always return batch
								if not is_batched:
										snake_case__						:       Tuple       						=  [np.asarray([raw_speech]  ).T]

								snake_case__						:       str       						=  BatchFeature({'''input_features''': raw_speech}  )

								# convert into correct format for padding

								snake_case__						:       Tuple       						=  self.pad(
								    __lowerCAmelCase			,			padding=__lowerCAmelCase			,			max_length=max_length if max_length else self.n_samples			,			truncation=__lowerCAmelCase			,			pad_to_multiple_of=__lowerCAmelCase			,			return_attention_mask=return_attention_mask or do_normalize			,			)

								# zero-mean and unit-variance normalization
								if do_normalize:
										snake_case__						:       List[Any]       						=  self.zero_mean_unit_var_norm(
										    padded_inputs['''input_features''']			,			attention_mask=padded_inputs['''attention_mask''']			,			padding_value=self.padding_value			,			)
										snake_case__						:       str       						=  np.stack(padded_inputs['''input_features''']			,			axis=0  )

								# make sure list is in array format
								snake_case__						:       str       						=  padded_inputs.get('''input_features'''  ).transpose(2			,			0			,			1  )

								snake_case__						:       Optional[int]       						=  [self._np_extract_fbank_features(__lowerCAmelCase  ) for waveform in input_features[0]]

								if isinstance(input_features[0]			,			__lowerCAmelCase  ):
										snake_case__						:       Union[str, Any]       						=  [np.asarray(__lowerCAmelCase			,			dtype=np.floataa  ) for feature in input_features]
								else:
										snake_case__						:       List[Any]       						=  input_features

								if return_attention_mask:
										# rescale from sample (48000) to feature (3000)
										snake_case__						:       Tuple       						=  padded_inputs['''attention_mask'''][:, :: self.hop_length]

								if return_tensors is not None:
										snake_case__						:       List[str]       						=  padded_inputs.convert_to_tensors(__lowerCAmelCase  )

								return padded_inputs







						def       __magic_name__							(							self					:      str  ):



								'''simple docstring'''



								snake_case__						:       Union[str, Any]       						=  copy.deepcopy(self.__dict__  )
								snake_case__						:       Union[str, Any]       						=  self.__class__.__name__
								if "mel_filters" in output:
										del output["mel_filters"]
								return output






'''simple docstring'''


import inspect
import unittest

from transformers import MobileViTVaConfig
from transformers.testing_utils import require_torch, require_torch_multi_gpu, require_vision, slow, torch_device
from transformers.utils import cached_property, is_torch_available, is_vision_available

from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
					import torch

					from transformers import MobileViTVaForImageClassification, MobileViTVaForSemanticSegmentation, MobileViTVaModel
					from transformers.models.mobilevitva.modeling_mobilevitva import (
					    MOBILEVITV2_PRETRAINED_MODEL_ARCHIVE_LIST,
					    make_divisible,
					)


if is_vision_available():
					from PIL import Image

					from transformers import MobileViTImageProcessor




class     a			(				SCREAMING_SNAKE_CASE       ):






						"""simple docstring"""




						def       __magic_name__							(							self					:      Optional[Any]  ):



								'''simple docstring'''



								snake_case__						:       str       						=  self.config_class(**self.inputs_dict  )
								self.parent.assertTrue(hasattr(snake_case_			,			'''width_multiplier'''  )  )





class     a			:






						"""simple docstring"""




						def __init__(							self					:      List[str]			,			snake_case_					:      Optional[int]			,			snake_case_					:      Dict=1_3			,			snake_case_					:      Any=6_4			,			snake_case_					:      Dict=2			,			snake_case_					:      Optional[int]=3			,			snake_case_					:      str="swish"			,			snake_case_					:      str=3			,			snake_case_					:      Union[str, Any]=3_2			,			snake_case_					:      Optional[Any]=0.1			,			snake_case_					:      Any=0.0_2			,			snake_case_					:      int=True			,			snake_case_					:      Tuple=True			,			snake_case_					:      Dict=1_0			,			snake_case_					:      Optional[int]=None			,			snake_case_					:      str=0.2_5			,			snake_case_					:      List[Any]=0.0			,			snake_case_					:      Optional[Any]=0.0			,			):



								'''simple docstring'''



								snake_case__						:       List[Any]       						=  parent
								snake_case__						:       Dict       						=  batch_size
								snake_case__						:       Dict       						=  image_size
								snake_case__						:       Tuple       						=  patch_size
								snake_case__						:       Tuple       						=  num_channels
								snake_case__						:       Tuple       						=  make_divisible(5_1_2 * width_multiplier			,			divisor=8  )
								snake_case__						:       Optional[int]       						=  hidden_act
								snake_case__						:       int       						=  conv_kernel_size
								snake_case__						:       Optional[int]       						=  output_stride
								snake_case__						:       List[Any]       						=  classifier_dropout_prob
								snake_case__						:       int       						=  use_labels
								snake_case__						:       Optional[Any]       						=  is_training
								snake_case__						:       int       						=  num_labels
								snake_case__						:       str       						=  initializer_range
								snake_case__						:       Dict       						=  scope
								snake_case__						:       Tuple       						=  width_multiplier
								snake_case__						:       Optional[Any]       						=  ffn_dropout
								snake_case__						:       Dict       						=  attn_dropout







						def       __magic_name__							(							self					:      str  ):



								'''simple docstring'''



								snake_case__						:       int       						=  floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]  )

								snake_case__						:       List[str]       						=  None
								snake_case__						:       Union[str, Any]       						=  None
								if self.use_labels:
										snake_case__						:       Tuple       						=  ids_tensor([self.batch_size]			,			self.num_labels  )
										snake_case__						:       Optional[Any]       						=  ids_tensor([self.batch_size, self.image_size, self.image_size]			,			self.num_labels  )

								snake_case__						:       Optional[int]       						=  self.get_config()

								return config, pixel_values, labels, pixel_labels







						def       __magic_name__							(							self					:      List[str]  ):



								'''simple docstring'''



								return MobileViTVaConfig(
								    image_size=self.image_size			,			patch_size=self.patch_size			,			num_channels=self.num_channels			,			hidden_act=self.hidden_act			,			conv_kernel_size=self.conv_kernel_size			,			output_stride=self.output_stride			,			classifier_dropout_prob=self.classifier_dropout_prob			,			initializer_range=self.initializer_range			,			width_multiplier=self.width_multiplier			,			ffn_dropout=self.ffn_dropout_prob			,			attn_dropout=self.attn_dropout_prob			,			)







						def       __magic_name__							(							self					:      Optional[Any]			,			snake_case_					:      Optional[int]			,			snake_case_					:      Optional[int]			,			snake_case_					:      Optional[Any]			,			snake_case_					:      Optional[Any]  ):



								'''simple docstring'''



								snake_case__						:       Optional[Any]       						=  MobileViTVaModel(config=snake_case_  )
								model.to(snake_case_  )
								model.eval()
								snake_case__						:       Dict       						=  model(snake_case_  )
								self.parent.assertEqual(
								    result.last_hidden_state.shape			,			(
								        self.batch_size,
								        self.last_hidden_size,
								        self.image_size // self.output_stride,
								        self.image_size // self.output_stride,
								    )			,			)







						def       __magic_name__							(							self					:      Union[str, Any]			,			snake_case_					:      Optional[int]			,			snake_case_					:      List[Any]			,			snake_case_					:      Tuple			,			snake_case_					:      Optional[Any]  ):



								'''simple docstring'''



								snake_case__						:       Optional[int]       						=  self.num_labels
								snake_case__						:       Optional[Any]       						=  MobileViTVaForImageClassification(snake_case_  )
								model.to(snake_case_  )
								model.eval()
								snake_case__						:       int       						=  model(snake_case_			,			labels=snake_case_  )
								self.parent.assertEqual(result.logits.shape			,			(self.batch_size, self.num_labels)  )







						def       __magic_name__							(							self					:      int			,			snake_case_					:      List[Any]			,			snake_case_					:      Dict			,			snake_case_					:      Any			,			snake_case_					:      List[str]  ):



								'''simple docstring'''



								snake_case__						:       Dict       						=  self.num_labels
								snake_case__						:       Any       						=  MobileViTVaForSemanticSegmentation(snake_case_  )
								model.to(snake_case_  )
								model.eval()
								snake_case__						:       str       						=  model(snake_case_  )
								self.parent.assertEqual(
								    result.logits.shape			,			(
								        self.batch_size,
								        self.num_labels,
								        self.image_size // self.output_stride,
								        self.image_size // self.output_stride,
								    )			,			)
								snake_case__						:       Optional[int]       						=  model(snake_case_			,			labels=snake_case_  )
								self.parent.assertEqual(
								    result.logits.shape			,			(
								        self.batch_size,
								        self.num_labels,
								        self.image_size // self.output_stride,
								        self.image_size // self.output_stride,
								    )			,			)







						def       __magic_name__							(							self					:      str  ):



								'''simple docstring'''



								snake_case__						:       Dict       						=  self.prepare_config_and_inputs()
								snake_case__						,       snake_case__						,       snake_case__						,       snake_case__						:       List[str]       						=  config_and_inputs
								snake_case__						:       List[str]       						=  {'''pixel_values''': pixel_values}
								return config, inputs_dict





@require_torch
class     a			(				SCREAMING_SNAKE_CASE			,			SCREAMING_SNAKE_CASE			,			unittest.TestCase       ):






						"""simple docstring"""




						__UpperCAmelCase			     =    (
						    (MobileViTVaModel, MobileViTVaForImageClassification, MobileViTVaForSemanticSegmentation)
						    if is_torch_available()
						    else ()
						)

						__UpperCAmelCase			     =    (
						    {
						        """feature-extraction""": MobileViTVaModel,
						        """image-classification""": MobileViTVaForImageClassification,
						        """image-segmentation""": MobileViTVaForSemanticSegmentation,
						    }
						    if is_torch_available()
						    else {}
						)

						__UpperCAmelCase			     =    False
						__UpperCAmelCase			     =    False
						__UpperCAmelCase			     =    False
						__UpperCAmelCase			     =    False







						def       __magic_name__							(							self					:      int  ):



								'''simple docstring'''



								snake_case__						:       str       						=  MobileViTVaModelTester(self  )
								snake_case__						:       Union[str, Any]       						=  MobileViTVaConfigTester(self			,			config_class=snake_case_			,			has_text_modality=snake_case_  )







						def       __magic_name__							(							self					:      List[str]  ):



								'''simple docstring'''



								self.config_tester.run_common_tests()







						@unittest.skip(reason='''MobileViTV2 does not use inputs_embeds'''  )
						def       __magic_name__							(							self					:      Optional[int]  ):



								'''simple docstring'''



								pass







						@unittest.skip(reason='''MobileViTV2 does not support input and output embeddings'''  )
						def       __magic_name__							(							self					:      Optional[int]  ):



								'''simple docstring'''



								pass







						@unittest.skip(reason='''MobileViTV2 does not output attentions'''  )
						def       __magic_name__							(							self					:      int  ):



								'''simple docstring'''



								pass







						@require_torch_multi_gpu
						@unittest.skip(reason='''Got `CUDA error: misaligned address` for tests after this one being run.'''  )
						def       __magic_name__							(							self					:      int  ):



								'''simple docstring'''



								pass







						@unittest.skip('''Will be fixed soon by reducing the size of the model used for common tests.'''  )
						def       __magic_name__							(							self					:      Optional[Any]  ):



								'''simple docstring'''



								pass







						def       __magic_name__							(							self					:      Optional[Any]  ):



								'''simple docstring'''



								snake_case__						,       snake_case__						:       Union[str, Any]       						=  self.model_tester.prepare_config_and_inputs_for_common()

								for model_class in self.all_model_classes:
										snake_case__						:       Optional[int]       						=  model_class(snake_case_  )
										snake_case__						:       Tuple       						=  inspect.signature(model.forward  )
										# signature.parameters is an OrderedDict => so arg_names order is deterministic
										snake_case__						:       Any       						=  [*signature.parameters.keys()]

										snake_case__						:       Optional[int]       						=  ['''pixel_values''']
										self.assertListEqual(arg_names[:1]			,			snake_case_  )







						def       __magic_name__							(							self					:      List[str]  ):



								'''simple docstring'''



								snake_case__						:       Union[str, Any]       						=  self.model_tester.prepare_config_and_inputs()
								self.model_tester.create_and_check_model(*snake_case_  )







						def       __magic_name__							(							self					:      List[str]  ):



								'''simple docstring'''



								def check_hidden_states_output(snake_case_					:      Tuple			,			snake_case_					:      Optional[Any]			,			snake_case_					:      Tuple  ):
										snake_case__						:       Optional[Any]       						=  model_class(snake_case_  )
										model.to(snake_case_  )
										model.eval()

										with torch.no_grad():
												snake_case__						:       Tuple       						=  model(**self._prepare_for_class(snake_case_			,			snake_case_  )  )

										snake_case__						:       Union[str, Any]       						=  outputs.hidden_states

										snake_case__						:       Any       						=  5
										self.assertEqual(len(snake_case_  )			,			snake_case_  )

										# MobileViTV2's feature maps are of shape (batch_size, num_channels, height, width)
										# with the width and height being successively divided by 2.
										snake_case__						:       Dict       						=  2
										for i in range(len(snake_case_  )  ):
												self.assertListEqual(
												    list(hidden_states[i].shape[-2:]  )			,			[self.model_tester.image_size // divisor, self.model_tester.image_size // divisor]			,			)
												divisor *= 2

										self.assertEqual(self.model_tester.output_stride			,			divisor // 2  )

								snake_case__						,       snake_case__						:       Union[str, Any]       						=  self.model_tester.prepare_config_and_inputs_for_common()

								for model_class in self.all_model_classes:
										snake_case__						:       List[str]       						=  True
										check_hidden_states_output(snake_case_			,			snake_case_			,			snake_case_  )

										# check that output_hidden_states also work using config
										del inputs_dict["output_hidden_states"]
										snake_case__						:       int       						=  True

										check_hidden_states_output(snake_case_			,			snake_case_			,			snake_case_  )







						def       __magic_name__							(							self					:      int  ):



								'''simple docstring'''



								snake_case__						:       Union[str, Any]       						=  self.model_tester.prepare_config_and_inputs()
								self.model_tester.create_and_check_for_image_classification(*snake_case_  )







						def       __magic_name__							(							self					:      Any  ):



								'''simple docstring'''



								snake_case__						:       Dict       						=  self.model_tester.prepare_config_and_inputs()
								self.model_tester.create_and_check_for_semantic_segmentation(*snake_case_  )







						@slow
						def       __magic_name__							(							self					:      List[Any]  ):



								'''simple docstring'''



								for model_name in MOBILEVITV2_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
										snake_case__						:       Any       						=  MobileViTVaModel.from_pretrained(snake_case_  )
										self.assertIsNotNone(snake_case_  )





def 	_a       (				):

		"""simple docstring"""

		snake_case__						:       Optional[Any]       						=  Image.open('''./tests/fixtures/tests_samples/COCO/000000039769.png'''     )
		return image





@require_torch
@require_vision
class     a			(				unittest.TestCase       ):






						"""simple docstring"""




						@cached_property
						def       __magic_name__							(							self					:      Optional[int]  ):



								'''simple docstring'''



								return (
								    MobileViTImageProcessor.from_pretrained('''apple/mobilevitv2-1.0-imagenet1k-256'''  )
								    if is_vision_available()
								    else None
								)







						@slow
						def       __magic_name__							(							self					:      Tuple  ):



								'''simple docstring'''



								snake_case__						:       Tuple       						=  MobileViTVaForImageClassification.from_pretrained('''apple/mobilevitv2-1.0-imagenet1k-256'''  ).to(
								    snake_case_  )

								snake_case__						:       Any       						=  self.default_image_processor
								snake_case__						:       Tuple       						=  prepare_img()
								snake_case__						:       str       						=  image_processor(images=snake_case_			,			return_tensors='''pt'''  ).to(snake_case_  )

								# forward pass
								with torch.no_grad():
										snake_case__						:       Any       						=  model(**snake_case_  )

								# verify the logits
								snake_case__						:       Dict       						=  torch.Size((1, 1_0_0_0)  )
								self.assertEqual(outputs.logits.shape			,			snake_case_  )

								snake_case__						:       Tuple       						=  torch.tensor([-1.6_336e00, -7.3_204e-02, -5.1_883e-01]  ).to(snake_case_  )

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







						@slow
						def       __magic_name__							(							self					:      Tuple  ):



								'''simple docstring'''



								snake_case__						:       List[Any]       						=  MobileViTVaForSemanticSegmentation.from_pretrained('''shehan97/mobilevitv2-1.0-voc-deeplabv3'''  )
								snake_case__						:       Any       						=  model.to(snake_case_  )

								snake_case__						:       Tuple       						=  MobileViTImageProcessor.from_pretrained('''shehan97/mobilevitv2-1.0-voc-deeplabv3'''  )

								snake_case__						:       str       						=  prepare_img()
								snake_case__						:       Union[str, Any]       						=  image_processor(images=snake_case_			,			return_tensors='''pt'''  ).to(snake_case_  )

								# forward pass
								with torch.no_grad():
										snake_case__						:       Union[str, Any]       						=  model(**snake_case_  )
								snake_case__						:       Tuple       						=  outputs.logits

								# verify the logits
								snake_case__						:       Optional[Any]       						=  torch.Size((1, 2_1, 3_2, 3_2)  )
								self.assertEqual(logits.shape			,			snake_case_  )

								snake_case__						:       List[Any]       						=  torch.tensor(
								    [
								        [[7.0_8_6_3, 7.1_5_2_5, 6.8_2_0_1], [6.6_9_3_1, 6.8_7_7_0, 6.8_9_3_3], [6.2_9_7_8, 7.0_3_6_6, 6.9_6_3_6]],
								        [[-3.7_1_3_4, -3.6_7_1_2, -3.6_6_7_5], [-3.5_8_2_5, -3.3_5_4_9, -3.4_7_7_7], [-3.3_4_3_5, -3.3_9_7_9, -3.2_8_5_7]],
								        [[-2.9_3_2_9, -2.8_0_0_3, -2.7_3_6_9], [-3.0_5_6_4, -2.4_7_8_0, -2.0_2_0_7], [-2.6_8_8_9, -1.9_2_9_8, -1.7_6_4_0]],
								    ]			,			device=snake_case_			,			)

								self.assertTrue(torch.allclose(logits[0, :3, :3, :3]			,			snake_case_			,			atol=1e-4  )  )







						@slow
						def       __magic_name__							(							self					:      List[Any]  ):



								'''simple docstring'''



								snake_case__						:       Optional[int]       						=  MobileViTVaForSemanticSegmentation.from_pretrained('''shehan97/mobilevitv2-1.0-voc-deeplabv3'''  )
								snake_case__						:       List[str]       						=  model.to(snake_case_  )

								snake_case__						:       Optional[int]       						=  MobileViTImageProcessor.from_pretrained('''shehan97/mobilevitv2-1.0-voc-deeplabv3'''  )

								snake_case__						:       str       						=  prepare_img()
								snake_case__						:       str       						=  image_processor(images=snake_case_			,			return_tensors='''pt'''  ).to(snake_case_  )

								# forward pass
								with torch.no_grad():
										snake_case__						:       Any       						=  model(**snake_case_  )

								snake_case__						:       str       						=  outputs.logits.detach().cpu()

								snake_case__						:       int       						=  image_processor.post_process_semantic_segmentation(outputs=snake_case_			,			target_sizes=[(5_0, 6_0)]  )
								snake_case__						:       int       						=  torch.Size((5_0, 6_0)  )
								self.assertEqual(segmentation[0].shape			,			snake_case_  )

								snake_case__						:       str       						=  image_processor.post_process_semantic_segmentation(outputs=snake_case_  )
								snake_case__						:       Any       						=  torch.Size((3_2, 3_2)  )
								self.assertEqual(segmentation[0].shape			,			snake_case_  )



