
    +j                     8   d dl Z d dlmZmZ d dlmZ d dlZd dlZd dlZd dl	m
Z
 d dlmZmZ d dlZ	 d dlmZ d dlmZ  ej        e   e j        d           n#  Y nxY w G d	 d
ej                  Z G d dej                  Z G d de          ZdefdZdS )    N)ModelLoaderImageModelDescriptor)model_management)override)ComfyExtensionio)EXTRA_REGISTRY)MAIN_REGISTRYzWSuccessfully imported spandrel_extra_arches: support for non commercial upscale models.c                   N    e Zd Zed             Zedej        fd            ZeZdS )UpscaleModelLoaderc                     t          j        dddt           j                            dt	          j        d                    gt           j                                        g          S )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_schemaz UpscaleModelLoader.define_schema   sb    y(-$|\5STd5e5eff &&((

 

 

 
	
    returnc                    t          j        d|          }t          j                            |d          }d|v r"t          j                            |ddi          }t                                          |                                          }t          |t                    st          d          t          j        |          S )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   executezUpscaleModelLoader.execute"   s    !89I:VV
[((t(DDARGG66rIb>JJBmm004499;;#344 	KIJJJ}S!!!r!   N)	__name__
__module____qualname__classmethodr    r   r/   r3   
load_model r!   r   r   r      sW        
 
 [
 
"BM 
" 
" 
" [
" JJJr!   r   c                   N    e Zd Zed             Zedej        fd            ZeZdS )ImageUpscaleWithModelc           
          t          j        dddg dt           j                            d          t           j                            d          gt           j                                        g          S )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    z#ImageUpscaleWithModel.define_schema3   su    y+6& L  L  L%%o66w''
 !!
 
 
 	
r!   r"   c           
         t          j                    }t          j        j                  }|d|                                z  t          j        d          z  dz  z  }||                                |                                z  z  }t          j        ||           	                    |           |
                    dd          	                    |          }d}d}t          j                                         }d}		 |	r	 |j        d	         t          j                            |j        d
         |j        d         |||          z  }
t          j                            |
          }t          j                            |fd|||j        ||          }d}	n8# t$          $ r+}t          j        |           |dz  }|dk     r|Y d }~nd }~ww xY w|	ԉ	                    d           n# 	                    d           w xY wt)          j        |
                    dd          d	d          	                    t          j                                                   }t/          j        |          S )Ni   g      ?g      x@i       Tr         )tile_xtile_yoverlapc                 >     |                                            S N)float)arB   s    r   <lambda>z/ImageUpscaleWithModel.execute.<locals>.<lambda>Z   s    --PQPWPWPYPYBZBZ r!   )rL   rM   rN   upscale_amountpbaroutput_deviceF   cpu)minmax)r   get_torch_devicemodule_sizemodelelement_sizerZ   scalenelementfree_memorytomovedimr'   intermediate_deviceshaper(   get_tiled_scale_stepsProgressBartiled_scaler.   raise_non_oomtorchclampintermediate_dtyper   r/   )r   rB   rC   devicememory_requiredin_imgtilerN   rV   oomstepsrU   ses    `            r   r3   zImageUpscaleWithModel.executeC   s   !244*6}7JKKMU-?-?-A-AACH[]`DaDaadiii5>>++e.@.@.B.BBB$_f===   r"%%((00.BBDD	$ 
 	 "LOek.O.OPVP\]^P_agamnoapy}  GK  U\.O  /]  /]  ]E ;22599D//8Z8Z8Z8Zcgpt  F  Wd  Wj  qu  ER/  S  SACC       $21555QJDczz "zzzz   
  U####MU####K		"R((aS999<<U=S=f=f=h=hii}Qs7   G1 BF!  G1 !
G+!GG1 GG1 1HN)	r4   r5   r6   r7   r    r   r/   r3   r=   r9   r!   r   r;   r;   2   sX        
 
 [
 ! bm !  !  !  [! F GGGr!   r;   c                   L    e Zd Zedeeej                          fd            ZdS )UpscaleModelExtensionr"   c                 "   K   t           t          gS rP   )r   r;   )selfs    r   get_node_listz#UpscaleModelExtension.get_node_listk   s       !
 	
r!   N)	r4   r5   r6   r   listtyper   	ComfyNodery   r9   r!   r   rv   rv   j   sE        
T$r|*<%= 
 
 
 X
 
 
r!   rv   r"   c                  "   K   t                      S rP   )rv   r9   r!   r   comfy_entrypointr~   s   s       """r!   )loggingspandrelr   r   r'   r   rj   comfy.utilsr   typing_extensionsr   comfy_api.latestr   r   comfy.model_managementspandrel_extra_archesr	   r
   addinfor|   r   r;   rv   r~   r9   r!   r   <module>r      s    6 6 6 6 6 6 6 6 " " " " " "          & & & & & & / / / / / / / /    	444444&&&&&&M~&&GLjkkkk	D       >5 5 5 5 5BL 5 5 5p
 
 
 
 
N 
 
 
# 5 # # # # # #s   &A A