Ë
    éÓ^jmJ  ã                   óÚ  — d Z ddlmZ ddlmZmZmZmZ ddlZddl	m
Z
 ddlmZmZ ddlmZmZmZmZmZ ddlmZ dd	lmZmZmZ dd
lmZmZ ddlmZmZ ddl m!Z!  G d„ de
jD                  «      Z#d„ Z$dbd„Z%dcd„Z&	 	 dddee'ejP                  f   de!de'de)dee'ejP                  f   f
d„Z*ded„Z+dfd„Z, ei d e,dddd¬«      “d  e,d!ddd"d#d¬$«      “d% e,d&dd¬'«      “d( e,d)dd"d#d¬*«      “d+ e,«       “d, e,d-dd"d#¬.«      “d/ e,d0dd¬'«      “d1 e,d2dd"d#d¬*«      “d3 e,d4dd5d6dd¬7«      “d8 e,d9dd5d6d¬:«      “d; e,ddd6¬<«      “d= e,d>dd5d6d¬:«      “d? e,eed@¬A«      “dB e,eed@¬A«      “dC e,eed@¬A«      “dD e,eed@¬A«      “dE e,dFdGdHdIdJdKdL¬M«      “ e,dNdOdIdHdJdKdL¬P«       e,ddIdJdKdLdH¬Q«      dRœ¥«      Z-edgde!fdS„«       Z.edgde!fdT„«       Z/edgde!fdU„«       Z0edgde!fdV„«       Z1edgde!fdW„«       Z2edgde!fdX„«       Z3edgde!fdY„«       Z4edgde!fdZ„«       Z5edgde!fd[„«       Z6edgde!fd\„«       Z7edgde!fd]„«       Z8edgde!fd^„«       Z9edgde!fd_„«       Z:edgde!fd`„«       Z; ee<d3d8d;d;d=d,daœ«       y)ha   Hybrid Vision Transformer (ViT) in PyTorch

A PyTorch implement of the Hybrid Vision Transformers as described in:

'An Image Is Worth 16 x 16 Words: Transformers for Image Recognition at Scale'
    - https://arxiv.org/abs/2010.11929

`How to train your ViT? Data, Augmentation, and Regularization in Vision Transformers`
    - https://arxiv.org/abs/2106.10270

NOTE These hybrid model definitions depend on code in vision_transformer.py.
They were moved here to keep file sizes sane.

Hacked together by / Copyright 2020, Ross Wightman
é    )Úpartial)ÚDictÚTupleÚTypeÚUnionN)ÚIMAGENET_DEFAULT_MEANÚIMAGENET_DEFAULT_STD)ÚStdConv2dSameÚ	StdConv2dÚConvNormActÚ	to_ntupleÚHybridEmbedé   )Úbuild_model_with_cfg)Úgenerate_default_cfgsÚregister_modelÚregister_model_deprecations)Ú	resnet26dÚ	resnet50d)ÚResNetV2Úcreate_resnetv2_stem)ÚVisionTransformerc                   ó  ‡ — e Zd Zddddddej                  ej
                  ddf
dededeeeed	f   f   d
eeeed	f   f   deeeed	f   f   dee	eeed	f   f   de
ej                     de
ej                     fˆ fd„Zˆ xZS )ÚConvStemé   é@   )é   r   r   Ú NÚin_chansÚdepthÚchannels.Úkernel_sizeÚstrideÚpaddingÚ
norm_layerÚ	act_layerc                 ó$  •— |	|
dœ}t         ‰| �  «        t        |t        «      r.t	        t        |«      D �cg c]
  }|d|z  z  ‘Œ c}d d d…   «      } t        |«      |«      } t        |«      |«      }|t        |«      cxk(  rt        |«      cxk(  rt        |«      k(  sJ ‚ J ‚|}t        t        |«      «      D ]M  }|t        |«      dz
  k(  }| j                  |› t        |||   f||   ||   ||   || | ||dœ|¤Ž«       ||   }ŒO y c c}w )N©ÚdeviceÚdtyper   éÿÿÿÿr   )r"   r#   r$   ÚbiasÚ
apply_normÚ	apply_actr%   r&   )
ÚsuperÚ__init__Ú
isinstanceÚintÚtupleÚranger   ÚlenÚ
add_moduler   )Úselfr   r    r!   r"   r#   r$   r%   r&   r)   r*   ÚddÚiÚin_chsÚ	last_convÚ	__class__s                  €úp/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/vision_transformer_hybrid.pyr0   zConvStem.__init__!   s7  ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ�h¤Ô$ä¼¸e»ÖE°1˜h¨!¨Q©$Ó.ÒEÁdÈÀdÑKÓLˆHà&”i Ó& {Ó3ˆØ"”)˜EÓ" 7Ó+ˆØœ˜F›ÔH¤s¨;Ó'7ÔH¼3¸x»=ÒHÐHÑHÐHÐHàˆÜ”s˜8“}Ó%ò 	!ˆAØœS ›]¨QÑ.Ñ.ˆIØ�O‰O˜q˜c¤KØØ˜‘ð%ð (¨™NØ˜a‘yØ ™
ØØ(˜=Ø'˜-Ø%Ø#ñ%ð ñ%ô ð ˜a‘[‰Fñ	!ùò Fs   ·D)Ú__name__Ú
__module__Ú__qualname__ÚnnÚBatchNorm2dÚReLUr2   r   r   Ústrr   ÚModuler0   Ú__classcell__)r<   s   @r=   r   r       sÝ   ø„ ð ØØ46Ø78Ø2;Ø8:Ø*,¯.©.Ø)+¯©ØØñ'!àð'!ð ð'!ð ˜C  s¨C x¡Ð0Ñ1ð	'!ð
 ˜s E¨#¨s¨(¡OÐ3Ñ4ð'!ð ˜#˜u S¨# X™Ð.Ñ/ð'!ð ˜3  U¨3°¨8¡_Ð4Ñ5ð'!ð ˜RŸY™Y™ð'!ð ˜BŸI™I‘÷'!ñ '!ó    r   c                  óL   — | j                  dd «      | j                  dd «      dœS )Nr)   r*   r(   )Úget)Úkwargss    r=   Ú_dd_from_kwargsrK   K   s#   € Ø—j‘j ¨4Ó0¸6¿:¹:ÀgÈtÓ;TÑUÐUrG   c                 óB  — |j                  dd«      }|rdnd}|rt        t        d¬«      nt        t        d¬«      }t	        | «      r.t        d| dd|j                  dd	«      d
||dœt        di |¤Ž¤Ž}|S t        |j                  dd	«      f|d
|dœt        di |¤Ž¤Ž}|S )z ResNet-V2 backbone helperÚpadding_sameTÚsamer   g:Œ0âŽyE>)Úepsr   r   r   F)ÚlayersÚnum_classesÚglobal_poolr   ÚpreactÚ	stem_typeÚ
conv_layer)rT   rS   rU   © )rI   r   r
   r   r5   r   rK   r   )rP   rJ   rM   rT   rU   Úbackbones         r=   Ú	_resnetv2rX   O   sÃ   € à—:‘:˜n¨dÓ3€LÙ&‘¨B€IÙ5A”œ¨DÕ1ÄwÌyÐ^bÔGc€JÜ
ˆ6„{Üð 	
ØØØØ—Z‘Z 
¨AÓ.ØØØ!ñ	
ô Ñ' Ñ'ñ	
ˆð$ €Oô (Ø�J‰J�z 1Ó%ð
àØØ!ñ	
ô
 Ñ' Ñ'ñ
ˆð €OrG   c                 ó"  — i }| j                  «       D �]x  \  }}|j                  |«      sŒ|j                  |d«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd	«      }|j                  d
d«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  dd«      }|dk(  rd}|j                  d«      }d|v rU|j                  dd«      }|j                  dd«      }|j                  }t        j                  |j                  d   «      ||<   |||<   �Œ{ |S ) Nr   z
patch_emb.zpatch_embed.backbone.z
block.convÚconvz
block.normÚbnzpost_transformer_norm.znorm.zpre_norm_mha.0Únorm1zpre_norm_mha.1Úattnzpre_norm_ffn.0Únorm2zpre_norm_ffn.1zmlp.fc1zpre_norm_ffn.4zmlp.fc2z	qkv_proj.zqkv.z	out_proj.zproj.ztransformer.zblocks.zpos_embed.pos_embed.pos_embedÚ	pos_embedr   zclassifier.projz	head.biaszhead.weight)ÚitemsÚ
startswithÚreplaceÚsqueezeÚTÚtorchÚzerosÚshape)Ú
state_dictÚmodelÚprefixÚoutÚkÚvÚbias_ks          r=   Ú_convert_mobileclipro   j   s�  € Ø
€CØ× Ñ Ó"ó ‰ˆˆ1Ø�|‰|˜FÔ#ØØ�I‰I�f˜bÓ!ˆØ�I‰I�lÐ$;Ó<ˆØ�I‰I�l FÓ+ˆØ�I‰I�l DÓ)ˆØ�I‰IÐ.°Ó8ˆØ�I‰IÐ&¨Ó0ˆØ�I‰IÐ&¨Ó/ˆØ�I‰IÐ&¨Ó0ˆØ�I‰IÐ&¨	Ó2ˆØ�I‰IÐ&¨	Ó2ˆØ�I‰I�k 6Ó*ˆØ�I‰I�k 7Ó+ˆØ�I‰I�n iÓ0ˆØÐ/Ò/ØˆAØ—	‘	˜!“ˆAØ Ñ!Ø—Y‘YÐ0°+Ó>ˆFØ—	‘	Ð+¨]Ó;ˆAØ—‘ˆAÜŸ+™+ a§g¡g¨a¡jÓ1ˆC�‰KØˆˆA‹ð1ð2 €JrG   Trh   ri   ÚinterpolationÚ	antialiasÚreturnc                 óF   — ddl m} d| v rt        | |«      }  || |||¬«      S )Nr   )Úcheckpoint_filter_fnz1image_encoder.model.patch_emb.0.block.conv.weight)rp   rq   )Úvision_transformerrt   ro   )rh   ri   rp   rq   Ú
_filter_fns        r=   rt   rt   ˆ   s.   € õ Gà:¸jÑHÜ(¨°UÓ;ˆ
á�j %°}ÐPYÔZÐZrG   c                 óæ   — |j                  dd«      }|xs i }t        t        fd|i|¤Ž}|j                  d|«       |j                  dd«       t	        t
        | |ft        t        |d¬«      d	œ|¤ŽS )
NÚout_indicesr   rW   Úembed_layerÚ
patch_sizer   Úgetter)rx   Úfeature_cls)Úpretrained_filter_fnÚfeature_cfg)Úpopr   r   Ú
setdefaultr   r   rt   Údict)ÚvariantrW   Ú
embed_argsÚ
pretrainedrJ   rx   ry   s          r=   Ú!_create_vision_transformer_hybridr…   –   s„   € Ø—*‘*˜]¨AÓ.€KØÒ!˜r€JÜœ+ÑG°ÐG¸JÑG€KØ
×Ñ�m [Ô1Ø
×Ñ�l AÔ&ÜÜØØðô 2Ü [¸hÔGñð ñð rG   c                 ó$   — | ddd dddddddd	d
œ|¥S )Niè  )r   éà   r‡   çÍÌÌÌÌÌì?ÚbicubicT)ç      à?rŠ   rŠ   zpatch_embed.backbone.stem.convÚheadz
apache-2.0)ÚurlrQ   Ú
input_sizeÚ	pool_sizeÚcrop_pctrp   Úfixed_input_sizeÚmeanÚstdÚ
first_convÚ
classifierÚlicenserV   )rŒ   rJ   s     r=   Ú_cfgr–   ¦   s4   € àØ¨=ÀtØ¨ÈØ¨Ø6ÀfØñð ðð rG   z*vit_tiny_r_s16_p8_224.augreg_in21k_ft_in1kz—https://storage.googleapis.com/vit_models/augreg/R_Ti_16-i21k-300ep-lr_0.001-aug_none-wd_0.03-do_0.0-sd_0.0--imagenet2012-steps_20k-lr_0.03-res_224.npzztimm/zpatch_embed.backbone.conv)rŒ   Ú	hf_hub_idÚcustom_loadr“   z*vit_tiny_r_s16_p8_384.augreg_in21k_ft_in1kz—https://storage.googleapis.com/vit_models/augreg/R_Ti_16-i21k-300ep-lr_0.001-aug_none-wd_0.03-do_0.0-sd_0.0--imagenet2012-steps_20k-lr_0.03-res_384.npz)r   é€  r™   ç      ð?)rŒ   r—   r“   r�   r�   r˜   z*vit_small_r26_s32_224.augreg_in21k_ft_in1kzšhttps://storage.googleapis.com/vit_models/augreg/R26_S_32-i21k-300ep-lr_0.001-aug_light0-wd_0.03-do_0.1-sd_0.1--imagenet2012-steps_20k-lr_0.03-res_224.npz)rŒ   r—   r˜   z*vit_small_r26_s32_384.augreg_in21k_ft_in1kz›https://storage.googleapis.com/vit_models/augreg/R26_S_32-i21k-300ep-lr_0.001-aug_medium2-wd_0.03-do_0.0-sd_0.0--imagenet2012-steps_20k-lr_0.03-res_384.npz)rŒ   r—   r�   r�   r˜   zvit_base_r26_s32_224.untrainedz'vit_base_r50_s16_384.orig_in21k_ft_in1kzthttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vitjx/jx_vit_base_resnet50_384-9fd3c705.pth)rŒ   r—   r�   r�   z*vit_large_r50_s32_224.augreg_in21k_ft_in1kzšhttps://storage.googleapis.com/vit_models/augreg/R50_L_32-i21k-300ep-lr_0.001-aug_medium1-wd_0.1-do_0.1-sd_0.1--imagenet2012-steps_20k-lr_0.01-res_224.npzz*vit_large_r50_s32_384.augreg_in21k_ft_in1kzšhttps://storage.googleapis.com/vit_models/augreg/R50_L_32-i21k-300ep-lr_0.001-aug_medium2-wd_0.1-do_0.0-sd_0.0--imagenet2012-steps_20k-lr_0.01-res_384.npzz"vit_tiny_r_s16_p8_224.augreg_in21kzohttps://storage.googleapis.com/vit_models/augreg/R_Ti_16-i21k-300ep-lr_0.001-aug_none-wd_0.03-do_0.0-sd_0.0.npziSU  rˆ   )rŒ   r—   rQ   r�   r“   r˜   z"vit_small_r26_s32_224.augreg_in21kzshttps://storage.googleapis.com/vit_models/augreg/R26_S_32-i21k-300ep-lr_0.001-aug_medium2-wd_0.03-do_0.0-sd_0.0.npz)rŒ   r—   rQ   r�   r˜   zvit_base_r50_s16_224.orig_in21k)r—   rQ   r�   z"vit_large_r50_s32_224.augreg_in21kzrhttps://storage.googleapis.com/vit_models/augreg/R50_L_32-i21k-300ep-lr_0.001-aug_medium2-wd_0.1-do_0.0-sd_0.0.npzz!vit_small_resnet26d_224.untrainedzpatch_embed.backbone.conv1.0)r‘   r’   r“   z%vit_small_resnet50d_s16_224.untrainedz vit_base_resnet26d_224.untrainedz vit_base_resnet50d_224.untrainedzvit_base_mci_224.apple_mclip_ltzapple/mobileclip_b_lt_timmzYhttps://docs-assets.developer.apple.com/ml-research/datasets/mobileclip/mobileclip_blt.ptz
apple-amlri   )ç        r›   r›   )rš   rš   rš   zpatch_embed.backbone.0.conv)r—   rŒ   r•   rQ   r‘   r’   r“   zapple/mobileclip_b_timmzWhttps://docs-assets.developer.apple.com/ml-research/datasets/mobileclip/mobileclip_b.pt)r—   rŒ   rQ   r•   r‘   r’   r“   )r—   rQ   r‘   r’   r“   r•   )zvit_base_mci_224.apple_mclipz%vit_base_mci_224.apple_mclip2_dfndr2bc           	      óp   — t        dddi|¤Ž}t        dddd¬«      }t        	 d	|| dœt        |fi |¤Ž¤Ž}|S )
z3 R+ViT-Ti/S16 w/ 8x8 patch hybrid @ 224 x 224.
    rP   rV   é   éÀ   é   r   ©rz   Ú	embed_dimr    Ú	num_heads©rW   r„   )Úvit_tiny_r_s16_p8_224©rX   r�   r…   ©r„   rJ   rW   Ú
model_argsri   s        r=   r¤   r¤   	  óY   € ô Ñ- Ð- fÑ-€HÜ ¨c¸ÀqÔI€JÜ-ØðiØ*2¸zñiÜMQÐR\ÑMgÐ`fÑMgñi€Eà€LrG   c           	      óp   — t        dddi|¤Ž}t        dddd¬«      }t        	 d	|| dœt        |fi |¤Ž¤Ž}|S )
z3 R+ViT-Ti/S16 w/ 8x8 patch hybrid @ 384 x 384.
    rP   rV   r�   rž   rŸ   r   r    r£   )Úvit_tiny_r_s16_p8_384r¥   r¦   s        r=   rª   rª     r¨   rG   c           	      ój   — t        di |¤Ž}t        ddd¬«      }t        	 d|| dœt        |fi |¤Ž¤Ž}|S )ú R26+ViT-S/S32 hybrid.
    r™   rŸ   é   ©r¡   r    r¢   r£   ©)r   r   r   r   )Úvit_small_r26_s32_224r¥   r¦   s        r=   r°   r°     óR   € ô Ñ0¨Ñ0€HÜ ¨2¸Ô;€JÜ-ØðiØ*2¸zñiÜMQÐR\ÑMgÐ`fÑMgñi€Eà€LrG   c           	      ój   — t        di |¤Ž}t        ddd¬«      }t        	 d|| dœt        |fi |¤Ž¤Ž}|S )r¬   r™   rŸ   r­   r®   r£   r¯   )Úvit_small_r26_s32_384r¥   r¦   s        r=   r³   r³   *  r±   rG   c           	      ój   — t        di |¤Ž}t        ddd¬«      }t        	 d|| dœt        |fi |¤Ž¤Ž}|S )z R26+ViT-B/S32 hybrid.
    é   rŸ   r®   r£   r¯   )Úvit_base_r26_s32_224r¥   r¦   s        r=   r¶   r¶   5  sR   € ô Ñ0¨Ñ0€HÜ ¨2¸Ô<€JÜ-ØðhØ)1¸jñhÜLPÐQ[ÑLfÐ_eÑLfñh€Eà€LrG   c           	      ój   — t        di |¤Ž}t        ddd¬«      }t        	 d|| dœt        |fi |¤Ž¤Ž}|S )zR R50+ViT-B/S16 hybrid from original paper (https://arxiv.org/abs/2010.11929).
    rµ   rŸ   r®   r£   ©)r   é   é	   )Úvit_base_r50_s16_224r¥   r¦   s        r=   r»   r»   @  sR   € ô Ñ- fÑ-€HÜ ¨2¸Ô<€JÜ-ØðhØ)1¸jñhÜLPÐQ[ÑLfÐ_eÑLfñh€Eà€LrG   c           	      ój   — t        di |¤Ž}t        ddd¬«      }t        	 d|| dœt        |fi |¤Ž¤Ž}|S )zÈ R50+ViT-B/16 hybrid from original paper (https://arxiv.org/abs/2010.11929).
    ImageNet-1k weights fine-tuned from in21k @ 384x384, source https://github.com/google-research/vision_transformer.
    rµ   rŸ   r®   r£   r¸   )Úvit_base_r50_s16_384r¥   r¦   s        r=   r½   r½   K  sR   € ô
 Ñ- fÑ-€HÜ ¨2¸Ô<€JÜ-ØðhØ)1¸jñhÜLPÐQ[ÑLfÐ_eÑLfñh€Eà€LrG   c           	      ój   — t        di |¤Ž}t        ddd¬«      }t        	 d|| dœt        |fi |¤Ž¤Ž}|S )ú R50+ViT-L/S32 hybrid.
    é   é   é   r®   r£   ©)r   r¹   r­   r   )Úvit_large_r50_s32_224r¥   r¦   s        r=   rÄ   rÄ   W  óR   € ô Ñ0¨Ñ0€HÜ ¨B¸"Ô=€JÜ-ØðiØ*2¸zñiÜMQÐR\ÑMgÐ`fÑMgñi€Eà€LrG   c           	      ój   — t        di |¤Ž}t        ddd¬«      }t        	 d|| dœt        |fi |¤Ž¤Ž}|S )r¿   rÀ   rÁ   rÂ   r®   r£   rÃ   )Úvit_large_r50_s32_384r¥   r¦   s        r=   rÇ   rÇ   b  rÅ   rG   c           	      óª   — t        d
| |j                  dd«      ddgdœt        d
i |¤Ž¤Ž}t        dddd¬«      }t	        	 d|| d	œt        |fi |¤Ž¤Ž}|S )zL Custom ViT small hybrid w/ ResNet26D stride 32. No pretrained weights.
    r   r   Tr¹   ©r„   r   Úfeatures_onlyrx   rµ   r�   ©r¡   r    r¢   Ú	mlp_ratior£   rV   )Úvit_small_resnet26d_224©r   rI   rK   r�   r…   r¦   s        r=   rÍ   rÍ   m  sƒ   € ô ð ØØ—‘˜J¨Ó*ØØ�Cñ	ô
 Ñ
#˜FÑ
#ñ€Hô  ¨1¸ÀQÔG€JÜ-Ø!ðkØ,4ÀñkÜOSÐT^ÑOiÐbhÑOiñk€Eà€LrG   c           	      óª   — t        d	| |j                  dd«      ddgdœt        d	i |¤Ž¤Ž}t        dddd¬«      }t	        	 d
|| dœt        |fi |¤Ž¤Ž}|S )zV Custom ViT small hybrid w/ ResNet50D 3-stages, stride 16. No pretrained weights.
    r   r   TrÉ   rµ   r�   rË   r£   rV   )Úvit_small_resnet50d_s16_224©r   rI   rK   r�   r…   r¦   s        r=   rÐ   rÐ   ~  sƒ   € ô ð ØØ—‘˜J¨Ó*ØØ�Cñ	ô
 Ñ
#˜FÑ
#ñ€Hô  ¨1¸ÀQÔG€JÜ-Ø%ðoØ08ÀZñoÜSWÐXbÑSmÐflÑSmño€Eà€LrG   c           	      ó¨   — t        d
| |j                  dd«      ddgdœt        d
i |¤Ž¤Ž}t        ddd¬«      }t	        	 d|| d	œt        |fi |¤Ž¤Ž}|S )zK Custom ViT base hybrid w/ ResNet26D stride 32. No pretrained weights.
    r   r   Tr¹   rÉ   rµ   rŸ   r®   r£   rV   )Úvit_base_resnet26d_224rÎ   r¦   s        r=   rÓ   rÓ   �  ó�   € ô ð ØØ—‘˜J¨Ó*ØØ�Cñ	ô
 Ñ
#˜FÑ
#ñ€Hô  ¨2¸Ô<€JÜ-Ø ðjØ+3À
ñjÜNRÐS]ÑNhÐagÑNhñj€Eà€LrG   c           	      ó¨   — t        d
| |j                  dd«      ddgdœt        d
i |¤Ž¤Ž}t        ddd¬«      }t	        	 d|| d	œt        |fi |¤Ž¤Ž}|S )úK Custom ViT base hybrid w/ ResNet50D stride 32. No pretrained weights.
    r   r   Tr¹   rÉ   rµ   rŸ   r®   r£   rV   )Úvit_base_resnet50d_224rÑ   r¦   s        r=   r×   r×      rÔ   rG   c                 óÞ   — t        ddddd|j                  dd«      t        j                  dœt	        di |¤Ž¤Ž}t        dddd	¬
«      }t        	 d|t        d¬«      | dœt        |fi |¤Ž¤Ž}|S )rÖ   )rž   rž   rµ   )r¹   r   r   r   r   r   )r!   r#   r"   r$   r   r&   rµ   rŸ   T)r¡   r    r¢   Úno_embed_classF)Úproj)rW   rƒ   r„   rV   )Úvit_base_mci_224)r   rI   rA   ÚGELUrK   r�   r…   r¦   s        r=   rÛ   rÛ   ±  s�   € ô ð Ø&ØØØØ—‘˜J¨Ó*Ü—'‘'ñô Ñ
#˜FÑ
#ñ€Hô  ¨2¸ÈDÔQ€JÜ-ØðØ%-¼$ÀEÔ:JØñä!% jÑ!;°FÑ!;ñ€Eð €LrG   )Úvit_tiny_r_s16_p8_224_in21kÚvit_small_r26_s32_224_in21kÚvit_base_r50_s16_224_in21kÚvit_base_resnet50_224_in21kÚvit_large_r50_s32_224_in21kÚvit_base_resnet50_384r¸   )zimage_encoder.model.)r‰   T)NF)r   )F)=Ú__doc__Ú	functoolsr   Útypingr   r   r   r   re   Útorch.nnrA   Ú	timm.datar   r	   Útimm.layersr
   r   r   r   r   Ú_builderr   Ú	_registryr   r   r   Úresnetr   r   Úresnetv2r   r   ru   r   Ú
Sequentialr   rK   rX   ro   rD   ÚTensorÚboolrt   r…   r–   Údefault_cfgsr¤   rª   r°   r³   r¶   r»   r½   rÄ   rÇ   rÍ   rÐ   rÓ   r×   rÛ   r>   rV   rG   r=   ú<module>rñ      sß  ðñõ ß +Ó +ã Ý ç Aß UÕ Uå *ß YÑ Yß (ß 4Ý 1ô(!ˆr�}‰}ô (!òVVóó6ðB 'Øñ	[Ø˜˜eŸl™lÐ*Ñ+ð[à ð[ð ð[ð ð	[ð
 
ˆ#ˆu�|‰|Ð
Ñó[óó 	ñ %ð T&à0±$ð fØØØ.ô	30ðT&ð 1±$ð fØØ.¸=ÐSVÐdhô3jðT&ð 1±$ð iØØô3ðT&ð  1±$ð jØØ ¨3¸Dô3Bð!T&ð( %¡d£fð)T&ð* .©tð CØØ ¨3ô00ð+T&ð2 1±$ð iØØô3ð3T&ð< 1±$ð iØØ ¨3¸Dô3ð=T&ðJ )©$Ø}ØØ CÐ4OÐ]aô+cðKT&ðR )©$ð BØØ C°Tô+;ðST&ðZ &¡tàØ ô(%ð[T&ðb )©$ð AØØ C°Tô+;ðcT&ðn (©Ø"Ð(<ÐIgô*iðoT&ðr ,©TØ"Ð(<ÐIgô.iðsT&ðv '©Ø"Ð(<ÐIgô)iðwT&ðz '©Ø"Ð(<ÐIgô)ið{T&ð@ &¡tØ.ØgØØØ˜|Ð8Uô(ðAT&ñN %)Ø+ØeØØØ˜|Ð8Uô%ñ .2ØØØ˜|Ð8UØô	.ò]T&ó T€ðn ñÐ9Jò ó ðð ñÐ9Jò ó ðð ñÐ9Jò ó ðð ñÐ9Jò ó ðð ñÐ8Iò ó ðð ñÐ8Iò ó ðð ñÐ8Iò ó ðð ñÐ9Jò ó ðð ñÐ9Jò ó ðð ñÐ;Lò ó ðð  ñÐ?Pò ó ðð  ñÐ:Kò ó ðð  ñÐ:Kò ó ðð  ñÐ4Eò ó ðñ( ˜HØ#GØ#GØ"CØ#DØ#GØFñ'õ rG   