
    +j                     F   S SK r S SKJrJr  S SKJr  S SKrS SKrS SKrS SK	J
r
  S SKJrJr  S SKr S SKJr  S SKJr  \R$                  " \6   \ R&                  " S5         " S	 S
\R(                  5      r " S S\R(                  5      r " S S\5      rS\4S jrg!    NA= f)    N)ModelLoaderImageModelDescriptor)model_management)override)ComfyExtensionio)EXTRA_REGISTRY)MAIN_REGISTRYzWSuccessfully imported spandrel_extra_arches: support for non commercial upscale models.c                   T    \ rS rSr\S 5       r\S\R                  4S j5       r\r	Sr
g)UpscaleModelLoader   c                     [         R                  " SSS[         R                  R                  S[        R
                  " S5      S9/[         R                  R                  5       /S9$ )Nr   zLoad Upscale Modelzmodel/loaders
model_nameupscale_models)options)node_iddisplay_namecategoryinputsoutputs)r   SchemaComboInputfolder_pathsget_filename_listUpscaleModelOutputclss    @/home/wildlama/comfy/ComfyUI/comfy_extras/nodes_upscale_model.pydefine_schema UpscaleModelLoader.define_schema   sX    yy(-$|\5S5STd5ef &&(

 
	
    returnc                 v   [         R                  " SU5      n[        R                  R	                  USS9nSU;   a"  [        R                  R                  USS05      n[        5       R                  U5      R                  5       n[        U[        5      (       d  [        S5      e[        R                  " U5      $ )Nr   T)	safe_loadz4module.layers.0.residual_group.blocks.0.norm1.weightzmodule. z+Upscale model must be a single-image model.)r   get_full_path_or_raisecomfyutilsload_torch_filestate_dict_prefix_replacer   load_from_state_dicteval
isinstancer   	Exceptionr   
NodeOutput)r   r   
model_pathsdouts        r    executeUpscaleModelLoader.execute"   s    !889I:V
[[((t(DARG66rIb>JBm00499;#344IJJ}}S!!r#    N)__name__
__module____qualname____firstlineno__classmethodr!   r   r1   r5   
load_model__static_attributes__r7   r#   r    r   r      s:    
 
 
"BMM 
" 
" Jr#   r   c                   T    \ rS rSr\S 5       r\S\R                  4S j5       r\r	Sr
g)ImageUpscaleWithModel2   c           
          [         R                  " SSS/ SQ[         R                  R                  S5      [         R                  R                  S5      /[         R                  R                  5       /S9$ )Nr@   zUpscale Image (using Model)zimage/upscaling)upscaleupscalerupsczenlarge imagezsuper resolutionhiressuperreszincrease resolutionupscale_modelimage)r   r   r   search_aliasesr   r   )r   r   r   r   Imager   r   s    r    r!   #ImageUpscaleWithModel.define_schema3   s^    yy+6& L%%o6w'
 !
 	
r#   r$   c                   ^ [         R                  " 5       n[         R                  " TR                  5      nUSUR	                  5       -  [        TR                  S5      -  S-  -  nXBR                  5       UR	                  5       -  -  n[         R                  " XC5        TR                  U5        UR                  SS5      R                  U5      nSnSn[        R                   R                  5       nSn	 U	(       a   UR                  S	   [        R                  R                  UR                  S
   UR                  S   XfUS9-  n
[        R                  R!                  U
5      n[        R                  R#                  UU4S jXfUTR                  XS9nSn	U	(       a  M  TR                  S5        [(        R*                  " WR                  SS5      S	SS9R                  [        R                   R-                  5       5      n[.        R0                  " U5      $ ! [$         a-  n[         R&                  " U5        US-  nUS:  a  Ue S nANS nAff = f! TR                  S5        f = f)Ni   g      ?g      x@i       Tr         )tile_xtile_yoverlapc                 0   > T" U R                  5       5      $ N)float)arH   s    r    <lambda>/ImageUpscaleWithModel.execute.<locals>.<lambda>Z   s    -PQPWPWPYBZr#   )rS   rT   rU   upscale_amountpbaroutput_deviceF   cpu)minmax)r   get_torch_devicemodule_sizemodelelement_sizerb   scalenelementfree_memorytomovedimr)   intermediate_deviceshaper*   get_tiled_scale_stepsProgressBartiled_scaler0   raise_non_oomtorchclampintermediate_dtyper   r1   )r   rH   rI   devicememory_requiredin_imgtilerU   r^   oomstepsr]   ses    `            r    r5   ImageUpscaleWithModel.executeC   s0   !224*66}7J7JKMU-?-?-AACH[H[]`Daadiii>>+e.@.@.BBB$$_= r"%((0..BBD	$	 "LLOekk.O.OPVP\P\]^P_agamamnoapy}  U\.O  /]  ]E ;;2259D//8Zcg  F  Wd  Wj  Wj  qu/  SAC # U#KK		"R(aS9<<U=S=S=f=f=hi}}Q !  $2215QJDcz "  U#s7   7I ?BH I 
I%#II II I(r7   N)r8   r9   r:   r;   r<   r!   r   r1   r5   rC   r>   r7   r#   r    r@   r@   2   s;    
 
 ! bmm !  ! F Gr#   r@   c                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)UpscaleModelExtensionj   r$   c                 "   #    [         [        /$ 7frW   )r   r@   )selfs    r    get_node_list#UpscaleModelExtension.get_node_listk   s      !
 	
s   r7   N)r8   r9   r:   r;   r   listtyper   	ComfyNoder   r>   r7   r#   r    r   r   j   s)    
T$r||*<%= 
 
r#   r   r$   c                     #    [        5       $ 7frW   )r   r7   r#   r    comfy_entrypointr   s   s      ""s   )loggingspandrelr   r   r)   r   rr   comfy.utilsr   typing_extensionsr   comfy_api.latestr   r   comfy.model_managementspandrel_extra_archesr	   r
   addinfor   r   r@   r   r   r7   r#   r    <module>r      s     6 "    & / 	4&~&LLjk >5BLL 5p
N 
# 5 #G	s   -B B 