
    Ng              
          d dl mZ d dlmZ d dlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZ dd	lmZmZ dd
lmZmZ g Zd ZddZ e ed           ed           ed           ed           ed           ed          d          Zeddefd            Zeddefd            Zeddefd            Zeddefd            Zeddefd            Zeddefd            Z dS )    )partialNIMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STD   )build_model_with_cfg)pretrained_cfg_for_features)SqueezeExcite)decode_arch_defresolve_act_layerresolve_bn_argsround_channels)register_modelgenerate_default_cfgs)MobileNetV3MobileNetV3Featuresc                    d}t          t          dt          j        t                    }t          dt          |          |dt          t          j        fi t          |          t          |d          |d|}d}t          }d}	|                    d	d          rd
}d}	t          }t          ||| f| |	d|}
|rt          |
j                  |
_        |
S )zCreates a hardcorenas model

    Ref impl: https://github.com/Alibaba-MIIL/HardCoReNAS
    Paper: https://arxiv.org/abs/2102.11646

    i   hard_sigmoid)
gate_layerforce_act_layerrd_round_fn    
hard_swish)
block_argsnum_features	stem_size
norm_layer	act_layerse_layerFNfeatures_onlyT)num_classesr   global_pool	head_conv	head_biasr"   )pretrained_strictkwargs_filter )r   r
   nnReLUr   dictr   BatchNorm2dr   r   r   popr   r   r	   default_cfg)
pretrainedvariantarch_defkwargsr   r   model_kwargsr    	model_clsr&   models              S/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/models/hardcorenas.py_gen_hardcorenasr6      s    L}QSQXftuuuH "8,,!2>EE_V-D-DEE#FL99   L MIM// (o'	  ,+#   E  K78IJJL     c                 4    | dddddt           t          ddd
|S )	Ni  )      r;   )   r<   g      ?bilinear	conv_stem
classifier)
urlr!   
input_size	pool_sizecrop_pctinterpolationmeanstd
first_convr?   r   )r@   r1   s     r5   _cfgrH   7   s5    4}SYJ%.B!	 
  r7   ztimm/)	hf_hub_id)zhardcorenas_a.miil_green_in1kzhardcorenas_b.miil_green_in1kzhardcorenas_c.miil_green_in1kzhardcorenas_d.miil_green_in1kzhardcorenas_e.miil_green_in1kzhardcorenas_f.miil_green_in1kFreturnc                 P    dgddgddgddgddgd	d
gdgg}t          d| d|d|}|S )z hardcorenas_A ds_r1_k3_s1_e1_c16_nreir_r1_k5_s2_e3_c24_nreir_r1_k5_s1_e3_c24_nre_se0.25ir_r1_k5_s2_e3_c40_nreir_r1_k5_s1_e6_c40_nre_se0.25ir_r1_k5_s2_e6_c80_se0.25ir_r1_k5_s1_e6_c80_se0.25ir_r1_k5_s1_e6_c112_se0.25ir_r1_k5_s2_e6_c192_se0.25ir_r1_k5_s1_e6_c192_se0.25cn_r1_k1_s1_c960hardcorenas_ar.   r/   r0   r'   r6   r.   r1   r0   r4   s       r5   rW   rW   K   sj     **-EGf,g)+JK,.IJ-/KL-/KLOaNb	dH
 i
OV^iibhiiELr7   c                 P    dgg dg dg dg dg ddgg}t          d
| d|d	|}|S )z hardcorenas_B rL   )rM   rN   ir_r1_k3_s1_e3_c24_nre)rO   ir_r1_k5_s1_e3_c40_nrer]   )ir_r1_k5_s2_e3_c80ir_r1_k5_s1_e3_c80ir_r1_k3_s1_e3_c80r`   )ir_r1_k5_s1_e3_c112ir_r1_k3_s1_e3_c112rb   rb   rT   rU   zir_r1_k3_s1_e3_c192_se0.25rV   hardcorenas_brX   r'   rY   rZ   s       r5   rd   rd   W   si     **eee^^^hhhllljjj#$&H i
OV^iibhiiELr7   c                 P    dgddgg dg dg dg ddgg}t          d| d	|d
|}|S )z hardcorenas_C rL   rM   rN   )rO   r]   r]   r]   )ir_r1_k5_s2_e4_c80rR   r`   r`   )rS   rb   rb   rb   rc   rV   hardcorenas_crX   r'   rY   rZ   s       r5   rg   rg   e   so     **-EGf,g+ + +ooosssjjj#$&H i
OV^iibhiiELr7   c                 P    dgddgg dg dg dg ddgg}t          d| d	|d
|}|S )z hardcorenas_D rL   ir_r1_k5_s2_e3_c24_nre_se0.25rN   )zir_r1_k5_s2_e3_c40_nre_se0.25ir_r1_k5_s1_e4_c40_nre_se0.25ir_r1_k3_s1_e3_c40_nre_se0.25)ir_r1_k5_s2_e4_c80_se0.25ir_r1_k3_s1_e3_c80_se0.25rm   rm   )zir_r1_k3_s1_e4_c112_se0.25zir_r1_k5_s1_e4_c112_se0.25ir_r1_k3_s1_e3_c112_se0.25ir_r1_k5_s1_e3_c112_se0.25rT   rU   rU   ir_r1_k3_s1_e6_c192_se0.25rV   hardcorenas_drX   r'   rY   rZ   s       r5   rr   rr   s   s|     **-LNm,nsss. . ./ / // / /1C0DFH i
OV^iibhiiELr7   c                 P    dgddgg dddgg dg dd	gg}t          d| d
|d|}|S )z hardcorenas_E rL   ri   rN   )ir_r1_k5_s2_e6_c40_nre_se0.25rj   rj   rk   rl   zir_r1_k3_s1_e6_c80_se0.25)rS   rS   rS   ro   rp   rV   hardcorenas_erX   r'   rY   rZ   s       r5   ru   ru      s|     **-LNm,n2 2 24OQl3m/ / // / /1C0DFH i
OV^iibhiiELr7   c                 P    dgddgddgg dg dg dd	gg}t          d| d
|d|}|S )z hardcorenas_F rL   ri   rN   rt   rP   )rQ   rR   rm   rm   )zir_r1_k3_s1_e6_c112_se0.25rS   rS   rn   )rT   rU   rq   rq   rV   hardcorenas_frX   r'   rY   rZ   s       r5   rw   rw      s|     **-LNm,n02QR. . ./ / // / /1C0DFH i
OV^iibhiiELr7   )r8   )F)!	functoolsr   torch.nnr(   	timm.datar   r   _builderr   r	   _efficientnet_blocksr
   _efficientnet_builderr   r   r   r   	_registryr   r   mobilenetv3r   r   __all__r6   rH   default_cfgsrW   rd   rg   rr   ru   rw   r'   r7   r5   <module>r      s               A A A A A A A A * * * * * * 1 1 1 1 1 1 / / / / / / f f f f f f f f f f f f < < < < < < < < 9 9 9 9 9 9 9 9
$ $ $N    %$%)TG%<%<%<%)TG%<%<%<%)TG%<%<%<%)TG%<%<%<%)TG%<%<%<%)TG%<%<%<& &         
 
 
 
 
 
 
 
 
 
 
 
       
 
 
 
 
 
        r7   