


"""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  (   lowerCAmelCase__		):
							'''simple docstring'''







							__UpperCAmelCase						:    Dict				      ="""dandelin/vilt-b32-finetuned-vqa"""
							__UpperCAmelCase						:    str				      =(
							    """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."""
							)
							__UpperCAmelCase						:    List[str]				      ="""image_qa"""
							__UpperCAmelCase						:    Any				      =AutoProcessor
							__UpperCAmelCase						:    int				      =AutoModelForVisualQuestionAnswering

							__UpperCAmelCase						:    str				      =["""image""", """text"""]
							__UpperCAmelCase						:    Dict				      =["""text"""]

							def __init__(     self    ,   *__a    ,   **__a	):
										requires_backends(self    ,   ["vision"]	)
										super().__init__(*__a    ,   **__a	)

							def 			snake_case				(     self    ,   __a    ,   __a	):
										return self.pre_processor(__a    ,   __a    ,   return_tensors="pt"	)

							def 			snake_case				(     self    ,   __a	):
										with torch.no_grad():
													return self.model(**__a	).logits



							def 			snake_case				(     self    ,   __a	):
										__lowerCAmelCase				    =			outputs.argmax(-1	).item()
										return self.model.config.idalabel[idx]








"""simple docstring"""


A     :   int			    =			{
    "Pillow": "Pillow",
    "accelerate": "accelerate>=0.11.0",
    "compel": "compel==0.1.8",
    "black": "black~=23.1",
    "datasets": "datasets",
    "filelock": "filelock",
    "flax": "flax>=0.4.1",
    "hf-doc-builder": "hf-doc-builder>=0.3.0",
    "huggingface-hub": "huggingface-hub>=0.13.2",
    "requests-mock": "requests-mock==1.10.0",
    "importlib_metadata": "importlib_metadata",
    "invisible-watermark": "invisible-watermark",
    "isort": "isort>=5.5.4",
    "jax": "jax>=0.2.8,!=0.3.2",
    "jaxlib": "jaxlib>=0.1.65",
    "Jinja2": "Jinja2",
    "k-diffusion": "k-diffusion>=0.0.12",
    "torchsde": "torchsde",
    "note_seq": "note_seq",
    "librosa": "librosa",
    "numpy": "numpy",
    "omegaconf": "omegaconf",
    "parameterized": "parameterized",
    "protobuf": "protobuf>=3.20.3,<4",
    "pytest": "pytest",
    "pytest-timeout": "pytest-timeout",
    "pytest-xdist": "pytest-xdist",
    "ruff": "ruff>=0.0.241",
    "safetensors": "safetensors",
    "sentencepiece": "sentencepiece>=0.1.91,!=0.1.92",
    "scipy": "scipy",
    "onnx": "onnx",
    "regex": "regex!=2019.12.17",
    "requests": "requests",
    "tensorboard": "tensorboard",
    "torch": "torch>=1.4",
    "torchvision": "torchvision",
    "transformers": "transformers>=4.25.1",
    "urllib3": "urllib3<=2.0.0",
}




