
    RЦixI                     h   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s  J
r  SSKJrJrJrJr  SSKJrJrJrJr  SSK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\R@                  5      r! " S S\R@                  5      r" " S S\R@                  5      r# " S S\R@                  5      r$ " S S\R@                  5      r% " S S\R@                  5      r& " S S\R@                  5      r'S(S jr(S)S jr)\" \)" SSS9\)" SS9\)" SS9\)" S\\S 9S!.5      r*\S(S"\'4S# jj5       r+\" \,S$S%S&S'.5        g)*zInception-V3

Originally from torchvision Inception3 model
Licensed BSD-Clause 3 https://github.com/pytorch/vision/blob/master/LICENSE
    )partial)OptionalTypeN)IMAGENET_DEFAULT_STDIMAGENET_DEFAULT_MEANIMAGENET_INCEPTION_MEANIMAGENET_INCEPTION_STD)trunc_normal_create_classifierLinearConvNormAct   )build_model_with_cfg)resolve_pretrained_cfg)flatten_modules)register_modelgenerate_default_cfgsregister_model_deprecationsInceptionV3c            	       n   ^  \ rS rSr   S	S\S\S\\\R                        4U 4S jjjr	S r
S rSrU =r$ )

InceptionA   in_channelspool_features
conv_blockc                 .  > XES.n[         TU ]  5         U=(       d    [        nU" US4SS0UD6U l        U" US4SS0UD6U l        U" S
SSS.UD6U l        U" US4SS0UD6U l        U" SS	SS.UD6U l        U" SS	SS.UD6U l        U" X4SS0UD6U l	        g )Ndevicedtype@   kernel_sizer   0         r!   padding   )r"   r    r    `   r)   r)   )
super__init__r   	branch1x1branch5x5_1branch5x5_2branch3x3dbl_1branch3x3dbl_2branch3x3dbl_3branch_pool)selfr   r   r   r   r   dd	__class__s          W/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/models/inception_v3.pyr,   InceptionA.__init__   s     /.;
#KIIbI%k2K1KK%M!QM"M(bNaN2N(PQPRP(PQPRP%kVaVSUV    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[        R                  " USSSS9nU R                  U5      nX#XE/nU$ Nr'   r   r!   strider&   )	r-   r.   r/   r0   r1   r2   F
avg_pool2dr3   )r4   xr-   	branch5x5branch3x3dblr3   outputss          r7   _forwardInceptionA._forward/   s    NN1%	$$Q'	$$Y/	**1-**<8**<8ll1!AqI&&{3Cr9   c                 R    U R                  U5      n[        R                  " US5      $ Nr   rD   torchcatr4   r@   rC   s      r7   forwardInceptionA.forward?   !    --"yy!$$r9   )r-   r0   r1   r2   r.   r/   r3   NNN__name__
__module____qualname____firstlineno__intr   r   nnModuler,   rD   rL   __static_attributes____classcell__r6   s   @r7   r   r      sU     59WW W !bii1	W W, % %r9   r   c                   j   ^  \ rS rSr   SS\S\\\R                        4U 4S jjjr	S r
S rSrU =r$ )	
InceptionBD   r   r   c                    > X4S.n[         TU ]  5         U=(       d    [        nU" US4SSS.UD6U l        U" US4SS0UD6U l        U" S
SSS	.UD6U l        U" SSSS.UD6U l        g )Nr     r'   r$   r!   r=   r    r!   r   r%   r(   r*   )r+   r,   r   	branch3x3r0   r1   r2   r4   r   r   r   r   r5   r6   s         r7   r,   InceptionB.__init__F   s     /.;
#KT!ATQST(bNaN2N(PQPRP(OQqOBOr9   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      n[        R
                  " USSS9nX#U/nU$ Nr'   r$   r`   )ra   r0   r1   r2   r>   
max_pool2d)r4   r@   ra   rB   r3   rC   s         r7   rD   InceptionB._forwardV   sa    NN1%	**1-**<8**<8ll1!A>K8r9   c                 R    U R                  U5      n[        R                  " US5      $ rG   rH   rK   s      r7   rL   InceptionB.forwardb   rN   r9   )ra   r0   r1   r2   rO   rP   rZ   s   @r7   r\   r\   D   sJ    
 59PP !bii1P P 
% %r9   r\   c            	       n   ^  \ rS rSr   S	S\S\S\\\R                        4U 4S jjjr	S r
S rSrU =r$ )

InceptionCg   r   channels_7x7r   c                   > XES.n[         TU ]  5         U=(       d    [        nU" US4SS0UD6U l        UnU" X4SS0UD6U l        U" Xw4SSS.UD6U l        U" US4SS	S.UD6U l        U" X4SS0UD6U l        U" Xw4SS	S.UD6U l        U" Xw4SSS.UD6U l	        U" Xw4SS	S.UD6U l
        U" US4SSS.UD6U l        U" US4SS0UD6U l        g )
Nr      r!   r   r      r   r'   r%   rq   r   r'   r   )r+   r,   r   r-   branch7x7_1branch7x7_2branch7x7_3branch7x7dbl_1branch7x7dbl_2branch7x7dbl_3branch7x7dbl_4branch7x7dbl_5r3   )	r4   r   rm   r   r   r   r5   c7r6   s	           r7   r,   InceptionC.__init__i   s&    /.;
#KJ!JrJ%kK1KK%bW&&WTVW%b#X66XUWX(NaN2N(ZVVZWYZ(ZVVZWYZ(ZVVZWYZ(S[ff[XZ[%k3LALLr9   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[        R                  " USSSS9nU R                  U5      nX#XE/nU$ r;   )r-   ru   rv   rw   rx   ry   rz   r{   r|   r>   r?   r3   )r4   r@   r-   	branch7x7branch7x7dblr3   rC   s          r7   rD   InceptionC._forward   s    NN1%	$$Q'	$$Y/	$$Y/	**1-**<8**<8**<8**<8ll1!AqI&&{3Cr9   c                 R    U R                  U5      n[        R                  " US5      $ rG   rH   rK   s      r7   rL   InceptionC.forward   rN   r9   )
r-   ru   rv   rw   rx   ry   rz   r{   r|   r3   rO   rP   rZ   s   @r7   rk   rk   g   sU     59MM M !bii1	M M4&% %r9   rk   c                   j   ^  \ rS rSr   SS\S\\\R                        4U 4S jjjr	S r
S rSrU =r$ )	
InceptionD   r   r   c                   > X4S.n[         TU ]  5         U=(       d    [        nU" US4SS0UD6U l        U" SSSS.UD6U l        U" US4SS0UD6U l        U" SSS	S
.UD6U l        U" SSSS
.UD6U l        U" SSSS.UD6U l        g )Nr   ro   r!   r   r'   r$   r`   rp   rr   r%   rs   rt   )ro   @  )ro   ro   )	r+   r,   r   branch3x3_1branch3x3_2branch7x7x3_1branch7x7x3_2branch7x7x3_3branch7x7x3_4rb   s         r7   r,   InceptionD.__init__   s     /.;
%k3LALL%NAaN2N'SNaN2N'[ff[XZ['[ff[XZ['PaPRPr9   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[        R                  " USSS9nX#U/nU$ re   )r   r   r   r   r   r   r>   rf   )r4   r@   ra   branch7x7x3r3   rC   s         r7   rD   InceptionD._forward   s    $$Q'	$$Y/	((+((5((5((5ll1!A>;7r9   c                 R    U R                  U5      n[        R                  " US5      $ rG   rH   rK   s      r7   rL   InceptionD.forward   rN   r9   )r   r   r   r   r   r   rO   rP   rZ   s   @r7   r   r      sJ    
 59QQ !bii1Q Q$% %r9   r   c                   j   ^  \ rS rSr   SS\S\\\R                        4U 4S jjjr	S r
S rSrU =r$ )	
InceptionE   r   r   c                 p  > X4S.n[         TU ]  5         U=(       d    [        nU" US4SS0UD6U l        U" US4SS0UD6U l        U" SSSS.UD6U l        U" SS	S
S.UD6U l        U" US4SS0UD6U l        U" SSSS.UD6U l        U" SSSS.UD6U l	        U" SS	S
S.UD6U l
        U" US4SS0UD6U l        g )Nr   r   r!   r   r_   )r   r'   )r   r   r%   )r'   r   )r   r     r'   ro   )r_   r_   )r   r_   )r+   r,   r   r-   r   branch3x3_2abranch3x3_2br0   r1   branch3x3dbl_3abranch3x3dbl_3br3   rb   s         r7   r,   InceptionE.__init__   s     /.;
#KJ!JrJ%k3LALL&ZVVZWYZ&ZVVZWYZ(cOqOBO(Rq!RrR)]PV]Z\])]PV]Z\]%k3LALLr9   c                    U R                  U5      nU R                  U5      nU R                  U5      U R                  U5      /n[        R
                  " US5      nU R                  U5      nU R                  U5      nU R                  U5      U R                  U5      /n[        R
                  " US5      n[        R                  " USSSS9nU R                  U5      nX#XE/nU$ )Nr   r'   r<   )r-   r   r   r   rI   rJ   r0   r1   r   r   r>   r?   r3   )r4   r@   r-   ra   rB   r3   rC   s          r7   rD   InceptionE._forward   s    NN1%	$$Q'	i(i(
	 IIi+	**1-**<8  .  .
 yyq1ll1!AqI&&{3Cr9   c                 R    U R                  U5      n[        R                  " US5      $ rG   rH   rK   s      r7   rL   InceptionE.forward   rN   r9   )	r-   r   r   r   r0   r1   r   r   r3   rO   rP   rZ   s   @r7   r   r      sJ    
 59MM !bii1M M.0% %r9   r   c            	       h   ^  \ rS rSr   SS\S\S\\\R                        4U 4S jjjr	S r
SrU =r$ )	InceptionAux   r   num_classesr   c                    > XES.n[         TU ]  5         U=(       d    [        nU" US4SS0UD6U l        U" S	SS0UD6U l        SU R                  l        [        SU40 UD6U l        SU R                  l        g )
Nr      r!   r      r#   g{Gz?MbP?)r   r   )r+   r,   r   conv0conv1stddevr   fc)r4   r   r   r   r   r   r5   r6   s          r7   r,   InceptionAux.__init__   sx     /.;
SFaF2F
>a>2>
 

k0R0r9   c                     [         R                  " USSS9nU R                  U5      nU R                  U5      n[         R                  " US5      n[
        R                  " US5      nU R                  U5      nU$ )Nr#   r'   r`   )r   r   r   )r>   r?   r   r   adaptive_avg_pool2drI   flattenr   r4   r@   s     r7   rL   InceptionAux.forward
  sd    LL!4JJqMJJqM !!!V,MM!QGGAJr9   )r   r   r   rO   )rQ   rR   rS   rT   rU   r   r   rV   rW   r,   rL   rX   rY   rZ   s   @r7   r   r      sK     59  !bii1	 " r9   r   c                     ^  \ rS rSr% Sr\R                  R                  \   \	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 rS rSS\4S jjrS rSrU =r$ )r   i  zInception-V3
    
aux_logitsr   in_chans	drop_rateglobal_pool
norm_layernorm_eps	act_layerc                 n  > [         TU ]  5         XS.nXl        X l        XPl        [        [        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0UD6U l	        U" S&SSS.UD6U l
        [        R                  " SS	S
9U l        U" S'SS0UD6U l        U" S(SS0UD6U l        [        R                  " SS	S
9U l        [#        S)SUS.UD6U l        [#        S*SUS.UD6U l        [#        S+SUS.UD6U l        [+        S+SU0UD6U l        [/        S,SUS.UD6U l        [/        S,SUS.UD6U l        [/        S,SUS.UD6U l        [/        S,SUS.UD6U l        U(       a  [9        SU4SU0UD6U l        OS U l        [=        S,SU0UD6U l        [A        S-SU0UD6U l!        [A        S.SU0UD6U l"        [        SS	SS9[        SSSS9[        SSSS9[        SSSS9[        SSS S9/U l#        S=U l$        U l%        [M        U RH                  U R                  4UUS!.UD6u  U l'        U l(        U l)        U RU                  5        H  n[W        U[        RX                  5      (       d  [W        U[        RZ                  5      (       a5  []        US"5      (       a  UR^                  OS#n[a        URb                  US$9  Mv  [W        U[        Rd                  5      (       d  M  [        Rf                  Ri                  URb                  S5        [        Rf                  Ri                  URj                  S5        M     g )/Nr   r   )epsT)inplace)r&   r   r   norm_kwargs
act_kwargs    r'   r$   r`   r!   r    r   r%   ro   )r   r      r   r   r   )rm   r         Conv2d_2b_3x3)num_chs	reductionmodule   Conv2d_4a_3x3   Mixed_5d   Mixed_6eMixed_7c)	pool_typer   r   g?)std)r   r   )r   r    )r    P   )r   ro   )ro   )   )r   )r   )i   )r   )6r+   r,   r   r   r   r   r   dictConv2d_1a_3x3Conv2d_2a_3x3r   rV   	MaxPool2dPool1Conv2d_3b_1x1r   Pool2r   Mixed_5bMixed_5cr   r\   Mixed_6ark   Mixed_6bMixed_6cMixed_6dr   r   	AuxLogitsr   Mixed_7ar   Mixed_7br   feature_infonum_featureshead_hidden_sizer   r   	head_dropr   modules
isinstanceConv2dr   hasattrr   r
   weightBatchNorm2dinit	constant_bias)r4   r   r   r   r   r   r   r   r   r   r   r5   r   mr   r6   s                  r7   r,   InceptionV3.__init__!  s,    	/& $!*D)

 ("T!ATQST'DADD'OAqOBO\\a:
'DADD'EQE"E\\a:
"VbZVSUV"VbZVSUV"VbZVSUV"D:DD"VSZVSUV"VSZVSUV"VSZVSUV"VSZVSUV)#{XzXUWXDN!DN"D:DD"EJE"E"EJE"EqA/B*=:>J?
 598D14E5
 "	5

 5
1$.$' A!RYY'':a+C+C%,Q%9%9sahhF3Ar~~..!!!((A.!!!&&!,  r9   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 )N )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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 )N)Conv2d_1Conv2d_2r   )Conv2d_3Conv2d_4r   .inf)any
startswithkeystuplesplitlenfloat)namenk
module_maps      r7   _matcher+InceptionV3.group_matcher.<locals>._matcherp  s    0HI0H1OOA&0HIJJ2JK2JQooa(2JKLL#*AE$**S/'3q6":;;)!}, + U|# JKs
   B5B:)	enumerater   named_childrenpop)r4   coarseir	  _r  r
  s         @r7   group_matcherInceptionV3.group_matcherk  sU    ,5odFYFYF[df6g,hi,hyq&1ad,hi
w		$  js   Ac                      U(       a   S5       eg )Nz$gradient checkpointing not supportedr   )r4   enables     r7   set_grad_checkpointing"InceptionV3.set_grad_checkpointing|  s    AAAz6r9   returnc                     U R                   $ Nr   )r4   s    r7   get_classifierInceptionV3.get_classifier  s    wwr9   c                 h    Xl         [        U R                  U R                   US9u  U l        U l        g )N)r   )r   r   r   r   r   )r4   r   r   s      r7   reset_classifierInceptionV3.reset_classifier  s-    &$5d6G6GIYIYep$q!$'r9   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   r   s     r7   forward_preauxInceptionV3.forward_preaux  s    q!q!q!JJqMq!q!JJqMMM!MM!MM!MM!MM!MM!MM!MM!r9   c                 l    U R                  U5      nU R                  U5      nU R                  U5      nU$ r  )r   r   r   r   s     r7   forward_postauxInceptionV3.forward_postaux  s1    MM!MM!MM!r9   c                     U R                  U5      nU R                  (       a%  U R                  U5      nU R                  U5      nX4$ U R                  U5      nU$ r  )r"  r   r   r%  r4   r@   auxs      r7   forward_featuresInceptionV3.forward_features  sS    "??..#C$$Q'A6M  #r9   
pre_logitsc                 ~    U R                  U5      nU R                  U5      nU(       a  U$ U R                  U5      nU$ r  )r   r   r   )r4   r@   r,  s      r7   forward_headInceptionV3.forward_head  s:    QNN1HGGAJr9   c                     U R                   (       a'  U R                  U5      u  pU R                  U5      nX4$ U R                  U5      nU R                  U5      nU$ r  )r   r*  r.  r(  s      r7   rL   InceptionV3.forward  sW    ??**1-FA!!!$A6M!!!$a r9   )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'   g        avgFbatchnorm2dr   reluNNF)T)r3  )rQ   rR   rS   rT   __doc__rI   jitFinalbool__annotations__rU   r  strr,   ignorer  r  rV   rW   r  r  r"  r%  r*  r.  rL   rX   rY   rZ   s   @r7   r   r     s@   		%%  $!$$+"#H-H- H- 	H-
 H- H- H- H- H- H-T YY   YYB B YY		  rC rc r$$  r9   c                    [        XR                  SS 5      S9nUR                  SS5      nSnU(       a  UR                  S:H  nU(       a  UR                  SS5      (       a   eUnOU(       + n[	        [
        U U4UUS.UD6$ )Npretrained_cfg)r?  r   Ftv_in1kfeatures_only)r?  pretrained_strict)r   r  gettagr   r   )variant
pretrainedkwargsr?  r   has_aux_logitsload_stricts          r7   _create_inception_v3rJ    s    +GJJO_aeDfgNL%0JN'++y8::ou5555$(( &%  r9   c                 2    U SSSSS[         [        SSSS	.UE$ )
Nr2  )r'   +  rL  )r   r   g      ?bicubiczConv2d_1a_3x3.convr   z
apache-2.0)urlr   
input_size	pool_sizecrop_pctinterpolationmeanr   
first_conv
classifierlicense)r   r	   )rN  rG  s     r7   _cfgrW    s2    =vI'0F*$<  r9   ztimm/zDhttps://download.pytorch.org/models/inception_v3_google-1a9a5a14.pth)	hf_hub_idrN  )rX  )rX  rS  r   )zinception_v3.tv_in1kinception_v3.tf_in1kinception_v3.tf_adv_in1kinception_v3.gluon_in1kr  c                      [        SSU 0UD6nU$ )NrF  )inception_v3)rJ  )rF  rG  models      r7   r]  r]    s     QJQ&QELr9   rY  rZ  r[  )tf_inception_v3adv_inception_v3gluon_inception_v3r6  ) )-r7  	functoolsr   typingr   r   rI   torch.nnrV   torch.nn.functional
functionalr>   	timm.datar   r   r   r	   timm.layersr
   r   r   r   _builderr   r   _manipulater   	_registryr   r   r   __all__rW   r   r\   rk   r   r   r   r   rJ  rW  default_cfgsr]  rQ   r   r9   r7   <module>ro     s?  
  !     r r M M * , ( Y Y/*% *%Z %  %F1% 1%h#% #%L3% 3%l"299 "J\")) \~. % RT
 !73 !%w 7  $"  & *   
 H-23' r9   