

"""simple docstring"""





from ...configuration_utils import PretrainedConfig
from ...utils import logging


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

__UpperCamelCase    : Any				 =						{
    '''naver-clova-ix/donut-base''': '''https://huggingface.co/naver-clova-ix/donut-base/resolve/main/config.json''',
    # See all Donut models at https://huggingface.co/models?filter=donut-swin
}







class 							SCREAMING_SNAKE_CASE   (						a_			):






					"""simple docstring"""



					lowercase__												=			"donut-swin"

					lowercase__												=			{
					    "num_attention_heads": "num_heads",
					    "num_hidden_layers": "num_layers",
					}







					def __init__(			self     :							Tuple  ,lowercase_     :							Optional[Any]=2_2_4  ,lowercase_     :							str=4  ,lowercase_     :							Optional[int]=3  ,lowercase_     :							str=9_6  ,lowercase_     :							int=[2, 2, 6, 2]  ,lowercase_     :							str=[3, 6, 1_2, 2_4]  ,lowercase_     :							List[Any]=7  ,lowercase_     :							Optional[Any]=4.0  ,lowercase_     :							List[Any]=True  ,lowercase_     :							Any=0.0  ,lowercase_     :							str=0.0  ,lowercase_     :							List[str]=0.1  ,lowercase_     :							Optional[Any]="gelu"  ,lowercase_     :							List[Any]=False  ,lowercase_     :							Union[str, Any]=0.02  ,lowercase_     :							int=1E-5  ,**lowercase_     :							List[Any]  ,):
						super().__init__(**lowercase_						)

						lowerCAmelCase__      :		Dict    							=      image_size
						lowerCAmelCase__      :		Dict    							=      patch_size
						lowerCAmelCase__      :		str    							=      num_channels
						lowerCAmelCase__      :		Tuple    							=      embed_dim
						lowerCAmelCase__      :		str    							=      depths
						lowerCAmelCase__      :		str    							=      len(lowercase_						)
						lowerCAmelCase__      :		str    							=      num_heads
						lowerCAmelCase__      :		Union[str, Any]    							=      window_size
						lowerCAmelCase__      :		Any    							=      mlp_ratio
						lowerCAmelCase__      :		Union[str, Any]    							=      qkv_bias
						lowerCAmelCase__      :		List[Any]    							=      hidden_dropout_prob
						lowerCAmelCase__      :		Dict    							=      attention_probs_dropout_prob
						lowerCAmelCase__      :		List[Any]    							=      drop_path_rate
						lowerCAmelCase__      :		str    							=      hidden_act
						lowerCAmelCase__      :		Any    							=      use_absolute_embeddings
						lowerCAmelCase__      :		List[Any]    							=      layer_norm_eps
						lowerCAmelCase__      :		Dict    							=      initializer_range
						# we set the hidden_size attribute in order to make Swin work with VisionEncoderDecoderModel
						# this indicates the channel dimension after the last stage of the model
						lowerCAmelCase__      :		Any    							=      int(embed_dim * 2 ** (len(lowercase_						) - 1)						)







"""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

from ..models.auto import AutoModelForVisionaSeq
from ..utils import requires_backends
from .base import PipelineTool


if TYPE_CHECKING:
							from PIL import Image







class 							SCREAMING_SNAKE_CASE   (						a_			):






					"""simple docstring"""



					lowercase__												=			"Salesforce/blip-image-captioning-base"
					lowercase__												=			(
					    "This is a tool that generates a description of an image. It takes an input named `image` which should be the "
					    "image to caption, and returns a text that contains the description in English."
					)
					lowercase__												=			"image_captioner"
					lowercase__												=			AutoModelForVisionaSeq

					lowercase__												=			["image"]
					lowercase__												=			["text"]







					def __init__(			self     :							int  ,*lowercase_     :							int  ,**lowercase_     :							List[str]						):
						requires_backends(self  ,['''vision''']						)
						super().__init__(*lowercase_  ,**lowercase_						)







					def 			__lowerCAmelCase					(			self     :							List[str]  ,lowercase_     :							"Image"						):
						return self.pre_processor(images=lowercase_  ,return_tensors='''pt'''						)







					def 			__lowerCAmelCase					(			self     :							List[Any]  ,lowercase_     :							Any						):
						return self.model.generate(**lowercase_						)







					def 			__lowerCAmelCase					(			self     :							Dict  ,lowercase_     :							Union[str, Any]						):
						return self.pre_processor.batch_decode(lowercase_  ,skip_special_tokens=lowercase_						)[0].strip()




