§
    �M§jé  ã                   óÐ   — d dl Z d dlZd dlZd dlmZm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mZ ddlmZ  G d	„ d
¦  «        Z G d„ d¦  «        Z G d„ dej        ¦  «        ZdS )é    N)Ú	rearrangeÚrepeat)ÚImage)Ú	load_file)Únn)ÚAutoModelForDepthEstimationÚAutoProcessorÚSiglipImageProcessorÚSiglipVisionModelé   )Úprint_load_warningc                   ó<   — e Zd ZdZd„ Zdej        dej        fd„ZdS )ÚDepthImageEncoderz!LiheYoung/depth-anything-large-hfc                 ó²   — || _         t          j        | j        ¦  «                             |¦  «        | _        t          j        | j        ¦  «        | _        d S ©N)Údevicer   Úfrom_pretrainedÚdepth_model_nameÚtoÚdepth_modelr	   Ú	processor)Úselfr   s     úKC:\Users\johnn\OneDrive\Documents\AI\models\flux\modules\image_embedders.pyÚ__init__zDepthImageEncoder.__init__   sG   € ØˆŒÝ6ÔFÀtÔG\Ñ]Ô]×`Ò`ÐagÑhÔhˆÔÝ&Ô6°tÔ7LÑMÔMˆŒˆˆó    ÚimgÚreturnc                 ó¢  — |j         dd …         }t          j        |dd¦  «        }|dz   dz                       ¦   «         }|                      |d¬¦  «        d         }|                      |                     | j        ¦  «        ¦  «        j        }t          |d¦  «        }t          j
        j                             ||d	d
¬¦  «        }|dz  dz
  }|S )Néþÿÿÿç      ð¿ç      ð?ç     à_@Úpt)Úreturn_tensorsÚpixel_valueszb h w -> b 3 h wÚbicubicT)ÚmodeÚ	antialias)ÚshapeÚtorchÚclampÚbyter   r   r   r   Úpredicted_depthr   r   Ú
functionalÚinterpolate)r   r   ÚhwÚimg_byteÚdepths        r   Ú__call__zDepthImageEncoder.__call__   sÁ   € ØŒY�r�s�sŒ^ˆåŒk˜#˜t SÑ)Ô)ˆØ˜3‘Y %Ñ'×-Ò-Ñ/Ô/ˆà�nŠn˜X°dˆnÑ;Ô;¸NÔKˆØ× Ò  §¢¨¬Ñ!4Ô!4Ñ5Ô5ÔEˆÝ�uÐ0Ñ1Ô1ˆÝ”Ô#×/Ò/°°rÀ	ÐUYÐ/ÑZÔZˆà˜‘ Ñ#ˆØˆr   N)Ú__name__Ú
__module__Ú__qualname__r   r   r*   ÚTensorr3   © r   r   r   r      sR   € € € € € Ø:ÐðNð Nð Nð
˜EœLð ¨U¬\ð ð ð ð ð ð r   r   c                   óH   — e Zd Z	 	 d
dedefd„Zdej        dej        fd„Zd	S )ÚCannyImageEncoderé2   éÈ   Úmin_tÚmax_tc                 ó0   — || _         || _        || _        d S r   )r   r=   r>   )r   r   r=   r>   s       r   r   zCannyImageEncoder.__init__%   s   € ð ˆŒØˆŒ
ØˆŒ
ˆ
ˆ
r   r   r   c                 ó
  — |j         d         dk    s
J d¦   «         ‚t          |d         d¦  «        }t          j        |dd¦  «        }|dz   dz                       ¦   «                              t          j        ¦  «        }t          j	        || j
        | j        ¦  «        }t          j        |¦  «                             ¦   «         dz  dz
  }t          |d¦  «        }t          |d	¦  «        }|                     | j        ¦  «        S )
Nr   é   zOnly batch size 1 is supportedzc h w -> h w cr    r!   r"   zh w -> 1 1 h wzb 1 ... -> b 3 ...)r)   r   r*   r+   ÚnumpyÚastypeÚnpÚuint8Úcv2ÚCannyr=   r>   Ú
from_numpyÚfloatr   r   r   )r   r   Úimg_npÚcannys       r   r3   zCannyImageEncoder.__call__/   sè   € ØŒy˜Œ|˜qÒ Ð Ð Ð"BÑ Ô Ð å˜˜AœÐ 0Ñ1Ô1ˆÝŒk˜#˜t SÑ)Ô)ˆØ˜‘9 Ñ%×,Ò,Ñ.Ô.×5Ò5µb´hÑ?Ô?ˆõ ”	˜& $¤*¨d¬jÑ9Ô9ˆõ Ô  Ñ'Ô'×-Ò-Ñ/Ô/°%Ñ7¸#Ñ=ˆÝ˜%Ð!1Ñ2Ô2ˆÝ�uÐ2Ñ3Ô3ˆØ�xŠx˜œÑ$Ô$Ð$r   N)r;   r<   )r4   r5   r6   Úintr   r*   r7   r3   r8   r   r   r:   r:   $   so   € € € € € ð Øð	ð ð ðð ð	ð ð ð ð%˜EœLð %¨U¬\ð %ð %ð %ð %ð %ð %r   r:   c            	       ój   ‡ — e Zd ZdZddej        fdedededdfˆ fd	„Zd
e	j	        dej
        fd„Zˆ xZS )ÚReduxImageEncoderz google/siglip-so400m-patch14-384i€  i   Ú
redux_pathÚ	redux_dimÚtxt_in_featuresr   Nc                 óº  •— t          ¦   «                              ¦   «          || _        t          |t          j        ¦  «        r|nt	          j        |¦  «        | _        || _        | j        5  t          j        ||dz  |¬¦  «        | _	        t          j        |dz  ||¬¦  «        | _
        t          |t          |¦  «        ¬¦  «        }|                      |dd¬¦  «        \  }}t          ||¦  «         t          j        | j        ¦  «                             |¬¦  «        | _        d d d ¦  «         n# 1 swxY w Y   t)          j        | j        ¦  «        | _        d S )Né   )Údtype)r   FT)ÚstrictÚassign)Úsuperr   rP   Ú
isinstancer*   r   rT   r   ÚLinearÚredux_upÚ
redux_downÚload_sftÚstrÚload_state_dictr   r   r   Úsiglip_model_namer   Úsiglipr
   Ú	normalize)
r   r   rO   rP   rQ   rT   ÚsdÚmissingÚ
unexpectedÚ	__class__s
            €r   r   zReduxImageEncoder.__init__C   sƒ  ø€ õ 	‰Œ×ÒÑÔÐà"ˆŒÝ *¨6µ5´<Ñ @Ô @ÐZ�f�fÅeÄlÐSYÑFZÔFZˆŒØˆŒ
àŒ[ð 	dð 	dÝœI i°À1Ñ1DÈEÐRÑRÔRˆDŒMÝ œi¨¸!Ñ(;¸_ÐTYÐZÑZÔZˆDŒOå˜*­S°©[¬[Ð9Ñ9Ô9ˆBØ"&×"6Ò"6°rÀ%ÐPTÐ"6Ñ"UÔ"UÑˆG�ZÝ˜w¨
Ñ3Ô3Ð3å+Ô;¸DÔ<RÑSÔS×VÒVÐ]bÐVÑcÔcˆDŒKð	dð 	dð 	dñ 	dô 	dð 	dð 	dð 	dð 	dð 	dð 	døøøð 	dð 	dð 	dð 	dõ .Ô=¸dÔ>TÑUÔUˆŒˆˆs   Á,B:D2Ä2D6Ä9D6Úxc                 ó0  — | j                              |gddd¬¦  «        } | j        di |                     | j        | j        ¬¦  «        ¤Žj        }|                      t          j	         
                    |                      |¦  «        ¦  «        ¦  «        }|S )NTr#   )ÚimagesÚ	do_resizer$   Údo_convert_rgb)r   rT   r8   )ra   Ú
preprocessr`   r   r   rT   Úlast_hidden_stater[   r   r.   ÚsilurZ   )r   rf   ÚimgsÚ
_encoded_xÚprojected_xs        r   r3   zReduxImageEncoder.__call__\   s…   € ØŒ~×(Ò(°°¸tÐTXÐimÐ(ÑnÔnˆà �T”[ÐQÐQ 4§7¢7°$´+ÀTÄZ 7Ñ#PÔ#PÐQÐQÔcˆ
à—o’o¥b¤m×&8Ò&8¸¿ºÀzÑ9RÔ9RÑ&SÔ&SÑTÔTˆàÐr   )r4   r5   r6   r_   r*   Úbfloat16r]   rL   r   r   r7   r3   Ú__classcell__)re   s   @r   rN   rN   @   s®   ø€ € € € € Ø:Ðð Ø#ØŒnðVð Vð ðVð ð	Vð
 ðVð 
ðVð Vð Vð Vð Vð Vð2˜%œ+ð ¨%¬,ð ð ð ð ð ð ð ð r   rN   )rF   rB   rD   r*   Úeinopsr   r   ÚPILr   Úsafetensors.torchr   r\   r   Útransformersr   r	   r
   r   Úutilr   r   r:   ÚModulerN   r8   r   r   ú<module>ry      s-  ðØ 
€
€
€
Ø Ð Ð Ð Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ø lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ lÐ là %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ñ ô ð ð.%ð %ð %ð %ð %ñ %ô %ð %ð8#ð #ð #ð #ð #˜œ	ñ #ô #ð #ð #ð #r   