Ë
    éÓ^jýP  ã                   óv  — d Z ddl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 ddlmZ ddlmZmZ d	gZ G d
„ de	j*                  «      Z G d„ de	j*                  «      Z G d„ de	j*                  «      Z G d„ de	j*                  «      Z G d„ de	j*                  «      Z G d„ d	e	j*                  «      Zd)d„Zd*d„Z e ed¬«       ed¬«       ed¬«       ed¬«       ed¬«       ed¬«       ed¬«       ed¬«       ed¬«       ed¬«       edd¬«       edd¬«      dœ«      Zed)defd„«       Ze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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d)defd'„«       Z)ed)defd(„«       Z*y)+af   Deep Layer Aggregation and DLA w/ Res2Net
DLA original adapted from Official Pytorch impl at: https://github.com/ucbdrive/dla
DLA Paper: `Deep Layer Aggregation` - https://arxiv.org/abs/1707.06484

Res2Net additions from: https://github.com/gasvn/Res2Net/
Res2Net Paper: `Res2Net: A New Multi-scale Backbone Architecture` - https://arxiv.org/abs/1904.01169
é    N)ÚListÚOptionalÚTupleÚType©ÚIMAGENET_DEFAULT_MEANÚIMAGENET_DEFAULT_STD)Úcreate_classifieré   )Úbuild_model_with_cfg)Úregister_modelÚgenerate_default_cfgsÚDLAc            	       óŠ   ‡ — e Zd ZdZ	 	 	 	 d
dedededefˆ fd„Zddeej                     dee	ej                        fd	„Z
ˆ xZS )ÚDlaBasicz	DLA BasicÚinplanesÚplanesÚstrideÚdilationc           	      ód  •— ||dœ}t         ‰	| �  «        t        j                  ||fd||d|dœ|¤Ž| _        t        j
                  |fi |¤Ž| _        t        j                  d¬«      | _        t        j                  ||fdd|d|dœ|¤Ž| _	        t        j
                  |fi |¤Ž| _
        || _        y )N©ÚdeviceÚdtypeé   F©Úkernel_sizer   ÚpaddingÚbiasr   T©Úinplacer   )ÚsuperÚ__init__ÚnnÚConv2dÚconv1ÚBatchNorm2dÚbn1ÚReLUÚreluÚconv2Úbn2r   )
Úselfr   r   r   r   r   r   Ú_ÚddÚ	__class__s
            €úZ/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/dla.pyr"   zDlaBasic.__init__   sË   ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ—Y‘YØØð	
ð ØØØØñ	
ð ñ	
ˆŒ
ô —>‘> &Ñ/¨BÑ/ˆŒÜ—G‘G DÔ)ˆŒ	Ü—Y‘YØØð	
ð ØØØØñ	
ð ñ	
ˆŒ
ô —>‘> &Ñ/¨BÑ/ˆŒØˆ�ó    ÚshortcutÚchildrenc                 óä   — |€|}| j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j	                  |«      }||z  }| j                  |«      }|S ©N)r%   r'   r)   r*   r+   ©r,   Úxr2   r3   Úouts        r0   ÚforwardzDlaBasic.forward>   si   € ØÐØˆHà�j‰j˜‹mˆØ�h‰h�s‹mˆØ�i‰i˜‹nˆà�j‰j˜‹oˆØ�h‰h�s‹mˆàˆx‰ˆØ�i‰i˜‹nˆàˆ
r1   ©r   r   NN©NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr"   r   ÚtorchÚTensorr   r9   Ú__classcell__©r/   s   @r0   r   r      sn   ø„ Ùð ØØØñ#àð#ð ð#ð ð	#ð
 õ#ñJ 8¨E¯L©LÑ#9ð ÈHÐUYÐZ_×ZfÑZfÑUgÑLh÷ r1   r   c                   óš   ‡ — e Zd ZdZdZ	 	 	 	 	 	 ddedededededefˆ fd	„Zdd
eej                     dee
ej                        fd„Zˆ xZS )ÚDlaBottleneckzDLA/DLA-X Bottlenecké   r   Ú	outplanesr   r   ÚcardinalityÚ
base_widthc	           
      ó@  •— ||dœ}	t         ‰| �  «        || _        t        t	        j
                  ||dz  z  «      |z  «      }
|
| j                  z  }
t        j                  ||
fdddœ|	¤Ž| _	        t        j                  |
fi |	¤Ž| _        t        j                  |
|
fd||d||dœ|	¤Ž| _        t        j                  |
fi |	¤Ž| _        t        j                  |
|fdddœ|	¤Ž| _        t        j                  |fi |	¤Ž| _        t        j                   d¬	«      | _        y )
Nr   é@   r   F©r   r   r   )r   r   r   r   r   ÚgroupsTr   )r!   r"   r   r@   ÚmathÚfloorÚ	expansionr#   r$   r%   r&   r'   r*   r+   Úconv3Úbn3r(   r)   )r,   r   rH   r   r   rI   rJ   r   r   r.   Ú
mid_planesr/   s              €r0   r"   zDlaBottleneck.__init__S   s  ø€ ð ¨Ñ/ˆÜ‰ÑÔØˆŒÜœŸ™ I°¸b±Ñ$AÓBÀ[ÑPÓQˆ
Ø 4§>¡>Ñ1ˆ
ä—Y‘Y˜x¨ÐUÀÈÑUÐRTÑUˆŒ
Ü—>‘> *Ñ3°Ñ3ˆŒÜ—Y‘YØØð

ð ØØØØØñ

ð ñ

ˆŒ
ô —>‘> *Ñ3°Ñ3ˆŒÜ—Y‘Y˜z¨9ÐVÀ!È%ÑVÐSUÑVˆŒ
Ü—>‘> )Ñ2¨rÑ2ˆŒÜ—G‘G DÔ)ˆ�	r1   r2   r3   c                 óJ  — |€|}| j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j	                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }||z  }| j                  |«      }|S r5   )r%   r'   r)   r*   r+   rR   rS   r6   s        r0   r9   zDlaBottleneck.forwardv   s�   € ØÐØˆHà�j‰j˜‹mˆØ�h‰h�s‹mˆØ�i‰i˜‹nˆà�j‰j˜‹oˆØ�h‰h�s‹mˆØ�i‰i˜‹nˆà�j‰j˜‹oˆØ�h‰h�s‹mˆàˆx‰ˆØ�i‰i˜‹nˆàˆ
r1   )r   r   r   rL   NNr;   ©r<   r=   r>   r?   rQ   r@   r"   r   rA   rB   r   r9   rC   rD   s   @r0   rF   rF   O   s�   ø„ ÙØ€Ið ØØØØØñ!*àð!*ð ð!*ð ð	!*ð
 ð!*ð ð!*ð õ!*ñF 8¨E¯L©LÑ#9ð ÈHÐUYÐZ_×ZfÑZfÑUgÑLh÷ r1   rF   c                   ó    ‡ — e Zd ZdZdZ	 	 	 	 	 	 	 ddedededededed	efˆ fd
„Zddeej                     dee
ej                        fd„Zˆ xZS )ÚDlaBottle2neckzj Res2Net/Res2NeXT DLA Bottleneck
    Adapted from https://github.com/gasvn/Res2Net/blob/master/dla.py
    rG   r   rH   r   r   ÚscalerI   rJ   c
                 ó   •— ||	dœ}
t         ‰| �  «        |dkD  | _        || _        t	        t        j                  ||dz  z  «      |z  «      }|| j                  z  }|| _        t        j                  |||z  fdddœ|
¤Ž| _        t        j                  ||z  fi |
¤Ž| _        t        d|dz
  «      }g }g }t        |«      D ]T  }|j!                  t        j                  ||fd||||ddœ|
¤Ž«       |j!                  t        j                  |fi |
¤Ž«       ŒV t        j"                  |«      | _        t        j"                  |«      | _        | j                  rt        j(                  d|d¬«      nd | _        t        j                  ||z  |fdddœ|
¤Ž| _        t        j                  |fi |
¤Ž| _        t        j0                  d	¬
«      | _        y )Nr   r   rL   FrM   r   )r   r   r   r   rN   r   )r   r   r   Tr   )r!   r"   Úis_firstrY   r@   rO   rP   rQ   Úwidthr#   r$   r%   r&   r'   ÚmaxÚrangeÚappendÚ
ModuleListÚconvsÚbnsÚ	AvgPool2dÚpoolrR   rS   r(   r)   )r,   r   rH   r   r   rY   rI   rJ   r   r   r.   rT   Únum_scale_convsra   rb   r-   r/   s                   €r0   r"   zDlaBottle2neck.__init__‘   s´  ø€ ð ¨Ñ/ˆÜ‰ÑÔØ ™
ˆŒØˆŒ
ÜœŸ™ I°¸b±Ñ$AÓBÀ[ÑPÓQˆ
Ø 4§>¡>Ñ1ˆ
ØˆŒ
ä—Y‘Y˜x¨°eÑ);Ð]ÈÐQVÑ]ÐZ\Ñ]ˆŒ
Ü—>‘> *¨uÑ"4Ñ;¸Ñ;ˆŒä˜a ¨¡Ó+ˆØˆØˆÜ�Ó'ò 	9ˆAØ�L‰LœŸ™ØØð
ð ØØ Ø!Ø"Øñ
ð ñ
ô 
ð �J‰J”r—~‘~ jÑ7°BÑ7Õ8ð	9ô —]‘] 5Ó)ˆŒ
Ü—=‘= Ó%ˆŒØMQÏ]Ê]”B—L‘L¨Q°vÀqÕIÐ`dˆŒ	ä—Y‘Y˜z¨EÑ1°9Ð^È!ÐRWÑ^Ð[]Ñ^ˆŒ
Ü—>‘> )Ñ2¨rÑ2ˆŒÜ—G‘G DÔ)ˆ�	r1   r2   r3   c                 ó  — |€|}| j                  |«      }| j                  |«      }| j                  |«      }t        j                  || j
                  d«      }g }|d   }t        t        | j                  | j                  «      «      D ]Y  \  }\  }	}
|dk(  s| j                  r||   }n|||   z   } |	|«      } |
|«      }| j                  |«      }|j                  |«       Œ[ | j                  dkD  rD| j                  �$|j                  | j                  |d   «      «       n|j                  |d   «       t        j                  |d«      }| j                  |«      }| j!                  |«      }||z  }| j                  |«      }|S )Nr   r   éÿÿÿÿ)r%   r'   r)   rA   Úsplitr\   Ú	enumerateÚzipra   rb   r[   r_   rY   rd   ÚcatrR   rS   )r,   r7   r2   r3   r8   ÚspxÚspoÚspÚiÚconvÚbns              r0   r9   zDlaBottle2neck.forwardÀ   sU  € ØÐØˆHà�j‰j˜‹mˆØ�h‰h�s‹mˆØ�i‰i˜‹nˆä�k‰k˜#˜tŸz™z¨1Ó-ˆØˆØ�‰VˆÜ&¤s¨4¯:©:°t·x±xÓ'@ÓAò 	‰MˆA‰z��bØ�AŠv˜ŸšØ˜‘V‘à˜#˜a™&‘[�Ù�b“ˆBÙ�B“ˆBØ—‘˜2“ˆBØ�J‰J�r�Nð	ð �:‰:˜Š>Ø�y‰yÐ$Ø—
‘
˜4Ÿ9™9 S¨¡WÓ-Õ.à—
‘
˜3˜r™7Ô#Ü�i‰i˜˜QÓˆà�j‰j˜‹oˆØ�h‰h�s‹mˆàˆx‰ˆØ�i‰i˜‹nˆàˆ
r1   )r   r   é   é   rr   NNr;   rV   rD   s   @r0   rX   rX   ‹   sž   ø„ ñð €Ið ØØØ ØØØñ-*àð-*ð ð-*ð ð	-*ð
 ð-*ð ð-*ð ð-*ð õ-*ñ^! 8¨E¯L©LÑ#9ð !ÈHÐUYÐZ_×ZfÑZfÑUgÑLh÷ !r1   rX   c            	       ó\   ‡ — e Zd Z	 	 ddedededefˆ fd„Zdeej                     fd„Z	ˆ xZ
S )	ÚDlaRootÚin_channelsÚout_channelsr   r2   c                 óô   •— ||dœ}t         ‰| �  «        t        j                  ||dfdd|dz
  dz  dœ|¤Ž| _        t        j
                  |fi |¤Ž| _        t        j                  d¬«      | _        || _	        y )Nr   r   FrG   )r   r   r   Tr   )
r!   r"   r#   r$   rp   r&   rq   r(   r)   r2   )	r,   rv   rw   r   r2   r   r   r.   r/   s	           €r0   r"   zDlaRoot.__init__å   s„   ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ—I‘IØØØð
ð ØØ  1‘_¨Ñ*ñ
ð ñ
ˆŒ	ô —.‘. Ñ4°Ñ4ˆŒÜ—G‘G DÔ)ˆŒ	Ø ˆ�r1   Ú
x_childrenc                 ó¼   — | j                  t        j                  |d«      «      }| j                  |«      }| j                  r||d   z  }| j                  |«      }|S )Nr   r   )rp   rA   rk   rq   r2   r)   )r,   ry   r7   s      r0   r9   zDlaRoot.forwardý   sO   € Ø�I‰I”e—i‘i 
¨AÓ.Ó/ˆØ�G‰G�A‹JˆØ�=Š=Ø�˜A‘ÑˆAØ�I‰I�a‹Lˆàˆr1   r;   )r<   r=   r>   r@   Úboolr"   r   rA   rB   r9   rC   rD   s   @r0   ru   ru   ä   sK   ø„ ð Øñ!àð!ð ð!ð ð	!ð
 õ!ð0 $ u§|¡|Ñ"4÷ r1   ru   c                   óÌ   ‡ — e Zd Z	 	 	 	 	 	 	 	 	 	 ddedeej                     dedededededed	ed
ededefˆ fd„Zdde	e
j                     de	ee
j                        fd„Zˆ xZS )ÚDlaTreeÚlevelsÚblockrv   rw   r   r   rI   rJ   Ú
level_rootÚroot_dimÚroot_kernel_sizeÚroot_shortcutc           	      óò  •— ||dœ}t         ‰| �  «        |
dk(  rd|z  }
|	r|
|z  }
|dkD  rt        j                  ||¬«      nt        j                  «       | _        t        j                  «       | _        t        d|||dœ|¤Ž}|dk(  r‚ ||||fi |¤Ž| _         |||dfi |¤Ž| _	        ||k7  rHt        j                  t        j                  ||fddddœ|¤Žt        j                  |fi |¤Ž«      | _        t        |
|||fi |¤Ž| _        nY|j                  t        ||¬	«      «       t!        |dz
  ||||fd
di|¤Ž| _        t!        |dz
  |||fd
|
|z   i|¤Ž| _	        d | _        |	| _        |
| _        || _        y )Nr   r   rG   r   )r   )r   rI   rJ   F)r   r   r   )r‚   rƒ   r�   © )r!   r"   r#   Ú	MaxPool2dÚIdentityÚ
downsampleÚprojectÚdictÚtree1Útree2Ú
Sequentialr$   r&   ru   ÚrootÚupdater}   r€   r�   r~   )r,   r~   r   rv   rw   r   r   rI   rJ   r€   r�   r‚   rƒ   r   r   r.   Úcargsr/   s                    €r0   r"   zDlaTree.__init__  s±  ø€ ð" ¨Ñ/ˆÜ‰ÑÔØ�qŠ=Ø˜<Ñ'ˆHÙØ˜Ñ#ˆHØAGÈ!Âœ"Ÿ,™, v°fÕ=ÔQS×Q\ÑQ\ÓQ^ˆŒÜ—{‘{“}ˆŒÜÐ]˜h°KÈJÑ]ÐZ\Ñ]ˆØ�QŠ;Ù˜{¨L¸&ÑJÀEÑJˆDŒJÙ˜|¨\¸1ÑFÀÑFˆDŒJØ˜lÒ*ô  "Ÿ}™}Ü—I‘I˜k¨<ÐcÀQÈqÐW\ÑcÐ`bÑcÜ—N‘N <Ñ6°2Ñ6ó 8�”ô   ¨,Ð8HÈ-Ñ^Ð[]Ñ^ˆD�Ià�L‰LœÐ/?È}Ô]Ô^Ü Ø˜‘
ØØØØñð ðð ñˆDŒJô !Ø˜‘
ØØØñ	ð
 " LÑ0ðð ñˆDŒJð ˆDŒIØ$ˆŒØ ˆŒØˆ�r1   r2   r3   c                 ób  — |€g }| j                  |«      }| j                  |«      }| j                  r|j                  |«       | j	                  ||«      }| j
                  �)| j                  |«      }| j                  ||g|z   «      }|S |j                  |«       | j                  |d |«      }|S r5   )rˆ   r‰   r€   r_   r‹   rŽ   rŒ   )r,   r7   r2   r3   ÚbottomÚx1Úx2s          r0   r9   zDlaTree.forwardE  s¦   € ØÐØˆHØ—‘ Ó#ˆØ—<‘< Ó'ˆØ�?Š?Ø�O‰O˜FÔ#Ø�Z‰Z˜˜8Ó$ˆØ�9‰9Ð Ø—‘˜B“ˆBØ—	‘	˜2˜r˜( XÑ-Ó.ˆAð ˆð �O‰O˜BÔØ—
‘
˜2˜t XÓ.ˆAØˆr1   )
r   r   r   rL   Fr   r   FNNr;   )r<   r=   r>   r@   r   r#   ÚModuler{   r"   r   rA   rB   r   r9   rC   rD   s   @r0   r}   r}     sÕ   ø„ ð ØØ Ø Ø$ØØ$%Ø"'ØØñ;àð;ð ˜Ÿ	™	‘?ð;ð ð	;ð
 ð;ð ð;ð ð;ð ð;ð ð;ð ð;ð ð;ð "ð;ð  õ;ñz 8¨E¯L©LÑ#9ð ÈHÐUYÐZ_×ZfÑZfÑUgÑLh÷ r1   r}   c                   ó¢  ‡ — e Zd Zddddddeddd	d	fd
eedf   deedf   dededededededeej                     de
defˆ fd„Zd&dededededef
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fd!„Zd"„ Zd'd#e
fd$„Zd%„ Zˆ xZS )*r   é    éè  r   Úavgr   rL   Fg        Nr~   .ÚchannelsÚoutput_strideÚnum_classesÚin_chansÚglobal_poolrI   rJ   r   Úshortcut_rootÚ	drop_ratec           
      ó®  •— ||dœ}t         ‰| �  «        || _        || _        || _        || _        || _        |dk(  sJ ‚t        j                  t        j                  ||d   fdddddœ|¤Žt        j                  |d   fi |¤Žt        j                  d	¬
«      «      | _         | j                  |d   |d   |d   fi |¤Ž| _         | j                  |d   |d   |d   fddi|¤Ž| _        t!        d|||
dœ|¤Ž}t#        |d   |	|d   |d   dfddi|¤Ž| _        t#        |d   |	|d   |d   dfdd	i|¤Ž| _        t#        |d   |	|d   |d   dfdd	i|¤Ž| _        t#        |d   |	|d   |d   dfdd	i|¤Ž| _        t!        |d   dd¬«      t!        |d   dd¬«      t!        |d   dd¬«      t!        |d   dd¬«      t!        |d   dd¬«      t!        |d   dd¬«      g| _        |d   x| _        | _        t3        | j.                  | j                  f|d	|dœ|¤Ž\  | _        | _        | _        |rt        j:                  d«      nt        j<                  «       | _        | jA                  «       D ]é  }tC        |t        j                  «      ri|jD                  d   |jD                  d   z  |jF                  z  }|jH                  jJ                  jM                  dtO        jP                  d|z  «      «       Œ†tC        |t        j                  «      sŒ¡|jH                  jJ                  jS                  d«       |jT                  jJ                  jW                  «        Œë y )Nr   r—   r   é   r   r   F)r   r   r   r   Tr   r   rG   )rI   rJ   rƒ   r€   rr   é   Úlevel0)Únum_chsÚ	reductionÚmoduleÚlevel1Úlevel2rs   Úlevel3é   Úlevel4Úlevel5rg   )Ú	pool_typeÚuse_convr    g       @r…   ),r!   r"   rš   rœ   r�   rI   rJ   r#   r�   r$   r&   r(   Ú
base_layerÚ_make_conv_levelr¤   r¨   rŠ   r}   r©   rª   r¬   r­   Úfeature_infoÚnum_featuresÚhead_hidden_sizer
   rž   Ú	head_dropÚfcÚFlattenr‡   ÚflattenÚmodulesÚ
isinstancer   rw   ÚweightÚdataÚnormal_rO   ÚsqrtÚfill_r   Úzero_)r,   r~   rš   r›   rœ   r�   rž   rI   rJ   r   rŸ   r    r   r   r.   r�   ÚmÚnr/   s                     €r0   r"   zDLA.__init__W  sJ  ø€ ð  ¨Ñ/ˆÜ‰ÑÔØ ˆŒØ&ˆÔØ ˆŒØ&ˆÔØ$ˆŒØ Ò"Ð"Ð"äŸ-™-Ü�I‰I�h ¨¡Ðb¸À1ÈaÐV[ÑbÐ_aÑbÜ�N‰N˜8 A™;Ñ-¨"Ñ-Ü�G‰G˜DÔ!ó
ˆŒð
 ,�d×+Ñ+¨H°Q©K¸À!¹ÀfÈQÁiÑVÐSUÑVˆŒØ+�d×+Ñ+¨H°Q©K¸À!¹ÀfÈQÁiÑ`ÐXYÐ`Ð]_Ñ`ˆŒÜÐg ¸ÐS`ÑgÐdfÑgˆÜ˜f Q™i¨°¸±¸XÀa¹[È!ÑgÐX]ÐgÐafÑgˆŒÜ˜f Q™i¨°¸±¸XÀa¹[È!ÑfÐX\ÐfÐ`eÑfˆŒÜ˜f Q™i¨°¸±¸XÀa¹[È!ÑfÐX\ÐfÐ`eÑfˆŒÜ˜f Q™i¨°¸±¸XÀa¹[È!ÑfÐX\ÐfÐ`eÑfˆŒä˜ !™°¸(ÔCÜ˜ !™°¸(ÔCÜ˜ !™°¸(ÔCÜ˜ !™°¸(ÔCÜ˜ !™°¸8ÔDÜ˜ !™°¸8ÔDð
ˆÔð 5=¸R±LÐ@ˆÔ˜DÔ1Ü4EØ×ÑØ×Ñð5
ð "ØØñ5
ð ñ5
Ñ1ˆÔ˜$œ.¨$¬'ñ )4”r—z‘z !”}¼¿¹»ˆŒà—‘“ò 	$ˆAÜ˜!œRŸY™YÔ'Ø—M‘M !Ñ$ q§}¡}°QÑ'7Ñ7¸!¿.¹.ÑH�Ø—‘—‘×%Ñ% a¬¯©°2¸±6Ó):Õ;Ü˜AœrŸ~™~Õ.Ø—‘—‘×#Ñ# AÔ&Ø—‘—‘×!Ñ!Õ#ñ	$r1   r   r   ra   r   r   c                 ó  — ||dœ}g }	t        |«      D ]b  }
|	j                  t        j                  ||fd|
dk(  r|nd|d|dœ|¤Žt        j                  |fi |¤Žt        j
                  d¬«      g«       |}Œd t        j                  |	Ž S )	Nr   r   r   r   Fr   Tr   )r^   Úextendr#   r$   r&   r(   r�   )r,   r   r   ra   r   r   r   r   r.   r¹   ro   s              r0   r±   zDLA._make_conv_level˜  s¦   € Ø¨Ñ/ˆØˆÜ�u“ò 	ˆAØ�N‰NÜ—	‘	ØØð	ð !"Ø%&¨!¢V™6°Ø$ØØ%ñ	ð ñ	ô —‘˜vÑ,¨Ñ,Ü—‘ Ô%ð'ô (ð ‰Hð	ô �}‰}˜gÐ&Ð&r1   c                 ó,   — t        d|rdng d¢¬«      }|S )Nz^base_layerú^level(\d+)))z^level(\d+)\.tree(\d+)N)z^level(\d+)\.root)rG   )rÆ   )r   )ÚstemÚblocks)rŠ   )r,   ÚcoarseÚmatchers      r0   Úgroup_matcherzDLA.group_matcher¬  s    € äØÙ%+‘>ò 2ô
ˆð ˆr1   c                 ó   — |rJ d«       ‚y )Nz$gradient checkpointing not supportedr…   )r,   Úenables     r0   Úset_grad_checkpointingzDLA.set_grad_checkpointing¹  s   € áÐAÐAÓAˆz�6r1   Úreturnc                 ó   — | j                   S r5   )r¶   )r,   s    r0   Úget_classifierzDLA.get_classifier½  s   € à�w‰wˆr1   c                 óÞ   — || _         t        | j                  | j                   |d¬«      \  | _        | _        |rt        j                  d«      | _        y t        j                  «       | _        y )NT)r®   r¯   r   )	rœ   r
   r³   rž   r¶   r#   r·   r‡   r¸   )r,   rœ   rž   s      r0   Úreset_classifierzDLA.reset_classifierÁ  sR   € Ø&ˆÔÜ$5Ø×Ñ˜t×/Ñ/¸;ÐQUô%WÑ!ˆÔ˜$œ'á(3”r—z‘z !“}ˆ�¼¿¹»ˆ�r1   c                 óô   — | j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j	                  |«      }| j                  |«      }| j                  |«      }|S r5   )r°   r¤   r¨   r©   rª   r¬   r­   ©r,   r7   s     r0   Úforward_featureszDLA.forward_featuresÇ  sc   € Ø�O‰O˜AÓˆØ�K‰K˜‹NˆØ�K‰K˜‹NˆØ�K‰K˜‹NˆØ�K‰K˜‹NˆØ�K‰K˜‹NˆØ�K‰K˜‹NˆØˆr1   Ú
pre_logitsc                 ó°   — | j                  |«      }| j                  |«      }|r| j                  |«      S | j                  |«      }| j                  |«      S r5   )rž   rµ   r¸   r¶   )r,   r7   r×   s      r0   Úforward_headzDLA.forward_headÑ  sL   € Ø×Ñ˜QÓˆØ�N‰N˜1ÓˆÙØ—<‘< “?Ð"Ø�G‰G�A‹JˆØ�|‰|˜A‹Ðr1   c                 óJ   — | j                  |«      }| j                  |«      }|S r5   )rÖ   rÙ   rÕ   s     r0   r9   zDLA.forwardÙ  s'   € Ø×!Ñ! !Ó$ˆØ×Ñ˜aÓ ˆØˆr1   r:   ©F)T)r™   )r<   r=   r>   rX   r   r@   Ústrr   r#   r•   r{   Úfloatr"   r±   rA   ÚjitÚignorerË   rÎ   rÑ   rÓ   rÖ   rÙ   r9   rC   rD   s   @r0   r   r   V  sl  ø„ ð
 "$Ø#ØØ$Ø Ø Ø%3Ø"'Ø"ØØñ?$à˜#˜s˜(‘Oð?$ð ˜C ˜H‘oð?$ð ð	?$ð
 ð?$ð ð?$ð ð?$ð ð?$ð ð?$ð ˜Ÿ	™	‘?ð?$ð  ð?$ð õ?$ñB'¨ð '°cð 'À#ð 'Èsð 'Ðbeó 'ð( ‡Y�Y×Ñò
ó ð
ð ‡Y�Y×ÑòBó ðBð ‡Y�Y×Ñð §	¡	ò ó ðñG¨Cð G¸có Gòñ¨$ó ör1   c                 ó@   — t        t        | |fdt        d¬«      dœ|¤ŽS )NF)r   rG   r   rr   r£   )Úout_indices)Úpretrained_strictÚfeature_cfg)r   r   rŠ   )ÚvariantÚ
pretrainedÚkwargss      r0   Ú_create_dlarç   ß  s4   € ÜÜØØðð  Ü _Ô5ñð ñð r1   c                 ó2   — | dddddt         t        dddd	œ|¥S )
Nr˜   )r   éà   ré   )r¢   r¢   g      ì?Úbilinearzbase_layer.0r¶   zbsd-3-clause)Úurlrœ   Ú
input_sizeÚ	pool_sizeÚcrop_pctÚinterpolationÚmeanÚstdÚ
first_convÚ
classifierÚlicenser   )rë   ræ   s     r0   Ú_cfgrõ   ê  s2   € àØ¨=ÀvØ¨JÜ%Ô.BØ$°DÀ^ñð ðð r1   ztimm/)Ú	hf_hub_idÚunknown)rö   rô   )z
dla34.in1kzdla46_c.in1kzdla46x_c.in1kzdla60x_c.in1kz
dla60.in1kzdla60x.in1kzdla102.in1kzdla102x.in1kzdla102x2.in1kzdla169.in1kzdla60_res2net.in1kzdla60_res2next.in1krÏ   c           	      óX   — t        ddt        dd¬«      }t        d| fi t        |fi |¤Ž¤ŽS )N©r   r   r   rG   r   r   ©r«   r—   é€   é   é   i   r   é   ©r~   rš   r   rI   rJ   Údla60_res2net©rŠ   rX   rç   ©rå   ræ   Ú
model_argss      r0   r   r     s7   € äØ!Ð,IÜ¨!¸ô<€Jô �¨
ÑQ´d¸:Ñ6PÈÑ6PÑQÐQr1   c           	      óX   — t        ddt        dd¬«      }t        d| fi t        |fi |¤Ž¤ŽS )Nrù   rú   rs   rr   rÿ   Údla60_res2nextr  r  s      r0   r  r    s8   € äØ!Ð,IÜ¨!¸ô;€Jô Ð'¨ÑR´t¸JÑ7QÈ&Ñ7QÑRÐRr1   c           	      ó\   — t        g d¢g d¢t        ¬«      }t        d| fi t        |fi |¤Ž¤ŽS )N©r   r   r   rG   rG   r   )r«   r—   rL   rû   rü   rý   ©r~   rš   r   Údla34)rŠ   r   rç   r  s      r0   r	  r	    s1   € äÚ!Ò,GÌxôY€Jä�w 
ÑI¬d°:Ñ.HÀÑ.HÑIÐIr1   c           	      ó\   — t        g d¢g d¢t        ¬«      }t        d| fi t        |fi |¤Ž¤ŽS )Nr  ©r«   r—   rL   rL   rû   rü   r  Údla46_c©rŠ   rF   rç   r  s      r0   r  r    s1   € äÚ!Ò,FÌmô]€Jä�y *ÑK´°ZÑ0JÀ6Ñ0JÑKÐKr1   c           	      ó`   — t        g d¢g d¢t        dd¬«      }t        d| fi t        |fi |¤Ž¤ŽS )Nr  r  r—   rr   rÿ   Údla46x_cr  r  s      r0   r  r  #  ó7   € äÚ!Ò,FÜ¨¸ô;€Jô �z :ÑL´°jÑ1KÀFÑ1KÑLÐLr1   c           	      ó`   — t        g d¢g d¢t        dd¬«      }t        d| fi t        |fi |¤Ž¤ŽS )Nrù   r  r—   rr   rÿ   Údla60x_cr  r  s      r0   r  r  +  r  r1   c           	      ó\   — t        g d¢g d¢t        ¬«      }t        d| fi t        |fi |¤Ž¤ŽS )Nrù   rú   r  Údla60r  r  s      r0   r  r  3  s3   € äÚ!Ò,IÜô€Jô �w 
ÑI¬d°:Ñ.HÀÑ.HÑIÐIr1   c           	      ó`   — t        g d¢g d¢t        dd¬«      }t        d| fi t        |fi |¤Ž¤ŽS )Nrù   rú   r—   rr   rÿ   Údla60xr  r  s      r0   r  r  ;  s7   € äÚ!Ò,IÜ¨¸ô;€Jô �x ÑJ¬t°JÑ/IÀ&Ñ/IÑJÐJr1   c           	      ó^   — t        g d¢g d¢t        d¬«      }t        d| fi t        |fi |¤Ž¤ŽS )N©r   r   r   r   rr   r   rú   T©r~   rš   r   rŸ   Údla102r  r  s      r0   r  r  C  ó5   € äÚ!Ò,IÜ¨4ô1€Jô �x ÑJ¬t°JÑ/IÀ&Ñ/IÑJÐJr1   c           	      ób   — t        g d¢g d¢t        ddd¬«      }t        d| fi t        |fi |¤Ž¤ŽS )Nr  rú   r—   rr   T©r~   rš   r   rI   rJ   rŸ   Údla102xr  r  s      r0   r  r  K  s:   € äÚ!Ò,IÜ¨¸ÈôO€Jô �y *ÑK´°ZÑ0JÀ6Ñ0JÑKÐKr1   c           	      ób   — t        g d¢g d¢t        ddd¬«      }t        d| fi t        |fi |¤Ž¤ŽS )Nr  rú   rL   rr   Tr  Údla102x2r  r  s      r0   r   r   S  s:   € äÚ!Ò,IÜ¨¸ÈôO€Jô �z :ÑL´°jÑ1KÀFÑ1KÑLÐLr1   c           	      ó^   — t        g d¢g d¢t        d¬«      }t        d| fi t        |fi |¤Ž¤ŽS )N)r   r   rG   r   r£   r   rú   Tr  Údla169r  r  s      r0   r"  r"  [  r  r1   rÛ   )Ú )+r?   rO   Útypingr   r   r   r   rA   Útorch.nnr#   Ú	timm.datar   r	   Útimm.layersr
   Ú_builderr   Ú	_registryr   r   Ú__all__r•   r   rF   rX   ru   r}   r   rç   rõ   Údefault_cfgsr   r  r	  r  r  r  r  r  r  r  r   r"  r…   r1   r0   ú<module>r,     sy  ðñó ß .Ó .ã Ý ç AÝ )Ý *ß <àˆ'€ô6ˆr�y‰yô 6ôr9�B—I‘Iô 9ôxV�R—Y‘Yô Vôr ˆb�i‰iô  ôFLˆb�i‰iô Lô^Fˆ"�)‰)ô FóRóñ %Ù Ô)Ù 7Ô+Ù GÔ,Ù GÔ,Ù Ô)Ù 'Ô*Ù 'Ô*Ù 7Ô+Ù GÔ,Ù 'Ô*Ù¨¸)ÔDÙ¨'¸9ÔEñ&ó €ð  ñR°ò Ró ðRð òSó ðSð ñJ¨ò Jó ðJð ñL¨3ò Ló ðLð ñM¨Cò Mó ðMð ñM¨Cò Mó ðMð ñJ¨ò Jó ðJð ñK¨#ò Kó ðKð ñK¨#ò Kó ðKð ñL¨3ò Ló ðLð ñM¨Cò Mó ðMð ñK¨#ò Kó ñKr1   