o
�J�h k � @ st d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm Z m
Z
mZmZm
Z
mZ d dlZd dlZd dlmZmZmZmZ g d�Ze��
dGdeejeej f ded
ededee
eef dededejfdd��Ze�� dHdeejeej f deeeje
f dee ddfdd��Z e�� dIdejdejdeee deeeeee
eeef f ee
eeef f dee ded ee d!ee dejfd"d#��Z!e�� $ dJdejd%ejd&edeeeeee
eeef f ee
eeef f dejf
d'd(��Z"e�� ) dKdejd*ejd+eee
eef deeee
eeef f d,eded-eej dejfd.d/��Z#e�� d0ejdejfd1d2��Z$e�� d3ejdejfd4d5��Z%dejfd6d7�Z&d8efd9d:�Z'ej(d;�dedee
eeef eeee
eeef f f d8ed<ej)dee
eeef fd=d>�Z*d?e ddfd@dA�Z+dBe dCede
e dDf fdEdF�Z,dS )L� N)�repeat)�FunctionType)�Any�BinaryIO�List�Optional�Tuple�Union)�Image�
ImageColor� ImageDraw� ImageFont)� make_grid�
save_image�draw_bounding_boxes�draw_segmentation_masks�draw_keypoints�
flow_to_image� � F� �tensor�nrow�padding� normalize�value_range�
scale_each� pad_value�returnc s� t j�� st j�� stt� t �| �s5t| t�r,| D ]}t �|�s*t dt
|�� ���qn t dt
| �� ���t| t�rAt j| dd�} | �� dkrL| �
d�} | �� dkrg| �d�dkrbt �| | | fd�} | �
d�} | �� dkr}| �d�dkr}t �| | | fd�} |d u r�| �� } |d
ur�t|t�s�t d��dd
� � � fdd�}|d u r�| D ]}|||� q�n|| |� t| t j�s�t d��| �d�dkr�| �d�S | �d�} t|| �}
tt�t| �|
��}t| �d�| �t| �d�| �}}
| �d�}| �||| | |
|
| f|�}d}t|�D ]3}t|
�D ]+}|| k�r n#|�d|| | || ��d||
| |
| ��| | � |d }�q�q
|S )a`
Make a grid of images.
Args:
tensor (Tensor or list): 4D mini-batch Tensor of shape (B x C x H x W)
or a list of images all of the same size.
nrow (int, optional): Number of images displayed in each row of the grid.
The final grid size is ``(B / nrow, nrow)``. Default: ``8``.
padding (int, optional): amount of padding. Default: ``2``.
normalize (bool, optional): If True, shift the image to the range (0, 1),
by the min and max values specified by ``value_range``. Default: ``False``.
value_range (tuple, optional): tuple (min, max) where min and max are numbers,
then these numbers are used to normalize the image. By default, min and max
are computed from the tensor.
scale_each (bool, optional): If ``True``, scale each image in the batch of
images separately rather than the (min, max) over all images. Default: ``False``.
pad_value (float, optional): Value for the padded pixels. Default: ``0``.
Returns:
grid (Tensor): the tensor containing grid of images.
z:tensor or list of tensors expected, got a list containing z(tensor or list of tensors expected, got r ��dimr � � � TNzNvalue_range has to be a tuple (min, max) if specified. min and max are numbersc S s, | j ||d� | �|��t|| d�� d S )N)�min�maxg�h㈵��>)�clamp_�sub_�div_r% )�img�low�high� r, �OC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\torchvision\utils.py�norm_ipT s zmake_grid.<locals>.norm_ipc s@ |d ur� | |d |d � d S � | t | �� �t | �� �� d S )Nr r"