
    wi                     L    d dl mZ ddlmZmZmZ  G d dej                  ZdS )    )nn   )ConvBNLayerResidualUnitmake_divisiblec                   0     e Zd Z	 	 	 	 	 d fd	Zd Z xZS )MobileNetV3   small      ?Nc                    t          t          |                                            |g d}|g d}t          |t                    s*J d                    t          |                                t          |t                    s*J d                    t          |                                t          |          dk    s*J d                    t          |                                t          |          dk    s*J d                    t          |                                |dk    r`d	d
d
dd|d         gd	dddd|d         dfgg dddddd|d         dfgg dg dg dg dg dg dg dg dddddd|d	         dfgg d g d g}d!}nq|d"k    rVd	d
d
dd|d         dfgd	dddd|d         dfgg d#dd$ddd|d         dfgg d%g d%g d&g d'dd(d$dd|d	         dfgg d)g d)g}d*}nt          d+|z   d,z             g d-}	||	v sJ d.                    |	|                      d
}
t          |t          |
|z            d	dddddd/0	  	        | _        d}g }t          |
|z            }
|D ]}\  }}}}}}|                    t          |
t          ||z            t          ||z            ||||d1t          |dz             z   2                     t          ||z            }
|dz  }~t          j        | | _        t          |
t          ||z            ddddddd30	  	        | _        t          j        ddd4          | _        t          ||z            | _        d S )5N)   r   r   r   )r   r   r   r   z)large_stride type must be list but got {}z)small_stride type must be list but got {}   z(large_stride length must be 4 but got {}z(small_stride length must be 4 but got {}larger
      Frelur   @      r   )r
   H   r   Fr   r      r   (   Tr   )r   x   r   Tr   r   )r
      P   F
hard_swishr   )r
      r   Fr   r   )r
      r   Fr   r   )r
   i  p   Tr   r   )r
     r   Tr   r   r      r   )r     r    Tr   r   r!   r   )r
   X   r   Fr   r   `   )r   r   r   Tr   r   )r   r   0   Tr   r   )r      r$   Tr   r   i   )r   @  r#   Tr   r   r&   zmode[z_model] is not implemented!)gffffff?r   g      ?g      ?g      ?z-supported scales are {} but input scale is {}conv1)	in_channelsout_channelskernel_sizestridepaddinggroupsif_actactnameconv)r(   mid_channelsr)   r*   r+   use_ser/   r0   	conv_last)r*   r+   r,   )superr	   __init__
isinstancelistformattypelenNotImplementedErrorr   r   r'   appendr   strr   
Sequentialblocksconv2	MaxPool2dpoolr)   )selfr(   
model_namescalelarge_stridesmall_stridekwargscfgcls_ch_squeezesupported_scaleinplanesi
block_listkexpcsenls	__class__s                      /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/rapidocr/networks/backbones/rec_mobilenet_v3.pyr6   zMobileNetV3.__init__   s    	k4  ))+++'<<L'<<L$
 
 	U 	U9@@lASASTT	U 	U 	U $
 
 	U 	U9@@lASASTT	U 	U 	U """8??L@Q@QRR #"" """8??L@Q@QRR #""    BE6<?;BE6LOQ+?@---BD&<?A*>?------444444444444444444CdL<?A2FG444444!C$ !NN7"" BD&<?A*>?BE6LOQ+?@---BD,a!0DE333333333333CT<,q/11EF333333C !NN%*$'DD   766_$$$:AAU
 
 %$$
  #'5(899

 

 


 
!(U"233$' 	 	 AsAr2q (!/!<!<!/	!:!: !#a!e**,	 	 	   &eai00HFAAmZ0  '(>??

 

 


 LQq!DDD	*5>+ABB    c                     |                      |          }|                     |          }|                     |          }|                     |          }|S )N)r'   r@   rA   rC   )rD   xs     rW   forwardzMobileNetV3.forward   sC    JJqMMKKNNJJqMMIIaLLrX   )r
   r   r   NN)__name__
__module____qualname__r6   r[   __classcell__)rV   s   @rW   r	   r	      sj         zC zC zC zC zC zCx      rX   r	   N)torchr   det_mobilenet_v3r   r   r   Moduler	    rX   rW   <module>rd      su          G G G G G G G G G GB B B B B") B B B B BrX   