





'''simple docstring'''






# Copyright 2023 The HuggingFace Inc. team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import TYPE_CHECKING

import torch

from ..models.auto import AutoModelForVisualQuestionAnswering, AutoProcessor
from ..utils import requires_backends
from .base import PipelineTool


if TYPE_CHECKING:
      from PIL import Image







class 		UpperCAmelCase   (				lowercase_):


  """simple docstring"""







  lowerCAmelCase_					=				"""dandelin/vilt-b32-finetuned-vqa"""
  lowerCAmelCase_					=				(
      """This is a tool that answers a question about an image. It takes an input named `image` which should be the """
      """image containing the information, as well as a `question` which should be the question in English. It """
      """returns a text that is the answer to the question."""
  )
  lowerCAmelCase_					=				"""image_qa"""
  lowerCAmelCase_					=				AutoProcessor
  lowerCAmelCase_					=				AutoModelForVisualQuestionAnswering

  lowerCAmelCase_					=				["""image""", """text"""]
  lowerCAmelCase_					=				["""text"""]


  def __init__(				self    :					Tuple							,	*UpperCamelCase__    :					Union[str, Any]							,	**UpperCamelCase__    :					int  )     ->						Optional[int]:
    requires_backends(self							,	['''vision''']  )
    super().__init__(*UpperCamelCase__							,	**UpperCamelCase__  )


  def   UpperCamelCase__      (				self    :					int							,	UpperCamelCase__    :					"Image"							,	UpperCamelCase__    :					str  )     ->						Optional[Any]:
    return self.pre_processor(UpperCamelCase__							,	UpperCamelCase__							,	return_tensors='''pt'''  )


  def   UpperCamelCase__      (				self    :					List[str]							,	UpperCamelCase__    :					Any  )     ->						str:
    with torch.no_grad():
      return self.model(**UpperCamelCase__  ).logits




  def   UpperCamelCase__      (				self    :					Optional[int]							,	UpperCamelCase__    :					Dict  )     ->						int:
    _UpperCamelCase       			=outputs.argmax(-1  ).item()
    return self.model.config.idalabel[idx]













'''simple docstring'''






# Copyright 2023 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


__lowerCamelCase						: Optional[int]		=   {
    'configuration_xmod': [
        'XMOD_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'XmodConfig',
        'XmodOnnxConfig',
    ],
}

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      __lowerCamelCase						: int		=   [
          'XMOD_PRETRAINED_MODEL_ARCHIVE_LIST',
          'XmodForCausalLM',
          'XmodForMaskedLM',
          'XmodForMultipleChoice',
          'XmodForQuestionAnswering',
          'XmodForSequenceClassification',
          'XmodForTokenClassification',
          'XmodModel',
          'XmodPreTrainedModel',
      ]

if TYPE_CHECKING:
      from .configuration_xmod import XMOD_PRETRAINED_CONFIG_ARCHIVE_MAP, XmodConfig, XmodOnnxConfig

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_xmod import (
                XMOD_PRETRAINED_MODEL_ARCHIVE_LIST,
                XmodForCausalLM,
                XmodForMaskedLM,
                XmodForMultipleChoice,
                XmodForQuestionAnswering,
                XmodForSequenceClassification,
                XmodForTokenClassification,
                XmodModel,
                XmodPreTrainedModel,
            )

else:
      import sys

      __lowerCamelCase						: Dict		=   _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)






