a
    d                     @   s^   d dl Z d dlmZ d dlZd dlZd dlmZ d dlZd dl	m
Z
 dd ZG dd dZdS )    N)Image)compute_fidc                 C   sX   t | tjd}ttjdtj	j
dtdg}t||ddtjS )NZRGB   )interpolationr      )r   Z	fromarrayZastypenpZuint8convert
transformsZComposeZResizeZInterpolationModeZBICUBICZ
CenterCropZasarrayclip)Zimg_npxT r   _/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/cleanfid/clip_features.pyimg_preprocess_clip   s    r   c                   @   s   e Zd ZdddZdd ZdS )	CLIP_fxViT-B/32cudac                 C   s@   t j||d\| _}| j  d| dddd | _d S )N)deviceZclip_-_/)r
   loadmodelevallowerreplacename)selfr   r   r   r   r   r   __init__   s    
zCLIP_fx.__init__c           	      C   s   |d }t dd}||}t|s*J t|jdkrB|d}|j\}}}}t  | j	|}W d    n1 sz0    Y  |S )Ng     o@)g3<4'?gwgM?gy{ ?)gB91?gwt.?g	U?   r   )
r	   Z	NormalizetorchZ	is_tensorlenshapeZ	unsqueezeZno_gradr   Zencode_image)	r   Zimg_tZimg_xZT_normBCHWzr   r   r   __call__   s    

*zCLIP_fx.__call__N)r   r   )__name__
__module____qualname__r   r(   r   r   r   r   r      s   
r   )pdbZPILr   numpyr   r    Ztorchvision.transformsr	   r
   Zcleanfid.fidr   r   r   r   r   r   r   <module>   s   	