
    ^j                         d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZmZ ddlmZmZmZmZmZmZ dd	lmZmZ dd
lmZmZ  G d ded      Ze G d de             ZdgZy)z"Image processor class for TextNet.    N)
functional   )TorchvisionBackend)BatchFeature)get_resize_output_image_sizegroup_images_by_shapereorder_images)IMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STDChannelDimension
ImageInputPILImageResamplingSizeDict)ImagesKwargsUnpack)
TensorTypeauto_docstringc                       e Zd ZU dZeed<   y)TextNetImageProcessorKwargsz
    size_divisor (`int`, *optional*, defaults to `self.size_divisor`):
        Ensures height and width are rounded to a multiple of this value after resizing.
    size_divisorN)__name__
__module____qualname____doc__int__annotations__     /var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/textnet/image_processing_textnet.pyr   r   "   s    
 r   r   F)totalc            #       d    e Zd ZdZeZej                  Ze	Z
eZddiZdZdddZdZdZdZdZdZdZd	ee   f fd
Zeded	ee   def fd       Z	 d#dddedddeddf
 fdZ	 d#ded   de deddde dede de!de de!ee!   z  dz  de!ee!   z  dz  de dz  dedz  d e dz  d!e"e#z  dz  dedef"d"Z$ xZ%S )$TextNetImageProcessorz9Torchvision backend for TextNet with size_divisor resize.shortest_edgei  F   heightwidthT    kwargsc                 $    t        |   di | y )Nr   )super__init__)selfr)   	__class__s     r   r,   zTextNetImageProcessor.__init__>   s    "6"r   imagesreturnc                 $    t        |   |fi |S )N)r+   
preprocess)r-   r/   r)   r.   s      r   r2   z TextNetImageProcessor.preprocessA   s    w!&3F33r   imageztorch.Tensorsizeresamplez7PILImageResampling | tvF.InterpolationMode | int | Noner   c                 4   |j                   st        d|j                                t        ||j                   dt        j
                        }|\  }}||z  dk7  r||||z  z
  z  }||z  dk7  r||||z  z
  z  }t        	|   |t        ||      fd|i|S )zFResize to shortest_edge then round up to be divisible by size_divisor.z+Size must contain 'shortest_edge' key. Got F)r4   default_to_squareinput_data_formatr   r%   r5   )	r#   
ValueErrorkeysr   r   FIRSTr+   resizer   )
r-   r3   r4   r5   r   r)   new_sizer&   r'   r.   s
            r   r<   zTextNetImageProcessor.resizeE   s     !!J499;-XYY/###.44	
 !L A%lf|&;<<F<1$\U\%9::Ew~F%0
 
 	
 	
r   	do_resizedo_center_crop	crop_size
do_rescalerescale_factordo_normalize
image_meanN	image_stddo_padpad_sizedisable_groupingreturn_tensorsc           	         t        ||      \  }}i }|j                         D ]!  \  }}|r| j                  ||||      }|||<   # t        ||      }t        ||      \  }}i }|j                         D ]4  \  }}|r| j	                  ||      }| j                  ||||	|
|      }|||<   6 t        ||      }t        d|i|      S )z!Custom preprocessing for TextNet.)rH   )r   pixel_values)datatensor_type)r   itemsr<   r	   center_croprescale_and_normalizer   )r-   r/   r>   r4   r5   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   r   r)   grouped_imagesgrouped_images_indexresized_images_groupedshapestacked_imagesresized_imagesprocessed_images_groupedprocessed_imagess                             r   _preprocessz!TextNetImageProcessor._preprocessc   s   * 0EV^n/o,,!#%3%9%9%; 	;!E>!%^T8Zf!g,:"5)	; ((>@TU/D^fv/w,,#% %3%9%9%; 	=!E>!%!1!1.)!L!77
NL*V_N /=$U+	= **BDXY.2B!CQ_``r   )r(   )&r   r   r   r   r   valid_kwargsr   BILINEARr5   r
   rD   r   rE   r4   r7   r@   r>   r?   rA   rC   do_convert_rgbr   r   r,   r   r   r   r2   r   r   r<   listboolfloatstrr   rY   __classcell__)r.   s   @r   r"   r"   +   s   C.L!**H&J$IS!D-IINJLNL#(C!D # 4 4v>Y7Z 4_k 4 4 

 
 L	

 
 

^ #'a^$'a 'a 	'a
 L'a 'a 'a 'a 'a 'a DK'$.'a 4;&-'a t'a T/'a +'a  j(4/!'a" #'a& 
''ar   r"   )r   torchtorchvision.transforms.v2r   tvFimage_processing_backendsr   image_processing_utilsr   image_transformsr   r   r	   image_utilsr
   r   r   r   r   r   processing_utilsr   r   utilsr   r   r   r"   __all__r   r   r   <module>rl      si    )  7 ; 2 c c  5 /,e  ^a. ^a ^aB #
#r   