Ë
    éÓ^j@  ã                   ó|  — 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mZ ddl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$d#d„Z%d$d„Z& e e&d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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)%a  Pytorch impl of Aligned Xception 41, 65, 71

This is a correct, from scratch impl of Aligned Xception (Deeplab) models compatible with TF weights at
https://github.com/tensorflow/models/blob/master/research/deeplab/g3doc/model_zoo.md

Hacked together by / Copyright 2020 Ross Wightman
é    )Úpartial)ÚListÚDictÚTypeÚOptionalN©ÚIMAGENET_INCEPTION_MEANÚIMAGENET_INCEPTION_STD)ÚClassifierHeadÚConvNormActÚDropPathÚPadTypeÚcreate_conv2dÚget_norm_act_layer)Ú	to_3tupleé   )Úbuild_model_with_cfg)Úcheckpoint_seq)Úregister_modelÚgenerate_default_cfgsÚXceptionAlignedc                   ó´   ‡ — e Zd Zddddej                  ej
                  ddfdedededed	ed
edeej                     deej                     fˆ fd„Z
d„ Zˆ xZS )ÚSeparableConv2dé   r   Ú NÚin_chsÚout_chsÚkernel_sizeÚstrideÚdilationÚpaddingÚ	act_layerÚ
norm_layerc                 ót  •— |	|
dœ}t         ‰| �  «        || _        || _        t	        |||f|||ddœ|¤Ž| _         ||fi |¤Ž| _        |�	 |d¬«      nt        j                  «       | _	        t	        ||fddi|¤Ž| _
         ||fi |¤Ž| _        |� |d¬«      | _        y t        j                  «       | _        y )N©ÚdeviceÚdtypeT©r   r!   r    Ú	depthwise©Úinplacer   r   )ÚsuperÚ__init__r   r    r   Úconv_dwÚbn_dwÚnnÚIdentityÚact_dwÚconv_pwÚbn_pwÚact_pw)Úselfr   r   r   r   r    r!   r"   r#   r&   r'   ÚddÚ	__class__s               €úg/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/xception_aligned.pyr-   zSeparableConv2d.__init__   sÑ   ø€ ð ¨Ñ/ˆÜ‰ÑÔØ&ˆÔØ ˆŒô %ØØØð	
ð ØØØñ	
ð ñ	
ˆŒñ   Ñ-¨"Ñ-ˆŒ
Ø1:Ð1F‘i¨Õ-ÌBÏKÉKËMˆŒô % V¨WÑJÀ!ÐJÀrÑJˆŒÙ Ñ.¨2Ñ.ˆŒ
Ø1:Ð1F‘i¨Ô-ˆ�ÌBÏKÉKËMˆ�ó    c                 óÒ   — | j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j	                  |«      }| j                  |«      }|S ©N)r.   r/   r2   r3   r4   r5   ©r6   Úxs     r9   ÚforwardzSeparableConv2d.forward>   sU   € Ø�L‰L˜‹OˆØ�J‰J�q‹MˆØ�K‰K˜‹NˆØ�L‰L˜‹OˆØ�J‰J�q‹MˆØ�K‰K˜‹NˆØˆr:   )Ú__name__Ú
__module__Ú__qualname__r0   ÚReLUÚBatchNorm2dÚintr   r   ÚModuler-   r?   Ú__classcell__©r8   s   @r9   r   r      s—   ø„ ð
  !ØØØ!Ø)+¯©Ø*,¯.©.ØØñ#Zàð#Zð ð#Zð ð	#Zð
 ð#Zð ð#Zð ð#Zð ˜BŸI™I‘ð#Zð ˜RŸY™Y™õ#ZöJr:   r   c                   óº   ‡ — e Zd Zddddej                  ej
                  dddf	dededed	ed
ededeej                     deej                     de
fˆ fd„Zd„ Zˆ xZS )ÚPreSeparableConv2dr   r   r   TNr   r   r   r   r    r!   r"   r#   Ú	first_actc                 ó  •— |
|dœ}t         ‰| �  «        t        ||¬«      }|| _        || _        |	r ||fddi|¤Žnt        j                  «       | _        t        |||f|||ddœ|¤Ž| _	        t        ||fddi|¤Ž| _
        y )Nr%   ©r"   r+   Tr(   r   r   )r,   r-   r   r   r    r0   r1   Únormr   r.   r3   )r6   r   r   r   r   r    r!   r"   r#   rK   r&   r'   r7   Únorm_act_layerr8   s                 €r9   r-   zPreSeparableConv2d.__init__I   s¥   ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ+¨JÀ)ÔLˆØ&ˆÔØ ˆŒáBK‘N 6Ñ>°4Ð>¸2Ò>ÔQS×Q\ÑQ\ÓQ^ˆŒ	ä$ØØØð	
ð ØØØñ	
ð ñ	
ˆŒô % V¨WÑJÀ!ÐJÀrÑJˆ�r:   c                 ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S r<   )rN   r.   r3   r=   s     r9   r?   zPreSeparableConv2d.forwardm   s.   € Ø�I‰I�a‹LˆØ�L‰L˜‹OˆØ�L‰L˜‹OˆØˆr:   )r@   rA   rB   r0   rC   rD   rE   r   r   rF   Úboolr-   r?   rG   rH   s   @r9   rJ   rJ   H   s¥   ø„ ð
  !ØØØ!Ø)+¯©Ø*,¯.©.Ø"ØØñ"Kàð"Kð ð"Kð ð	"Kð
 ð"Kð ð"Kð ð"Kð ˜BŸI™I‘ð"Kð ˜RŸY™Y™ð"Kð õ"KöHr:   rJ   c                   óÌ   ‡ — e Zd Zdddddej                  ddddf
dededed	ed
edededeej                     de
eej                        de
ej                     fˆ fd„Zd„ Zˆ xZS )ÚXceptionModuler   r   TFNr   r   r   r    Úpad_typeÚstart_with_reluÚno_skipr"   r#   Ú	drop_pathc                 óR  •— ||dœ}t         ‰| �  «        t        |«      }|| _        |d   | _        || _        |s@| j                  | j                  k7  s|dk7  r"t        || j                  df||	ddœ|¤Ž| _        nd | _        |rd n|}t        j                  «       | _
        t        d«      D ]s  }|r,| j                  j                  d|dz   › � ||dkD  ¬	«      «       | j                  j                  d
|dz   › �t        |||   df|dk(  r|nd||||	dœ|¤Ž«       ||   }Œu |
| _        y )Nr%   éÿÿÿÿr   F)r   r#   Ú	apply_actr   Úactr   r*   Úconvé   )r   r    r!   r"   r#   )r,   r-   r   Úin_channelsÚout_channelsrV   r   Úshortcutr0   Ú
SequentialÚstackÚrangeÚ
add_moduler   rW   )r6   r   r   r   r    rT   rU   rV   r"   r#   rW   r&   r'   r7   Úseparable_act_layerÚir8   s                   €r9   r-   zXceptionModule.__init__u   s[  ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ˜GÓ$ˆØ!ˆÔØ# B™KˆÔØˆŒÙ˜D×-Ñ-°×1AÑ1AÒAÀVÈqÂ[Ü'ØØ×!Ñ!Øðð Ø%Øñð ñˆD�Mð !ˆDŒMá&5™d¸9ÐÜ—]‘]“_ˆŒ
Ü�q“ò 	 ˆAÙØ—
‘
×%Ñ%¨¨A°©E¨7 m±YÀqÈ1ÁuÔ5MÔNØ�J‰J×!Ñ! D¨¨Q©¨ .´/ØØ˜‘
Øð
3ð "# a¢‘v¨QØ!Ø Ø-Ø%ñ
3ð ñ
3ô 
ð ˜Q‘Z‰Fð	 ð  #ˆ�r:   c                 óÂ   — |}| j                  |«      }| j                  �| j                  |«      }| j                  s"| j                  �| j                  |«      }||z   }|S r<   )rb   r`   rV   rW   ©r6   r>   Úskips      r9   r?   zXceptionModule.forward«   sY   € ØˆØ�J‰J�q‹MˆØ�=‰=Ð$Ø—=‘= Ó&ˆDØ�|Š|Ø�~‰~Ð)Ø—N‘N 1Ó%�Ø�D‘ˆAØˆr:   ©r@   rA   rB   r0   rC   rE   r   rQ   r   rF   r   r-   r?   rG   rH   s   @r9   rS   rS   t   s²   ø„ ð
 ØØ "Ø$(Ø!Ø)+¯©Ø48Ø-1ØØñ4#àð4#ð ð4#ð ð	4#ð
 ð4#ð ð4#ð "ð4#ð ð4#ð ˜BŸI™I‘ð4#ð !  b§i¡i¡Ñ1ð4#ð   §	¡	Ñ*õ4#öl	r:   rS   c                   óÆ   ‡ — e Zd Zddddej                  ddddf	dedededed	ed
edeej                     de
eej                        de
ej                     fˆ fd„Zd„ Zˆ xZS )ÚPreXceptionModuler   r   FNr   r   r   r    rT   rV   r"   r#   rW   c                 óH  •— |
|dœ}t         ‰| �  «        t        |«      }|| _        |d   | _        || _        |s>| j                  | j                  k7  s|dk7  r t        || j                  dfd|i|¤Ž| _        nt        j                  «       | _         t        ||¬«      |fddi|¤Ž| _        t        j                  «       | _        t        d«      D ]I  }| j                  j                  d	|dz   › �t!        |||   df|d
k(  r|nd|||||dkD  dœ|¤Ž«       ||   }ŒK |	| _        y )Nr%   rY   r   r   rM   r+   Tr   r\   r]   r   )r   r    r!   r"   r#   rK   )r,   r-   r   r^   r_   rV   r   r`   r0   r1   r   rN   ra   rb   rc   rd   rJ   rW   )r6   r   r   r   r    rT   rV   r"   r#   rW   r&   r'   r7   rf   r8   s                 €r9   r-   zPreXceptionModule.__init__¸   sA  ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ˜GÓ$ˆØ!ˆÔØ# B™KˆÔØˆŒÙ˜D×-Ñ-°×1AÑ1AÒAÀVÈqÂ[Ü)¨&°$×2CÑ2CÀQÑ\ÈvÐ\ÐY[Ñ\ˆD�MäŸK™K›MˆDŒMàGÔ& z¸YÔGÈÑcÐX\ÐcÐ`bÑcˆŒ	Ü—]‘]“_ˆŒ
Ü�q“ò 	 ˆAØ�J‰J×!Ñ! D¨¨Q©¨ .Ô2DØØ˜‘
Øð3ð "# a¢‘v¨QØ!Ø Ø#Ø%Ø˜a™%ñ3ð ñ3ô ð ˜Q‘Z‰Fð	 ð #ˆ�r:   c                 óÈ   — | j                  |«      }|}| j                  |«      }| j                  s1| j                  �| j                  |«      }|| j	                  |«      z   }|S r<   )rN   rb   rV   rW   r`   rh   s      r9   r?   zPreXceptionModule.forwardä   sX   € Ø�I‰I�a‹LˆØˆØ�J‰J�q‹MˆØ�|Š|Ø�~‰~Ð)Ø—N‘N 1Ó%�Ø�D—M‘M $Ó'Ñ'ˆAØˆr:   rj   rH   s   @r9   rl   rl   ·   s¥   ø„ ð
 ØØ "Ø!Ø)+¯©Ø48Ø-1ØØñ*#àð*#ð ð*#ð ð	*#ð
 ð*#ð ð*#ð ð*#ð ˜BŸI™I‘ð*#ð !  b§i¡i¡Ñ1ð*#ð   §	¡	Ñ*õ*#öXr:   rl   c                   ó¾  ‡ — e Zd ZdZddddej
                  ej                  dddddfd	ee   d
e	de	de	de
deej                     deej                     dededefˆ 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e   fd„Zd„ Zdde
fd„Zd„ Zˆ xZS ) r   zModified Aligned Xception
    éè  r   é    Fç        ÚavgNÚ	block_cfgÚnum_classesÚin_chansÚoutput_strideÚpreactr"   r#   Ú	drop_rateÚdrop_path_rateÚglobal_poolc                 ó¬  •— t         ‰| �  «        ||dœ}|dv sJ ‚|| _        || _        || _        d| _        t        d||dœ|¤Ž}t        j                  t        |dfdddœ|¤Ž|rt        ddd	dœ|¤Žnt        ddd	dœ|¤ŽgŽ | _        d	}d}g | _        t        j                  «       | _        |rt        nt        }t!        |«      }d
}t#        |«      D ]Þ  \  }}|	|z  |d	z
  z  }|dkD  rt%        |«      nd |d<   ||d<   |d   d	kD  r\|rd|› d�nd|› d�}| xj                  t        t'        |d   «      d   ||¬«      gz  c_        ||d   z  }||kD  r||d   z  }d	|d<   n|}| j                  j)                  t+        |«       |di |¤|¤Ž«       | j                  d   j,                  | _        |d	z  }Œà | xj                  t        | j.                  |dt+        t!        | j                  «      d	z
  «      z   ¬«      gz  c_        |r	 |d¬«      nt        j0                  «       | _        | j.                  | _        t7        d| j.                  ||
|dœ|¤Ž| _        y )Nr%   )é   é   rq   F)r"   r#   rq   r   r]   )r   r   r   r   rr   rW   r    r   zblocks.z.stack.conv2z.stack.act3r   éþÿÿÿ)Únum_chsÚ	reductionÚmodulerY   Tr*   )Úin_featuresru   Ú	pool_typery   © )rq   é@   )r,   r-   ru   rv   ry   Úgrad_checkpointingÚdictr0   ra   r   r   ÚstemÚfeature_infoÚblocksrl   rS   ÚlenÚ	enumerater   r   rd   Ústrr_   Únum_featuresr1   r[   Úhead_hidden_sizer   Úhead)r6   rt   ru   rv   rw   rx   r"   r#   ry   rz   r{   r&   r'   r7   Ú
layer_argsÚcurr_dilationÚcurr_strideÚ	module_fnÚnet_num_blocksÚnet_block_idxrf   ÚbÚ	block_dprÚnameÚnext_strider8   s                            €r9   r-   zXceptionAligned.__init__ó   s—  ø€ ô 	‰ÑÔØ¨Ñ/ˆØ Ñ+Ð+Ð+Ø&ˆÔØ ˆŒØ"ˆŒØ"'ˆÔäÐK I¸*ÑKÈÑKˆ
Ü—M‘MÜ˜ "ÐL°!¸AÑLÀÑLÙDJŒMÐ@¨a¸Ñ@¸RÒ@ÜÐF¨A°aÑF¸:ÑFð$
ð ˆŒ	ð ˆØˆØˆÔÜ—m‘m“oˆŒÙ)/Õ%´^ˆ	Ü˜Y›ˆØˆÜ˜iÓ(ò 	‰DˆAˆqØ&¨Ñ6¸.È1Ñ:LÑMˆIØ4=À²NœX iÔ0ÈˆAˆk‰NØ)ˆAˆj‰MØ�‰{˜QŠÙ4:˜   <Ñ0À'È!ÈÈKÐ@X�Ø×!Ò!¤d´9¸Q¸y¹\Ó3JÈ2Ñ3NÐZeÐnrÔ&sÐ%tÑtÕ!Ø)¨A¨h©KÑ7�Ø Ò.Ø! Q x¡[Ñ0�MØ"#�A�h’Kà"-�KØ�K‰K×"Ñ"¤3 q£6©9Ñ+G°qÐ+G¸JÑ+GÔHØ $§¡¨B¡× <Ñ <ˆDÔØ˜QÑ‰Mð	ð" 	×ÒœdØ×%Ñ%°ÀYÔQTÔUXÐY]×YdÑYdÓUeÐhiÑUiÓQjÑEjôlð mñ 	mÕá.4‘9 TÕ*¼"¿+¹+»-ˆŒØ $× 1Ñ 1ˆÔÜ"ð 
Ø×)Ñ)Ø#Ø!Øñ	
ð
 ñ
ˆ�	r:   c                 ó   — t        dd¬«      S )Nz^stemz^blocks\.(\d+))r‰   r‹   )rˆ   )r6   Úcoarses     r9   Úgroup_matcherzXceptionAligned.group_matcher5  s   € äØØ$ô
ð 	
r:   c                 ó   — || _         y r<   )r‡   )r6   Úenables     r9   Úset_grad_checkpointingz&XceptionAligned.set_grad_checkpointing<  s
   € à"(ˆÕr:   Úreturnc                 ó.   — | j                   j                  S r<   )r‘   Úfc)r6   s    r9   Úget_classifierzXceptionAligned.get_classifier@  s   € à�y‰y�|‰|Ðr:   c                 óL   — || _         | j                  j                  ||¬«       y )N)r„   )ru   r‘   Úreset)r6   ru   r{   s      r9   Úreset_classifierz XceptionAligned.reset_classifierD  s   € Ø&ˆÔØ�	‰	�‰˜¨{ˆÕ;r:   c                 óî   — | j                  |«      }| j                  r5t        j                  j	                  «       st        | j                  |«      }n| j                  |«      }| j                  |«      }|S r<   )r‰   r‡   ÚtorchÚjitÚis_scriptingr   r‹   r[   r=   s     r9   Úforward_featuresz XceptionAligned.forward_featuresH  sV   € Ø�I‰I�a‹LˆØ×"Ò"¬5¯9©9×+AÑ+AÔ+CÜ˜tŸ{™{¨AÓ.‰Aà—‘˜A“ˆAØ�H‰H�Q‹KˆØˆr:   Ú
pre_logitsc                 óN   — |r| j                  ||¬«      S | j                  |«      S )N)r®   )r‘   )r6   r>   r®   s      r9   Úforward_headzXceptionAligned.forward_headQ  s%   € Ù6@ˆt�y‰y˜ zˆyÓ2ÐRÀdÇiÁiÐPQÃlÐRr:   c                 óJ   — | j                  |«      }| j                  |«      }|S r<   )r­   r°   r=   s     r9   r?   zXceptionAligned.forwardT  s'   € Ø×!Ñ! !Ó$ˆØ×Ñ˜aÓ ˆØˆr:   ©F)Tr<   )r@   rA   rB   Ú__doc__r0   rC   rD   r   r   rE   rQ   r   rF   ÚfloatrŽ   r-   rª   r«   Úignorerž   r¡   r¥   r   r¨   r­   r°   r?   rG   rH   s   @r9   r   r   ï   sN  ø„ ñð  $ØØ!#Ø Ø)+¯©Ø*,¯.©.Ø!Ø$&Ø$ØØñ@
à˜D‘zð@
ð ð@
ð ð	@
ð
 ð@
ð ð@
ð ˜BŸI™I‘ð@
ð ˜RŸY™Y™ð@
ð ð@
ð "ð@
ð õ@
ðD ‡Y�Y×Ñò
ó ð
ð ‡Y�Y×Ñò)ó ð)ð ‡Y�Y×Ñð §	¡	ò ó ðñ<¨Cð <¸hÀs¹mó <òñS¨$ó Sör:   c                 ó@   — t        t        | |fdt        dd¬«      i|¤ŽS )NÚfeature_cfgTÚhook)Úflatten_sequentialÚfeature_cls)r   r   rˆ   )ÚvariantÚ
pretrainedÚkwargss      r9   Ú	_xceptionr¾   Z  s3   € ÜÜØØñô ¨D¸fÔEð	ð
 ñð r:   c                 ó2   — | dddddt         t        dddd	œ|¥S )
Nrp   )r   é+  rÀ   )é
   rÁ   gL7‰A`åì?Úbicubiczstem.0.convzhead.fcz
apache-2.0)Úurlru   Ú
input_sizeÚ	pool_sizeÚcrop_pctÚinterpolationÚmeanÚstdÚ
first_convÚ
classifierÚlicenser   )rÃ   r½   s     r9   Ú_cfgrÍ   d  s2   € àØ¨=ÀxØ¨IÜ'Ô0FØ#°9Èñð ðð r:   ztimm/g®Gázî?)Ú	hf_hub_idrÆ   )rÎ   )zxception65.ra3_in1kzxception41.tf_in1kzxception65.tf_in1kzxception71.tf_in1kzxception41p.ra3_in1kzxception65p.ra3_in1kr¢   c           	      ó0  — t        ddd¬«      t        ddd¬«      t        ddd¬«      gt        ddd¬«      gdz  ¢t        dd	d¬«      ‘t        d
dddd¬«      ‘}t        |t        t        j                  dd¬«      ¬«      }t	        dd| it        |fi |¤Ž¤ŽS )z" Modified Aligned Xception-41
    r†   é€   r]   ©r   r   r   é   éØ  r   r}   ©rÓ   é   rÕ   rÕ   ©é   r×   i   TF©r   r   r   rV   rU   çü©ñÒMbP?çš™™™™™¹?©ÚepsÚmomentum©rt   r#   r¼   )Ú
xception41©rˆ   r   r0   rD   r¾   ©r¼   r½   rt   Ú
model_argss       r9   rß   rß   „  s±   € ô 	�B ¨AÔ.Ü�C ¨QÔ/Ü�C ¨QÔ/ð	
ô �s C°Ô2Ð
3°aÑ
7ð
ô 	�CÐ!2¸1Ô=ð
ô 	�DÐ"4¸QÈÐ^cÔdð
€Iô  	´g¼b¿n¹nÐRVÐacÔ6dÔe€JÜÑW¨jÐW¼DÀÑ<VÈvÑ<VÑWÐWr:   c           	      ó0  — t        ddd¬«      t        ddd¬«      t        ddd¬«      gt        ddd¬«      gdz  ¢t        dd	d¬«      ‘t        d
dddd¬«      ‘}t        |t        t        j                  dd¬«      ¬«      }t	        dd| it        |fi |¤Ž¤ŽS )z" Modified Aligned Xception-65
    r†   rÐ   r]   rÑ   rÒ   rÓ   r   r~   rÔ   rÕ   rÖ   TFrØ   rÙ   rÚ   rÛ   rÞ   r¼   )Ú
xception65rà   rá   s       r9   rä   rä   —  s±   € ô 	�B ¨AÔ.Ü�C ¨QÔ/Ü�C ¨QÔ/ð	
ô �s C°Ô2Ð
3°bÑ
8ð
ô 	�CÐ!2¸1Ô=ð
ô 	�DÐ"4¸QÈÐ^cÔdð
€Iô  	´g¼b¿n¹nÐRVÐacÔ6dÔe€JÜÑW¨jÐW¼DÀÑ<VÈvÑ<VÑWÐWr:   c           	      ód  — t        ddd¬«      t        ddd¬«      t        ddd¬«      t        ddd¬«      t        ddd¬«      gt        ddd¬«      gdz  ¢t        dd	d¬«      ‘t        d
dddd¬«      ‘}t        |t        t        j                  dd¬«      ¬«      }t	        dd| it        |fi |¤Ž¤ŽS )z" Modified Aligned Xception-71
    r†   rÐ   r]   rÑ   rÒ   r   rÓ   r~   rÔ   rÕ   rÖ   TFrØ   rÙ   rÚ   rÛ   rÞ   r¼   )Ú
xception71rà   rá   s       r9   ræ   ræ   ª  sÉ   € ô 	�B ¨AÔ.Ü�C ¨QÔ/Ü�C ¨QÔ/Ü�C ¨QÔ/Ü�C ¨QÔ/ðô �s C°Ô2Ð
3°bÑ
8ðô 	�CÐ!2¸1Ô=ðô 	�DÐ"4¸QÈÐ^cÔdð€Iô  	´g¼b¿n¹nÐRVÐacÔ6dÔe€JÜÑW¨jÐW¼DÀÑ<VÈvÑ<VÑWÐWr:   c           	      ó  — t        ddd¬«      t        ddd¬«      t        ddd¬«      gt        ddd¬«      gdz  ¢t        dd	d¬«      ‘t        d
ddd¬«      ‘}t        |dt        j                  ¬«      }t        dd| it        |fi |¤Ž¤ŽS )z- Modified Aligned Xception-41 w/ Pre-Act
    r†   rÐ   r]   rÑ   rÒ   rÓ   r   r}   rÔ   rÕ   rÖ   T)r   r   rV   r   ©rt   rx   r#   r¼   )Úxception41p)rˆ   r0   rD   r¾   rá   s       r9   ré   ré   ¿  s¦   € ô 	�B ¨AÔ.Ü�C ¨QÔ/Ü�C ¨QÔ/ð	
ô �s C°Ô2Ð
3°aÑ
7ð
ô 	�CÐ!2¸1Ô=ð
ô 	�DÐ"4¸dÈ1ÔMð
€Iô  	°$Ä2Ç>Á>ÔR€JÜÑX¨zÐX¼TÀ*Ñ=WÐPVÑ=WÑXÐXr:   c           	      ó0  — t        ddd¬«      t        ddd¬«      t        ddd¬«      gt        ddd¬«      gdz  ¢t        dd	d¬«      ‘t        d
ddd¬«      ‘}t        |dt        t        j                  dd¬«      ¬«      }t	        dd| it        |fi |¤Ž¤ŽS )z- Modified Aligned Xception-65 w/ Pre-Act
    r†   rÐ   r]   rÑ   rÒ   rÓ   r   r~   rÔ   rÕ   rÖ   T)r   r   r   rV   rÙ   rÚ   rÛ   rè   r¼   )Úxception65prà   rá   s       r9   rë   rë   Ò  sµ   € ô 	�B ¨AÔ.Ü�C ¨QÔ/Ü�C ¨QÔ/ð	
ô �s C°Ô2Ð
3°bÑ
8ð
ô 	�CÐ!2¸1Ô=ð
ô 	�DÐ"4¸QÈÔMð
€Iô Ø D´W¼R¿^¹^ÐQUÐ`bÔ5côe€JäÑX¨zÐX¼TÀ*Ñ=WÐPVÑ=WÑXÐXr:   r²   )r   )-r³   Ú	functoolsr   Útypingr   r   r   r   rª   Útorch.nnr0   Ú	timm.datar	   r
   Útimm.layersr   r   r   r   r   r   Útimm.layers.helpersr   Ú_builderr   Ú_manipulater   Ú	_registryr   r   Ú__all__rF   r   rJ   rS   rl   r   r¾   rÍ   Údefault_cfgsrß   rä   ræ   ré   rë   r…   r:   r9   ú<module>r÷      sˆ  ðñõ ß -Ó -ã Ý ç Eß i× iÝ )Ý *Ý 'ß <àÐ
€ô-�b—i‘iô -ô`)˜Ÿ™ô )ôX@�R—Y‘Yô @ôF5˜Ÿ	™	ô 5ôph�b—i‘iô hóVóñ %ÙØØôñ
 ¨Ô1Ù¨Ô1Ù¨Ô1á ØØôñ !ØØôñ&ó €ð* ñX¨oò Xó ðXð$ ñX¨oò Xó ðXð$ ñX¨oò Xó ðXð( ñY¨ò Yó ðYð$ ñY¨ò Yó ñYr:   