
    RЦib5                     2   S r SSKJr  SSKJrJr  SSKrSSKJr  SSK	J
r
Jr  SSKJrJr  SSKJr  SS	KJr  SS
KJrJrJr  S/r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      rS)S jr \" SSSSSS\
\S S!S"S#.SSSSSS\
\S S!S"S#.S$.5      r!\S)S%\4S& jj5       r"\" \#S'S(05        g)*zPytorch Inception-Resnet-V2 implementation
Sourced from https://github.com/Cadene/tensorflow-model-zoo.torch (MIT License) which is
based upon Google's Tensorflow implementation and pretrained weights (Apache 2.0 License)
    )partial)TypeOptionalN)IMAGENET_INCEPTION_MEANIMAGENET_INCEPTION_STD)create_classifierConvNormAct   )build_model_with_cfg)flatten_modules)register_modelgenerate_default_cfgsregister_model_deprecationsInceptionResnetV2c                   `   ^  \ rS rSr   SS\\\R                        4U 4S jjjrS r	Sr
U =r$ )Mixed_5b   
conv_blockc                   > X#S.n[         TU ]  5         U=(       d    [        nU" S
SSS.UD6U l        [        R
                  " U" SSSS.UD6U" SSSSS.UD65      U l        [        R
                  " U" SSSS.UD6U" SSSSS.UD6U" SSSSS.UD65      U l        [        R
                  " [        R                  " SSSSS	9U" SSSS.UD65      U l	        g )Ndevicedtyper
   kernel_sizestride      r   r   padding   F)r   r   count_include_pad)   `   )r"   0   r$   @   )r"   r&   )r&   r#   )r#   r#   )
super__init__r	   branch0nn
Sequentialbranch1branch2	AvgPool2dbranch3selfr   r   r   dd	__class__s        ^/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/models/inception_resnet_v2.pyr(   Mixed_5b.__init__   s     /.;
!IqIbI}}>Aa>2>H1QHRH

 }}>Aa>2>H1QHRHH1QHRH
 }}LL1a5I>Aa>2>
    c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      n[        R
                  " X#XE4S5      nU$ Nr
   r)   r,   r-   r/   torchcatr1   xx0x1x2x3outs          r4   forwardMixed_5b.forward0   P    \\!_\\!_\\!_\\!_ii(!,
r6   r)   r,   r-   r/   NNN__name__
__module____qualname____firstlineno__r   r   r*   Moduler(   rC   __static_attributes____classcell__r3   s   @r4   r   r      s7     59	
 bii1
 
8 r6   r   c                   f   ^  \ rS rSr    SS\S\\\R                        4U 4S jjjr	S r
SrU =r$ )Block359   scaler   c                   > X4S.n[         TU ]  5         Xl        U=(       d    [        nU" SSSS.UD6U l        [
        R                  " U" SSSS.UD6U" SSSSS.UD65      U l        [
        R                  " U" SSSS.UD6U" SSSSS.UD6U" S	SSSS.UD65      U l        [
        R                  " S
SSS.UD6U l
        [
        R                  " 5       U l        g )Nr   r
   r   r    r   )@      rW   rW   )rW   r$   r%   )   rV   )r'   r(   rT   r	   r)   r*   r+   r,   r-   Conv2dconv2dReLUactr1   rT   r   r   r   r2   r3   s         r4   r(   Block35.__init__:   s     /
.;
!IqIbI}}>Aa>2>H1QHRH

 }}>Aa>2>H1QHRHH1QHRH
 iiHaHRH779r6   c                    U R                  U5      nU R                  U5      nU R                  U5      n[        R                  " X#U4S5      nU R                  U5      nXPR                  -  U-   nU R                  U5      nU$ r8   )r)   r,   r-   r:   r;   r[   rT   r]   r1   r=   r>   r?   r@   rB   s         r4   rC   Block35.forwardV   sn    \\!_\\!_\\!_iia(kk#JJ"hhsm
r6   )r]   r)   r,   r-   r[   rT         ?NNNrI   rJ   rK   rL   floatr   r   r*   rM   r(   rC   rN   rO   rP   s   @r4   rR   rR   9   sD     48 !bii1 8 r6   rR   c                   `   ^  \ rS rSr   SS\\\R                        4U 4S jjjrS r	Sr
U =r$ )Mixed_6aa   r   c           
        > X#S.n[         TU ]  5         U=(       d    [        nU" SSSS.UD6U l        [        R
                  " U" S	SSS.UD6U" S
SSSS.UD6U" SSSS.UD65      U l        [        R                  " SSS9U l        g )Nr   r    r   r   r
   r   r   )rV     )rV      )rm   rm   rm   rl   )	r'   r(   r	   r)   r*   r+   r,   	MaxPool2dr-   r0   s        r4   r(   Mixed_6a.__init__b   s     /.;
!J!JrJ}}?Qq?B?JQq!JrJ?Qq?B?
 ||Aa0r6   c                     U R                  U5      nU R                  U5      nU R                  U5      n[        R                  " X#U4S5      nU$ r8   )r)   r,   r-   r:   r;   ra   s         r4   rC   Mixed_6a.forwardv   sB    \\!_\\!_\\!_iia(
r6   )r)   r,   r-   rG   rH   rP   s   @r4   rh   rh   a   s7     59	1 bii11 1( r6   rh   c                   f   ^  \ rS rSr    SS\S\\\R                        4U 4S jjjr	S r
SrU =r$ )Block17~   rT   r   c                 X  > X4S.n[         TU ]  5         Xl        U=(       d    [        nU" S	SSS.UD6U l        [
        R                  " U" S
SSS.UD6U" SSSSS.UD6U" SSSSS.UD65      U l        [
        R                  " SSSS.UD6U l	        [
        R                  " 5       U l        g )Nr   r
   r   )r
      )r   r    r   )rw   r
   )r    r   )@  r"   )rx   rY   )rY      )ry   r"   )rl   rx   )r'   r(   rT   r	   r)   r*   r+   r,   rZ   r[   r\   r]   r^   s         r4   r(   Block17.__init__   s     /
.;
!K1KK}}@a@R@TVAvTQSTTVAvTQST
 iiIqIbI779r6   c                     U R                  U5      nU R                  U5      n[        R                  " X#4S5      nU R	                  U5      nX@R
                  -  U-   nU R                  U5      nU$ r8   )r)   r,   r:   r;   r[   rT   r]   r1   r=   r>   r?   rB   s        r4   rC   Block17.forward   s_    \\!_\\!_ii!$kk#JJ"hhsm
r6   )r]   r)   r,   r[   rT   rc   re   rP   s   @r4   rt   rt   ~   sD     48 !bii1 . r6   rt   c                   `   ^  \ rS rSr   SS\\\R                        4U 4S jjjrS r	Sr
U =r$ )Mixed_7ary   r   c           
        > X#S.n[         TU ]  5         U=(       d    [        n[        R                  " U" SSSS.UD6U" S	SSS.UD65      U l        [        R                  " U" SSSS.UD6U" S
SSS.UD65      U l        [        R                  " U" SSSS.UD6U" S
SSSS.UD6U" SSSS.UD65      U l        [        R                  " SSS9U l	        g )Nr   r
   r   r    r   r   rk   )rx   rm   rn   )rm      )r   rV   )
r'   r(   r	   r*   r+   r)   r,   r-   ro   r/   r0   s        r4   r(   Mixed_7a.__init__   s     /.;
}}@a@R@?Qq?B?

 }}@a@R@?Qq?B?

 }}@a@R@JQq!JrJ?Qq?B?
 ||Aa0r6   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      n[        R
                  " X#XE4S5      nU$ r8   r9   r<   s          r4   rC   Mixed_7a.forward   rE   r6   rF   rG   rH   rP   s   @r4   r   r      s7     59	1 bii11 18 r6   r   c            	       l   ^  \ rS rSr     SS\S\S\\\R                        4U 4S jjjr
S rSrU =r$ )	Block8   rT   no_relur   c                 v  > XES.n[         TU ]  5         Xl        U=(       d    [        nU" S	SSS.UD6U l        [
        R                  " U" S	SSS.UD6U" S
SSSS.UD6U" SSSSS.UD65      U l        [
        R                  " SSSS.UD6U l	        U(       a  S U l        g [
        R                  " 5       U l        g )Nr   r
   r   )r
   r    )r   r
   r   )r    r
   )r
   r   )   r"   )r"      )r   rm   )i  r   )r'   r(   rT   r	   r)   r*   r+   r,   rZ   r[   r\   relu)r1   rT   r   r   r   r   r2   r3   s          r4   r(   Block8.__init__   s     /
.;
!K1KK}}@a@R@TVAvTQSTTVAvTQST
 iiIqIbI#D		r6   c                     U R                  U5      nU R                  U5      n[        R                  " X#4S5      nU R	                  U5      nX@R
                  -  U-   nU R                  b  U R                  U5      nU$ r8   )r)   r,   r:   r;   r[   rT   r   r|   s        r4   rC   Block8.forward   si    \\!_\\!_ii!$kk#JJ"99 ))C.C
r6   )r)   r,   r[   r   rT   )rd   FNNN)rI   rJ   rK   rL   rf   boolr   r   r*   rM   r(   rC   rN   rO   rP   s   @r4   r   r      sQ     !4833 3 !bii1	3 30 r6   r   c                   h  ^  \ rS rSr          SS\S\S\S\S\S\S	\S
\SS4U 4S jjjr\R                  R                  SS j5       r\R                  R                  SS j5       r\R                  R                  S\R                  4S j5       rSS\S\4S jjrS rSS\4S jjrS rSrU =r$ )r      Nnum_classesin_chans	drop_rateoutput_strideglobal_pool
norm_layernorm_eps	act_layerreturnc                   > [         TU ]  5         XS.nXl        X l        S=U l        U l        US:X  d   e[        [        SUU[        US9[        SS9S9nU" US4S	S
S.UD6U l	        U" S'S	SS.UD6U l
        U" S(S	SSS.UD6U l        [        SS
SS9/U l        [        R                  " S	S
S9U l        U" S)SSS.UD6U l        U" S*S	SS.UD6U l        U =R                  [        SSSS9/-  sl        [        R                  " S	S
S9U l        ['        S+SU0UD6U l        [        R*                  " [-        S5       Vs/ s H  n[/        S+SUS.UD6PM     sn6 U l        U =R                  [        SSSS9/-  sl        [3        S+SU0UD6U l        [        R*                  " [-        S5       Vs/ s H  n[7        S+SUS.UD6PM     sn6 U l        U =R                  [        SSS S9/-  sl        [;        S+SU0UD6U l        [        R*                  " [-        S!5       Vs/ s H  n[?        S+S"US.UD6PM     sn6 U l         [?        S+SUS#.UD6U l!        U" S$U R                  4SSS.UD6U l"        U =R                  [        U R                  SS%S9/-  sl        [G        U R                  U R                  4UUS&.UD6u  U l$        U l%        U l&        g s  snf s  snf s  snf ),Nr   i   rW   r   )epsT)inplace)r   r   r   norm_kwargs
act_kwargsr    r   r   r
   r&   r   	conv2d_2b)num_chs	reductionmodulerk   r"      	conv2d_4ar   
   g(\?)rT   r   rV      repeat   g?rx      repeat_1	   g?)r   r   r   	conv2d_7b)	pool_typer   rX   )rW   r&   )r&   P   )r   r"    )'r'   r(   r   r   num_featureshead_hidden_sizer   r	   dict	conv2d_1a	conv2d_2ar   feature_infor*   ro   
maxpool_3a	conv2d_3br   
maxpool_5ar   mixed_5br+   rangerR   r   rh   mixed_6art   r   r   mixed_7ar   repeat_2block8r   r   r   	head_dropclassif)r1   r   r   r   r   r   r   r   r   r   r   r2   r   _r3   s                 r4   r(   InceptionResnetV2.__init__   s    	/& 488D1"""!*D)

 $HbPaPRP#J!JrJ#U!QURTU!"+NO,,q3#J!JrJ#K1KKd3!KPQQ,,q3 =J="=mm`efh`i%j`i[\g&VDZ&VSU&V`i%jkd3!HMNN =J="=bghjbk'lbk]^(Xdz(XUW(Xbk'lmd42jQRR =J="=afghai'jai\](WTj(WTV(Wai'jkGTjGBG#D$*;*;[ST[XZ[d4+<+<S^_``9J:
 "	:

 :
6$.$, &k (m (ks   <K+KKc                    ^ [        [        U R                  5       SS95       VVVs0 s H
  u  nu  p4X2_M     snnnmTR                  S5        U4S jnU$ s  snnnf )Nr   )prefixr   c           	        > [        S Vs/ s H  oR                  U5      PM     sn5      (       a  g[        S Vs/ s H  oR                  U5      PM     sn5      (       a  g[        S Vs/ s H  oR                  U5      PM     sn5      (       a  [        T5      S-   $ TR                  5        H4  nU[	        U R                  S5      S [        U5       5      :X  d  M/  TU   s  $    [        S5      $ s  snf s  snf s  snf )N)conv2d_1conv2d_2r   )conv2d_3conv2d_4r
   )r   conv2d_7.inf)any
startswithlenkeystuplesplitrf   )namenk
module_maps      r4   _matcher1InceptionResnetV2.group_matcher.<locals>._matcher/  s    0HI0H1OOA&0HIJJ2JK2JQooa(2JKLL2HI2HQooa(2HIJJ:**#*AE$**S/'3q6":;;)!}, + U|# JKIs   C2C7+C<)	enumerater   named_childrenpop)r1   coarseir   r   r   r   s         @r4   group_matcherInceptionResnetV2.group_matcher*  sU    ,5odFYFYF[df6g,hi,hyq&1ad,hi
|$	$  js   Ac                      U(       a   S5       eg )Nzcheckpointing not supportedr   )r1   enables     r4   set_grad_checkpointing(InceptionResnetV2.set_grad_checkpointing=  s    888z6r6   c                     U R                   $ Nr   )r1   s    r4   get_classifier InceptionResnetV2.get_classifierA  s    ||r6   c                 h    Xl         [        U R                  U R                   US9u  U l        U l        g )N)r   )r   r   r   r   r   )r1   r   r   s      r4   reset_classifier"InceptionResnetV2.reset_classifierE  s-    &):4;L;LdN^N^ju)v&$,r6   c                    U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R	                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU$ r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r=   s     r4   forward_features"InceptionResnetV2.forward_featuresI  s    NN1NN1NN1OOANN1NN1OOAMM!KKNMM!MM!MM!MM!KKNNN1r6   
pre_logitsc                 z    U R                  U5      nU R                  U5      nU(       a  U$ U R                  U5      $ r   )r   r   r   )r1   r=   r   s      r4   forward_headInceptionResnetV2.forward_head[  s5    QNN1q3DLLO3r6   c                 J    U R                  U5      nU R                  U5      nU$ r   )r   r   r   s     r4   rC   InceptionResnetV2.forward`  s'    !!!$a r6   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )
  r    g        rW   avgbatchnorm2dgMbP?r   NNF)T)r   )rI   rJ   rK   rL   intrf   strr(   r:   jitignorer   r   r*   rM   r   r   r   r   r   rC   rN   rO   rP   s   @r4   r   r      s     $!!#$+"#<
<
 <
 	<

 <
 <
 <
 <
 <
 
<
 <
| YY $ YY9 9 YY		  wC wc w$4$ 4
 r6   c                 $    [        [        X40 UD6$ r   )r   r   )variant
pretrainedkwargss      r4   _create_inception_resnet_v2r  f  s     17Q&QQr6   ztimm/r   )r    +  r  )r   r   gQ?bicubiczconv2d_1a.convr   z
apache-2.0)	hf_hub_idr   
input_size	pool_sizecrop_pctinterpolationmeanstd
first_conv
classifierlicense)zinception_resnet_v2.tf_in1k#inception_resnet_v2.tf_ens_adv_in1kr   c                     [        SSU 0UD6$ )Nr  )inception_resnet_v2)r  )r  r  s     r4   r  r    s    &^^W]^^r6   ens_adv_inception_resnet_v2r  r   )$__doc__	functoolsr   typingr   r   r:   torch.nnr*   	timm.datar   r   timm.layersr   r	   _builderr   _manipulater   	_registryr   r   r   __all__rM   r   rR   rh   rt   r   r   r   r  default_cfgsr  rI   r   r6   r4   <module>r      s?    !   E 6 * ( Y Y
#ryy #L%bii %Pryy :bii D#ryy #L"RYY "Jx		 xvR % =vY'0F&i$ =vY'0F&i,& . _7H _ _ H!#H' r6   