
"""simple docstring"""





from typing import List, Union

from ..utils import (
    add_end_docstrings,
    is_tf_available,
    is_torch_available,
    is_vision_available,
    logging,
    requires_backends,
)
from .base import PIPELINE_INIT_ARGS, Pipeline


if is_vision_available():
				from PIL import Image

				from ..image_utils import load_image

if is_tf_available():
				import tensorflow as tf

				from ..models.auto.modeling_tf_auto import TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING
				from ..tf_utils import stable_softmax

if is_torch_available():
				from ..models.auto.modeling_auto import MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING

_a														=		logging.get_logger(__name__)






@add_end_docstrings(lowerCamelCase     )
class    _UpperCAmelCase(   lowerCamelCase     ):



		def __init__( self    ,		*__a    ,		**__a)	->	Tuple:






							'''simple docstring'''
							super().__init__(*__a    ,		**__a)
							requires_backends(self    ,		'''vision''')
							self.check_model_type(
							    TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING
							    if self.framework == '''tf'''
							    else MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING)



		def 						UpperCAmelCase							( self    ,		__a=None)	->	Optional[Any]:






							'''simple docstring'''
							_UpperCamelCase										=  {}
							if top_k is not None:
												_UpperCamelCase										=  top_k
							return {}, {}, postprocess_params



		def __call__( self    ,		__a    ,		**__a)	->	Tuple:






							'''simple docstring'''
							return super().__call__(__a    ,		**__a)



		def 						UpperCAmelCase							( self    ,		__a)	->	int:






							'''simple docstring'''
							_UpperCamelCase										=  load_image(__a)
							_UpperCamelCase										=  self.image_processor(images=__a    ,		return_tensors=self.framework)
							return model_inputs



		def 						UpperCAmelCase							( self    ,		__a)	->	Tuple:






							'''simple docstring'''
							_UpperCamelCase										=  self.model(**__a)
							return model_outputs




		def 						UpperCAmelCase							( self    ,		__a    ,		__a=5)	->	Union[str, Any]:






							'''simple docstring'''
							if top_k > self.model.config.num_labels:
												_UpperCamelCase										=  self.model.config.num_labels

							if self.framework == "pt":
												_UpperCamelCase										=  model_outputs.logits.softmax(-1)[0]
												_UpperCamelCase			,  _UpperCamelCase										=  probs.topk(__a)
							elif self.framework == "tf":
												_UpperCamelCase										=  stable_softmax(model_outputs.logits    ,		axis=-1)[0]
												_UpperCamelCase										=  tf.math.top_k(__a    ,		k=__a)
												_UpperCamelCase			,  _UpperCamelCase										=  topk.values.numpy(), topk.indices.numpy()
							else:
												raise ValueError(F'''Unsupported framework: {self.framework}''')

							_UpperCamelCase										=  scores.tolist()
							_UpperCamelCase										=  ids.tolist()
							return [{"score": score, "label": self.model.config.idalabel[_id]} for score, _id in zip(__a    ,		__a)]








"""simple docstring"""





from ...utils import is_torch_available, is_transformers_available


if is_transformers_available() and is_torch_available():
				from .pipeline_vq_diffusion import LearnedClassifierFreeSamplingEmbeddings, VQDiffusionPipeline






