
    Ngf                     L   d Z ddlmZ ddlmZ d Z edddd          Z edi d	 ed	d
dddddd ed          d
  
        d edddddddd ed          d
  
        d edddddddd ed          d
  
        d  ed d!d"d#d$ddd ed          d
  
        d% ed%d&d'd(d)d ed          d*          d+ ed+d,d-d.d)d ed          d*          d/ ed/d0dd1ddg d2dd3d3dd4 ed          d56          d7 ed7d8d'd9d)dg d2dd3d3dd4 ed          d:6          d; ed;d<dddddd=dd ed          d>?          d@ edi dAd@dBdCdDddEg d2dFddGddHddIddJdKdLdMdNd3dOd3dPddQddRd4dS ed          dTdUdV edVdWdg d2dddddKddd4 ed          dX          dY edYdWdg d2dddddKdZddd4 ed          d[\          d] ed]d^dg d2dddddKddd4 ed          d_d`          da edi dAdadBd^dDddEg d2dFdbdGddHddIddcdddJdKdLdedNd3dOd3dPddQddRd4dS ed          dfd_dTdgdh edhdidg d2dddddd4 ed          dj          dk edkdldg d2dddddd4 ed          dj          dm edmdndog d2dpdddddd4 edq          dr          ds edsdtdg d2dudddddd4 ed          dr          dv edvdwdg d2dddddxdd4 ed          dr          dy edyd
ddddddddd4 ed          dz{          d| ed|ddddddddd3d3dd4 ed          d}~          d eddddddddddd4 ed          d{          d edd
dg d2dddddd4 edd          dj          d edddg d2ddddd=dd4d ed          d          d edddg d2dbdddd=dd4d ed          d          d edddodddddd4 ed          d          d edddddd ed          d*          d edddddd ed          d*          d edddddd ed          d*          d eddd"d#d$d ed          d*          d eddd'd(d)d ed          d*          d eddd-d.d)d ed          d*          d eddd-dddd ed          d	  	        d edddddddd ed          d
  
        d eddddddddd ed          d          d eddddddddd ed          d          d eddddddddd ed          d          d eddddddddd ed          d          d eddd"d#d$dddd ed          d          d eddd'd(d)dddd ed          d          d eddd-d.d)dddd ed          d          d edddddddd ed          dedTdid eddddodddd ed          dedTdid edddddddd ed          dedTdid eddddd#d$d ed          d͜edTdid eddddddd$d ed          dedTdid eddddd(d)d ed          d͜edTdiZddՄZ	dS )zEfficientDet Configurations

Adapted from official impl at https://github.com/google/automl/tree/master/efficientdet

TODO use a different config system (OmegaConfig -> Hydra?), separate model from train specific hparams
    )	OmegaConf)deepcopyc                     t          j                    } d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        | j	        | j        z
  dz   | _
        d| _        g d	| _        d
| _        d| _        d| _        d| _        t#          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 )z$Returns a default detection configs.tf_efficientdet_d1tf_efficientnet_b1N  r	   Z            ))      ?r   )ffffff?ffffff?)r   r         @sameswishgMbP?g{Gz?)epsmomentumX   TFmaxnearest        g      ?g      ?皙?g      I@i  d   )+r   createnamebackbone_namebackbone_argsbackbone_indices
image_sizenum_classes	min_level	max_level
num_levels
num_scalesaspect_ratiosanchor_scalepad_typeact_type
norm_layerdictnorm_kwargsbox_class_repeatsfpn_cell_repeatsfpn_channelsseparable_convapply_resample_bnconv_bn_relu_patterndownsample_typeupsample_typeredundant_biashead_bn_level_firsthead_act_typefpn_name
fpn_configfpn_drop_path_ratealphagammalabel_smoothinglegacy_focaljit_lossdeltabox_loss_weightsoft_nmsmax_detection_pointsmax_det_per_image)hs    V/var/www/html/ai-engine/env/lib/python3.11/site-packages/effdet/config/model_config.pydefault_detection_model_configsrH      sn   A "AF*AOAOA AL AM AKAK;,q0ALAL:::AO AN AJAJALTC000AMAAANAA"AAAOA!AAOAJALA AGAGAANAJ AGA AJ!AAH    	bifpn_sum)      ?rK   rK   relu6)r9   meanstdr*   efficientdet_d0efficientnet_b0)   rQ   @   r    Fr   )drop_path_ratezehttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/efficientdet_d0-f3276ba8.pth)
r   r   r!   r0   r/   r.   r)   r6   r   urlefficientdet_d1efficientnet_b1r   r      g?zehttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/efficientdet_d1-bb7e98fe.pthefficientdet_d2efficientnet_b2)   r[   p      efficientdet_d3efficientnet_b3)  r`         efficientdet_d4efficientnet_b4)   re      r   )r   r   r!   r0   r/   r.   r   rU   efficientdet_d5efficientnet_b5)   ri   i   efficientdetv2_dtefficientnetv2_rw_t   )r   g       @rK   bilinearTznhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/efficientdetv2_rw_dt_agc-ad8b8c96.pth)r   r   r!   r0   r/   r.   r'   r)   r4   r5   r6   r7   r   rU   efficientdetv2_dsefficientnetv2_rw_s   znhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/efficientnetv2_rw_ds_agc-cf589293.pthresdet50resnet50reluzbhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/resdet50_416-08676892.pth)r   r   r!   r0   r/   r.   r)   r*   r6   r1   r   rU   cspresdet50r   r   cspresnet50r!   r'   r0   r/   r.   r)   r*   
leaky_relur8   silur4   r5   r6   r1   r7   r   rU   zbhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/cspresdet50b-386da277.pthcspresdext50cspresnext50)r   r   r!   r'   r0   r/   r.   r)   r*   r6   r1   r7   r   rU   cspresdext50panpan_fazehttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/cspresdext50pan-92fdd094.pth)r   r   r!   r'   r0   r/   r.   r)   r*   r9   r6   r1   r7   r   rU   cspdarkdet53cspdarknet53)r   rX   r]   )r   r   r!   r'   r0   r/   r.   r)   r*   r6   r1   r7   r   r    rU   cspdarkdet53m`   r9   qufpn_famishr    zchttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/cspdarkdet53m-79062b2d.pthmixdet_mmixnet_m)r   r   r!   r'   r0   r/   r.   r)   r6   r7   r   rU   mixdet_lmixnet_lmobiledetv2_110dmobilenetv2_110d)  r   0   g?)r   r   r!   r'   r0   r/   r.   r)   r*   r6   r7   r   rU   mobiledetv2_120dmobilenetv2_120d8   mobiledetv3_largemobilenetv3_large_100
hard_swishefficientdet_q0zehttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/efficientdet_q0-bdf1bdb5.pth)r   r   r!   r0   r/   r.   r)   r9   r6   r7   r   rU   efficientdet_q1zfhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/efficientdet_q1b-d0612140.pth)r   r   r!   r0   r/   r.   r)   r9   r4   r5   r6   r7   r   rU   efficientdet_q2zehttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/efficientdet_q2-0f7564e5.pthefficientdet_w0P   	depthwise)rT   feature_locationefficientdet_esefficientnet_esH   )r   r   r!   r'   r0   r/   r.   r)   r*   r6   r7   r1   r   rU   efficientdet_emefficientnet_emefficientdet_lite0efficientnet_lite0)r   r   r!   r0   r/   r.   r*   r6   r7   r   rU   tf_efficientdet_d0tf_efficientnet_b0zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d0_34-f153e0cf.pthr   r   zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d1_40-a30f94af.pthtf_efficientdet_d2tf_efficientnet_b2zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d2_43-8107aa99.pthtf_efficientdet_d3tf_efficientnet_b3zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d3_47-0b525f35.pthtf_efficientdet_d4tf_efficientnet_b4zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d4_49-f56376d9.pthtf_efficientdet_d5tf_efficientnet_b5zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d5_51-c79f9be6.pthtf_efficientdet_d6tf_efficientnet_b6r      zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d6_52-4eda3773.pth)	r   r   r!   r0   r/   r.   r9   r   rU   tf_efficientdet_d7)   r   g      @zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d7_53-6d1d7a95.pth)
r   r   r!   r0   r/   r.   r(   r9   r   rU   tf_efficientdet_d7xtf_efficientnet_b7r   zihttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d7x-f390b87c.pth)r   r   r!   r0   r/   r.   r(   r$   r9   r   rU   tf_efficientdet_d0_apzkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d0_ap-d0cdbd0a.pth)r   r   r!   r0   r/   r.   rM   rN   
fill_colorr   rU   tf_efficientdet_d1_apzkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d1_ap-7721d075.pthtf_efficientdet_d2_apzkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d2_ap-a2995c19.pthtf_efficientdet_d3_apzkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d3_ap-e4a2feab.pthtf_efficientdet_d4_apzkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d4_ap-f601a5fc.pthtf_efficientdet_d5_apzkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_d5_ap-3673ae5d.pthtf_efficientdet_lite0tf_efficientnet_lite0)@  r   g      @r   )r   r   r!   r(   r0   r/   r.   r   zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_lite0-dfacfc78.pthtf_efficientdet_lite1tf_efficientnet_lite1zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_lite1-6dc7ab30.pthtf_efficientdet_lite2tf_efficientnet_lite2)  r   zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_lite2-86c5d55b.pthtf_efficientdet_lite3tf_efficientnet_lite3)r   r   r!   r0   r/   r.   r   zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_lite3-506852cb.pthtf_efficientdet_lite3x   zlhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_lite3x-8404c57b.pthtf_efficientdet_lite4tf_efficientnet_lite4zkhttps://github.com/rwightman/efficientdet-pytorch/releases/download/v0.1/tf_efficientdet_lite4-391ddabc.pthc                     t                      }|                    t          |                     |j        |j        z
  dz   |_        t          |          }|S )z<Get the default config for EfficientDet based on model name.r   )rH   updateefficientdet_model_param_dictr$   r#   r%   r   )
model_namerF   s     rG   get_efficientdet_configr     sJ    '))AHH*:6777;,q0ALAHrI   N )r   )
__doc__	omegaconfr   copyr   rH   r,   tf_efficientdet_lite_commonr   r   r   rI   rG   <module>r      s                A A AH #d		    !% A
! A
! A
!D'd#...s   A
! D'd#...s   A
!4 D'd#...   5A
!L D'd#...   MA
!d D'd#...	 	 	 	eA
!x D'd#...	 	 	 	yA
!N d +%oo"  d#...|   OA
!p d +%oo"  d#...|   qA
!X T d#...p   YA
!t    ]#m : &ooo	
 R  !   f #
 !j u u !D  d#....!" qp# uA
!Z $%oo d#...   [A
!z D$%oo d#...s   {A
!\ $%oo d#..."   ]A
!~ $   _$n : &ooo	
 R  !    f #
 !j u u  !D!" d#....#$ #%& rq' A
!h T %oo d#...   iA
!D T %oo d#...   EA
!` T(%oo d$///   aA
!~ T(%oo d#...   A
!\ d -%oo d#...   ]A
!z D' d#...s   {A
!V	 D'"  d#...t   W	A
!v	 D' d#...s   w	A
!R
 D'%oo d(* * *    S
A
!r
 D'%oo d#...   s
A
!R D'%oo d#...   SA
!r t!* d#...   sA
!P t!*d#...y	 	 	 	QA
!d t!*d#...y	 	 	 	eA
!x t!*d#...y	 	 	 	yA
!L t!*d#...y	 	 	 	MA
!` t!*d#...y	 	 	 	aA
!t t!*d#...y	 	 	 	uA
!H t!*d#...y
 
 
 
IA
!^ t!*d#...y   _A
!v "*d#...w   wA
!V $$*d#...y   WA
!p $$*d#...y   qA
!J $$*d#...y   KA
!d $$*d#...y   eA
!~ $$*d#...y   A
!X $$*d#...y   YA
!v $ $-d"---  &  z   wA
!N $ $-d#...  &  z   OA
!f $ $-d#...  &  z   gA
!~ $ 
$-d#...
 
 &
 
 z
 
 
 
A
!T  4 %-d#...  &  {   UA
!l $ 
$-d#...
 
 &
 
 z
 
 
 
mA
! H     rI   