Ë
    éÓ^jŠI  ã                   ó  — d 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 ddlmZ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 dd
lmZmZ dgZ G d„ de	j@                  «      Z! G d„ de	jD                  «      Z# G d„ de	jD                  «      Z$ G d„ de	jD                  «      Z% e& e&g d¢g d¢g d¢dg d¢ddd¬«       e&g d¢g d¢g d¢dg d¢ddd¬«       e&g d¢g d¢g d¢dg d ¢d!d!d"¬«       e&g d¢g d¢g d¢dg d ¢d!d!d"¬«       e&g d¢g d¢g d¢dg d ¢d!dd"¬«       e&g d¢g d¢g d¢dg d ¢d!dd"¬«       e&g d¢g d¢g d¢dg d¢d!dd"¬«       e&g d¢g d¢g d¢dg d¢d!dd"¬«       e&g d¢g d¢g d¢dg d#¢d!dd"¬«       e&g d¢g d¢g d¢dg d¢d!dd$¬«      ¬%«
      Z'e'd&   e'd'<   dAd(„Z(dBd)„Z) e e)d¬*«       e)d¬*«       e)d¬*«       e)d+d,d-¬.«       e)d¬*«       e)d+d,d-¬.«       e)d+d/d/d-d0d1d2d3¬4«       e)d¬*«       e)d¬*«       e)d¬*«      d5œ
«      Z*edAd6e%fd7„«       Z+edAd6e%fd8„«       Z,edAd6e%fd9„«       Z-edAd6e%fd:„«       Z.edAd6e%fd;„«       Z/edAd6e%fd<„«       Z0edAd6e%fd=„«       Z1edAd6e%fd>„«       Z2edAd6e%fd?„«       Z3edAd6e%fd@„«       Z4y)CaÌ   VoVNet (V1 & V2)

Papers:
* `An Energy and GPU-Computation Efficient Backbone Network` - https://arxiv.org/abs/1904.09730
* `CenterMask : Real-Time Anchor-Free Instance Segmentation` - https://arxiv.org/abs/1911.06667

Looked at  https://github.com/youngwanLEE/vovnet-detectron2 &
https://github.com/stigma0617/VoVNet.pytorch/blob/master/models_vovnet/vovnet.py
for some reference, rewrote most of the code.

Hacked together by / Copyright 2020 Ross Wightman
é    )ÚListÚOptionalÚTupleÚUnionÚTypeN©ÚIMAGENET_DEFAULT_MEANÚIMAGENET_DEFAULT_STD)ÚConvNormActÚSeparableConvNormActÚBatchNormAct2dÚClassifierHeadÚDropPathÚcreate_attnÚcreate_norm_act_layerÚcalculate_drop_path_ratesé   )Úbuild_model_with_cfg)Úfeature_take_indices)Úcheckpoint_seq)Úregister_modelÚgenerate_default_cfgsÚVovNetc                   ót   ‡ — e Zd Zˆ fd„Zdej
                  deej
                     dej
                  fd„Zˆ xZS )ÚSequentialAppendListc                 ó   •— t        ‰| �  |Ž  y ©N)ÚsuperÚ__init__)ÚselfÚargsÚkwargsÚ	__class__s      €ú]/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/vovnet.pyr   zSequentialAppendList.__init__   s   ø€ Ü‰Ñ˜$Òó    ÚxÚconcat_listÚreturnc                 óÈ   — t        | «      D ]<  \  }}|dk(  r|j                   ||«      «       Œ#|j                   ||d   «      «       Œ> t        j                  |d¬«      }|S )Nr   éÿÿÿÿr   )Údim)Ú	enumerateÚappendÚtorchÚcat)r    r&   r'   ÚiÚmodules        r$   ÚforwardzSequentialAppendList.forward"   s`   € Ü" 4›ò 	<‰IˆAˆvØ�AŠvØ×"Ñ"¡6¨!£9Õ-à×"Ñ"¡6¨+°b©/Ó#:Õ;ð		<ô
 �I‰I�k qÔ)ˆØˆr%   )	Ú__name__Ú
__module__Ú__qualname__r   r.   ÚTensorr   r2   Ú__classcell__©r#   s   @r$   r   r      s3   ø„ ô ð˜Ÿ™ð °D¸¿¹Ñ4Fð È5Ï<É<÷ r%   r   c                   óÂ   ‡ — e Zd Zdddeej
                  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j                     deej                     fˆ fd„Zd„ Zˆ xZS )ÚOsaBlockFÚ NÚin_chsÚmid_chsÚout_chsÚlayer_per_blockÚresidualÚ	depthwiseÚattnÚ
norm_layerÚ	act_layerÚ	drop_pathc                 óê  •— ||dœ}t         ‰| �  «        || _        || _        t	        d||	dœ|¤Ž}|}| j                  r||k7  r|rJ ‚t        ||dfi |¤Ž| _        nd | _        g }t        |«      D ]=  }| j                  rt        ||fi |¤Ž}nt        ||dfi |¤Ž}|}|j                  |«       Œ? t        |Ž | _        |||z  z   }t        ||fi |¤Ž| _        |rt        ||fi |¤Žnd | _        |
| _        y )N©ÚdeviceÚdtype©rC   rD   r   é   © )r   r   r@   rA   Údictr   Úconv_reductionÚranger   r-   r   Úconv_midÚconv_concatr   rB   rE   )r    r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rH   rI   ÚddÚconv_kwargsÚnext_in_chsÚ	mid_convsr0   Úconvr#   s                      €r$   r   zOsaBlock.__init__.   s  ø€ ð ¨Ñ/ˆÜ‰ÑÔà ˆŒØ"ˆŒÜÐL j¸IÑLÈÑLˆàˆØ�>Š>˜k¨WÒ4ÙÐ�<Ü"-¨k¸7ÀAÑ"UÈÑ"UˆDÕà"&ˆDÔàˆ	Ü�Ó'ò 	#ˆAØ�~Š~Ü+¨G°WÑLÀÑL‘ä" ;°¸ÑJ¸kÑJ�Ø!ˆKØ×Ñ˜TÕ"ð	#ô -¨iÐ8ˆŒð ˜°Ñ8Ñ8ˆÜ& {°GÑK¸{ÑKˆÔá8<”K  gÑ4°Ò4À$ˆŒ	à"ˆ�r%   c                 ó(  — |g}| j                   �| j                  |«      }| j                  ||«      }| j                  |«      }| j                  �| j                  |«      }| j                  �| j	                  |«      }| j
                  r||d   z   }|S )Nr   )rN   rP   rQ   rB   rE   r@   )r    r&   Úoutputs      r$   r2   zOsaBlock.forward]   s�   € Ø�ˆØ×ÑÐ*Ø×#Ñ# AÓ&ˆAØ�M‰M˜!˜VÓ$ˆØ×Ñ˜QÓˆØ�9‰9Ð Ø—	‘	˜!“ˆAØ�>‰>Ð%Ø—‘˜qÓ!ˆAØ�=Š=Ø�F˜1‘I‘ˆAØˆr%   )r3   r4   r5   r   ÚnnÚReLUÚintÚboolÚstrr   ÚModuler   r   r2   r7   r8   s   @r$   r:   r:   ,   s§   ø„ ð #Ø#ØØ*8Ø)+¯©Ø-1ØØñ-#àð-#ð ð-#ð ð	-#ð
 !ð-#ð ð-#ð ð-#ð ð-#ð ˜RŸY™Y™ð-#ð ˜BŸI™I‘ð-#ð   §	¡	Ñ*õ-#ö^r%   r:   c                   ó¾   ‡ — e Zd Zddddeej
                  dddf	dedededed	ed
edededede	ej                     de	ej                     deee      fˆ fd„Zd„ Zˆ xZS )ÚOsaStageTFÚeseNr<   r=   r>   Úblock_per_stager?   Ú
downsampler@   rA   rB   rC   rD   Údrop_path_ratesc                 ón  •— ||dœ}t         ‰| �  «        d| _        |rt        j                  ddd¬«      | _        nd | _        g }t        |«      D ]L  }||dz
  k(  }|�||   dkD  rt        ||   «      }nd }|t        ||||f|xr |d	kD  ||r|	nd
|
||dœ|¤Žgz  }|}ŒN t        j                  |Ž | _
        y )NrG   FrK   é   T)Úkernel_sizeÚstrideÚ	ceil_moder   ç        r   r;   )r@   rA   rB   rC   rD   rE   )r   r   Úgrad_checkpointingrY   Ú	MaxPool2dÚpoolrO   r   r:   Ú
SequentialÚblocks)r    r<   r=   r>   rb   r?   rc   r@   rA   rB   rC   rD   rd   rH   rI   rR   ro   r0   Ú
last_blockrE   r#   s                       €r$   r   zOsaStage.__init__n   sù   ø€ ð" ¨Ñ/ˆÜ‰ÑÔØ"'ˆÔáÜŸ™°¸1ÈÔMˆD�IàˆDŒIàˆÜ�Ó'ò 	ˆAØ˜o°Ñ1Ñ1ˆJØÐ*¨¸qÑ/AÀBÒ/FÜ$ _°QÑ%7Ó8‘	à �	Ø”xØØØØð	ð
 "Ò+ a¨!¡eØ#Ù'‘T¨RØ%Ø#Ø#ñð ñð ñ ˆFð ‰Fð'	ô( —m‘m VÐ,ˆ�r%   c                 óæ   — | j                   �| j                  |«      }| j                  r6t        j                  j	                  «       st        | j                  |«      }|S | j                  |«      }|S r   )rm   rk   r.   ÚjitÚis_scriptingr   ro   ©r    r&   s     r$   r2   zOsaStage.forwardŸ   s\   € Ø�9‰9Ð Ø—	‘	˜!“ˆAØ×"Ò"¬5¯9©9×+AÑ+AÔ+CÜ˜tŸ{™{¨AÓ.ˆAð ˆð —‘˜A“ˆAØˆr%   )r3   r4   r5   r   rY   rZ   r[   r\   r]   r   r^   r   r   Úfloatr   r2   r7   r8   s   @r$   r`   r`   l   s¾   ø„ ð  $Ø!Ø#ØØ*8Ø)+¯©Ø59ØØñ/-àð/-ð ð/-ð ð	/-ð
 !ð/-ð !ð/-ð ð/-ð ð/-ð ð/-ð ð/-ð ˜RŸY™Y™ð/-ð ˜BŸI™I‘ð/-ð & d¨5¡kÑ2õ/-öbr%   r`   c                   óx  ‡ — e Zd Zddddeej
                  ddddf
deded	ed
edede	ej                     de	ej                     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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   rK   éè  Úavgé    rj   NÚcfgÚin_chansÚnum_classesÚglobal_poolÚoutput_striderC   rD   Ú	drop_rateÚdrop_path_ratec           	      ó<  •— t         ‰ | �  «        |
|dœ}|| _        || _        || _        |dk(  sJ ‚t        |fi |¤Ž}|j                  dd«      }|d   }|d   }|d   }|d   }|d	   }t        d ||d
œ|¤Ž}|dz  }|d   rt        nt        }t        j                  t        ||d   dfddi|¤Ž ||d   |d   dfddi|¤Ž ||d   |d   dfd|i|¤ŽgŽ | _        t        |d   dd|dk(  rdnd› �¬«      g| _        |}t        |	|d¬«      }|dd |dd z   }t        d |d   |d   |d   dœ|¤Ž}g }t        d«      D ]v  }|dk(  xs |dkD  }|t        ||   ||   ||   ||   |f|||   dœ|¤Žgz  }||   | _        ||rdndz  }| xj                  t        | j                   |d|› �¬«      gz  c_        Œx t        j                  |Ž | _        | j                   | _        t'        | j                   |f||dœ|¤Ž| _        | j+                  «       D ]�  \  }}t-        |t        j.                  «      r-t        j0                  j3                  |j4                  dd¬«       ŒMt-        |t        j6                  «      sŒht        j0                  j9                  |j:                  «       Œ’ y)!aÉ  
        Args:
            cfg (dict): Model architecture configuration
            in_chans (int): Number of input channels (default: 3)
            num_classes (int): Number of classifier classes (default: 1000)
            global_pool (str): Global pooling type (default: 'avg')
            output_stride (int): Output stride of network, one of (8, 16, 32) (default: 32)
            norm_layer (Union[str, nn.Module]): normalization layer
            act_layer (Union[str, nn.Module]): activation layer
            drop_rate (float): Dropout rate (default: 0.)
            drop_path_rate (float): Stochastic depth drop-path rate (default: 0.)
            kwargs (dict): Extra kwargs overlayed onto cfg
        rG   ry   Ústem_strideé   Ústem_chsÚstage_conv_chsÚstage_out_chsrb   r?   rJ   rf   rA   r   rK   rh   r   zstem.)Únum_chsÚ	reductionr1   T)Ú	stagewiser*   Nr@   rB   )r@   rA   rB   )rc   rd   zstages.)Ú	pool_typer   Úfan_outÚrelu)ÚmodeÚnonlinearityrL   )r   r   r|   r{   r   rM   Úgetr   r   rY   rn   ÚstemÚfeature_infor   rO   r`   Únum_featuresÚstagesÚhead_hidden_sizer   ÚheadÚnamed_modulesÚ
isinstanceÚConv2dÚinitÚkaiming_normal_ÚweightÚLinearÚzeros_Úbias)!r    rz   r{   r|   r}   r~   rC   rD   r   r€   rH   rI   r"   rR   r‚   r„   r…   r†   rb   r?   rS   Úlast_stem_strideÚ	conv_typeÚcurrent_strideÚ	stage_dprÚ
in_ch_listÚ
stage_argsr“   r0   rc   ÚnÚmr#   s!                                   €r$   r   zVovNet.__init__«   s*  ø€ ô8 	‰ÑÔØ¨Ñ/ˆØ&ˆÔØ ˆŒØ"ˆŒØ Ò"Ð"Ð"ä�3Ñ!˜&Ñ!ˆØ—g‘g˜m¨QÓ/ˆØ�z‘?ˆØÐ-Ñ.ˆØ˜OÑ,ˆØÐ/Ñ0ˆØÐ/Ñ0ˆÜÐL j¸IÑLÈÑLˆð '¨!Ñ+ÐØ,/°Ò,<Õ(Ä+ˆ	Ü—M‘MÜ˜ (¨1¡+¨qÑJ¸ÐJ¸kÑJÙ�h˜q‘k 8¨A¡;°ÑK¸!ÐK¸{ÑKÙ�h˜q‘k 8¨A¡;°ÑZÐ:JÐZÈkÑZð$
ð ˆŒ	ô
 "Ø˜Q‘K¨1°uÀ+ÐQRÒBR¹QÐXYÐ<ZÐ5[ô]ð ^ˆÔà$ˆô .¨n¸oÐY]Ô^ˆ	Ø˜b˜c�] ]°3°BÐ%7Ñ7ˆ
ÜÐp 3 z¡?¸cÀ+Ñ>NÐUXÐY_ÑU`ÑpÐdoÑpˆ
ØˆÜ�q“ò 	sˆAØ$¨Ñ)Ò2¨Q°©UˆJØ”xØ˜1‘Ø˜qÑ!Ø˜aÑ Ø Ñ"Øð	ð &Ø )¨!¡ñ	ð ñ	ð 	ñ 	ˆFð !.¨aÑ 0ˆDÔØ¡:™a°1Ñ4ˆNØ×Ò¤$¨t×/@Ñ/@ÈNÐelÐmnÐloÐcpÔ"qÐ!rÑrÖð	sô  —m‘m VÐ,ˆŒà $× 1Ñ 1ˆÔÜ" 4×#4Ñ#4°kÐtÈ[ÐdmÑtÐqsÑtˆŒ	à×&Ñ&Ó(ò 	'‰DˆAˆqÜ˜!œRŸY™YÔ'Ü—‘×'Ñ'¨¯©°yÈvÐ'ÕVÜ˜AœrŸy™yÕ)Ü—‘—‘˜qŸv™vÕ&ñ		'r%   c                 ó.   — t        d|rd¬«      S d¬«      S )Nz^stemz^stages\.(\d+)z^stages\.(\d+).blocks\.(\d+))r�   ro   )rM   )r    Úcoarses     r$   Úgroup_matcherzVovNet.group_matcher  s%   € äØÙ(.Ð$ô
ð 	
à4Sô
ð 	
r%   c                 ó4   — | j                   D ]	  }||_        Œ y r   )r“   rk   )r    ÚenableÚss      r$   Úset_grad_checkpointingzVovNet.set_grad_checkpointing
  s   € à—‘ò 	*ˆAØ#)ˆAÕ ñ	*r%   r(   c                 ó.   — | j                   j                  S r   )r•   Úfc)r    s    r$   Úget_classifierzVovNet.get_classifier  s   € à�y‰y�|‰|Ðr%   c                 óJ   — || _         | j                  j                  ||«       y r   )r|   r•   Úreset)r    r|   r}   s      r$   Úreset_classifierzVovNet.reset_classifier  s   € Ø&ˆÔØ�	‰	�‰˜ [Õ1r%   r&   ÚindicesÚnormÚ
stop_earlyÚ
output_fmtÚintermediates_onlyc                 óª  — |dv sJ d«       ‚g }t        d|«      \  }}	d}
 | j                  dd |«      }|
|v r|j                  |«        | j                  d   |«      }t        j                  j                  «       s|s| j                  }n| j                  d|	 }t        |d¬«      D ]#  \  }
} ||«      }|
|v sŒ|j                  |«       Œ% |r|S ||fS )	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   Nr*   r   )Ústart)r   r�   r-   r.   rr   rs   r“   r,   )r    r&   r´   rµ   r¶   r·   r¸   ÚintermediatesÚtake_indicesÚ	max_indexÚfeat_idxr“   Ústages                r$   Úforward_intermediateszVovNet.forward_intermediates  sï   € ð* ˜YÑ&ÐDÐ(DÓDÐ&ØˆÜ"6°q¸'Ó"BÑˆ�ið ˆØˆD�I‰I�c�rˆN˜1ÓˆØ�|Ñ#Ø× Ñ  Ô#àˆD�I‰I�b‰M˜!ÓˆÜ�9‰9×!Ñ!Ô#©:Ø—[‘[‰Fà—[‘[  )Ð,ˆFä(¨°qÔ9ò 	(‰OˆH�eÙ�a“ˆAØ˜<Ò'Ø×$Ñ$ QÕ'ð	(ñ
 Ø Ð à�-ÐÐr%   Ú
prune_normÚ
prune_headc                 ót   — t        d|«      \  }}| j                  d| | _        |r| j                  dd«       |S )z@ Prune layers not required for specified intermediates.
        r»   Nr   r;   )r   r“   r³   )r    r´   rÃ   rÄ   r¾   r¿   s         r$   Úprune_intermediate_layersz VovNet.prune_intermediate_layersF  s@   € ô #7°q¸'Ó"BÑˆ�iØ—k‘k * 9Ð-ˆŒÙØ×!Ñ! ! RÔ(ØÐr%   c                 óF   — | j                  |«      }| j                  |«      S r   )r�   r“   rt   s     r$   Úforward_featureszVovNet.forward_featuresT  s   € Ø�I‰I�a‹LˆØ�{‰{˜1‹~Ðr%   Ú
pre_logitsc                 óN   — |r| j                  ||¬«      S | j                  |«      S )N)rÉ   )r•   )r    r&   rÉ   s      r$   Úforward_headzVovNet.forward_headX  s%   € Ù6@ˆt�y‰y˜ zˆyÓ2ÐRÀdÇiÁiÐPQÃlÐRr%   c                 óJ   — | j                  |«      }| j                  |«      }|S r   )rÈ   rË   rt   s     r$   r2   zVovNet.forward[  s'   € Ø×!Ñ! !Ó$ˆØ×Ñ˜aÓ ˆØˆr%   ©F)Tr   )NFFrº   F)r   FT) r3   r4   r5   r   rY   rZ   rM   r[   r]   r   r^   ru   r   r.   rr   Úignorer©   r­   r°   r   r³   r6   r   r   r\   r   rÂ   rÆ   rÈ   rË   r2   r7   r8   s   @r$   r   r   ©   s   ø„ ð
 Ø#Ø$Ø!#Ø*8Ø)+¯©Ø!Ø$&ØØñV'àðV'ð ðV'ð ð	V'ð
 ðV'ð ðV'ð ˜RŸY™Y™ðV'ð ˜BŸI™I‘ðV'ð ðV'ð "õV'ðp ‡Y�Y×Ñò
ó ð
ð ‡Y�Y×Ñò*ó ð*ð ‡Y�Y×Ñð §	¡	ò ó ðñ2¸À#¹ó 2ð 8<ØØ$Ø$Ø',ñ- à�|‰|ð- ð ˜e C¨¨c© NÑ3Ñ4ð- ð ð	- ð
 ð- ð ð- ð !%ð- ð 
ˆt�E—L‘LÑ! 5¨¯©°t¸E¿L¹LÑ7IÐ)IÑ#JÐJÑ	Kó- ðb ./Ø$Ø#ñ	à˜3  S¡	˜>Ñ*ðð ðð ó	òñS¨$ó Sör%   )é@   rÏ   é€   )rÐ   é    éÀ   éà   )é   é   i   i   r»   )r   r   rf   rf   Fr;   )r„   r…   r†   r?   rb   r@   rA   rB   )r   r   rƒ   rK   )rÏ   rÏ   rÏ   )rÏ   éP   é`   ép   )rØ   rÔ   i€  rÕ   rK   )r   r   r   r   Tra   )r   rK   é	   rK   Úeca)
Ú	vovnet39aÚ	vovnet57aÚese_vovnet19b_slim_dwÚese_vovnet19b_dwÚese_vovnet19b_slimÚese_vovnet19bÚese_vovnet39bÚese_vovnet57bÚese_vovnet99bÚeca_vovnet39brá   Úese_vovnet39b_evosc                 óN   — t        t        | |ft        |    t        d¬«      dœ|¤ŽS )NT)Úflatten_sequential)Ú	model_cfgÚfeature_cfg)r   r   Ú
model_cfgsrM   )ÚvariantÚ
pretrainedr"   s      r$   Ú_create_vovnetrí   Ð  s9   € ÜÜØØðô ˜WÑ%Ü¨DÔ1ñð ñð r%   c                 ó2   — | dddddt         t        dddd	œ|¥S )
Nrw   )rK   rÓ   rÓ   )é   rï   g      ì?Úbicubiczstem.0.convzhead.fcz
apache-2.0)Úurlr|   Ú
input_sizeÚ	pool_sizeÚcrop_pctÚinterpolationÚmeanÚstdÚ
first_convÚ
classifierÚlicenser   )rñ   r"   s     r$   Ú_cfgrû   Û  s3   € à 4°}ÐSYØ¨IÜ%Ô.BØ#°9Øñð
 $*ðð r%   )rñ   ztimm/)rK   é   rü   gffffffî?)Ú	hf_hub_idÚtest_input_sizeÚtest_crop_pct)ç      à?r   r   )rK   rÔ   rÔ   )é   r  )rK   é@  r  g      ð?)rý   rö   r÷   rô   rò   ró   rþ   rÿ   )
zvovnet39a.untrainedzvovnet57a.untrainedzese_vovnet19b_slim_dw.untrainedzese_vovnet19b_dw.ra_in1kzese_vovnet19b_slim.untrainedzese_vovnet39b.ra_in1kz!ese_vovnet57b.ra4_e3600_r256_in1kzese_vovnet99b.untrainedzeca_vovnet39b.untrainedzese_vovnet39b_evos.untrainedr(   c                 ó   — t        dd| i|¤ŽS )Nrì   )rÛ   ©rí   ©rì   r"   s     r$   rÛ   rÛ   ü  ó   € äÑG°*ÐGÀÑGÐGr%   c                 ó   — t        dd| i|¤ŽS )Nrì   )rÜ   r  r  s     r$   rÜ   rÜ     r  r%   c                 ó   — t        dd| i|¤ŽS )Nrì   )rÝ   r  r  s     r$   rÝ   rÝ     s   € äÑS¸jÐSÈFÑSÐSr%   c                 ó   — t        dd| i|¤ŽS )Nrì   )rÞ   r  r  s     r$   rÞ   rÞ     s   € äÑN¸ÐNÀvÑNÐNr%   c                 ó   — t        dd| i|¤ŽS )Nrì   )rß   r  r  s     r$   rß   rß     s   € äÑP¸:ÐPÈÑPÐPr%   c                 ó   — t        dd| i|¤ŽS )Nrì   )rá   r  r  s     r$   rá   rá     ó   € äÑK°jÐKÀFÑKÐKr%   c                 ó   — t        dd| i|¤ŽS )Nrì   )râ   r  r  s     r$   râ   râ     r  r%   c                 ó   — t        dd| i|¤ŽS )Nrì   )rã   r  r  s     r$   rã   rã     r  r%   c                 ó   — t        dd| i|¤ŽS )Nrì   )rä   r  r  s     r$   rä   rä   $  r  r%   c                 ó$   — d„ }t        d| |dœ|¤ŽS )Nc                 ó    — t        d| fddi|¤ŽS )NÚ	evonorms0rr   F)r   )r’   Únkwargss     r$   Únorm_act_fnz'ese_vovnet39b_evos.<locals>.norm_act_fn-  s   € Ü$ [°,ÑUÀEÐUÈWÑUÐUr%   )rì   rC   )rå   r  )rì   r"   r  s      r$   rå   rå   +  s   € òVäÐh¸:ÐR]ÑhÐagÑhÐhr%   rÍ   )r;   )5Ú__doc__Útypingr   r   r   r   r   r.   Útorch.nnrY   Ú	timm.datar	   r
   Útimm.layersr   r   r   r   r   r   r   r   Ú_builderr   Ú	_featuresr   Ú_manipulater   Ú	_registryr   r   Ú__all__rn   r   r^   r:   r`   r   rM   rê   rí   rû   Údefault_cfgsrÛ   rÜ   rÝ   rÞ   rß   rá   râ   rã   rä   rå   rL   r%   r$   ú<module>r      s²  ðñ÷ 6Õ 5ã Ý ç A÷B÷ Bó Bå *Ý +Ý 'ß <àˆ*€ô˜2Ÿ=™=ô ô=ˆr�y‰yô =ô@:ˆr�y‰yô :ôzuˆR�Y‰Yô uñt ÙÚÚ+Ú+ØÚ$ØØØô	ñ ÚÚ+Ú+ØÚ$ØØØô
ñ ÚÚ(Ú*ØÚ$ØØØô
ñ ÚÚ+Ú+ØÚ$ØØØô	ñ ÚÚ(Ú*ØÚ$ØØØô	ñ ÚÚ+Ú+ØÚ$ØØØô
ñ ÚÚ+Ú+ØÚ$ØØØô	ñ ÚÚ+Ú+ØÚ$ØØØô
ñ ÚÚ+Ú+ØÚ$ØØØô	ñ ÚÚ+Ú+ØÚ$ØØØô	ôi€
ðT $.¨oÑ#>€
ÐÑ  óóñ %Ù Bœ<Ù Bœ<Ù'+°¤|Ù $ØØ%°Tô!;ñ %)¨R¤LÙ!ØØ%°Tô;ñ *.ØØ /Ø -¸6Ø%°Sô	*ñ  $¨œ|Ù#¨œ|Ù$(¨R¤Lñ'&ó €ð. ñH¨Vò Hó ðHð ñH¨Vò Hó ðHð ñT¸ò Tó ðTð ñO°Fò Oó ðOð ñQ°fò Qó ðQð ñL°ò Ló ðLð ñL°ò Ló ðLð ñL°ò Ló ðLð ñL°ò Ló ðLð ñi°fò ió ñir%   