a
    d)                    @   s  d Z ddlmZ ddlmZ ddlZddlmZ ddlm  m	Z
 ddlmZ ddlmZmZmZmZ ddlmZmZmZmZ dd	lmZm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%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z, ddgZ-G dd dej.Z/G dd dej.Z0dddZ1dddZ2dddZ3dddZ4dddZ5ddd Z6dd!d"Z7dd$d%Z8dd&d'Z9dd(d)Z:dd*d+Z;dd,d-Z<dd.d/Z=dd0d1Z>dd2d3Z?dd4d5Z@dd6d7ZAdd8d9ZBdd:d;ZCdd=d>ZDe*eD eD eDd?d@dAeD eD eDdBd@dAeDdCd@dAeD eDdDd@dAeD eDdEd@dFdGeD eDdHd@dAeDdId@dAeDdJd@dAeDdKd@dAeDdLd@dMdGeDdNd@dMdGeDdOd@dAeDdPd@dQddReDdSd@dQdTdUddVeDdWd@dUdXdYddVeDdZd@dYd[d\ddVeDd@d]d^dd_d`eDd@dadbdcdddeeDd<dfdgdhdieDd<djdkdldieDd<dmdndodieDd<dpdqdrdieD eD eD eDdUdXdYddseDdUdXdYddseDdtd@dAeDdud@dvdTdwdxeDdyd@dzd[d{dxeDd|d@dAeDd}d@dzd[d{dxeD eD eDdvdTdwd~eDdd@dAeDdvdTdwd~eDddXdd~eDdzd[d{d~eDdddd~eDdd@dvdTdweedeDdd@ddXdeedeDdd@dzd[d{eedeDdd@ddUdddeDdd@ddUdddeDdd@dUd\dXddeDdd@dYdad[ddeDdUd\dXddeDdYdad[ddeDd\ddddeDd\ddddeDdd@ddeDdd@dvdTdwdxeDdd@ddXddxeDdd@dzd[d{dxeDdd@ddddxeDdd@ddddxeDdd@dfdgdhdxeDdd@djdkdldxeDdd@ddddxeDdd@dpdqddxeDdd@eeddeDdd@eedvdTdwdeDdd@eeddXddeDdd@eedzd[d{deDdd@eeddddeDdd@eeddddeDdd@eedfdgdhdeDdd@eedjdkdldeDdd@eedmdndodeDdd@ddddxeDdd@djdkdldxeDdd@dmdndodxeDdd@ddeDdd@dvdTdwdxeDdd@ddXddxeDdd@dzd[d{dxeDdd@ddddxeDdd@ddddxeDdd@dfdgdhdxeDdd@djdkdldxeDdddeDddvdTdwdieDdddXddieDddzd[d{dieDdddddieDdddddieDdd@ddddeDdd@dddvdTdwdeDdd@dddzd[d{deDdd@eedƍeDdd@eedƍeDdd@eedvdTdwdeDdd@dddFdʍeDdd@dddvdTdwdFd̍eDdd@ddddXddFd̍eDdd@dddzd[d{dMd̍eDdd@ddddddMd̍eDdd@dddzd\d[ddҍeDdd@ddd\dddd_dԍ	eDdd@ddd\dddd_dԍ	eDdd@ddd\dddd_dԍ	eDdd@dddzd\d[ddҍeDdd@ddd\dddd_dԍ	eDdd@ddd\dddd_dԍ	eDdd@ddddzd\d[dd܍	eDdd@dddd\dddd_dލ
eDdd@dddd\dddd_dލ
eDdd@dddd\dddd_dލ
eDdd@ddddeDdd@ddvddwdeDdd@dddddeDd@eedvdzdTdd_deDdd@dvdzdTd{deDd@eeddvdzdTd{deDdd@dAeDdd@dAeDdd@dAeDdd@dAeD eDdd@dAeDdd@dAeDdd@dAeDdddd@deDdddd@deDdddd@deDdddd@deDdddd@ddZEe+de/d ddZFe+d e/d ddZGe+de/d ddZHe+de/d ddZIe+de/d d	d
ZJe+de/d ddZKe+de/d ddZLe+de/d ddZMe+de/d ddZNe+de/d ddZOe+d	e/d ddZPe+d
e/d ddZQe+de/d ddZRe+de/d ddZSe+de/d ddZTe+de/d dd ZUe+de/d d!d"ZVe+de/d d#d$ZWe+de/d d%d&ZXe+de/d d'd(ZYe+de/d d)d*ZZe+de/d d+d,Z[e+de/d d-d.Z\e+de/d d/d0Z]e+de/d d1d2Z^e+de/d d3d4Z_e+de/d d5d6Z`e+de/d d7d8Zae+de/d d9d:Zbe+de/d d;d<Zce+de/d d=d>Zde+de/d d?d@Zee+de/d dAdBZfe+d e/d dCdDZge+d!e/d dEdFZhe+d"e/d dGdHZie+d#e/d dIdJZje+d$e/d dKdLZke+d%e/d dMdNZle+d&e/d dOdPZme+d'e/d dQdRZne+d(e/d dSdTZoe+d)e/d dUdVZpe+d*e/d dWdXZqe+d+e/d dYdZZre+d,e/d d[d\Zse+d-e/d d]d^Zte+d.e/d d_d`Zue+d/e/d dadbZve+d0e/d dcddZwe+d1e/d dedfZxe+d2e/d dgdhZye+d3e/d didjZze+d4e/d dkdlZ{e+d5e/d dmdnZ|e+d6e/d dodpZ}e+d7e/d dqdrZ~e+d8e/d dsdtZe+d9e/d dudvZe+d:e/d dwdxZe+d;e/d dydzZe+d<e/d d{d|Ze+d=e/d d}d~Ze+d>e/d ddZe+d?e/d ddZe+d@e/d ddZe+dAe/d ddZe+dBe/d ddZe+dCe/d ddZe+dDe/d ddZe+dEe/d ddZe+dFe/d ddZe+dGe/d ddZe+dHe/d ddZe+dIe/d ddZe+dJe/d ddZe+dKe/d ddZe+dLe/d ddZe+dMe/d ddZe+dNe/d ddZe+dOe/d ddZe+dPe/d ddZe+dQe/d ddZe+dRe/d ddZe+dSe/d ddZe+dTe/d ddZe+dUe/d ddZe+dVe/d ddZe+dWe/d ddZe+dXe/d ddZe+dYe/d ddZe+dZe/d ddZe+d[e/d ddZe+d\e/d ddZe+d]e/d ddZe+d^e/d ddZe+d_e/d ddZe+d`e/d dÐdĄZe+dae/d dŐdƄZe+dbe/d dǐdȄZe+dce/d dɐdʄZe+dde/d dːd̄Ze+dee/d d͐d΄Ze,edϐdАdѐdҐdӐdԐdՐd֐dאdؐdِdڐdېdܐdݐdސdߐddddddddddd dS (f  a   The EfficientNet Family in PyTorch

An implementation of EfficienNet that covers variety of related models with efficient architectures:

* EfficientNet-V2
  - `EfficientNetV2: Smaller Models and Faster Training` - https://arxiv.org/abs/2104.00298

* EfficientNet (B0-B8, L2 + Tensorflow pretrained AutoAug/RandAug/AdvProp/NoisyStudent weight ports)
  - EfficientNet: Rethinking Model Scaling for CNNs - https://arxiv.org/abs/1905.11946
  - CondConv: Conditionally Parameterized Convolutions for Efficient Inference - https://arxiv.org/abs/1904.04971
  - Adversarial Examples Improve Image Recognition - https://arxiv.org/abs/1911.09665
  - Self-training with Noisy Student improves ImageNet classification - https://arxiv.org/abs/1911.04252

* MixNet (Small, Medium, and Large)
  - MixConv: Mixed Depthwise Convolutional Kernels - https://arxiv.org/abs/1907.09595

* MNasNet B1, A1 (SE), Small
  - MnasNet: Platform-Aware Neural Architecture Search for Mobile - https://arxiv.org/abs/1807.11626

* FBNet-C
  - FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable NAS - https://arxiv.org/abs/1812.03443

* Single-Path NAS Pixel1
  - Single-Path NAS: Designing Hardware-Efficient ConvNets - https://arxiv.org/abs/1904.02877

* TinyNet
    - Model Rubik's Cube: Twisting Resolution, Depth and Width for TinyNets - https://arxiv.org/abs/2010.14819
    - Definitions & weights borrowed from https://github.com/huawei-noah/CV-Backbones/tree/master/tinynet_pytorch

* And likely more...

The majority of the above models (EfficientNet*, MixNet, MnasNet) and original weights were made available
by Mingxing Tan, Quoc Le, and other members of their Google Brain team. Thanks for consistently releasing
the models and weights open source!

Hacked together by / Copyright 2019, Ross Wightman
    )partial)ListN)
checkpoint)IMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STDIMAGENET_INCEPTION_MEANIMAGENET_INCEPTION_STD)create_conv2dcreate_classifierget_norm_act_layerGroupNormAct   )build_model_with_cfgpretrained_cfg_for_features)SqueezeExcite)EfficientNetBuilderdecode_arch_defefficientnet_init_weightsround_channelsresolve_bn_argsresolve_act_layerBN_EPS_TF_DEFAULT)FeatureInfoFeatureHooks)checkpoint_seq)generate_default_cfgsregister_modelregister_model_deprecationsEfficientNetEfficientNetFeaturesc                       s   e Zd ZdZdddddddedddd	d	d
f fdd	Zdd Zejj	dddZ
ejj	d ddZejj	dd Zd!ddZdd Zd"edddZdd Z  ZS )#r   a   EfficientNet

    A flexible and performant PyTorch implementation of efficient network architectures, including:
      * EfficientNet-V2 Small, Medium, Large, XL & B0-B3
      * EfficientNet B0-B8, L2
      * EfficientNet-EdgeTPU
      * EfficientNet-CondConv
      * MixNet S, M, L, XL
      * MnasNet A1, B1, and small
      * MobileNet-V2
      * FBNet C
      * Single-Path NAS Pixel1
      * TinyNet
                F N        avgc              	      s   t t|   |
ptj}
|p tj}t||
}|p2t}|| _|| _	|| _
d| _|sX|	|}t||dd|d| _||dd| _t|||	|
|||d}tj||| | _|j| _|j}t|| j	d|d	| _|| j	dd| _t| j	| j|d
\| _| _t|  d S )NFr"      ZstridepaddingTZinplace)output_stridepad_typeround_chs_fn	act_layer
norm_layerse_layerdrop_path_rater   )r)   Z	pool_type)superr   __init__nnReLUBatchNorm2dr   r   num_classesnum_features	drop_rategrad_checkpointingr	   	conv_stembn1r   
Sequentialblocksfeaturesfeature_infoZin_chs	conv_headbn2r
   global_pool
classifierr   )self
block_argsr8   r9   in_chans	stem_sizefix_stemr+   r,   r-   r.   r/   r0   r:   r1   rD   norm_act_layerbuilderZhead_chs	__class__ a/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/timm/models/efficientnet.pyr4   K   s>    


	
zEfficientNet.__init__c                 C   sP   | j | jg}|| j || j| j| jg |t| j	| j
g tj| S N)r<   r=   extendr?   rB   rC   rD   r5   ZDropoutr:   rE   r>   )rF   ZlayersrO   rO   rP   as_sequential   s
    zEfficientNet.as_sequentialc                 C   s   t d|rdndd fdgdS )Nz^conv_stem|bn1z^blocks\.(\d+)z^blocks\.(\d+)\.(\d+))zconv_head|bn2)i )stemr?   )dict)rF   ZcoarserO   rO   rP   group_matcher   s    zEfficientNet.group_matcherTc                 C   s
   || _ d S rQ   r;   rF   enablerO   rO   rP   set_grad_checkpointing   s    z#EfficientNet.set_grad_checkpointingc                 C   s   | j S rQ   )rE   )rF   rO   rO   rP   get_classifier   s    zEfficientNet.get_classifierc                 C   s$   || _ t| j| j |d\| _| _d S )Nr2   )r8   r
   r9   rD   rE   )rF   r8   rD   rO   rO   rP   reset_classifier   s    
zEfficientNet.reset_classifierc                 C   sX   |  |}| |}| jr6tj s6t| j|dd}n
| |}| |}| 	|}|S )NT)flatten)
r<   r=   r;   torchjitis_scriptingr   r?   rB   rC   rF   xrO   rO   rP   forward_features   s    




zEfficientNet.forward_features)
pre_logitsc                 C   s:   |  |}| jdkr(tj|| j| jd}|r0|S | |S )Nr%   )ptraining)rD   r:   FZdropoutrf   rE   )rF   rb   rd   rO   rO   rP   forward_head   s    

zEfficientNet.forward_headc                 C   s   |  |}| |}|S rQ   )rc   rh   ra   rO   rO   rP   forward   s    

zEfficientNet.forward)F)T)r&   )F)__name__
__module____qualname____doc__r   r4   rS   r^   r_   ignorerV   rZ   r[   r\   rc   boolrh   ri   __classcell__rO   rO   rM   rP   r   ;   s6   8	

c                       sb   e Zd ZdZdddddddedddd	d	f fd
d	ZejjdddZ	e
ej dddZ  ZS )r   z EfficientNet Feature Extractor

    A work-in-progress feature extraction module for EfficientNet, to use as a backbone for segmentation
    and object detection models.
    )r   r   r'   r"      
bottleneckr"   r#   Fr$   Nr%   c              
      s   t t|   |
ptj}
|p tj}t||
}|p2t}|| _d| _	|sL|	|}t
||dd|d| _||dd| _t|||	|
||||d}tj||| | _t|j | _ fdd	t| jD | _t|  d | _|d
kr| jjdd}t||  | _d S )NFr"   r'   r(   Tr*   )r+   r,   r-   r.   r/   r0   r1   feature_locationc                    s"   i | ]\}}| v r|d  |qS )ZstagerO   ).0ivout_indicesrO   rP   
<dictcomp>       z1EfficientNetFeatures.__init__.<locals>.<dictcomp>rr   )moduleZ	hook_type)keys)r3   r   r4   r5   r6   r7   r   r   r:   r;   r	   r<   r=   r   r>   r?   r   r@   rA   	enumerate_stage_out_idxr   feature_hooksZ	get_dictsr   Znamed_modules)rF   rG   rx   rs   rH   rI   rJ   r+   r,   r-   r.   r/   r0   r:   r1   rK   rL   hooksrM   rw   rP   r4      s:    



zEfficientNetFeatures.__init__Tc                 C   s
   || _ d S rQ   rW   rX   rO   rO   rP   rZ      s    z+EfficientNetFeatures.set_grad_checkpointingreturnc                 C   s   |  |}| |}| jd u rg }d| jv r6|| t| jD ]D\}}| jrdtj	
 sdt||}n||}|d | jv r@|| q@|S | | | j|j}t| S d S )Nr   r   )r<   r=   r   r~   appendr}   r?   r;   r^   r_   r`   r   Z
get_outputZdevicelistvalues)rF   rb   r@   ru   boutrO   rO   rP   ri      s     





zEfficientNetFeatures.forward)T)rj   rk   rl   rm   r   r4   r^   r_   rn   rZ   r   ZTensorri   rp   rO   rO   rM   rP   r      s$   	6Fc                 K   sT   d}t }d }|ddr$d}d}t}t|| |f| |d|}|rPt|j|_|S )NFfeatures_onlyT)r8   r9   Z	head_convrD   )Zpretrained_strictkwargs_filter)r   popr   r   r   Zdefault_cfg)variant
pretrainedkwargsr   Z	model_clsr   modelrO   rO   rP   _create_effnet  s$    r         ?c              
   K   sx   dgdgdgdgdgdgdgg}t f t|dtt|d	|d
dpVttjfi t|d|}t| |fi |}|S )zCreates a mnasnet-a1 model.

    Ref impl: https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet
    Paper: https://arxiv.org/pdf/1807.11626.pdf.

    Args:
      channel_multiplier: multiplier to number of channels per layer.
    Zds_r1_k3_s1_e1_c16_noskipir_r2_k3_s2_e6_c24zir_r3_k5_s2_e3_c40_se0.25Zir_r4_k3_s2_e6_c80zir_r2_k3_s1_e6_c112_se0.25zir_r3_k5_s2_e6_c160_se0.25ir_r1_k3_s1_e6_c320r#   
multiplierr/   NrG   rI   r-   r/   	rU   r   r   r   r   r5   r7   r   r   r   channel_multiplierr   r   arch_defmodel_kwargsr   rO   rO   rP   _gen_mnasnet_a1   s$    
 r   c              
   K   sx   dgdgdgdgdgdgdgg}t f t|dtt|d	|d
dpVttjfi t|d|}t| |fi |}|S )Creates a mnasnet-b1 model.

    Ref impl: https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet
    Paper: https://arxiv.org/pdf/1807.11626.pdf.

    Args:
      channel_multiplier: multiplier to number of channels per layer.
    ds_r1_k3_s1_c16_noskipir_r3_k3_s2_e3_c24Zir_r3_k5_s2_e3_c40Zir_r3_k5_s2_e6_c80Zir_r2_k3_s1_e6_c96ir_r4_k5_s2_e6_c192ir_r1_k3_s1_e6_c320_noskipr#   r   r/   Nr   r   r   rO   rO   rP   _gen_mnasnet_b1D  s$    
 r   c              
   K   sx   dgdgdgdgdgdgdgg}t f t|dtt|d	|d
dpVttjfi t|d|}t| |fi |}|S )r   Zds_r1_k3_s1_c8Zir_r1_k3_s2_e3_c16Zir_r2_k3_s2_e6_c16zir_r4_k5_s2_e6_c32_se0.25zir_r3_k3_s1_e6_c32_se0.25zir_r3_k5_s2_e6_c88_se0.25Zir_r1_k3_s1_e6_c144   r   r/   Nr   r   r   rO   rO   rP   _gen_mnasnet_smallh  s$    
	
 r   c           
      K   s   dgdgdgdgdgdgdgg}t t|d}tf t|||d	|rDd
ntd
|d
d|||ddpvt tjfi t|t	|dd|}t
| |fi |}	|	S )z Generate MobileNet-V2 network
    Ref impl: https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet/mobilenet_v2.py
    Paper: https://arxiv.org/abs/1801.04381
    Zds_r1_k3_s1_c16r   Zir_r3_k3_s2_e6_c32Zir_r4_k3_s2_e6_c64Zir_r3_k3_s1_e6_c96Zir_r3_k3_s2_e6_c160r   r   )depth_multiplierfix_first_lastr!   r#   r/   Nrelu6)rG   r9   rI   rJ   r-   r/   r.   )r   r   rU   r   maxr   r5   r7   r   r   r   )
r   r   r   fix_stem_headr   r   r   r-   r   r   rO   rO   rP   _gen_mobilenet_v2  s,    	 
r   c                 K   s   dgddgg dg dddgdgd	gg}t f t|d
dtt|d|ddp`ttjfi t|d|}t| |fi |}|S )ai   FBNet-C

        Paper: https://arxiv.org/abs/1812.03443
        Ref Impl: https://github.com/facebookresearch/maskrcnn-benchmark/blob/master/maskrcnn_benchmark/modeling/backbone/fbnet_modeldef.py

        NOTE: the impl above does not relate to the 'C' variant here, that was derived from paper,
        it was used to confirm some building block details
    Zir_r1_k3_s1_e1_c16Zir_r1_k3_s2_e6_c24Zir_r2_k3_s1_e1_c24)Zir_r1_k5_s2_e6_c32Zir_r1_k5_s1_e3_c32Zir_r1_k5_s1_e6_c32Zir_r1_k3_s1_e6_c32)Zir_r1_k5_s2_e6_c64Zir_r1_k5_s1_e3_c64Zir_r2_k5_s1_e6_c64ir_r3_k5_s1_e6_c112Zir_r1_k5_s1_e3_c112Zir_r4_k5_s2_e6_c184Zir_r1_k3_s1_e6_c352   i  r   r/   N)rG   rI   r9   r-   r/   r   r   rO   rO   rP   _gen_fbnetc  s&    
	
 r   c              
   K   s~   dgdgddgddgddgd	gd
gg}t f t|dtt|d|ddp\ttjfi t|d|}t| |fi |}|S )zCreates the Single-Path NAS model from search targeted for Pixel1 phone.

    Paper: https://arxiv.org/abs/1904.02877

    Args:
      channel_multiplier: multiplier to number of channels per layer.
    r   r   Zir_r1_k5_s2_e6_c40Zir_r3_k3_s1_e3_c40Zir_r1_k5_s2_e6_c80Zir_r3_k3_s1_e3_c80Zir_r1_k5_s1_e6_c96Zir_r3_k5_s1_e3_c96r   r   r#   r   r/   Nr   r   r   rO   rO   rP   _gen_spnasnet  s$    

 r   r   c                 K   s   dgdgdgdgdgdgdgg}t t||d}tf t|||d	|d
d|t|d|ddppt tjfi t|d|}	t	| |fi |	}
|
S )ax  Creates an EfficientNet model.

    Ref impl: https://github.com/tensorflow/tpu/blob/master/models/official/efficientnet/efficientnet_model.py
    Paper: https://arxiv.org/abs/1905.11946

    EfficientNet params
    name: (channel_multiplier, depth_multiplier, resolution, dropout_rate)
    'efficientnet-b0': (1.0, 1.0, 224, 0.2),
    'efficientnet-b1': (1.0, 1.1, 240, 0.2),
    'efficientnet-b2': (1.1, 1.2, 260, 0.3),
    'efficientnet-b3': (1.2, 1.4, 300, 0.3),
    'efficientnet-b4': (1.4, 1.8, 380, 0.4),
    'efficientnet-b5': (1.6, 2.2, 456, 0.4),
    'efficientnet-b6': (1.8, 2.6, 528, 0.5),
    'efficientnet-b7': (2.0, 3.1, 600, 0.5),
    'efficientnet-b8': (2.2, 3.6, 672, 0.5),
    'efficientnet-l2': (4.3, 5.3, 800, 0.5),

    Args:
      channel_multiplier: multiplier to number of channels per layer
      depth_multiplier: multiplier to number of repeats per stage

    ds_r1_k3_s1_e1_c16_se0.25ir_r2_k3_s2_e6_c24_se0.25ir_r2_k5_s2_e6_c40_se0.25ir_r3_k3_s2_e6_c80_se0.25ir_r3_k5_s1_e6_c112_se0.25ir_r4_k5_s2_e6_c192_se0.25ir_r1_k3_s1_e6_c320_se0.25)r   Zdivisor
group_sizer!   r#   swishr/   N)rG   r9   rI   r-   r.   r/   )
r   r   rU   r   r   r   r5   r7   r   r   )r   r   r   channel_divisorr   r   r   r   r-   r   r   rO   rO   rP   _gen_efficientnet  s*    	 	r   c           
      K   s   dgdgdgdgdgdgg}t t|d}tf t|||d|d	d
||ddpbt tjfi t|t|dd|}t	| |fi |}	|	S )z Creates an EfficientNet-EdgeTPU model

    Ref impl: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet/edgetpu
    Zer_r1_k3_s1_e4_c24_fc24_noskipZer_r2_k3_s2_e8_c32Zer_r4_k3_s2_e8_c48Zir_r5_k5_s2_e8_c96Zir_r4_k5_s1_e8_c144Zir_r2_k5_s2_e8_c192r   r   r!   r#   r/   NZrelurG   r9   rI   r-   r/   r.   
r   r   rU   r   r   r5   r7   r   r   r   )
r   r   r   r   r   r   r   r-   r   r   rO   rO   rP   _gen_efficientnet_edge  s(    

 	r   c           
      K   s   dgdgdgdgdgdgdgg}t t|d}tf t|||d	|d
d||ddpft tjfi t|t|dd|}t	| |fi |}	|	S )zCreates an EfficientNet-CondConv model.

    Ref impl: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet/condconv
    r   r   r   r   zir_r3_k5_s1_e6_c112_se0.25_cc4zir_r4_k5_s2_e6_c192_se0.25_cc4zir_r1_k3_s1_e6_c320_se0.25_cc4r   )experts_multiplierr!   r#   r/   Nr   r   r   )
r   r   r   r   r   r   r   r-   r   r   rO   rO   rP   _gen_efficientnet_condconv4  s*     	r   c                 K   s   dgdgdgdgdgdgdgg}t f t||dd	d
ddtt|dt|d|ddphttjfi t|d|}t	| |fi |}|S )a  Creates an EfficientNet-Lite model.

    Ref impl: https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet/lite
    Paper: https://arxiv.org/abs/1905.11946

    EfficientNet params
    name: (channel_multiplier, depth_multiplier, resolution, dropout_rate)
      'efficientnet-lite0': (1.0, 1.0, 224, 0.2),
      'efficientnet-lite1': (1.0, 1.1, 240, 0.2),
      'efficientnet-lite2': (1.1, 1.2, 260, 0.3),
      'efficientnet-lite3': (1.2, 1.4, 280, 0.3),
      'efficientnet-lite4': (1.4, 1.8, 300, 0.3),

    Args:
      channel_multiplier: multiplier to number of channels per layer
      depth_multiplier: multiplier to number of repeats per stage
    ds_r1_k3_s1_e1_c16r   Zir_r2_k5_s2_e6_c40Zir_r3_k3_s2_e6_c80r   r   r   T)r   r!   r#   r   r   r/   NrG   r9   rI   rJ   r-   r.   r/   )
rU   r   r   r   r   r   r5   r7   r   r   r   r   r   r   r   r   r   r   rO   rO   rP   _gen_efficientnet_liteS  s*    	
 
r   c           	      K   s   dgdgdgdgdgdgg}t t|dd}tf t|||d	d
||ddp`t tjfi t|t|dd|}t	| |fi |}|S )z Creates an EfficientNet-V2 base model

    Ref impl: https://github.com/google/automl/tree/master/efficientnetv2
    Paper: `EfficientNetV2: Smaller Models and Faster Training` - https://arxiv.org/abs/2104.00298
    Zcn_r1_k3_s1_e1_c16_skipZer_r2_k3_s2_e4_c32Zer_r2_k3_s2_e4_c48zir_r3_k3_s2_e4_c96_se0.25zir_r5_k3_s1_e6_c112_se0.25zir_r8_k3_s2_e6_c192_se0.25r%   )r   Zround_limitr!   r#   r/   Nsilur   r   )	r   r   r   r   r   r   r-   r   r   rO   rO   rP   _gen_efficientnetv2_base|  s(     	r   c                 K   s   dgdgdgdgdgdgg}d}|r<dg|d	< d
g|d< d}t t|d}	tf t|||d|	|d|	|ddpt tjfi t|t|dd|}
t	| |fi |
}|S )a[   Creates an EfficientNet-V2 Small model

    Ref impl: https://github.com/google/automl/tree/master/efficientnetv2
    Paper: `EfficientNetV2: Smaller Models and Faster Training` - https://arxiv.org/abs/2104.00298

    NOTE: `rw` flag sets up 'small' variant to behave like my initial v2 small model,
        before ref the impl was released.
    Zcn_r2_k3_s1_e1_c24_skipZer_r4_k3_s2_e4_c48Zer_r4_k3_s2_e4_c64zir_r6_k3_s2_e4_c128_se0.25zir_r9_k3_s1_e6_c160_se0.25zir_r15_k3_s2_e6_c256_se0.25r!   Zer_r2_k3_s1_e1_c24r   zir_r15_k3_s2_e6_c272_se0.25i   r   r      r/   Nr   r   r   )r   r   r   r   rwr   r   r   r9   r-   r   r   rO   rO   rP   _gen_efficientnetv2_s  s2    

 	r   c                 K   s   dgdgdgdgdgdgdgg}t f t||dd	tt|d
|ddpZttjfi t|t|dd|}t	| |fi |}|S )z Creates an EfficientNet-V2 Medium model

    Ref impl: https://github.com/google/automl/tree/master/efficientnetv2
    Paper: `EfficientNetV2: Smaller Models and Faster Training` - https://arxiv.org/abs/2104.00298
    Zcn_r3_k3_s1_e1_c24_skipZer_r5_k3_s2_e4_c48Zer_r5_k3_s2_e4_c80zir_r7_k3_s2_e4_c160_se0.25zir_r14_k3_s1_e6_c176_se0.25zir_r18_k3_s2_e6_c304_se0.25zir_r5_k3_s1_e6_c512_se0.25r!   r   r   r/   Nr   r   
rU   r   r   r   r   r5   r7   r   r   r   r   rO   rO   rP   _gen_efficientnetv2_m  s(    

 	r   c                 K   s   dgdgdgdgdgdgdgg}t f t||dd	tt|d
|ddpZttjfi t|t|dd|}t	| |fi |}|S )z Creates an EfficientNet-V2 Large model

    Ref impl: https://github.com/google/automl/tree/master/efficientnetv2
    Paper: `EfficientNetV2: Smaller Models and Faster Training` - https://arxiv.org/abs/2104.00298
    cn_r4_k3_s1_e1_c32_skipZer_r7_k3_s2_e4_c64Zer_r7_k3_s2_e4_c96zir_r10_k3_s2_e4_c192_se0.25zir_r19_k3_s1_e6_c224_se0.25zir_r25_k3_s2_e6_c384_se0.25zir_r7_k3_s1_e6_c640_se0.25r!   r#   r   r/   Nr   r   r   r   rO   rO   rP   _gen_efficientnetv2_l  s(    

 	r   c                 K   s   dgdgdgdgdgdgdgg}t f t||dd	tt|d
|ddpZttjfi t|t|dd|}t	| |fi |}|S )z Creates an EfficientNet-V2 Xtra-Large model

    Ref impl: https://github.com/google/automl/tree/master/efficientnetv2
    Paper: `EfficientNetV2: Smaller Models and Faster Training` - https://arxiv.org/abs/2104.00298
    r   Zer_r8_k3_s2_e4_c64Zer_r8_k3_s2_e4_c96zir_r16_k3_s2_e4_c192_se0.25zir_r24_k3_s1_e6_c256_se0.25zir_r32_k3_s2_e6_c512_se0.25zir_r8_k3_s1_e6_c640_se0.25r!   r#   r   r/   Nr   r   r   r   rO   rO   rP   _gen_efficientnetv2_xl  s(    

 	r   c                 K   s   dgddgddgddgdd	gd
dgg}t f t|ddtt|d|ddp^ttjfi t|d|}t| |fi |}|S )zCreates a MixNet Small model.

    Ref impl: https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet/mixnet
    Paper: https://arxiv.org/abs/1907.09595
    r   zir_r1_k3_a1.1_p1.1_s2_e6_c24zir_r1_k3_a1.1_p1.1_s1_e3_c24z ir_r1_k3.5.7_s2_e6_c40_se0.5_nsw(ir_r3_k3.5_a1.1_p1.1_s1_e6_c40_se0.5_nswz&ir_r1_k3.5.7_p1.1_s2_e6_c80_se0.25_nswz$ir_r2_k3.5_p1.1_s1_e6_c80_se0.25_nswz+ir_r1_k3.5.7_a1.1_p1.1_s1_e6_c120_se0.5_nswz-ir_r2_k3.5.7.9_a1.1_p1.1_s1_e3_c120_se0.5_nswz&ir_r1_k3.5.7.9.11_s2_e6_c200_se0.5_nswz(ir_r2_k3.5.7.9_p1.1_s1_e6_c200_se0.5_nsw   r   r   r/   NrG   r9   rI   r-   r/   r   r   rO   rO   rP   _gen_mixnet_s  s$    
 r   c                 K   s   dgddgddgddgdd	gd
dgg}t f t||ddddtt|d|ddpdttjfi t|d|}t| |fi |}|S )zCreates a MixNet Medium-Large model.

    Ref impl: https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet/mixnet
    Paper: https://arxiv.org/abs/1907.09595
    Zds_r1_k3_s1_e1_c24z ir_r1_k3.5.7_a1.1_p1.1_s2_e6_c32zir_r1_k3_a1.1_p1.1_s1_e3_c32z"ir_r1_k3.5.7.9_s2_e6_c40_se0.5_nswr   z!ir_r1_k3.5.7_s2_e6_c80_se0.25_nswz-ir_r3_k3.5.7.9_a1.1_p1.1_s1_e6_c80_se0.25_nswzir_r1_k3_s1_e6_c120_se0.5_nswz-ir_r3_k3.5.7.9_a1.1_p1.1_s1_e3_c120_se0.5_nswz#ir_r1_k3.5.7.9_s2_e6_c200_se0.5_nswz(ir_r3_k3.5.7.9_p1.1_s1_e6_c200_se0.5_nswroundZdepth_truncr   r   r   r/   Nr   r   r   rO   rO   rP   _gen_mixnet_m;  s$    
 r   c                 K   s   dgdgdgdgdgdgdgg}t f t||dd	td
td
|ddddtt|dt|d|ddpxttjfi t	|d|}t
| |fi |}|S )zCreates a TinyNet model.
    r   r   r   r   r   r   r   r   r   r!   r   Nr#   Tr   r   r/   r   )rU   r   r   r   r   r   r   r5   r7   r   r   )r   Zmodel_widthr   r   r   r   r   r   rO   rO   rP   _gen_tinynet\  s$    
 
r   r$   c                 K   s   | dddddt tddd
|S )	Nr    r"      r      r   g      ?bicubicr<   rE   )
urlr8   
input_size	pool_sizecrop_pctinterpolationmeanstdZ
first_convrE   )r   r   )r   r   rO   rO   rP   _cfgu  s    r   zhhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mnasnet_b1-74cb7081.pthztimm/)r   	hf_hub_idzkhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/semnasnet_075-18710866.pthzhhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mnasnet_a1-d9418771.pthzphttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mnasnet_small_lamb-aff75073.pthzmhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mobilenetv2_050-3d30d450.pthr   )r   r   r   zphttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mobilenetv2_100_ra-b33bc2c4.pthzqhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mobilenetv2_110d_ra-77090ade.pthzqhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mobilenetv2_120d_ra-5987e2ed.pthzphttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mobilenetv2_140_ra-21a4e913.pthzhhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/fbnetc_100-c345b898.pthZbilinearzjhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/spnasnet_100-048bc3f4.pthzphttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_b0_ra-3dd342df.pthzmhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_b1-533bc792.pth)r"      r   )r   r   test_input_sizer   zphttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_b2_ra-bcdf34b7.pth)r   r   )r"      r   )r   r   r   r   r   r   zqhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_b3_ra2-cf984f9c.pth)	   r   )r"   @  r   zuhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_b4_ra2_320-7eb33cd5.pth)
   r   )r"     r   )r"     r   )   r   Zsquash)r   r   r   r   	crop_mode)r"     r   )   r   gffffff?i-.  )r   r   r   r   r8   )r"     r   )   r   g/$?)r   r   r   r   )r"   X  r   )   r   g|?5^?)r"     r   )   r   gI+?)r"      r   )   r   gn?)r   r   r   r   zphttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_es_ra-f111e99c.pthzqhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_em_ra2-66250f76.pth)r"      r   gMbX9?)r   r   r   r   r   zmhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_el-3b455510.pth)r"   ,  r   g!rh?zvhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_es_pruned75-1b7248cf.pthzvhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_el_pruned70-ef2a2ccf.pth)r   r   r   zshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_lite0_ra-37913777.pth)r"     r   g{Gz?)r"   |  r   )   r   g/$?zmhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-tresnet/effnetb1_pruned-bea43a3a.pth)r   r   r   r   r   r   r   zmhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-tresnet/effnetb2_pruned-08c1b27c.pthzmhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-tresnet/effnetb3_pruned-59ecf72d.pthzrhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnetv2_t_agc-3620981a.pthr   r   )r   r   r   r   r   r   zxhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/gc_efficientnetv2_rw_t_agc-927a0bde.pthzvhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_v2s_ra2_288-a6477665.pthzuhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnetv2_rw_m_agc-3d90cb1e.pth)r   r   r   r   )r"     r   )r"      r   zshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b0_ns-c0e6a31c.pth)r   r   r   zshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b1_ns-99dd0c41.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b2_ns-00306e48.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b3_ns-9d44bf68.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b4_ns-d6313a46.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b5_ns-6f26d0cf.pth)r"     r   )   r   gS?zshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b6_ns-51548356.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b7_ns-1dbc32de.pthzwhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_l2_ns_475-bebbd00a.pth)r"     r  gʡE?zshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_l2_ns-df73bb44.pthgQ?zshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b0_ap-f262efe1.pth)r   r   r   r   r   zshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b1_ap-44ef0a3d.pth)r   r   r   r   r   r   r   zshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b2_ap-2f8e7636.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b3_ap-aad25bdd.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b4_ap-dedb23e6.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b5_ap-9e82fae8.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b6_ap-4ffb161f.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b7_ap-ddb28fec.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b8_ap-00e169fa.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b5_ra-9a3e5369.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b7_ra-6c08e654.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b8_ra-572d5dd9.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b0_aa-827b6e33.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b1_aa-ea7a6ee0.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b2_aa-60c94f97.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b3_aa-84b4657e.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b4_aa-818f208c.pthzuhttps://github.com/huggingface/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b5_aa-99018a74.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b6_aa-80ba17e4.pthzuhttps://github.com/huggingface/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b7_aa-076e3472.pthzrhttps://github.com/huggingface/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b0-0af12548.pth)r   r   zrhttps://github.com/huggingface/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b1-5c1377c4.pthzrhttps://github.com/huggingface/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b2-e393ef04.pthzrhttps://github.com/huggingface/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b3-e3bd6955.pthzrhttps://github.com/huggingface/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b4-74ee3bed.pthzrhttps://github.com/huggingface/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_b5-c6949ce9.pthzphttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_es-ca1afbfe.pth)      ?r  r  zphttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_em-e78cfe58.pthzphttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_el-5143854e.pthzvhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_cc_b0_4e-4362b6b2.pth)r   r   r   r   zvhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_cc_b0_8e-66184a25.pthzvhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_cc_b1_8e-f7c79ae1.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_lite0-0aa007d2.pth)r   r   r   r   r   zshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_lite1-bde8b488.pth)r   r   r   r   r   r   r   r   zshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_lite2-dcccb7df.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_lite3-b733e338.pthzshttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_efficientnet_lite4-741542c3.pthgq=
ףp?z~https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_s_21ft1k-d7dafa41.pth)r   r   r   r   r   r   r   r   z~https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_m_21ft1k-bf41664a.pth)	r   r   r   r   r   r   r   r   r   z~https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_l_21ft1k-60127a9d.pthzhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_xl_in21ft1k-06c35c48.pthzwhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_s-eb54923e.pthzwhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_m-cc09e0cd.pthzwhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_l-d664b728.pthz{https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_s_21k-6337ad01.pthiSU  )	r   r   r   r   r8   r   r   r   r   z{https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_m_21k-361418a2.pth)
r   r   r   r   r8   r   r   r   r   r   z{https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_l_21k-91a19ec9.pthz~https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_xl_in21k-fd7e8abf.pthzxhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_b0-c7cc451f.pth)r"      r  )   r  )r   r   r   r   r   zxhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_b1-be6e41b0.pthzxhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_b2-847de54e.pth)r"      r  ?)r   r   r   r   r   r   r   r   zxhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-effv2-weights/tf_efficientnetv2_b3-57773f13.pth)r   r   r   r8   r   r   r   r   zfhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mixnet_s-a907afbc.pthzfhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mixnet_m-4647fc68.pthzfhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mixnet_l-5a9a2ed8.pthzjhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/mixnet_xl_ra-aac3c00c.pthzihttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_mixnet_s-89d3354b.pthzihttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_mixnet_m-0f4d8805.pthzihttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/tf_mixnet_l-6c92e0c8.pthzRhttps://github.com/huawei-noah/CV-Backbones/releases/download/v1.2.0/tinynet_a.pth)r   r   r   r   )r"      r  zRhttps://github.com/huawei-noah/CV-Backbones/releases/download/v1.2.0/tinynet_b.pth)r"      r  zRhttps://github.com/huawei-noah/CV-Backbones/releases/download/v1.2.0/tinynet_c.pth)r"      r	  )   r
  zRhttps://github.com/huawei-noah/CV-Backbones/releases/download/v1.2.0/tinynet_d.pth)r"   j   r  )rq   rq   zRhttps://github.com/huawei-noah/CV-Backbones/releases/download/v1.2.0/tinynet_e.pth)zmnasnet_050.untrainedzmnasnet_075.untrainedzmnasnet_100.rmsp_in1kzmnasnet_140.untrainedzsemnasnet_050.untrainedzsemnasnet_075.rmsp_in1kzsemnasnet_100.rmsp_in1kzsemnasnet_140.untrainedzmnasnet_small.lamb_in1kzmobilenetv2_035.untrainedzmobilenetv2_050.lamb_in1kzmobilenetv2_075.untrainedzmobilenetv2_100.ra_in1kzmobilenetv2_110d.ra_in1kzmobilenetv2_120d.ra_in1kzmobilenetv2_140.ra_in1kzfbnetc_100.rmsp_in1kzspnasnet_100.rmsp_in1kzefficientnet_b0.ra_in1kzefficientnet_b1.ft_in1kzefficientnet_b2.ra_in1kzefficientnet_b3.ra2_in1kzefficientnet_b4.ra2_in1kz efficientnet_b5.sw_in12k_ft_in1kzefficientnet_b5.sw_in12kzefficientnet_b6.untrainedzefficientnet_b7.untrainedzefficientnet_b8.untrainedzefficientnet_l2.untrainedzefficientnet_b0_gn.untrainedzefficientnet_b0_g8_gn.untrainedz"efficientnet_b0_g16_evos.untrainedzefficientnet_b3_gn.untrainedzefficientnet_b3_g8_gn.untrainedzefficientnet_es.ra_in1kzefficientnet_em.ra2_in1kzefficientnet_el.ra_in1kzefficientnet_es_pruned.in1kzefficientnet_el_pruned.in1kzefficientnet_cc_b0_4e.untrainedzefficientnet_cc_b0_8e.untrainedzefficientnet_cc_b1_8e.untrainedzefficientnet_lite0.ra_in1kzefficientnet_lite1.untrainedzefficientnet_lite2.untrainedzefficientnet_lite3.untrainedzefficientnet_lite4.untrainedzefficientnet_b1_pruned.in1kzefficientnet_b2_pruned.in1kzefficientnet_b3_pruned.in1kzefficientnetv2_rw_t.ra2_in1kzgc_efficientnetv2_rw_t.agc_in1kzefficientnetv2_rw_s.ra2_in1kzefficientnetv2_rw_m.agc_in1kzefficientnetv2_s.untrainedzefficientnetv2_m.untrainedzefficientnetv2_l.untrainedzefficientnetv2_xl.untrainedtf_efficientnet_b0.ns_jft_in1ktf_efficientnet_b1.ns_jft_in1ktf_efficientnet_b2.ns_jft_in1ktf_efficientnet_b3.ns_jft_in1ktf_efficientnet_b4.ns_jft_in1ktf_efficientnet_b5.ns_jft_in1ktf_efficientnet_b6.ns_jft_in1ktf_efficientnet_b7.ns_jft_in1k"tf_efficientnet_l2.ns_jft_in1k_475tf_efficientnet_l2.ns_jft_in1ktf_efficientnet_b0.ap_in1ktf_efficientnet_b1.ap_in1ktf_efficientnet_b2.ap_in1ktf_efficientnet_b3.ap_in1ktf_efficientnet_b4.ap_in1ktf_efficientnet_b5.ap_in1ktf_efficientnet_b6.ap_in1ktf_efficientnet_b7.ap_in1ktf_efficientnet_b8.ap_in1kztf_efficientnet_b5.ra_in1kztf_efficientnet_b7.ra_in1kztf_efficientnet_b8.ra_in1kztf_efficientnet_b0.aa_in1kztf_efficientnet_b1.aa_in1kztf_efficientnet_b2.aa_in1kztf_efficientnet_b3.aa_in1kztf_efficientnet_b4.aa_in1kztf_efficientnet_b5.aa_in1kztf_efficientnet_b6.aa_in1kztf_efficientnet_b7.aa_in1kztf_efficientnet_b0.in1kztf_efficientnet_b1.in1kztf_efficientnet_b2.in1kztf_efficientnet_b3.in1kztf_efficientnet_b4.in1kztf_efficientnet_b5.in1kztf_efficientnet_es.in1kztf_efficientnet_em.in1kztf_efficientnet_el.in1kztf_efficientnet_cc_b0_4e.in1kztf_efficientnet_cc_b0_8e.in1kztf_efficientnet_cc_b1_8e.in1kztf_efficientnet_lite0.in1kztf_efficientnet_lite1.in1kztf_efficientnet_lite2.in1kztf_efficientnet_lite3.in1kztf_efficientnet_lite4.in1k!tf_efficientnetv2_s.in21k_ft_in1k!tf_efficientnetv2_m.in21k_ft_in1k!tf_efficientnetv2_l.in21k_ft_in1k"tf_efficientnetv2_xl.in21k_ft_in1kztf_efficientnetv2_s.in1kztf_efficientnetv2_m.in1kztf_efficientnetv2_l.in1ktf_efficientnetv2_s.in21ktf_efficientnetv2_m.in21ktf_efficientnetv2_l.in21ktf_efficientnetv2_xl.in21kztf_efficientnetv2_b0.in1kztf_efficientnetv2_b1.in1kztf_efficientnetv2_b2.in1kz"tf_efficientnetv2_b3.in21k_ft_in1kztf_efficientnetv2_b3.in1kztf_efficientnetv2_b3.in21kzmixnet_s.ft_in1kzmixnet_m.ft_in1kzmixnet_l.ft_in1kzmixnet_xl.ra_in1kzmixnet_xxl.untrainedztf_mixnet_s.in1kztf_mixnet_m.in1kztf_mixnet_l.in1kztinynet_a.in1kztinynet_b.in1kztinynet_c.in1kztinynet_d.in1kztinynet_e.in1kr   c                 K   s   t dd| i|}|S )z& MNASNet B1, depth multiplier of 0.5. mnasnet_050r  r   )r'  r  r   r   r   r   rO   rO   rP   r'    s    r'  c                 K   s   t dd| i|}|S )z' MNASNet B1, depth multiplier of 0.75. mnasnet_075      ?r   )r*  r+  r(  r)  rO   rO   rP   r*    s    r*  c                 K   s   t dd| i|}|S )& MNASNet B1, depth multiplier of 1.0. mnasnet_100r   r   )r-  r   r(  r)  rO   rO   rP   r-    s    r-  c                 K   s   t | fi |S )r,  )r-  r   r   rO   rO   rP   
mnasnet_b1  s    r/  c                 K   s   t dd| i|}|S )z& MNASNet B1,  depth multiplier of 1.4 mnasnet_140ffffff?r   )r0  r1  r(  r)  rO   rO   rP   r0    s    r0  c                 K   s   t dd| i|}|S )z- MNASNet A1 (w/ SE), depth multiplier of 0.5 semnasnet_050r  r   )r2  r  r   r)  rO   rO   rP   r2    s    r2  c                 K   s   t dd| i|}|S )z0 MNASNet A1 (w/ SE),  depth multiplier of 0.75. semnasnet_075r+  r   )r4  r+  r3  r)  rO   rO   rP   r4    s    r4  c                 K   s   t dd| i|}|S ). MNASNet A1 (w/ SE), depth multiplier of 1.0. semnasnet_100r   r   )r6  r   r3  r)  rO   rO   rP   r6    s    r6  c                 K   s   t | fi |S )r5  )r6  r.  rO   rO   rP   
mnasnet_a1  s    r7  c                 K   s   t dd| i|}|S )z. MNASNet A1 (w/ SE), depth multiplier of 1.4. semnasnet_140r1  r   )r8  r1  r3  r)  rO   rO   rP   r8    s    r8  c                 K   s   t dd| i|}|S )z* MNASNet Small,  depth multiplier of 1.0. mnasnet_smallr   r   )r9  r   )r   r)  rO   rO   rP   r9    s    r9  c                 K   s   t dd| i|}|S )z) MobileNet V2 w/ 0.35 channel multiplier mobilenetv2_035ffffff?r   )r:  r;  r   r)  rO   rO   rP   r:    s    r:  c                 K   s   t dd| i|}|S )z( MobileNet V2 w/ 0.5 channel multiplier mobilenetv2_050r  r   )r=  r  r<  r)  rO   rO   rP   r=    s    r=  c                 K   s   t dd| i|}|S )z) MobileNet V2 w/ 0.75 channel multiplier mobilenetv2_075r+  r   )r>  r+  r<  r)  rO   rO   rP   r>    s    r>  c                 K   s   t dd| i|}|S )z( MobileNet V2 w/ 1.0 channel multiplier mobilenetv2_100r   r   )r?  r   r<  r)  rO   rO   rP   r?    s    r?  c                 K   s   t dd| i|}|S )z( MobileNet V2 w/ 1.4 channel multiplier mobilenetv2_140r1  r   )r@  r1  r<  r)  rO   rO   rP   r@    s    r@  c                 K   s   t ddd| d|}|S )z3 MobileNet V2 w/ 1.1 channel, 1.2 depth multipliersmobilenetv2_110d皙?333333?Tr   r   r   )rA  rB  r<  r)  rO   rO   rP   rA    s     rA  c                 K   s   t ddd| d|}|S )z4 MobileNet V2 w/ 1.2 channel, 1.4 depth multipliers mobilenetv2_120drC  r1  TrD  )rE  rC  r<  r)  rO   rO   rP   rE    s     rE  c                 K   s"   | rt |d< tdd| i|}|S )z	 FBNet-C bn_eps
fbnetc_100r   r   )rG  r   )r   r   r)  rO   rO   rP   rG    s    rG  c                 K   s   t dd| i|}|S )z Single-Path NAS Pixel1spnasnet_100r   r   )rH  r   )r   r)  rO   rO   rP   rH    s    rH  c                 K   s   t ddd| d|}|S )z EfficientNet-B0 efficientnet_b0r   r   r   r   )rI  r   r)  rO   rO   rP   rI    s     rI  c                 K   s   t ddd| d|}|S )z EfficientNet-B1 efficientnet_b1r   rB  rJ  )rL  rK  r)  rO   rO   rP   rL    s     rL  c                 K   s   t ddd| d|}|S )z EfficientNet-B2 efficientnet_b2rB  rC  rJ  )rM  rK  r)  rO   rO   rP   rM  (  s     rM  c                 K   s   t f d| i|S )z+ EfficientNet-B2 @ 288x288 w/ 1.0 test cropr   )rM  r.  rO   rO   rP   efficientnet_b2a1  s    rN  c                 K   s   t ddd| d|}|S )z EfficientNet-B3 efficientnet_b3rC  r1  rJ  )rO  rK  r)  rO   rO   rP   rO  8  s     rO  c                 K   s   t f d| i|S )z0 EfficientNet-B3 @ 320x320 w/ 1.0 test crop-pct r   )rO  r.  rO   rO   rP   efficientnet_b3aA  s    rP  c                 K   s   t ddd| d|}|S )z EfficientNet-B4 efficientnet_b4r1  ?rJ  )rQ  rK  r)  rO   rO   rP   rQ  H  s     rQ  c                 K   s   t ddd| d|}|S )z EfficientNet-B5 efficientnet_b5皙?皙@rJ  )rS  rK  r)  rO   rO   rP   rS  Q  s     rS  c                 K   s   t ddd| d|}|S )z EfficientNet-B6 efficientnet_b6rR  @rJ  )rV  rK  r)  rO   rO   rP   rV  Z  s     rV  c                 K   s   t ddd| d|}|S )z EfficientNet-B7 efficientnet_b7       @@rJ  )rX  rK  r)  rO   rO   rP   rX  c  s     rX  c                 K   s   t ddd| d|}|S )z EfficientNet-B8 efficientnet_b8rU  @rJ  )r[  rK  r)  rO   rO   rP   r[  l  s     r[  c                 K   s   t ddd| d|}|S )z EfficientNet-L2.efficientnet_l2333333@333333@rJ  )r]  rK  r)  rO   rO   rP   r]  u  s     r]  c                 K   s    t dttdd| d|}|S )z EfficientNet-B0 + GroupNormefficientnet_b0_gnr   r   )r/   r   )r`  r   r   r   r)  rO   rO   rP   r`    s     r`  c                 K   s"   t ddttdd| d|}|S )z* EfficientNet-B0 w/ group conv + GroupNormefficientnet_b0_g8_gnr   r   )r   r/   r   )rb  ra  r)  rO   rO   rP   rb    s     rb  c                 K   s   t ddd| d|}|S )z+ EfficientNet-B0 w/ group 16 conv + EvoNormefficientnet_b0_g16_evosr   )r   r   r   )rc  rK  r)  rO   rO   rP   rc    s     rc  c              	   K   s&   t ddddttdd| d|}|S )z EfficientNet-B3 w/ GroupNorm efficientnet_b3_gnrC  r1  r   r   )r   r   r   r/   r   )rd  ra  r)  rO   rO   rP   rd    s     rd  c              
   K   s(   t dddddttdd| d|}|S )	z% EfficientNet-B3 w/ grouped conv + BNefficientnet_b3_g8_gnrC  r1  r   r   r   )r   r   r   r   r/   r   )re  ra  r)  rO   rO   rP   re    s     re  c                 K   s   t ddd| d|}|S )z EfficientNet-Edge Small. efficientnet_esr   rJ  )rf  r   r)  rO   rO   rP   rf    s     rf  c                 K   s   t ddd| d|}|S )zw EfficientNet-Edge Small Pruned. For more info: https://github.com/DeGirum/pruned-models/releases/tag/efficientnet_v1.0efficientnet_es_prunedr   rJ  )rh  rg  r)  rO   rO   rP   rh    s     rh  c                 K   s   t ddd| d|}|S )z EfficientNet-Edge-Medium. efficientnet_emr   rB  rJ  )ri  rg  r)  rO   rO   rP   ri    s     ri  c                 K   s   t ddd| d|}|S )z EfficientNet-Edge-Large. efficientnet_elrC  r1  rJ  )rj  rg  r)  rO   rO   rP   rj    s     rj  c                 K   s   t ddd| d|}|S )zw EfficientNet-Edge-Large pruned. For more info: https://github.com/DeGirum/pruned-models/releases/tag/efficientnet_v1.0efficientnet_el_prunedrC  r1  rJ  )rk  rg  r)  rO   rO   rP   rk    s     rk  c                 K   s   t ddd| d|}|S )' EfficientNet-CondConv-B0 w/ 8 Experts efficientnet_cc_b0_4er   rJ  )rm  r   r)  rO   rO   rP   rm    s     rm  c                 K   s   t dddd| d|}|S )rl  efficientnet_cc_b0_8er   r'   r   r   r   r   )ro  rn  r)  rO   rO   rP   ro    s     ro  c                 K   s   t dddd| d|}|S )z' EfficientNet-CondConv-B1 w/ 8 Experts efficientnet_cc_b1_8er   rB  r'   rp  )rq  rn  r)  rO   rO   rP   rq    s     rq  c                 K   s   t ddd| d|}|S ) EfficientNet-Lite0 efficientnet_lite0r   rJ  )rs  r   r)  rO   rO   rP   rs    s     rs  c                 K   s   t ddd| d|}|S ) EfficientNet-Lite1 efficientnet_lite1r   rB  rJ  )rv  rt  r)  rO   rO   rP   rv    s     rv  c                 K   s   t ddd| d|}|S ) EfficientNet-Lite2 efficientnet_lite2rB  rC  rJ  )rx  rt  r)  rO   rO   rP   rx    s     rx  c                 K   s   t ddd| d|}|S ) EfficientNet-Lite3 efficientnet_lite3rC  r1  rJ  )rz  rt  r)  rO   rO   rP   rz  
  s     rz  c                 K   s   t ddd| d|}|S ) EfficientNet-Lite4 efficientnet_lite4r1  rR  rJ  )r|  rt  r)  rO   rO   rP   r|    s     r|  c                 K   s2   t |d< d|d< d}t|fddd| d|}|S )	zc EfficientNet-B1 Pruned. The pruning has been obtained using https://arxiv.org/pdf/2002.08258.pdf  rF  samer,   efficientnet_b1_prunedr   rB  Tr   r   Zprunedr   r   r   )r   r   r   r   rO   rO   rP   r~    s    r~  c                 K   s,   t |d< d|d< td	ddd| d|}|S )
zb EfficientNet-B2 Pruned. The pruning has been obtained using https://arxiv.org/pdf/2002.08258.pdf rF  r}  r,   efficientnet_b2_prunedrB  rC  Tr  )r  r  r)  rO   rO   rP   r  '  s     r  c                 K   s,   t |d< d|d< td	ddd| d|}|S )
zb EfficientNet-B3 Pruned. The pruning has been obtained using https://arxiv.org/pdf/2002.08258.pdf rF  r}  r,   efficientnet_b3_prunedrC  r1  Tr  )r  r  r)  rO   rO   rP   r  2  s     r  c                 K   s   t dddd| d|}|S )z; EfficientNet-V2 Tiny (Custom variant, tiny not in paper). efficientnetv2_rw_t皙?r  Fr   r   r   r   )r  r   r)  rO   rO   rP   r  =  s     r  c                 K   s   t ddddd| d|}|S )zR EfficientNet-V2 Tiny w/ Global Context Attn (Custom variant, tiny not in paper). gc_efficientnetv2_rw_tr  r  Fgc)r   r   r   r0   r   )r  r  r)  rO   rO   rP   r  E  s     r  c                 K   s   t dd| d|}|S )z EfficientNet-V2 Small (RW variant).
    NOTE: This is my initial (pre official code release) w/ some differences.
    See efficientnetv2_s and tf_efficientnetv2_s for versions that match the official w/ PyTorch vs TF padding
    efficientnetv2_rw_sT)r   r   )r  r  r)  rO   rO   rP   r  N  s    r  c                 K   s   t dddd| d|}|S )z* EfficientNet-V2 Medium (RW variant).
    efficientnetv2_rw_mrC  )rC  rC  rC  rC  rT  rT  Tr  )r  r  r)  rO   rO   rP   r  X  s     r  c                 K   s   t dd| i|}|S )z EfficientNet-V2 Small. efficientnetv2_sr   )r  r  r)  rO   rO   rP   r  b  s    r  c                 K   s   t dd| i|}|S )z EfficientNet-V2 Medium. efficientnetv2_mr   )r  )r   r)  rO   rO   rP   r  i  s    r  c                 K   s   t dd| i|}|S )z EfficientNet-V2 Large. efficientnetv2_lr   )r  )r   r)  rO   rO   rP   r  p  s    r  c                 K   s   t dd| i|}|S )z EfficientNet-V2 Xtra-Large. efficientnetv2_xlr   )r  )r   r)  rO   rO   rP   r  w  s    r  c                 K   s*   t |d< d|d< tddd| d|}|S )z1 EfficientNet-B0. Tensorflow compatible variant  rF  r}  r,   tf_efficientnet_b0r   rJ  )r  r  r)  rO   rO   rP   r  ~  s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z1 EfficientNet-B1. Tensorflow compatible variant  rF  r}  r,   tf_efficientnet_b1r   rB  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z1 EfficientNet-B2. Tensorflow compatible variant  rF  r}  r,   tf_efficientnet_b2rB  rC  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z0 EfficientNet-B3. Tensorflow compatible variant rF  r}  r,   tf_efficientnet_b3rC  r1  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z0 EfficientNet-B4. Tensorflow compatible variant rF  r}  r,   tf_efficientnet_b4r1  rR  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z0 EfficientNet-B5. Tensorflow compatible variant rF  r}  r,   tf_efficientnet_b5rT  rU  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z0 EfficientNet-B6. Tensorflow compatible variant rF  r}  r,   tf_efficientnet_b6rR  rW  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z0 EfficientNet-B7. Tensorflow compatible variant rF  r}  r,   tf_efficientnet_b7rY  rZ  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z0 EfficientNet-B8. Tensorflow compatible variant rF  r}  r,   tf_efficientnet_b8rU  r\  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z= EfficientNet-L2 NoisyStudent. Tensorflow compatible variant rF  r}  r,   tf_efficientnet_l2r^  r_  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )z9 EfficientNet-Edge Small. Tensorflow compatible variant  rF  r}  r,   tf_efficientnet_esr   rJ  )r  r   r   r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z: EfficientNet-Edge-Medium. Tensorflow compatible variant  rF  r}  r,   tf_efficientnet_emr   rB  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z9 EfficientNet-Edge-Large. Tensorflow compatible variant  rF  r}  r,   tf_efficientnet_elrC  r1  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )zF EfficientNet-CondConv-B0 w/ 4 Experts. Tensorflow compatible variant rF  r}  r,   tf_efficientnet_cc_b0_4er   rJ  )r  r   r   r)  rO   rO   rP   r    s     r  c                 K   s,   t |d< d|d< tdddd| d|}|S )	zF EfficientNet-CondConv-B0 w/ 8 Experts. Tensorflow compatible variant rF  r}  r,   tf_efficientnet_cc_b0_8er   r'   rp  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s,   t |d< d|d< td	ddd| d|}|S )
zF EfficientNet-CondConv-B1 w/ 8 Experts. Tensorflow compatible variant rF  r}  r,   tf_efficientnet_cc_b1_8er   rB  r'   rp  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )rr  rF  r}  r,   tf_efficientnet_lite0r   rJ  )r  r   r   r)  rO   rO   rP   r  '  s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	ru  rF  r}  r,   tf_efficientnet_lite1r   rB  rJ  )r  r  r)  rO   rO   rP   r  2  s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	rw  rF  r}  r,   tf_efficientnet_lite2rB  rC  rJ  )r  r  r)  rO   rO   rP   r  =  s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	ry  rF  r}  r,   tf_efficientnet_lite3rC  r1  rJ  )r  r  r)  rO   rO   rP   r  H  s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	r{  rF  r}  r,   tf_efficientnet_lite4r1  rR  rJ  )r  r  r)  rO   rO   rP   r  S  s     r  c                 K   s&   t |d< d|d< tdd| i|}|S )z7 EfficientNet-V2 Small. Tensorflow compatible variant  rF  r}  r,   tf_efficientnetv2_sr   )r  )r   r   r)  rO   rO   rP   r  ^  s    r  c                 K   s&   t |d< d|d< tdd| i|}|S )z8 EfficientNet-V2 Medium. Tensorflow compatible variant  rF  r}  r,   tf_efficientnetv2_mr   )r  )r   r   r)  rO   rO   rP   r  g  s    r  c                 K   s&   t |d< d|d< tdd| i|}|S )z7 EfficientNet-V2 Large. Tensorflow compatible variant  rF  r}  r,   tf_efficientnetv2_lr   )r  )r   r   r)  rO   rO   rP   r  p  s    r  c                 K   s&   t |d< d|d< tdd| i|}|S )z? EfficientNet-V2 Xtra-Large. Tensorflow compatible variant
    rF  r}  r,   tf_efficientnetv2_xlr   )r  )r   r   r)  rO   rO   rP   r  y  s    r  c                 K   s&   t |d< d|d< tdd| i|}|S )z4 EfficientNet-V2-B0. Tensorflow compatible variant  rF  r}  r,   tf_efficientnetv2_b0r   )r  r   r   r)  rO   rO   rP   r    s    r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z4 EfficientNet-V2-B1. Tensorflow compatible variant  rF  r}  r,   tf_efficientnetv2_b1r   rB  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z4 EfficientNet-V2-B2. Tensorflow compatible variant  rF  r}  r,   tf_efficientnetv2_b2rB  rC  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s*   t |d< d|d< tddd| d|}|S )	z3 EfficientNet-V2-B3. Tensorflow compatible variant rF  r}  r,   tf_efficientnetv2_b3rC  r1  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s   t dd| d|}|S )z"Creates a MixNet Small model.
    mixnet_sr   r   r   )r  )r   r)  rO   rO   rP   r    s     r  c                 K   s   t dd| d|}|S )z#Creates a MixNet Medium model.
    mixnet_mr   r  )r  r   r)  rO   rO   rP   r    s     r  c                 K   s   t dd| d|}|S )z"Creates a MixNet Large model.
    mixnet_l?r  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s   t ddd| d|}|S )zgCreates a MixNet Extra-Large model.
    Not a paper spec, experimental def by RW w/ depth scaling.
    	mixnet_xlrT  rC  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s   t ddd| d|}|S )znCreates a MixNet Double Extra Large model.
    Not a paper spec, experimental def by RW w/ depth scaling.
    
mixnet_xxlg333333@r  rJ  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s(   t |d< d|d< tdd| d|}|S )z@Creates a MixNet Small model. Tensorflow compatible variant
    rF  r}  r,   tf_mixnet_sr   r  )r  )r   r   r)  rO   rO   rP   r    s     r  c                 K   s(   t |d< d|d< tdd| d|}|S )zACreates a MixNet Medium model. Tensorflow compatible variant
    rF  r}  r,   tf_mixnet_mr   r  )r  r   r   r)  rO   rO   rP   r    s     r  c                 K   s(   t |d< d|d< tdd| d|}|S )z@Creates a MixNet Large model. Tensorflow compatible variant
    rF  r}  r,   tf_mixnet_lr  r  )r  r  r)  rO   rO   rP   r    s     r  c                 K   s   t dd| i|}|S )N)	tinynet_ar   rC  r   r   r)  rO   rO   rP   r    s    r  c                 K   s   t dd| i|}|S )N)	tinynet_br+  rB  r   r  r)  rO   rO   rP   r   	  s    r  c                 K   s   t dd| i|}|S )N)	tinynet_cHzG?g333333?r   r  r)  rO   rO   rP   r  	  s    r  c                 K   s   t dd| i|}|S )N)	tinynet_dr  g=
ףp=?r   r  r)  rO   rO   rP   r  	  s    r  c                 K   s   t dd| i|}|S )N)	tinynet_egRQ?g333333?r   r  r)  rO   rO   rP   r  	  s    r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  )Ztf_efficientnet_b0_apZtf_efficientnet_b1_apZtf_efficientnet_b2_apZtf_efficientnet_b3_apZtf_efficientnet_b4_apZtf_efficientnet_b5_apZtf_efficientnet_b6_apZtf_efficientnet_b7_apZtf_efficientnet_b8_apZtf_efficientnet_b0_nsZtf_efficientnet_b1_nsZtf_efficientnet_b2_nsZtf_efficientnet_b3_nsZtf_efficientnet_b4_nsZtf_efficientnet_b5_nsZtf_efficientnet_b6_nsZtf_efficientnet_b7_nsZtf_efficientnet_l2_ns_475Ztf_efficientnet_l2_nsZtf_efficientnetv2_s_in21ft1kZtf_efficientnetv2_m_in21ft1kZtf_efficientnetv2_l_in21ft1kZtf_efficientnetv2_xl_in21ft1kZtf_efficientnetv2_s_in21kZtf_efficientnetv2_m_in21kZtf_efficientnetv2_l_in21kZtf_efficientnetv2_xl_in21k)F)r   F)r   F)r   F)r   r   FF)r   F)r   F)r   r   r   NF)r   r   NF)r   r   r   F)r   r   F)r   r   F)r   r   NFF)r   r   F)r   r   F)r   r   F)r   F)r   r   F)r   r   F)r$   )F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)F)rm   	functoolsr   typingr   r^   Ztorch.nnr5   Ztorch.nn.functionalZ
functionalrg   Ztorch.utils.checkpointr   Z	timm.datar   r   r   r   Ztimm.layersr	   r
   r   r   Z_builderr   r   Z_efficientnet_blocksr   Z_efficientnet_builderr   r   r   r   r   r   r   Z	_featuresr   r   Z_manipulater   	_registryr   r   r   __all__Moduler   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zdefault_cfgsr'  r*  r-  r/  r0  r2  r4  r6  r7  r8  r9  r:  r=  r>  r?  r@  rA  rE  rG  rH  rI  rL  rM  rN  rO  rP  rQ  rS  rV  rX  r[  r]  r`  rb  rc  rd  re  rf  rh  ri  rj  rk  rm  ro  rq  rs  rv  rx  rz  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rj   rO   rO   rO   rP   <module>   s  %$}V$$
$ 
2
 
*

'!"










        						


								



			





						


