
    RЦiU                        S SK r S SKrS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
JrJrJrJrJrJr  S SKJr  S SKJr  S SKJrJrJrJr  S SKJr  S S	KJr  S S
KJrJ r J!r!J"r"J#r#J$r$  S SK%J&r&  S SK'J(r(  S SK)J*r*  S SK+J,r,  \RZ                  " \.5      r/Sq0Sq1\2" \Rf                  Ri                  SS 5      5      S :  r5/ SQr6\" S\Rn                  S9r8S\
\9\4   S\\9\94   4S jr:S4S\;SS4S jjr<S4S\;SS4S jjr=   S5S\Rn                  S\\
\9\4      S\\	   S\\\9\4      SS4
S jjr>      S6S\Rn                  S\\
\9\4      S\2S\2S \\	   S!\;S\\\9\4      SS4S" jjr?S\
\9\4   S\
\9\4   4S# jr@S$\
\9\4   S%\\9   SS4S& jrAS7S' jrB  S8S(\9S\\\9\
\9\4   4      S)\\
\9\4      S\(4S* jjrC        S9S+\\\8   \	S,\84   4   S(\9S-\;S\\
   S)\\
   S.\\   S/\\
   S0\;S1\\	   S\\\9\4      S2\\\9      S\84S3 jjrDg):    N)deepcopy)Path)	AnyCallableDictListOptionalTupleTypeTypeVarUnion)nn)load_state_dict_from_url)FeatureListNetFeatureDictNetFeatureHookNetFeatureGetterNet)FeatureGraphNet)load_state_dict)
has_hf_hubdownload_cached_filecheck_cached_fileload_state_dict_from_hfload_state_dict_from_pathload_custom_from_hf)adapt_input_conv)PretrainedCfg)adapt_model_from_file)get_pretrained_cfgFTIMM_USE_OLD_CACHE) set_pretrained_download_progressset_pretrained_check_hashload_custom_pretrainedload_pretrainedpretrained_cfg_for_featuresresolve_pretrained_cfgbuild_model_with_cfgModelT)boundpretrained_cfgreturnc                 \   U R                  SS5      nU R                  SS 5      nU R                  SS 5      nU R                  SS 5      nU R                  SS 5      nSnSnUS:X  a  [        SS	9(       a  SnU(       d   eUnOUS
:X  a  S
nUnO|U(       a  SnUn[        U[        5      (       d   eOYU(       a  SnUnOMSn[        (       a  U(       a  [        U5      OSnU(       d  U(       a  [        SS	9(       a  SnUnOU(       a  SnUnUS:X  a  U R                  SS 5      (       a  XpS   4nXg4$ )Nsource urlfile
state_dict	hf_hub_idhf-hubT)	necessary	local-dirFhf_hub_filename)getr   
isinstancedict_USE_OLD_CACHEr   )	r*   
cfg_sourcepretrained_urlpretrained_filepretrained_sdr2   	load_frompretrained_locold_cache_valids	            S/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/models/_builder.py_resolve_pretrained_sourcerC   +   s9   ##Hb1J#''t4N$((6O"&&|T:M"";5I INX*t"<	y"	{	"	( $I*Nnd3333I,N#O~GU"3N"C[`"yZ$5O$	!*!	!/H!3!34Et!L!L'8I)JJ$$    enablec                     U q g)z@Set download progress for pretrained weights on/off (globally). N)_DOWNLOAD_PROGRESSrE   s    rB   r!   r!   [   s
      rD   c                     U q g)z<Set hash checking for pretrained weights on/off (globally). N)_CHECK_HASHrH   s    rB   r"   r"   a   s	     KrD   modelload_fn	cache_dirc                    U=(       d    [        U SS5      nU(       d  [        R                  S5        g[        U5      u  pEU(       d  [        R                  S5        gUS:X  a  [        R                  S5        OUS:X  a  [	        U[
        [        US9nUb	  U" X5        g[        U S	5      (       a  U R                  U5        g[        R                  S
5        g)a  Loads a custom (read non .pth) weight file

Downloads checkpoint file into cache-dir like torch.hub based loaders, but calls
a passed in custom load fun, or the `load_pretrained` model member fn.

If the object is already present in `model_dir`, it's deserialized and returned.
The default value of `model_dir` is ``<hub_dir>/checkpoints`` where
`hub_dir` is the directory returned by :func:`~torch.hub.get_dir`.

Args:
    model: The instantiated model to load weights into
    pretrained_cfg: Default pretrained model cfg
    load_fn: An external standalone fn that loads weights into provided model, otherwise a fn named
        'load_pretrained' on the model will be called if it exists
    cache_dir: Override model checkpoint cache dir for this load
r*   Nz/Invalid pretrained config, cannot load weights.zHNo pretrained weights exist for this model. Using random initialization.r3   zKHugging Face hub not currently supported for custom load pretrained models.r/   )
check_hashprogressrM   r$   zXValid function to load pretrained weights is not available, using random initialization.)	getattr_loggerwarningrC   r   rJ   rG   hasattrr$   )rK   r*   rL   rM   r?   r@   s         rB   r#   r#   g   s    , $Mwu6F'MNIJ :> JIbcHef	e	-"'	
 &	)	*	*n-rsrD   num_classesin_chans	filter_fnstrictc           	         U=(       d    [        U SS5      nU(       d  [        S5      e[        U5      u  pxUS:X  a  [        R	                  S5        Un	GOUS:X  aO  [        R	                  SU S35        UR                  S	S
5      (       a  U R                  U5        g[        U5      n	GOUS:X  ao  [        R	                  SU S35        UR                  S	S
5      (       a&  [        U[        [        US9nU R                  U5        g [        US[        [        SUS9n	GO
US:X  a  [        R	                  SU S35        [        U[        [        45      (       aJ  UR                  S	S
5      n
[        U
[         5      (       a  U
S:X  a  [#        / UQU P7SU06  g[%        USU06n	O[%        USUS9n	OzUS:X  aS  [        R	                  SU S35        ['        U5      nUR)                  5       (       a  [+        U5      n	O/[        SU 35      eUR                  SS5      n[        SU S35      eUb	   U" X5      n	UR                  SS5      nUbZ  US:w  aT  [        U[         5      (       a  U4nU H6  nUS -   n [-        X9U   5      U	U'   [        R	                  S!U S"U S#35        M8     UR                  S&S5      nUR                  S'S(5      nUb  [        U[         5      (       a  U4nX!S)   :w  a6  U H-  nU	R3                  US -   S5        U	R3                  US*-   S5        M/     S
nO5US(:  a/  U H)  nU	US -      nUUS U	US -   '   U	US*-      nUUS U	US*-   '   M+     U R                  XS+9nUR4                  (       a2  [        R	                  S,S-R7                  UR4                  5       S.35        UR8                  (       a3  [        R1                  S/S-R7                  UR8                  5       S035        gg! [         a    [        US[        [        US9n	 GNf = f! [         a  nU" U	5      n	 SnAGNSnAff = f! [.         a*  nU	U	 S
n[        R1                  S$U S%35         SnAGM  SnAff = f)1a  Load pretrained checkpoint

Args:
    model: PyTorch module
    pretrained_cfg: Configuration for pretrained weights / target dataset
    num_classes: Number of classes for target model. Will adapt pretrained if different.
    in_chans: Number of input chans for target model. Will adapt pretrained if different.
    filter_fn: state_dict filter fn for load (takes state_dict, model as args)
    strict: Strict load of checkpoint
    cache_dir: Override model checkpoint cache dir for this load
r*   NzWInvalid pretrained config, cannot load weights. Use `pretrained=False` for random init.r1   z*Loading pretrained weights from state dictr0   z&Loading pretrained weights from file ()custom_loadFr/   z%Loading pretrained weights from url ()rP   rO   rM   cpuT)map_locationrP   rO   weights_only	model_dir)r]   rP   rO   r_   r3   z2Loading pretrained weights from Hugging Face hub (hfrM   )r^   rM   r5   z1Loading pretrained weights from local directory (z#Specified path is not a directory: architecturez
this modelz No pretrained weights exist for z). Use `pretrained=False` for random init.
first_conv   z.weightzConverted input conv z pretrained weights from 3 to z channel(s)zUnable to convert pretrained z+ weights, using random init for this layer.
classifierlabel_offsetr   rU   z.bias)rX   zMissing keys (z, zZ) discovered while loading pretrained weights. This is expected if model is being adapted.zUnexpected keys (zY) found while loading pretrained weights. This may be expected if model is being adapted.)rQ   RuntimeErrorrC   rR   infor7   r$   r   r   rG   rJ   r   	TypeErrorr8   listtuplestrr   r   r   is_dirr   r   NotImplementedErrorrS   popmissing_keysjoinunexpected_keys)rK   r*   rU   rV   rW   rX   rM   r?   r@   r1   r[   pretrained_path
model_nameeinput_convsinput_conv_nameweight_nameclassifiersre   classifier_nameclassifier_weightclassifier_biasload_results                          rB   r$   r$      s   ( $Mwu6F'MNtuu :> JIL AC#
	f	=n=MQOPmU33!!.1(8J	e	<^<LANOmU331+&#	N !!.15"!&/*!%'
  
h	I.IYYZ[\ntUm44(,,]EBK+s++t0C#P^PUPiP4nZPYZ
0d^ghJ	k	!HHXXYZ[~.!!##2?CJ!D^DTUVV#''E
=j\Irstt	/":5J
 !$$\48K8q=k3''&.K*O)I5Kr*:8P[E\*]
;'+O+<<Z[cZddopr	  + !$$\48K!%%na8Lk3''&.K77#.:DA8$? $/ FA#.$./J$K!:KLM:Z
?Y67",_w-F"G8G8V
?W45 $/ ''
'BKTYY{'?'?@A B; <	= ""		+*E*E FG H? @	A #[  5"!&/*'
B  	/":.J	/ ' r{+3O3DDopr rrsB   O- -P 3-P3-PP
P0P++P03
Q'=Q""Q'c                 V    [        U 5      n SnU H  nU R                  US 5        M     U $ )N)rU   rd   global_pool)r   rn   )r*   	to_removetrs      rB   r%   r%   #  s1    n-N<I2t$ rD   kwargsnamesc                 X    U (       a  U(       d  g U H  nU R                  US 5        M     g )N)rn   )r   r   ns      rB   _filter_kwargsr   ,  s"    

1d rD   c                 @   SnU R                  SS5      (       a  US-  nU H  nUS:X  a>  U R                  SS5      nUb'  [        U5      S:X  d   eUR                  XES	S 5        ME  MG  US
:X  a>  U R                  SS5      nUb'  [        U5      S:X  d   eUR                  XES   5        M  M  US:X  a5  U R                  US5      nUb  US:  a  UR                  X@U   5        M  M  M  U R                  US5      nUc  M  UR                  X@U   5        M     [        XS9  g)a  Update the default_cfg and kwargs before passing to model

Args:
    pretrained_cfg: input pretrained cfg (updated in-place)
    kwargs: keyword args passed to model build fn (updated in-place)
    kwargs_filter: keyword arg keys that must be removed before model __init__
)rU   r~   rV   fixed_input_sizeF)img_sizer   
input_sizeNrc   rV   r   rU   )r   )r7   len
setdefaultr   )r*   r   kwargs_filterdefault_kwarg_namesr   r   default_vals          rB   _update_default_model_kwargsr   3  sE    E,e44},  
?'++L$?J%:!+++!!!_5 & *_'++L$?J%:!+++!!!]3 & -(,,Q5K&;!+;!!!A%67 ,<& ),,Q5K&!!!A%67+ !0 6/rD   variantpretrained_cfg_overlayc                    U nSnU(       a:  [        U[        5      (       a  [        S0 UD6nO[        U[        5      (       a  UnSnU(       d$  U(       a  SR	                  X/5      n[        U5      nU(       d#  [        R                  SU S35        [        5       nU=(       d    0 nUR                  (       d  UR                  SU 5        [        R                  " U40 UD6nU$ )z6Resolve pretrained configuration from various sources.N.z*No pretrained configuration specified for ze model. Using a default. Please add a config to the model pretrained_cfg registry or pass explicitly.ra    )r8   r9   r   rk   rp   r   rR   rS   ra   r   dataclassesreplace)r   r*   r   model_with_tagpretrained_tags        rB   r&   r&   \  s     NNnd++*<^<N,,+N!N  XXw&?@N+N;88H I\ ]	^ '39r&&)).'B ((R;QRNrD   	model_cls.
pretrained	model_cfgfeature_cfgpretrained_strictpretrained_filter_fnr   c           
      n   UR                  SS5      nSnU=(       d    0 n[        UUUS9nUR                  5       n[        X;U
5        UR                  SS5      (       aH  SnUR	                  SS5        SU;   a  UR                  S5      US'   SU;   a  UR                  S5      US'   Uc	  U " S0 UD6nO
U " SS
U0UD6nX>l        UR
                  Ul        U(       a  [        X5      nU(       a  SO[        USUR                  SS5      5      nU(       a  [        UUUUR                  SS5      UUU	S9  U(       a  SnSU;   a  UR                  S5      n[        U[        5      (       au  UR                  5       nUS;  a  UR                  SS	5        SU;   a  [        nOGUS:X  a  [        nO:US:X  a  [         nO-US:X  a  ["        nO US:X  a	  Sn[$        nO SU 35       eO[        n[        USS	5      nUb  U(       d  UR	                  SU5        U" U40 UD6n['        U5      Ul        UR
                  Ul        U$ )a  Build model with specified default_cfg and optional model_cfg

This helper fn aids in the construction of a model including:
  * handling default_cfg and associated pretrained weight loading
  * passing through optional model_cfg for models with config based arch spec
  * features_only model adaptation
  * pruning config / model adaptation

Args:
    model_cls: Model class
    variant: Model variant name
    pretrained: Load the pretrained weights
    pretrained_cfg: Model's pretrained weight/task config
    pretrained_cfg_overlay: Entries that will override those in pretrained_cfg
    model_cfg: Model's architecture config
    feature_cfg: Feature extraction adapter config
    pretrained_strict: Load pretrained weights strictly
    pretrained_filter_fn: Filter callable for pretrained weights
    cache_dir: Override model cache dir for Hugging Face Hub and Torch checkpoints
    kwargs_filter: Kwargs keys to filter (remove) before passing to model
    **kwargs: Model args passed through to model __init__
prunedF)r*   r   features_onlyTout_indices)r         rc      feature_clsNcfgr   rU     rV   rc   )r*   rU   rV   rW   rX   rM   )r9   ri   hookflatten_sequentialr   ri   r9   fxgetterzUnknown feature class 
output_fmtr   )rn   r&   to_dictr   r   r*   default_cfgr   rQ   r7   r$   r8   rk   lowerr   r   r   r   r   r%   )r   r   r   r*   r   r   r   r   r   rM   r   r   r   featuresrK   num_classes_pretrained
use_getterr   r   s                      rB   r'   r'     sT   H ZZ%(FH#K ,%5N
 $++-N G zz/5))}o>F")/M)BK&F")/M)BK& #F#2i262),,E%e5 #+Q}fjjYfhlNm0n).ZZ
A.*$	
 
K'%//-8K+s++)//1 &>>OO$8$?[("0K F*"0K F*"0K D("1K H,!%J"2KH$:;-"HH5' ,* )KUL$7
!*""<<E1[1:>J!00LrD   )T)NNN)Nr   rc   NTN)r+   N)NN)NNNNTNNN)Er   loggingoscopyr   pathlibr   typingr   r   r   r   r	   r
   r   r   r   torchr   	torch.hubr   timm.models._featuresr   r   r   r   timm.models._features_fxr   timm.models._helpersr   timm.models._hubr   r   r   r   r   r   timm.models._manipulater   timm.models._pretrainedr   timm.models._pruner   timm.models._registryr   	getLogger__name__rR   rG   rJ   intenvironr7   r:   __all__Moduler(   rk   rC   boolr!   r"   r#   r$   r%   r   r   r&   r'   r   rD   rB   <module>r      ss     	   S S S  . b b 4 03 3 4 1 4 4


H
%  RZZ^^$8!<=A 
	+-%tCH~ -%%S/ -%` T  T  d d  48&*04	.tyy.t c3h0.t (#.t E#t),-	.t
 
.tf 48(,04HAyyHA c3h0HA HA 	HA
 H%HA HA E#t),-HA 
HAVS#X 4S> 4S> $s)  &0V @D;?!! sDcN':!;<! !)c3h 8! 	!P *.15#'&*"&3704.2wfxV'<<=ww w !	w
 !)w C=w d^w  w 'x0w E#t),-w  c
+w wrD   