Ë
    éÓ^j`?  ã                   óˆ  — d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
 ddlZddlmZ ddlmZmZmZmZmZmZmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZmZm Z  dgZ! G d„ dejD                  «      Z# G d„ dejD                  «      Z$ G d„ dejD                  «      Z%d„ Z&d'd„Z'd(d„Z( e e(d¬«       e(dd¬«       e(d¬«       e(d¬«       e(d¬«       e(ddd¬«       e(ddd¬«       e(ddd¬«       e(d¬«       e(dd¬«      dœ
«      Z)ed'de%fd„«       Z*ed'de%fd„«       Z+ed'de%fd „«       Z,ed'de%fd!„«       Z- e e.d"d#d$d%d&œ«       y))zŽ
TResNet: High Performance GPU-Dedicated Architecture
https://arxiv.org/pdf/2003.13630.pdf

Original model: https://github.com/mrT23/TResNet

é    )ÚOrderedDict)Úpartial)ÚListÚOptionalÚTupleÚUnionÚTypeN)ÚSpaceToDepthÚ
BlurPool2dÚClassifierHeadÚSEModuleÚConvNormActÚDropPathÚcalculate_drop_path_ratesé   )Úbuild_model_with_cfg)Úfeature_take_indices)Ú
checkpointÚcheckpoint_seq)Úregister_modelÚgenerate_default_cfgsÚregister_model_deprecationsÚTResNetc                   ó”   ‡ — e Zd ZdZ	 	 	 	 	 	 	 ddedededeej                     dedee	ej                        d	e
d
dfˆ fd„Zd„ Zˆ xZS )Ú
BasicBlockr   NÚinplanesÚplanesÚstrideÚ
downsampleÚuse_seÚaa_layerÚdrop_path_rateÚreturnc
                 óì  •— ||	dœ}
t         ‰| �  «        || _        || _        t	        t
        j                  d¬«      }t        ||fd|||dœ|
¤Ž| _        t        ||fddddœ|
¤Ž| _	        t        j                  d	¬
«      | _        t        || j                  z  dz  d«      }|rt        || j                  z  fd|i|
¤Žnd | _        |dkD  rt!        |«      | _        y t        j"                  «       | _        y )N©ÚdeviceÚdtypeçü©ñÒMbP?©Únegative_slopeé   ©Úkernel_sizer   Ú	act_layerr!   r   F©r-   r   Ú	apply_actT©Úinplaceé   é@   Úrd_channelsr   )ÚsuperÚ__init__r   r   r   ÚnnÚ	LeakyReLUr   Úconv1Úconv2ÚReLUÚactÚmaxÚ	expansionr   Úser   ÚIdentityÚ	drop_path)Úselfr   r   r   r   r    r!   r"   r&   r'   Úddr.   Úrd_chsÚ	__class__s                €ú^/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/tresnet.pyr7   zBasicBlock.__init__   sô   ø€ ð ¨Ñ/ˆÜ‰ÑÔØ$ˆŒØˆŒÜœBŸL™L¸Ô>ˆ	ä ØØð
ð ØØØñ
ð ñ
ˆŒ
ô ! ¨Ð`¸QÀqÐTYÑ`Ð]_Ñ`ˆŒ
Ü—7‘7 4Ô(ˆŒä�V˜dŸn™nÑ,°Ñ1°2Ó6ˆÙQW”(˜6 D§N¡NÑ2ÑMÀÐMÈ"ÒMÐ]aˆŒØ5CÀaÒ5Gœ .Ó1ˆ�ÌRÏ[É[Ë]ˆ�ó    c                 ó  — | j                   �| j                  |«      }n|}| j                  |«      }| j                  |«      }| j                  �| j                  |«      }| j	                  |«      |z   }| j                  |«      }|S ©N)r   r:   r;   r@   rB   r=   ©rC   ÚxÚshortcutÚouts       rG   ÚforwardzBasicBlock.forward=   su   € Ø�?‰?Ð&Ø—‘ qÓ)‰HàˆHØ�j‰j˜‹mˆØ�j‰j˜‹oˆØ�7‰7ÐØ—'‘'˜#“,ˆCØ�n‰n˜SÓ! HÑ,ˆØ�h‰h�s‹mˆØˆ
rH   )r   NTNç        NN©Ú__name__Ú
__module__Ú__qualname__r?   Úintr   r8   ÚModuleÚboolr	   Úfloatr7   rO   Ú__classcell__©rF   s   @rG   r   r      s—   ø„ Ø€Ið Ø.2ØØ26Ø$&ØØñ [àð [ð ð [ð ð	 [ð
 ! §¡Ñ+ð [ð ð [ð ˜t B§I¡I™Ñ/ð [ð "ð [ð 
õ [öDrH   r   c                   óº   ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 ddedededeej                     dedee	ej                        d	ee	ej                        d
e
ddfˆ fd„Zd„ Zˆ xZS )Ú
Bottleneckr3   Nr   r   r   r   r    r.   r!   r"   r#   c                 ó  •— |	|
dœ}t         ‰| �  «        || _        || _        |xs t	        t
        j                  d¬«      }t        ||fdd|dœ|¤Ž| _        t        ||fd|||dœ|¤Ž| _	        t        || j                  z  dz  d	«      }|rt        |fd
|i|¤Žnd | _        t        ||| j                  z  fddddœ|¤Ž| _        |dkD  rt        |«      nt        j                   «       | _        t        j$                  d¬«      | _        y )Nr%   r(   r)   r   )r-   r   r.   r+   r,   é   r4   r5   Fr/   r   Tr1   )r6   r7   r   r   r   r8   r9   r   r:   r;   r>   r?   r   r@   Úconv3r   rA   rB   r<   r=   )rC   r   r   r   r   r    r.   r!   r"   r&   r'   rD   Úreduction_chsrF   s                €rG   r7   zBottleneck.__init__N   s  ø€ ð ¨Ñ/ˆÜ‰ÑÔØ$ˆŒØˆŒØÒK¤¬¯©ÀdÔ!Kˆ	ä  ¨6Ðf¸qÈÐV_ÑfÐceÑfˆŒ
Ü ØØð
ð ØØØñ
ð ñ
ˆŒ
ô ˜F T§^¡^Ñ3°qÑ8¸"Ó=ˆÙGM”(˜6ÑC¨}ÐCÀÒCÐSWˆŒä  ¨°$·.±.Ñ)@ÐqÈaÐXYÐejÑqÐnpÑqˆŒ
à5CÀaÒ5Gœ .Ô1ÌRÏ[É[Ë]ˆŒÜ—7‘7 4Ô(ˆ�rH   c                 ó0  — | j                   �| j                  |«      }n|}| j                  |«      }| j                  |«      }| j                  �| j                  |«      }| j	                  |«      }| j                  |«      |z   }| j                  |«      }|S rJ   )r   r:   r;   r@   r_   rB   r=   rK   s       rG   rO   zBottleneck.forwardt   s‚   € Ø�?‰?Ð&Ø—‘ qÓ)‰HàˆHØ�j‰j˜‹mˆØ�j‰j˜‹oˆØ�7‰7ÐØ—'‘'˜#“,ˆCØ�j‰j˜‹oˆØ�n‰n˜SÓ! HÑ,ˆØ�h‰h�s‹mˆØˆ
rH   )r   NTNNrP   NNrQ   rZ   s   @rG   r\   r\   K   s¨   ø„ Ø€Ið Ø.2ØØ37Ø26Ø$&ØØñ$)àð$)ð ð$)ð ð	$)ð
 ! §¡Ñ+ð$)ð ð$)ð    R§Y¡Y¡Ñ0ð$)ð ˜t B§I¡I™Ñ/ð$)ð "ð$)ð 
õ$)öLrH   r\   c                   óL  ‡ — e Zd Z	 	 	 	 	 	 	 	 	 ddee   dedededededed	ed
dfˆ fd„Z	 	 	 	 	 	 d d„Z	e
j                  j                  d!d„«       Ze
j                  j                  d"d„«       Ze
j                  j                  d
ej                   fd„«       Zd#dedee   fd„Z	 	 	 	 	 d$de
j(                  deeeee   f      dedededed
eee
j(                     ee
j(                  ee
j(                     f   f   fd„Z	 	 	 d%deeee   f   dedefd„Zd„ Zd!defd„Zd„ Zˆ xZS )&r   NÚlayersÚin_chansÚnum_classesÚwidth_factorÚv2Úglobal_poolÚ	drop_rater"   r#   c                 ó|  •— t         ‰| �  «        |	|
dœ}|| _        || _        || _        d| _        t        }t        j                  }t        d|z  «      | _
        t        d|z  «      | _        |r.| j                  dz  dz  | _
        | j                  dz  dz  | _        t        ||d¬«      }t        |dz  | j                  fdd	|d
œ|¤Ž} | j                  |rt        nt         | j                  |d   fdd||d   dœ|¤Ž} | j                  |rt        nt         | j                  dz  |d   fdd||d   dœ|¤Ž} | j                  t        | j                  dz  |d   fdd||d   dœ|¤Ž} | j                  t        | j                  dz  |d	   fdd||d	   dœ|¤Ž}t        j"                  t%        dt'        «       fd|fd|fd|fd|fd|fg«      «      | _        t+        | j                  dd¬«      t+        | j                  |rt        j,                  ndz  dd¬«      t+        | j                  dz  |rt        j,                  ndz  dd¬«      t+        | j                  dz  t        j,                  z  dd¬«      t+        | j                  dz  t        j,                  z  dd¬«      g| _        | j                  dz  t        j,                  z  x| _        | _        t5        | j0                  |f||dœ|¤Ž| _        | j9                  «       D ]‰  }t;        |t        j<                  «      r,t        j>                  jA                  |jB                  dd¬«       t;        |t        jD                  «      sŒd|jB                  jF                  jI                  dd «       Œ‹ | j9                  «       D ]�  }t;        |t         «      r=t        j>                  jK                  |jL                  jN                  jB                  «       t;        |t        «      sŒat        j>                  jK                  |jP                  jN                  jB                  «       ŒŸ y )!Nr%   Fr4   r^   T)Ú	stagewiseé   r   r+   )r   r-   r.   r   )r   r    r!   r"   é   r3   Ús2dr:   Úlayer1Úlayer2Úlayer3Úlayer4Ú )Únum_chsÚ	reductionÚmodulezbody.layer1zbody.layer2zbody.layer3é    zbody.layer4)Ú	pool_typeri   Úfan_outÚ
leaky_relu)ÚmodeÚnonlinearityg{®Gáz„?))r6   r7   re   rd   ri   Úgrad_checkpointingr   r8   r9   rU   r   r   r   r   Ú_make_layerr\   r   Ú
Sequentialr   r
   ÚbodyÚdictr?   Úfeature_infoÚnum_featuresÚhead_hidden_sizer   ÚheadÚmodulesÚ
isinstanceÚConv2dÚinitÚkaiming_normal_ÚweightÚLinearÚdataÚnormal_Úzeros_r;   Úbnr_   )rC   rc   rd   re   rf   rg   rh   ri   r"   r&   r'   rD   r!   r.   Údprr:   ro   rp   rq   rr   ÚmrF   s                        €rG   r7   zTResNet.__init__„   só  ø€ ô 	‰ÑÔØ¨Ñ/ˆØ&ˆÔØ ˆŒØ"ˆŒØ"'ˆÔäˆÜ—L‘Lˆ	ô ˜B Ñ-Ó.ˆŒÜ˜"˜|Ñ+Ó,ˆŒÙØ ŸM™M¨QÑ.°Ñ2ˆDŒMØŸ+™+¨Ñ*¨QÑ.ˆDŒKä'¨¸È$ÔOˆÜ˜H r™M¨4¯;©;Ðk¸qÈaÐ[dÑkÐhjÑkˆØ!�×!Ñ!Ù�J¤*Ø�K‰K˜ ™ðkà+,°TÀHÐ]`ÐabÑ]cñkàgiñkˆð "�×!Ñ!Ù�J¤*Ø�K‰K˜!‰O˜V A™Yðoà/0¸ÈÐadÐefÑagñoàkmñoˆð "�×!Ñ!ÜØ�K‰K˜!‰O˜V A™Yðoà/0¸ÈÐadÐefÑagñoàkmñoˆð "�×!Ñ!ÜØ�K‰K˜!‰O˜V A™Yðpà/0¸ÈÐbeÐfgÑbhñpàlnñpˆô
 —M‘M¤+Ø”L“NÐ#Ø�eÐØ�vÐØ�vÐØ�vÐØ�vÐð/
ó #ó ˆŒ	ô ˜Ÿ™°¸"Ô=Ü˜Ÿ™Á¬
×(<Ò(<ÈÑJÐVWÐ`mÔnÜ˜Ÿ™ q™ÁB¬J×,@Ò,@ÈAÑNÐZ[ÐdqÔrÜ˜Ÿ™ q™¬:×+?Ñ+?Ñ?È2ÐVcÔdÜ˜Ÿ™ q™¬:×+?Ñ+?Ñ?È2ÐVcÔdð
ˆÔð 6:·[±[À1±_Ì
×H\ÑH\Ñ4\Ð\ˆÔ˜DÔ1Ü" 4×#4Ñ#4°kÐtÈ[ÐdmÑtÐqsÑtˆŒ	ð —‘“ò 	/ˆAÜ˜!œRŸY™YÔ'Ü—‘×'Ñ'¨¯©°yÈ|Ð'Ô\Ü˜!œRŸY™YÕ'Ø—‘—‘×%Ñ% a¨Õ.ð		/ð —‘“ò 	2ˆAÜ˜!œZÔ(Ü—‘—‘˜qŸw™wŸz™z×0Ñ0Ô1Ü˜!œZÕ(Ü—‘—‘˜qŸw™wŸz™z×0Ñ0Õ1ñ		2rH   c
                 ó4  — ||	dœ}
d }|dk7  s| j                   ||j                  z  k7  rmg }|dk(  r(|j                  t        j                  dddd¬«      «       |t        | j                   ||j                  z  fddddœ|
¤Žgz  }t        j                  |Ž }g }t        |«      D ]b  }|j                   || j                   |f|dk(  r|nd|dk(  r|nd ||t        |t        «      r||   n|d	œ|
¤Ž«       ||j                  z  | _         Œd t        j                  |Ž S )
Nr%   r   rm   TF)r-   r   Ú	ceil_modeÚcount_include_padr/   r   )r   r   r    r!   r"   )
r   r?   Úappendr8   Ú	AvgPool2dr   r   Úranger‡   Úlist)rC   Úblockr   Úblocksr   r    r!   r"   r&   r'   rD   r   rc   Úis                 rG   r~   zTResNet._make_layerÕ   s?  € ð ¨Ñ/ˆàˆ
Ø�QŠ;˜$Ÿ-™-¨6°E·O±OÑ+CÒCØˆFØ˜Š{à—‘œbŸl™l°qÀÈdÐfkÔlÔmØ”{Ø—‘˜v¨¯©Ñ7ðiØEFÈqÐ\añiØegñið jñ jˆFäŸ™¨Ð/ˆJàˆÜ�v“ò 	5ˆAØ�M‰M™%Ø—‘Øð	ð "# a¢‘v¨QØ)*¨aª™:°TØØ!Ü4>¸~ÌtÔ4T˜~¨aÒ0ÐZhñ	ð ñ	ô 	ð # U§_¡_Ñ4ˆD�Mð	5ô �}‰}˜fÐ%Ð%rH   c                 ó(   — t        d|rdnd¬«      }|S )Nz^body\.conv1z^body\.layer(\d+)z^body\.layer(\d+)\.(\d+))Ústemr›   )r�   )rC   ÚcoarseÚmatchers      rG   Úgroup_matcherzTResNet.group_matcherü   s   € ä˜OÉFÑ4HÐXsÔtˆØˆrH   c                 ó   — || _         y rJ   )r}   )rC   Úenables     rG   Úset_grad_checkpointingzTResNet.set_grad_checkpointing  s
   € à"(ˆÕrH   c                 ó.   — | j                   j                  S rJ   )r…   Úfc)rC   s    rG   Úget_classifierzTResNet.get_classifier  s   € à�y‰y�|‰|ÐrH   c                 óL   — || _         | j                  j                  ||¬«       y )N)rx   )re   r…   Úreset)rC   re   rh   s      rG   Úreset_classifierzTResNet.reset_classifier	  s   € Ø&ˆÔØ�	‰	�‰˜¨{ˆÕ;rH   rL   ÚindicesÚnormÚ
stop_earlyÚ
output_fmtÚintermediates_onlyc                 óê  — |dv sJ d«       ‚g }g d¢}t        t        |«      |«      \  }	}
|	D �cg c]  }||   ‘Œ	 }	}||
   }
t        j                  j	                  «       s|s| j
                  }n| j
                  d|
dz    }t        |«      D ]Z  \  }}| j                  r+t        j                  j	                  «       st        ||«      }n ||«      }||	v sŒJ|j                  |«       Œ\ |r|S ||fS c c}w )aï   Forward features that returns intermediates.

        Args:
            x: Input image tensor
            indices: Take last n blocks if int, all if None, select matching indices if sequence
            norm: Apply norm layer to compatible intermediates
            stop_early: Stop iterating over blocks when last desired intermediate hit
            output_fmt: Shape of intermediate feature outputs
            intermediates_only: Only return intermediate features
        Returns:

        )ÚNCHWzOutput shape must be NCHW.©r   rm   r+   r3   é   Nr   )
r   ÚlenÚtorchÚjitÚis_scriptingr€   Ú	enumerater}   r   r–   )rC   rL   r«   r¬   r­   r®   r¯   ÚintermediatesÚ
stage_endsÚtake_indicesÚ	max_indexrœ   ÚstagesÚfeat_idxÚstages                  rG   Úforward_intermediateszTResNet.forward_intermediates  sý   € ð* ˜YÑ&ÐDÐ(DÓDÐ&ØˆÚ$ˆ
Ü"6´s¸:³ÈÓ"PÑˆ�iØ/;Ö<¨!˜
 1›Ð<ˆÐ<Ø˜yÑ)ˆ	ä�9‰9×!Ñ!Ô#©:Ø—Y‘Y‰Fà—Y‘Y˜~ 	¨A¡Ð.ˆFä(¨Ó0ò 	(‰OˆH�eØ×&Ò&¬u¯y©y×/EÑ/EÔ/GÜ˜u aÓ(‘á˜!“H�Ø˜<Ò'Ø×$Ñ$ QÕ'ð	(ñ Ø Ð à�-ÐÐùò' =s   ®C0Ú
prune_normÚ
prune_headc                 óž   — g d¢}t        t        |«      |«      \  }}||   }| j                  d|dz    | _        |r| j                  dd«       |S )z@ Prune layers not required for specified intermediates.
        r²   Nr   r   rs   )r   r´   r€   rª   )rC   r«   rÁ   rÂ   rº   r»   r¼   s          rG   Úprune_intermediate_layersz!TResNet.prune_intermediate_layers;  sW   € ò %ˆ
Ü"6´s¸:³ÈÓ"PÑˆ�iØ˜yÑ)ˆ	Ø—I‘I˜n˜y¨1™}Ð-ˆŒ	ÙØ×!Ñ! ! RÔ(ØÐrH   c                 ó°  — | j                   r¸t        j                  j                  «       sš| j                  j                  |«      }| j                  j                  |«      }t        | j                  j                  | j                  j                  | j                  j                  | j                  j                  g|d¬«      }|S | j	                  |«      }|S )NT)Úflatten)r}   rµ   r¶   r·   r€   rn   r:   r   ro   rp   rq   rr   ©rC   rL   s     rG   Úforward_featureszTResNet.forward_featuresK  s£   € Ø×"Ò"¬5¯9©9×+AÑ+AÔ+CØ—	‘	—‘˜aÓ ˆAØ—	‘	—‘ Ó"ˆAÜØ—	‘	× Ñ Ø—	‘	× Ñ Ø—	‘	× Ñ Ø—	‘	× Ñ ð	 "ð
 ˜4ô!ˆAð ˆð —	‘	˜!“ˆAØˆrH   Ú
pre_logitsc                 óN   — |r| j                  ||¬«      S | j                  |«      S )N)rÉ   )r…   )rC   rL   rÉ   s      rG   Úforward_headzTResNet.forward_headY  s%   € Ù6@ˆt�y‰y˜ zˆyÓ2ÐRÀdÇiÁiÐPQÃlÐRrH   c                 óJ   — | j                  |«      }| j                  |«      }|S rJ   )rÈ   rË   rÇ   s     rG   rO   zTResNet.forward\  s'   € Ø×!Ñ! !Ó$ˆØ×Ñ˜aÓ ˆØˆrH   )	r+   éè  ç      ð?FÚfastrP   rP   NN)r   TNrP   NN©F)TrJ   )NFFr±   F)r   FT)rR   rS   rT   r   rU   rX   rW   Ústrr7   r~   rµ   r¶   Úignorer¡   r¤   r8   rV   r§   r   rª   ÚTensorr   r   rÀ   rÄ   rÈ   rË   rO   rY   rZ   s   @rG   r   r   ƒ   s  ø„ ð Ø#Ø"%ØØ%Ø!Ø$&ØØñO2à˜‘IðO2ð ðO2ð ð	O2ð
  ðO2ð ðO2ð ðO2ð ðO2ð "ðO2ð 
õO2ðl ØØØØØó%&ðN ‡Y�Y×Ñòó ðð ‡Y�Y×Ñò)ó ð)ð ‡Y�Y×Ñð §	¡	ò ó ðñ<¨Cð <¸hÀs¹mó <ð 8<ØØ$Ø$Ø',ñ, à�|‰|ð, ð ˜e C¨¨c© NÑ3Ñ4ð, ð ð	, ð
 ð, ð ð, ð !%ð, ð 
ˆt�E—L‘LÑ! 5¨¯©°t¸E¿L¹LÑ7IÐ)IÑ#JÐJÑ	Kó, ð` ./Ø$Ø#ñ	à˜3  S¡	˜>Ñ*ðð ðð ó	ò ñS¨$ó SörH   c                 óð  — d| v r| S dd l }| j                  d| «      } | j                  d| «      } i }| j                  «       D ]²  \  }}|j                  dd„ |«      }|j                  dd„ |«      }|j                  d	d
„ |«      }|j                  dd„ |«      }|j                  dd„ |«      }|j                  dd„ |«      }|j	                  d«      r|j                  «       j                  d«      }|||<   Œ´ |S )Nzbody.conv1.conv.weightr   ÚmodelÚ
state_dictzconv(\d+)\.0.0c                 ó>   — dt        | j                  d«      «      › d�S ©NÚconvr   ú.conv©rU   Úgroup©rL   s    rG   ú<lambda>z&checkpoint_filter_fn.<locals>.<lambda>k  s   € °$´s¸1¿7¹7À1»:³Ð6GÀuÐ0M€ rH   zconv(\d+)\.0.1c                 ó>   — dt        | j                  d«      «      › d�S ©NrÙ   r   ú.bnrÛ   rÝ   s    rG   rÞ   z&checkpoint_filter_fn.<locals>.<lambda>l  s   € °$´s¸1¿7¹7À1»:³Ð6GÀsÐ0K€ rH   zconv(\d+)\.0c                 ó>   — dt        | j                  d«      «      › d�S rØ   rÛ   rÝ   s    rG   rÞ   z&checkpoint_filter_fn.<locals>.<lambda>m  s   € °´S¸¿¹À»³_Ð4EÀUÐ.K€ rH   zconv(\d+)\.1c                 ó>   — dt        | j                  d«      «      › d�S rà   rÛ   rÝ   s    rG   rÞ   z&checkpoint_filter_fn.<locals>.<lambda>n  s   € °´S¸¿¹À»³_Ð4EÀSÐ.I€ rH   zdownsample\.(\d+)\.0c                 ó>   — dt        | j                  d«      «      › d�S )Núdownsample.r   rÚ   rÛ   rÝ   s    rG   rÞ   z&checkpoint_filter_fn.<locals>.<lambda>o  s   € ¸ÄCÈÏÉÐPQË
ÃOÐCTÐTYÐ6Z€ rH   zdownsample\.(\d+)\.1c                 ó>   — dt        | j                  d«      «      › d�S )Nrå   r   rá   rÛ   rÝ   s    rG   rÞ   z&checkpoint_filter_fn.<locals>.<lambda>p  s   € ¸ÄCÈÏÉÐPQË
ÃOÐCTÐTWÐ6X€ rH   z	bn.weightgñhãˆµøä>)ÚreÚgetÚitemsÚsubÚendswithÚabsÚadd)rÖ   rÕ   rç   Úout_dictÚkÚvs         rG   Úcheckpoint_filter_fnrñ   b  sü   € Ø :Ñ-ØÐãØ—‘ ¨Ó4€JØ—‘ ¨jÓ9€JØ€HØ× Ñ Ó"ò 
‰ˆˆ1Ø�F‰FÐ$Ñ&MÈqÓQˆØ�F‰FÐ$Ñ&KÈQÓOˆØ�F‰F�?Ñ$KÈQÓOˆØ�F‰F�?Ñ$IÈ1ÓMˆØ�F‰FÐ*Ñ,ZÐ\]Ó^ˆØ�F‰FÐ*Ñ,XÐZ[Ó\ˆØ�:‰:�kÔ"à—‘“—‘˜DÓ!ˆAØˆ�Šð
ð €OrH   c                 óJ   — t        t        | |ft        t        dd¬«      dœ|¤ŽS )N)r   rm   r+   r3   T)Úout_indicesÚflatten_sequential)Úpretrained_filter_fnÚfeature_cfg)r   r   rñ   r�   )ÚvariantÚ
pretrainedÚkwargss      rG   Ú_create_tresnetrú   x  s6   € ÜÜØØðô 2Ü \ÀdÔKñð ñð rH   c                 ó"   — | ddddddddd	d
dœ|¥S )NrÍ   )r+   éà   rü   )é   rý   g      ì?Úbilinear)rP   rP   rP   )rÎ   rÎ   rÎ   zbody.conv1.convzhead.fcz
apache-2.0)Úurlre   Ú
input_sizeÚ	pool_sizeÚcrop_pctÚinterpolationÚmeanÚstdÚ
first_convÚ
classifierÚlicense© )rÿ   rù   s     rG   Ú_cfgr
  ƒ  s2   € à 4°}ÐSYØ¨JØ \Ø'°yØñð ðð rH   ztimm/)Ú	hf_hub_idiÕ+  )r  re   )r+   éÀ  r  )é   r  )r   r  r  )
ztresnet_m.miil_in21k_ft_in1kútresnet_m.miil_in21kztresnet_m.miil_in1kztresnet_l.miil_in1kztresnet_xl.miil_in1kútresnet_m.miil_in1k_448útresnet_l.miil_in1k_448útresnet_xl.miil_in1k_448ztresnet_v2_l.miil_in21k_ft_in1kztresnet_v2_l.miil_in21kr#   c           	      óL   — t        g d¢¬«      }t        dd| it        |fi |¤Ž¤ŽS )N)r+   r3   é   r+   )rc   rø   )Ú	tresnet_m©r�   rú   ©rø   rù   Ú
model_argss      rG   r  r  £  s*   € äš]Ô+€JÜÑ\°:Ð\ÄÀjÑA[ÐTZÑA[Ñ\Ð\rH   c           	      óN   — t        g d¢d¬«      }t        dd| it        |fi |¤Ž¤ŽS )N)r3   r³   é   r+   g333333ó?©rc   rf   rø   )Ú	tresnet_lr  r  s      rG   r  r  ©  s,   € äš]¸Ô=€JÜÑ\°:Ð\ÄÀjÑA[ÐTZÑA[Ñ\Ð\rH   c           	      óN   — t        g d¢d¬«      }t        dd| it        |fi |¤Ž¤ŽS )N)r3   r³   é   r+   gÍÌÌÌÌÌô?r  rø   )Ú
tresnet_xlr  r  s      rG   r  r  ¯  s,   € äš]¸Ô=€JÜÑ]°JÐ]Ä$ÀzÑB\ÐU[ÑB\Ñ]Ð]rH   c           	      óP   — t        g d¢dd¬«      }t        dd| it        |fi |¤Ž¤ŽS )N)r+   r3   é   r+   rÎ   T)rc   rf   rg   rø   )Útresnet_v2_lr  r  s      rG   r!  r!  µ  s.   € äš]¸ÀÔF€JÜÑ_°jÐ_ÄDÈÑD^ÐW]ÑD^Ñ_Ð_rH   r  r  r  r  )Útresnet_m_miil_in21kÚtresnet_m_448Útresnet_l_448Útresnet_xl_448rÐ   )rs   )/Ú__doc__Úcollectionsr   Ú	functoolsr   Útypingr   r   r   r   r	   rµ   Útorch.nnr8   Útimm.layersr
   r   r   r   r   r   r   Ú_builderr   Ú	_featuresr   Ú_manipulater   r   Ú	_registryr   r   r   Ú__all__rV   r   r\   r   rñ   rú   r
  Údefault_cfgsr  r  r  r!  rR   r	  rH   rG   ú<module>r2     s™  ðñõ $Ý ß 5Õ 5ã Ý ç |× |Ñ |Ý *Ý +ß 3ß YÑ Yàˆ+€ô0�—‘ô 0ôf5�—‘ô 5ôp\ˆb�i‰iô \ò~ó,óñ %Ù$(°7Ô$;Ù ¨7ÀÔFÙ¨'Ô2Ù¨'Ô2Ù ¨7Ô3Ù#Ø ¨HØô ñ  $Ø ¨HØô ñ !%Ø ¨HØô!ñ (,°gÔ'>Ù#¨gÀ5ÔIñ#&ó €ð* ñ]¨Wò ]ó ð]ð
 ñ]¨Wò ]ó ð]ð
 ñ^¨gò ^ó ð^ð
 ñ`°ò `ó ð`ñ
 ˜HØ2Ø.Ø.Ø0ñ	'õ rH   