+
    œ°³jÇ¯  ã                   óX  € R t ^ RIt^ RIt^ RIHt ^ RIt^ RIHt ^RIH	t
 ^RIHt ^RIHt ^RIHtHt ^RIHt ^R	IHtHtHt ^R
IHt ]P4                  ! ]4      t]! RR7      ] ! R R]4      4       4       tR tR t ! R R]P@                  4      t! ! R R]P@                  4      t" ! R R]P@                  4      t# ! R R]P@                  4      t$ ! R R]P@                  4      t% ! R R]P@                  4      t& ! R R]P@                  4      t' ! R R ]P@                  4      t( ! R! R"]P@                  4      t) ! R# R$]P@                  4      t* ! R% R&]P@                  4      t+ ! R' R(]4      t, ! R) R*]P@                  4      t-] ! R+ R,]4      4       t.] ! R- R.].4      4       t/ ! R/ R0]P@                  4      t0 ! R1 R2]P@                  4      t1 ! R3 R4]P@                  4      t2 ! R5 R6]P@                  4      t3 ! R7 R8]P@                  4      t4]! R9R7       ! R: R;].4      4       t5. R<Ot6R# )=z"PyTorch Swin2SR Transformer model.N)Ú	dataclass)Únn)Úinitialization)ÚACT2FN)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚImageSuperResolutionOutput)ÚPreTrainedModel)ÚModelOutputÚauto_docstringÚlogging©ÚSwin2SRConfigzQ
    Swin2SR encoder's outputs, with potential hidden states and attentions.
    )Úcustom_introc                   ó8   a € ] tR t^#t o RtRtRtV 3R ltRtV t	R# )ÚSwin2SREncoderOutputNc                óÄ   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   S[S[ P                  ,          R,          ;R&   # )é   NÚlast_hidden_stateÚhidden_statesÚ
attentions)ÚtorchÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€Úm/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/swin2sr/modeling_swin2sr.pyÚ__annotate__Ú!Swin2SREncoderOutput.__annotate__#   sW   ø‡ ‚ ñ ×(Ñ(¨4Õ/Ñ6ñ ñ ™×*Ñ*Õ+¨dÕ2Ñ9ñ ñ ‘e×'Ñ'Õ(¨4Õ/Ñ6ò ó    © )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r   #   s   ø‡ € ð 37ÐØ59€MØ26€J÷ ƒ r   r   c                óÈ   € V P                   w  r#rEV P                  W#V,          WV,          W4      p V P                  ^^4      P                  4       P                  RWV4      pV# )z*
Partitions the given input into windows.
éÿÿÿÿ©ÚshapeÚviewÚ	transposeÚ
contiguous)Úinput_featureÚwindow_sizeÚ
batch_sizeÚheightÚwidthÚnum_channelsÚwindowss   &&     r   Úwindow_partitionr6   0   sg   € ð /<×.AÑ.AÑ+€J˜Ø!×&Ñ&Ø˜kÕ)¨;ÀÕ8LÈkó€Mð ×%Ñ% a¨Ó+×6Ñ6Ó8×=Ñ=¸bÀ+Ð\hÓi€GØ€Nr   c                óÐ   € V P                   R,          pV P                  RW!,          W1,          WV4      p V P                  ^^4      P                  4       P                  RW#V4      p V # )z7
Merges windows to produce higher resolution features.
r)   r*   )r5   r0   r2   r3   r4   s   &&&& r   Úwindow_reverser8   =   s^   € ð —=‘= Õ$€LØ�l‰l˜2˜vÕ4°eÕ6JÈKÐfrÓs€GØ×Ñ  1Ó%×0Ñ0Ó2×7Ñ7¸¸FÈ<ÓX€GØ€Nr   c                   óH   a a€ ] tR t^Gt oRtV 3R ltV3R lR ltRtVtV ;t	# )ÚSwin2SREmbeddingsz7
Construct the patch and optional position embeddings.
c                ó”  <€ \         SV `  4        \        V4      V n        V P                  P                  pVP
                  '       dD   \        P                  ! \        P                  ! ^V^,           VP                  4      4      V n        MRV n        \        P                  ! VP                  4      V n        VP                  V n        R# )é   N)ÚsuperÚ__init__ÚSwin2SRPatchEmbeddingsÚpatch_embeddingsÚnum_patchesÚuse_absolute_embeddingsr   Ú	Parameterr   ÚzerosÚ	embed_dimÚposition_embeddingsÚDropoutÚhidden_dropout_probÚdropoutr0   )ÚselfÚconfigrA   Ú	__class__s   && €r   r>   ÚSwin2SREmbeddings.__init__L   sŽ   ø€ Ü‰ÑÔä 6°vÓ >ˆÔØ×+Ñ+×7Ñ7ˆà×)×)Ð)Ü')§|¢|´E·K²KÀÀ;ÐQRÅ?ÐTZ×TdÑTdÓ4eÓ'fˆDÕ$à'+ˆDÔ$ä—z’z &×"<Ñ"<Ó=ˆŒØ!×-Ñ-ˆÖr   c                ól   <€ V ^8„  d   QhRS[ P                  R,          RS[S[ P                  ,          /# )r   Úpixel_valuesNÚreturn)r   r   r   ÚTensor)r   r   s   "€r   r   ÚSwin2SREmbeddings.__annotate__Z   s/   ø€ ÷ -ñ -¡E×$5Ñ$5¸Õ$<ð -ÁÁuÇ|Á|ÕATñ -r   c                ó�   € V P                  V4      w  r#V P                  e   W P                  ,           pV P                  V4      pW#3# ©N)r@   rF   rI   )rJ   rO   Ú
embeddingsÚoutput_dimensionss   &&  r   ÚforwardÚSwin2SREmbeddings.forwardZ   sF   € Ø(,×(=Ñ(=¸lÓ(KÑ%ˆ
à×#Ñ#Ò/Ø#×&>Ñ&>Õ>ˆJà—\‘\ *Ó-ˆ
àÐ,Ð,r   )rI   r@   rF   r0   ©
r!   r"   r#   r$   Ú__doc__r>   rW   r&   r'   Ú__classcell__©rL   r   s   @@r   r:   r:   G   s   ù‡ € ñõ.÷-÷ -ð -r   r:   c                   óH   a a€ ] tR t^et oRV 3R lltV3R lR ltRtVtV ;t# )r?   c                ó€  <€ \         SV `  4        VP                  pVP                  VP                  rT\        V\        P                  P                  4      '       d   TMWD3p\        V\        P                  P                  4      '       d   TMWU3pV^ ,          V^ ,          ,          V^,          V^,          ,          .pW`n	        V^ ,          V^,          ,          V n
        \        P                  ! W1P                  WUR7      V n        V'       d(   \        P                  ! VP                  4      V n        R# RV n        R# )é    )Úkernel_sizeÚstrideN)r=   r>   rE   Ú
image_sizeÚ
patch_sizeÚ
isinstanceÚcollectionsÚabcÚIterableÚpatches_resolutionrA   r   ÚConv2dÚ
projectionÚ	LayerNormÚ	layernorm)rJ   rK   Únormalize_patchesr4   rb   rc   rh   rL   s   &&&    €r   r>   ÚSwin2SRPatchEmbeddings.__init__f   sê   ø€ Ü‰ÑÔØ×'Ñ'ˆØ!'×!2Ñ!2°F×4EÑ4E�Jä#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ü#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ø(¨�m¨z¸!­}Õ<¸jÈ½mÈzÐZ[Í}Õ>\Ð]ÐØ"4ÔØ-¨aÕ0Ð3EÀaÕ3HÕHˆÔäŸ)š) L×2BÑ2BÐPZÔnˆŒß;LœŸš f×&6Ñ&6Ó7ˆŽÐRVˆŽr   c                ó‚   <€ V ^8„  d   QhRS[ P                  R,          RS[S[ P                  S[S[,          3,          /# )r   rU   NrP   )r   r   r   rQ   Úint)r   r   s   "€r   r   Ú#Swin2SRPatchEmbeddings.__annotate__t   s;   ø€ ÷ 	-ñ 	-¡%×"3Ñ"3°dÕ":ð 	-¹uÁUÇ\Á\ÑSXÑY\ÕS]ÐE]Õ?^ñ 	-r   c                óÐ   € V P                  V4      pVP                  w   r#pW43pVP                  ^4      P                  ^^4      pV P                  e   V P	                  V4      pW3# ©r   )rj   r+   Úflattenr-   rl   )rJ   rU   Ú_r2   r3   rV   s   &&    r   rW   ÚSwin2SRPatchEmbeddings.forwardt   sh   € Ø—_‘_ ZÓ0ˆ
Ø(×.Ñ.Ñˆˆ1�eØ#˜OÐØ×'Ñ'¨Ó*×4Ñ4°Q¸Ó:ˆ
à�>‰>Ò%ØŸ™¨
Ó3ˆJàÐ,Ð,r   )rl   rA   rh   rj   )T©	r!   r"   r#   r$   r>   rW   r&   r'   r[   r\   s   @@r   r?   r?   e   s   ù‡ € ÷W÷	-÷ 	-ð 	-r   r?   c                   ó<   a a€ ] tR t^€t oRtV 3R ltR tRtVtV ;t	# )ÚSwin2SRPatchUnEmbeddingszImage to Patch Unembeddingc                óF   <€ \         SV `  4        VP                  V n        R # rT   )r=   r>   rE   )rJ   rK   rL   s   &&€r   r>   Ú!Swin2SRPatchUnEmbeddings.__init__ƒ   s   ø€ Ü‰ÑÔà×)Ñ)ˆŽr   c                óš   € VP                   w  r4pVP                  ^^4      P                  W0P                  V^ ,          V^,          4      pV# ©r<   )r+   r-   r,   rE   )rJ   rU   Úx_sizer1   Úheight_widthr4   s   &&&   r   rW   Ú Swin2SRPatchUnEmbeddings.forwardˆ   sK   € Ø1;×1AÑ1AÑ.ˆ
 ,Ø×)Ñ)¨!¨QÓ/×4Ñ4°ZÇÁÐQWÐXYÕQZÐ\bÐcdÕ\eÓfˆ
ØÐr   )rE   rY   r\   s   @@r   ry   ry   €   s   ù‡ € Ù%õ*÷
ò r   ry   c                   ót   a a€ ] tR t^�t oRt]P                  3V3R lV 3R llltR tV3R lR lt	Rt
VtV ;t# )ÚSwin2SRPatchMerginga  
Patch Merging Layer.

Args:
    input_resolution (`tuple[int]`):
        Resolution of input feature.
    dim (`int`):
        Number of input channels.
    norm_layer (`nn.Module`, *optional*, defaults to `nn.LayerNorm`):
        Normalization layer class.
c                óT   <€ V ^8„  d   QhRS[ S[,          RS[RS[P                  RR/# )r   Úinput_resolutionÚdimÚ
norm_layerrP   N)r   rp   r   ÚModule)r   r   s   "€r   r   Ú Swin2SRPatchMerging.__annotate__œ   s2   ø€ ÷ (ñ (©©s­ð (¹#ð (É2Ï9É9ð (Ðhlñ (r   c                ó¼   <€ \         SV `  4        Wn        W n        \        P
                  ! ^V,          ^V,          RR7      V n        V! ^V,          4      V n        R# )é   F©ÚbiasN)r=   r>   r„   r…   r   ÚLinearÚ	reductionÚnorm)rJ   r„   r…   r†   rL   s   &&&&€r   r>   ÚSwin2SRPatchMerging.__init__œ   sE   ø€ Ü‰ÑÔØ 0ÔØŒÜŸš 1 s¥7¨A°­G¸%Ô@ˆŒÙ˜q 3�wÓ'ˆŽ	r   c                óÀ   € V^,          ^8H  ;'       g    V^,          ^8H  pV'       d6   ^ ^ ^ V^,          ^ V^,          3p\         P                  P                  W4      pV# rs   )r   Ú
functionalÚpad)rJ   r/   r2   r3   Ú
should_padÚ
pad_valuess   &&&&  r   Ú	maybe_padÚSwin2SRPatchMerging.maybe_pad£   sV   € Ø˜q•j A‘o×:Ð:¨5°1­9¸©>ˆ
ßØ˜Q  5¨1¥9¨a°¸!µÐ<ˆJÜŸM™M×-Ñ-¨mÓHˆMàÐr   c                ój   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[ P                  /# )r   r/   Úinput_dimensionsrP   )r   rQ   r   rp   )r   r   s   "€r   r   rˆ   «   s6   ø€ ÷ ñ ¡U§\¡\ð ÁUÉ3ÑPSÈ8Å_ð ÑY^×YeÑYeñ r   c                óf  € Vw  r4VP                   w  rVpVP                  WSWG4      pV P                  WV4      pVR,          pVR,          p	VR,          p
VR,          p\        P                  ! W‰W«.R4      pVP                  VR^V,          4      pV P                  V4      pV P                  V4      pV# )ºNNN)r›   ºr_   Nr   rœ   r›   )r›   ºr<   Nr   rœ   r›   )r›   rœ   r�   r›   )r›   r�   r�   r›   r)   )r+   r,   r–   r   ÚcatrŽ   r�   )rJ   r/   r™   r2   r3   r1   r…   r4   Úinput_feature_0Úinput_feature_1Úinput_feature_2Úinput_feature_3s   &&&         r   rW   ÚSwin2SRPatchMerging.forward«   s¸   € Ø(‰ˆà(5×(;Ñ(;Ñ%ˆ
˜à%×*Ñ*¨:¸uÓSˆàŸ™ }¸eÓDˆà'Ð(8Õ9ˆà'Ð(8Õ9ˆà'Ð(8Õ9ˆà'Ð(8Õ9ˆäŸ	š	 ?À_Ð"fÐhjÓkˆØ%×*Ñ*¨:°r¸1¸|Õ;KÓLˆàŸ™ }Ó5ˆØŸ	™	 -Ó0ˆàÐr   )r…   r„   r�   rŽ   )r!   r"   r#   r$   rZ   r   rk   r>   r–   rW   r&   r'   r[   r\   s   @@r   r‚   r‚   �   s5   ù‡ € ñ
ð XZ×WcÑWc÷ (õ (ò÷÷ ð r   r‚   c                   óX   a a€ ] tR t^Æt o^ ^ .3V 3R lltRV3R lR lltR tRtVtV ;t	# )ÚSwin2SRSelfAttentionc           
     óâ  <€ \         SV `  4        W#,          ^ 8w  d   \        RV RV R24      hW0n        \	        W#,          4      V n        V P                  V P
                  ,          V n        \        V\        P                  P                  4      '       d   TMWD3V n        WPn        \        P                  ! \        P                   ! ^
\        P"                  ! V^^34      ,          4      4      V n        \        P&                  ! \        P(                  ! ^RRR7      \        P*                  ! RR7      \        P(                  ! RVRR7      4      V n        V P/                  4       w  rg\        P0                  ! VRR	7      V n        \        P0                  ! VRR	7      V n        \        P(                  ! V P                  V P                  VP6                  R7      V n        \        P(                  ! V P                  V P                  RR7      V n        \        P(                  ! V P                  V P                  VP6                  R7      V n        \        P>                  ! VP@                  4      V n!        R
# )r_   zThe hidden size (z6) is not a multiple of the number of attention heads (Ú)i   Tr‹   ©ÚinplaceF©Ú
persistentN)"r=   r>   Ú
ValueErrorÚnum_attention_headsrp   Úattention_head_sizeÚall_head_sizerd   re   rf   rg   r0   Úpretrained_window_sizer   rC   r   ÚlogÚonesÚlogit_scaleÚ
Sequentialr�   ÚReLUÚcontinuous_position_bias_mlpÚcreate_coords_table_and_indexÚBufferÚrelative_coords_tableÚrelative_position_indexÚqkv_biasÚqueryÚkeyÚvaluerG   Úattention_probs_dropout_probrI   )	rJ   rK   r…   Ú	num_headsr0   r°   r¹   rº   rL   s	   &&&&&&  €r   r>   ÚSwin2SRSelfAttention.__init__Ç   sÃ  ø€ Ü‰ÑÔØ�?˜aÔÜØ# C 5Ð(^Ð_hÐ^iÐijÐkóð ð $-Ô Ü#& s¥Ó#7ˆÔ Ø!×5Ñ5¸×8PÑ8PÕPˆÔä% k´;·?±?×3KÑ3K×LÒL‰KÐS^ÐRlð 	Ôð '=Ô#ÜŸ<š<¬¯	ª	°"´u·z²zÀ9ÈaÐQRÐBSÓ7TÕ2TÓ(UÓVˆÔä,.¯MªMÜ�IŠI�a˜ 4Ô(¬"¯'ª'¸$Ô*?ÄÇÂÈ3ÐPYÐ`eÔAfó-
ˆÔ)ð :>×9[Ñ9[Ó9]Ñ6ÐÜ%'§Y¢YÐ/DÐQVÔ%WˆÔ"Ü')§y¢yÐ1HÐUZÔ'[ˆÔ$ä—Y’Y˜t×1Ñ1°4×3EÑ3EÈFÏOÉOÔ\ˆŒ
Ü—9’9˜T×/Ñ/°×1CÑ1CÈ%ÔPˆŒÜ—Y’Y˜t×1Ñ1°4×3EÑ3EÈFÏOÉOÔ\ˆŒ
Ü—z’z &×"EÑ"EÓFˆŽr   c          	      óš   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[S[ P                  ,          /# ©r   r   Úattention_maskNÚoutput_attentionsrP   ©r   rQ   r   Úboolr   )r   r   s   "€r   r   Ú!Swin2SRSelfAttention.__annotate__ä   sU   ø€ ÷ Bñ Bá—|‘|ðBñ ×)Ñ)¨DÕ0ðBñ   $�;ð	Bñ
 
‰u�|‰|Õ	ñBr   c                óÖ  € VP                   w  rEpV P                  V4      P                  VRV P                  V P                  4      P                  ^^4      pV P                  V4      P                  VRV P                  V P                  4      P                  ^^4      pV P                  V4      P                  VRV P                  V P                  4      P                  ^^4      p	\        P                  P                  VRR7      \        P                  P                  VRR7      P                  RR4      ,          p
\        P                  ! V P                  \        P                  ! R4      R7      P!                  4       pW«,          p
V P#                  V P$                  4      P                  RV P                  4      pWÀP&                  P                  R4      ,          P                  V P(                  ^ ,          V P(                  ^,          ,          V P(                  ^ ,          V P(                  ^,          ,          R4      pVP+                  ^^ ^4      P-                  4       p^\        P.                  ! V4      ,          pW­P1                  ^ 4      ,           p
VeŸ   VP                   ^ ,          pV
P                  WN,          WàP                  WU4      VP1                  ^4      P1                  ^ 4      ,           p
W¢P1                  ^4      P1                  ^ 4      ,           p
V
P                  RV P                  WU4      p
\        P                  P3                  V
RR7      pV P5                  V4      p\        P6                  ! Wù4      pVP+                  ^ ^^^4      P-                  4       pVP9                  4       RR V P:                  3,           pVP                  V4      pV'       d   VV3pV# V3pV# )r<   )r…   )ÚmaxNr)   éþÿÿÿg      Y@)r+   r¼   r,   r­   r®   r-   r½   r¾   r   r’   Ú	normalizer   Úclampr³   Úmathr±   Úexpr¶   r¹   rº   r0   Úpermuter.   ÚsigmoidÚ	unsqueezeÚsoftmaxrI   ÚmatmulÚsizer¯   )rJ   r   rÄ   rÅ   r1   r…   r4   Úquery_layerÚ	key_layerÚvalue_layerÚattention_scoresr³   Úrelative_position_bias_tableÚrelative_position_biasÚ
mask_shapeÚattention_probsÚcontext_layerÚnew_context_layer_shapeÚoutputss   &&&&               r   rW   ÚSwin2SRSelfAttention.forwardä   sa  € ð )6×(;Ñ(;Ñ%ˆ
˜à�J‰J�}Ó%ß‰T�*˜b $×":Ñ":¸D×<TÑ<TÓUß‰Y�q˜!‹_ð 	ð �H‰H�]Ó#ß‰T�*˜b $×":Ñ":¸D×<TÑ<TÓUß‰Y�q˜!‹_ð 	ð �J‰J�}Ó%ß‰T�*˜b $×":Ñ":¸D×<TÑ<TÓUß‰Y�q˜!‹_ð 	ô Ÿ=™=×2Ñ2°;ÀBÐ2ÓGÌ"Ï-É-×JaÑJaØ˜2ð Kbó K
ç
‰)�B˜Ó
õÐô —k’k $×"2Ñ"2¼¿ºÀÓ8LÔM×QÑQÓSˆØ+Õ9ÐØ'+×'HÑ'HÈ×IcÑIcÓ'd×'iÑ'iØ�×(Ñ(ó(
Ð$ð ">×>ZÑ>Z×>_Ñ>_Ð`bÓ>cÕ!d×!iÑ!iØ×Ñ˜QÕ $×"2Ñ"2°1Õ"5Õ5°t×7GÑ7GÈÕ7JÈT×M]ÑM]Ð^_ÕM`Õ7`Ðbdó"
Ðð "8×!?Ñ!?ÀÀ1ÀaÓ!H×!SÑ!SÓ!UÐØ!#¤e§m¢mÐ4JÓ&KÕ!KÐØ+×.NÑ.NÈqÓ.QÕQÐàÒ%à'×-Ñ-¨aÕ0ˆJØ/×4Ñ4ØÕ(¨*×6NÑ6NÐPSó à×(Ñ(¨Ó+×5Ñ5°aÓ8õ 9Ðð  0×2JÑ2JÈ1Ó2M×2WÑ2WÐXYÓ2ZÕZÐØ/×4Ñ4°R¸×9QÑ9QÐSVÓ\Ðô Ÿ-™-×/Ñ/Ð0@ÀbÐ/ÓIˆð Ÿ,™, Ó7ˆô Ÿš _ÓBˆØ%×-Ñ-¨a°°A°qÓ9×DÑDÓFˆØ"/×"4Ñ"4Ó"6°s¸Ð";¸t×?QÑ?QÐ>SÕ"SÐØ%×*Ñ*Ð+BÓCˆç6G�= /Ð2ˆàˆð O\ÐM]ˆàˆr   c                ó.  € \         P                  ! V P                  ^ ,          ^,
          ) V P                  ^ ,          \         P                  R7      P	                  4       p\         P                  ! V P                  ^,          ^,
          ) V P                  ^,          \         P                  R7      P	                  4       p\         P
                  ! \         P                  ! W.RR7      4      P                  ^^^ 4      P                  4       P                  ^ 4      pV P                  ^ ,          ^ 8”  d\   VR;;,          V P                  ^ ,          ^,
          ,          uu&   VR;;,          V P                  ^,          ^,
          ,          uu&   MrV P                  ^ ,          ^8”  d[   VR;;,          V P                  ^ ,          ^,
          ,          uu&   VR;;,          V P                  ^,          ^,
          ,          uu&   V^,          p\         P                  ! V4      \         P                  ! \         P                  ! V4      R,           4      ,          \        P                  ! ^4      ,          pVP                  \!        V P"                  P%                  4       4      P&                  4      p\         P                  ! V P                  ^ ,          4      p\         P                  ! V P                  ^,          4      p\         P
                  ! \         P                  ! WE.RR7      4      p\         P(                  ! V^4      pVR,          VR,          ,
          pVP                  ^^^ 4      P                  4       pVR	;;,          V P                  ^ ,          ^,
          ,          uu&   VR
;;,          V P                  ^,          ^,
          ,          uu&   VR	;;,          ^V P                  ^,          ,          ^,
          ,          uu&   VP+                  R4      p	W93# )r_   ©ÚdtypeÚij)Úindexingg      ð?)r›   r›   r›   r_   )r›   r›   r›   r<   )r›   r›   N)r›   Nr›   )r›   r›   r_   )r›   r›   r<   r)   )r   Úaranger0   Úint64ÚfloatÚstackÚmeshgridrÐ   r.   rÒ   r°   ÚsignÚlog2ÚabsrÎ   ÚtoÚnextr¶   Ú
parametersrä   rt   Úsum)
rJ   Úrelative_coords_hÚrelative_coords_wr¹   Úcoords_hÚcoords_wÚcoordsÚcoords_flattenÚrelative_coordsrº   s
   &         r   r·   Ú2Swin2SRSelfAttention.create_coords_table_and_index(  sù  € ä!ŸLšL¨4×+;Ñ+;¸AÕ+>ÀÕ+BÐ)CÀT×EUÑEUÐVWÕEXÔ`e×`kÑ`kÔl×rÑrÓtÐÜ!ŸLšL¨4×+;Ñ+;¸AÕ+>ÀÕ+BÐ)CÀT×EUÑEUÐVWÕEXÔ`e×`kÑ`kÔl×rÑrÓtÐä�KŠKœŸšÐ(9Ð'MÐX\Ô]Ó^ß‰W�Q˜˜1Óß‰Z‹\ß‰Y�q‹\ð	 	ð ×&Ñ& qÕ)¨AÔ-Ø! *×-°×1LÑ1LÈQÕ1OÐRSÕ1SÕSÓ-Ø! *×-°×1LÑ1LÈQÕ1OÐRSÕ1SÕSÔ-Ø×Ñ˜aÕ  1Ô$Ø! *×-°×1AÑ1AÀ!Õ1DÀqÕ1HÕHÓ-Ø! *×-°×1AÑ1AÀ!Õ1DÀqÕ1HÕHÓ-Ø Õ"Ðä�JŠJÐ,Ó-´·
²
¼5¿9º9ÐEZÓ;[Ð^aÕ;aÓ0bÕbÔei×enÒenÐopÓeqÕqð 	ð !6× 8Ñ 8¼¸d×>_Ñ>_×>jÑ>jÓ>lÓ9m×9sÑ9sÓ tÐô —<’< × 0Ñ 0°Õ 3Ó4ˆÜ—<’< × 0Ñ 0°Õ 3Ó4ˆÜ—’œUŸ^š^¨XÐ,@È4ÔPÓQˆÜŸš v¨qÓ1ˆØ(¨Õ4°~ÀjÕ7QÕQˆØ)×1Ñ1°!°Q¸Ó:×EÑEÓGˆØ˜×  D×$4Ñ$4°QÕ$7¸!Õ$;Õ;Ó Ø˜×  D×$4Ñ$4°QÕ$7¸!Õ$;Õ;Ó Ø˜×  A¨×(8Ñ(8¸Õ(;Õ$;¸aÕ$?Õ?Ó Ø"1×"5Ñ"5°bÓ"9Ðà$Ð=Ð=r   )r¯   r®   r¶   rI   r½   r³   r­   r°   r¼   r¹   rº   r¾   r0   ©NF)
r!   r"   r#   r$   r>   rW   r·   r&   r'   r[   r\   s   @@r   r¥   r¥   Æ   s+   ù‡ € ØTUÐWXÐSY÷ G÷:Bò B÷H#>ò #>r   r¥   c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚSwin2SRSelfOutputiO  c                ó¤   <€ \         SV `  4        \        P                  ! W"4      V n        \        P
                  ! VP                  4      V n        R # rT   )r=   r>   r   r�   ÚdenserG   r¿   rI   ©rJ   rK   r…   rL   s   &&&€r   r>   ÚSwin2SRSelfOutput.__init__P  s4   ø€ Ü‰ÑÔÜ—Y’Y˜sÓ(ˆŒ
Ü—z’z &×"EÑ"EÓFˆŽr   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   r   Úinput_tensorrP   ©r   rQ   )r   r   s   "€r   r   ÚSwin2SRSelfOutput.__annotate__U  s1   ø€ ÷ ñ ¡U§\¡\ð ÁÇÁð ÑRW×R^ÑR^ñ r   c                óJ   € V P                  V4      pV P                  V4      pV# rT   ©rÿ   rI   )rJ   r   r  s   &&&r   rW   ÚSwin2SRSelfOutput.forwardU  s$   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆàÐr   r  rw   r\   s   @@r   rý   rý   O  s   ù‡ € õG÷
÷ ð r   rý   c                   óL   a a€ ] tR tRt oRV 3R lltRV3R lR lltRtVtV ;t# )ÚSwin2SRAttentioni]  c           
     óÈ   <€ \         SV `  4        \        TTTT\        V\        P
                  P                  4      '       d   TMWU3R 7      V n        \        W4      V n	        R# )©rK   r…   rÀ   r0   r°   N)
r=   r>   r¥   rd   re   rf   rg   rJ   rý   Úoutput)rJ   rK   r…   rÀ   r0   r°   rL   s   &&&&&&€r   r>   ÚSwin2SRAttention.__init__^  sW   ø€ Ü‰ÑÔÜ(ØØØØ#äÐ0´+·/±/×2JÑ2J×KÒKñ $:à(ÐAô
ˆŒ	ô (¨Ó4ˆŽr   c          	      óš   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[S[ P                  ,          /# rÃ   rÆ   )r   r   s   "€r   r   ÚSwin2SRAttention.__annotate__k  sO   ø€ ÷ 	ñ 	á—|‘|ð	ñ ×)Ñ)¨DÕ0ð	ñ   $�;ð		ñ
 
‰u�|‰|Õ	ñ	r   c                ó~   € V P                  WV4      pV P                  V^ ,          V4      pV3VR,          ,           pV# ©r_   ºr<   NN)rJ   r  )rJ   r   rÄ   rÅ   Úself_outputsÚattention_outputrà   s   &&&&   r   rW   ÚSwin2SRAttention.forwardk  sA   € ð —y‘y Ð@QÓRˆØŸ;™; |°A¥¸ÓFÐØ#Ð%¨°RÕ(8Õ8ˆØˆr   )r  rJ   ©r_   rû   rw   r\   s   @@r   r
  r
  ]  s   ù‡ € ÷5÷	÷ 	ò 	r   r
  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚSwin2SRIntermediateix  c                ó.  <€ \         SV `  4        \        P                  ! V\	        VP
                  V,          4      4      V n        \        VP                  \        4      '       d   \        VP                  ,          V n        R # VP                  V n        R # rT   )r=   r>   r   r�   rp   Ú	mlp_ratiorÿ   rd   Ú
hidden_actÚstrr   Úintermediate_act_fnr   s   &&&€r   r>   ÚSwin2SRIntermediate.__init__y  sd   ø€ Ü‰ÑÔÜ—Y’Y˜s¤C¨×(8Ñ(8¸3Õ(>Ó$?Ó@ˆŒ
Ü�f×'Ñ'¬×-Ò-Ü'-¨f×.?Ñ.?Õ'@ˆDÖ$à'-×'8Ñ'8ˆDÖ$r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   r   rP   r  )r   r   s   "€r   r   Ú Swin2SRIntermediate.__annotate__�  ó#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r   c                óJ   € V P                  V4      pV P                  V4      pV# rT   ©rÿ   r  ©rJ   r   s   &&r   rW   ÚSwin2SRIntermediate.forward�  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr   r%  rw   r\   s   @@r   r  r  x  s   ù‡ € õ9÷÷ ð r   r  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚSwin2SROutputiˆ  c                óÚ   <€ \         SV `  4        \        P                  ! \	        VP
                  V,          4      V4      V n        \        P                  ! VP                  4      V n	        R # rT   )
r=   r>   r   r�   rp   r  rÿ   rG   rH   rI   r   s   &&&€r   r>   ÚSwin2SROutput.__init__‰  sF   ø€ Ü‰ÑÔÜ—Y’Yœs 6×#3Ñ#3°cÕ#9Ó:¸CÓ@ˆŒ
Ü—z’z &×"<Ñ"<Ó=ˆŽr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r!  r  )r   r   s   "€r   r   ÚSwin2SROutput.__annotate__Ž  r#  r   c                óJ   € V P                  V4      pV P                  V4      pV# rT   r  r&  s   &&r   rW   ÚSwin2SROutput.forwardŽ  s$   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØÐr   r  rw   r\   s   @@r   r)  r)  ˆ  s   ù‡ € õ>÷
÷ ð r   r)  c                   ój   a a€ ] tR tRt oRtR
V3R lV 3R llltV3R lR ltV3R lR ltR	tVt	V ;t
# )ÚSwin2SRDropPathi•  zÃStochastic depth (DropPath) per sample, for residual blocks.

Identity when ``drop_prob`` is 0 or outside training. See `Deep Networks with Stochastic Depth
<https://arxiv.org/abs/1603.09382>`_.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Ú	drop_probrP   N)ré   )r   r   s   "€r   r   ÚSwin2SRDropPath.__annotate__œ  s   ø€ ÷ #ñ #¡%ð #°$ñ #r   c                ó0   <€ \         SV `  4        Wn        R # rT   )r=   r>   r3  )rJ   r3  rL   s   &&€r   r>   ÚSwin2SRDropPath.__init__œ  s   ø€ Ü‰ÑÔØ"Žr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r!  r  )r   r   s   "€r   r   r4     s#   ø€ ÷ <ñ <¡U§\¡\ð <±e·l±lñ <r   c                ó˜  € V P                   R 8X  g   V P                  '       g   V# ^V P                   ,
          pVP                  ^ ,          3RVP                  ^,
          ,          ,           p\        P
                  ! W1P                  VP                  R7      p\        P                  ! WB,           4      pVP                  V4      V,          # )ç        )rä   Údevicer}   )
r3  Útrainingr+   Úndimr   Úrandrä   r:  ÚfloorÚdiv)rJ   r   Ú	keep_probr+   Úrandom_tensors   &&   r   rW   ÚSwin2SRDropPath.forward   s•   € Ø�>‰>˜SÔ ¨¯¯¨Ø Ð Ø˜Ÿ™Õ&ˆ	Ø×$Ñ$ QÕ'Ð)¨D°M×4FÑ4FÈÕ4JÕ,KÕKˆÜŸ
š
 5×0CÑ0CÈM×L`ÑL`ÔaˆÜŸš MÕ$=Ó>ˆØ× Ñ  Ó+¨mÕ;Ð;r   c                ó    <€ V ^8„  d   QhRS[ /# ©r   rP   )r  )r   r   s   "€r   r   r4  ©  s   ø€ ÷ %ñ %™Cñ %r   c                ó    € R V P                    2# )zp=©r3  ©rJ   s   &r   Ú
extra_reprÚSwin2SRDropPath.extra_repr©  s   € Ø�D—N‘NÐ#Ð$Ð$r   rF  )r9  )r!   r"   r#   r$   rZ   r>   rW   rH  r&   r'   r[   r\   s   @@r   r1  r1  •  s-   ù‡ € ñ÷#õ #÷<ð <÷%÷ %ð %r   r1  c                   ój   a a€ ] tR tRt oR
V 3R lltV3R lR ltR tR tRV3R lR lltR	t	Vt
V ;t# )ÚSwin2SRLayeri®  c           
     ó†  <€ \         S	V `  4        W0n        V P                  VP                  VP                  3Wf34      w  r†V^ ,          V n        V^ ,          V n        \        TTTV P                  \        V\        P                  P                  4      '       d   TMWw3R7      V n        \        P                  ! W!P                  R7      V n        VR8”  d   \!        V4      M\        P"                  ! 4       V n        \'        W4      V n        \+        W4      V n        \        P                  ! W!P                  R7      V n        R# )r_   r  ©Úepsr9  N)r=   r>   r„   Ú_compute_window_shiftr0   Ú
shift_sizer
  rd   re   rf   rg   Ú	attentionr   rk   Úlayer_norm_epsÚlayernorm_beforer1  ÚIdentityÚ	drop_pathr  Úintermediater)  r  Úlayernorm_after)
rJ   rK   r…   r„   rÀ   Údrop_path_raterP  r°   r0   rL   s
   &&&&&&&& €r   r>   ÚSwin2SRLayer.__init__¯  s  ø€ ô 	‰ÑÔØ 0ÔØ"&×"<Ñ"<Ø×Ñ ×!3Ñ!3Ð4°zÐ6Nó#
Ñˆð ' q�>ˆÔØ$ Q�-ˆŒÜ)ØØØØ×(Ñ(äÐ0´+·/±/×2JÑ2J×KÒKñ $:à(ÐAô
ˆŒô !#§¢¨S×6KÑ6KÔ LˆÔØ<JÈSÔ<Pœ¨Ô8ÔVX×VaÒVaÓVcˆŒÜ/°Ó<ˆÔÜ# FÓ0ˆŒÜ!Ÿ|š|¨C×5JÑ5JÔKˆÖr   c                ób   <€ V ^8„  d   QhRS[ S[ S[S[3,          S[ S[S[3,          3,          /# rD  )r   rp   )r   r   s   "€r   r   ÚSwin2SRLayer.__annotate__È  s8   ø€ ÷ 'ñ 'ÉeÑTYÑZ]Ñ_bÐZbÕTcÑejÑknÑpsÐksÕetÐTtÕNuñ 'r   c                óî   € \        V P                  V4       UUu. uF  w  r4\        W44      NK  	  ppp\        V P                  WR4       UUUu. uF  w  r4qcV8:  d   ^ MTNK  	  ppppWW3# u uppi u upppi r  )Úzipr„   Úmin)rJ   Útarget_window_sizeÚtarget_shift_sizeÚrÚwr0   ÚsrP  s   &&&     r   rO  Ú"Swin2SRLayer._compute_window_shiftÈ  so   € Ü-0°×1FÑ1FÐHZÔ-[Ô\Ñ-[¡T Q”s˜1–yÑ-[ˆÑ\Ü8;¸D×<QÑ<QÐS^Ô8rÕsÑ8r©W¨Q°1 œ6‘a qÒ(Ñ8rˆ
ÒsØÐ&Ð&ùó ]ùÜss   šA*ÁA0c                ó,  € V P                   ^ 8:  d   R# \        P                  ! V4      p\        P                  ! V4      pWAV P                  ,
          8¬  P	                  4       WAV P                   ,
          8¬  P	                  4       ,           pWRV P                  ,
          8¬  P	                  4       WRV P                   ,
          8¬  P	                  4       ,           pVR,          ^,          VR,          ,           P                  V4      p\        W€P                  4      p	V	P                  RV P                  V P                  ,          4      p	V	P                  ^4      V	P                  ^4      ,
          p
V
P                  V
^ 8g  R4      P                  V
^ 8H  R4      p
V
# )um  Build the cyclic-shift attention mask for shifted-window MSA; returns None when shift_size is 0.

Each (h, w) position belongs to one of 9 cyclic-shift regions (3 along each axis), encoded
as ``h_region * 3 + w_region``. Regions per axis:
- 0: indices ``[0, axis - window_size)``
- 1: indices ``[axis - window_size, axis - shift_size)``
- 2: indices ``[axis - shift_size, axis)``
Implementation note: a single arithmetic pass on `torch.arange` (two comparisons +
broadcast add) replaces the original 9-iteration nested-Python-loop slice-assignment â€”
fully vectorised, no per-cell host-side scatter, no GPUâ†”host sync.
Nr9  )Nr›   NN)NNr›   Nr)   g      YÀ)
rP  r   rç   r0   Úlongrï   r6   r,   rÒ   Úmasked_fill)rJ   r2   r3   rä   Úh_idxÚw_idxÚh_regionÚw_regionÚimg_maskÚmask_windowsÚ	attn_masks   &&&&       r   Úget_attn_maskÚSwin2SRLayer.get_attn_maskÍ  sJ  € ð �?‰?˜aÔÙÜ—’˜VÓ$ˆÜ—’˜UÓ#ˆØ d×&6Ñ&6Õ6Ñ6×<Ñ<Ó>À%ÐTX×TcÑTcÕKcÑBc×AiÑAiÓAkÕkˆØ T×%5Ñ%5Õ5Ñ5×;Ñ;Ó=ÀÐRV×RaÑRaÕJaÑAa×@gÑ@gÓ@iÕiˆØÐ0Õ1°AÕ5¸ÐATÕ8UÕU×YÑYÐZ_Ó`ˆÜ'¨×2BÑ2BÓCˆØ#×(Ñ(¨¨T×-=Ñ-=À×@PÑ@PÕ-PÓQˆØ ×*Ñ*¨1Ó-°×0FÑ0FÀqÓ0IÕIˆ	Ø×)Ñ)¨)°q©.¸&ÓA×MÑMÈiÐ[\ÉnÐ^aÓbˆ	ØÐr   c                ó&  € V P                   W0P                   ,          ,
          V P                   ,          pV P                   W P                   ,          ,
          V P                   ,          p^ ^ ^ V^ V3p\        P                  P                  W4      pW3# r  )r0   r   r’   r“   )rJ   r   r2   r3   Ú	pad_rightÚ
pad_bottomr•   s   &&&&   r   r–   ÚSwin2SRLayer.maybe_padæ  sy   € Ø×%Ñ%¨×0@Ñ0@Õ(@Õ@ÀD×DTÑDTÕTˆ	Ø×&Ñ&¨×2BÑ2BÕ)BÕBÀd×FVÑFVÕVˆ
Ø˜˜A˜y¨!¨ZÐ8ˆ
ÜŸ™×)Ñ)¨-ÓDˆØÐ(Ð(r   c          
      ó¨   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[R,          RS[S[ P                  S[ P                  3,          /# ©r   r   r™   rÅ   NrP   ©r   rQ   r   rp   rÇ   )r   r   s   "€r   r   r[  í  sU   ø€ ÷ 5ñ 5á—|‘|ð5ñ  ¡¡S �/ð5ñ   $�;ð	5ñ
 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ5r   c                ó4  € Vw  rEVP                  4       w  rgpTp	VP                  WdWX4      pV P                  WV4      w  rVP                  w  r{rÇV P                  ^ 8”  d2   \
        P                  ! WP                  ) V P                  ) 3RR7      pMTp\        WÐP                  4      pVP                  RV P                  V P                  ,          V4      pV P                  W¼VP                  R7      pVe   VP                  VP                  4      pV P                  WïVR7      pV^ ,          pVP                  RV P                  V P                  V4      p\        VV P                  W¼4      pV P                  ^ 8”  d1   \
        P                  ! VV P                  V P                  3RR7      pMTpV
^,          ^ 8„  ;'       g    V
^,          ^ 8„  pV'       d    VRRV1RV1R3,          P                  4       pVP                  WdV,          V4      pV P!                  V4      pW�P#                  V4      ,           pV P%                  V4      pV P'                  V4      pWP#                  V P)                  V4      4      ,           pV'       d   VV^,          3pV# V3pV# )r_   )ÚshiftsÚdimsrã   N)rÅ   r›   )r<   r   r)   )rÕ   r,   r–   r+   rP  r   Úrollr6   r0   ro  rä   rï   r:  rQ  r8   r.   rS  rU  rV  r  rW  )rJ   r   r™   rÅ   r2   r3   r1   ru   ÚchannelsÚshortcutr•   Ú
height_padÚ	width_padÚshifted_hidden_statesÚhidden_states_windowsrn  Úattention_outputsr  Úattention_windowsÚshifted_windowsÚ
was_paddedÚlayer_outputÚlayer_outputss   &&&&                   r   rW   ÚSwin2SRLayer.forwardí  s{  € ð )‰ˆØ"/×"4Ñ"4Ó"6Ñˆ
�xØ ˆð &×*Ñ*¨:¸uÓOˆØ$(§N¡N°=È%Ó$PÑ!ˆØ&3×&9Ñ&9Ñ#ˆ�yà�?‰?˜QÔÜ$)§J¢J¨}ÇÁÐFVÐY]×YhÑYhÐXhÐEiÐpvÔ$wÑ!à$1Ð!ô !1Ð1F×HXÑHXÓ YÐØ 5× :Ñ :¸2¸t×?OÑ?OÐRV×RbÑRbÕ?bÐdlÓ mÐØ×&Ñ& zÀM×DWÑDWÐ&ÓXˆ	ØÒ Ø!Ÿ™Ð%:×%AÑ%AÓBˆIà ŸN™NÐ+@Ð_p˜NÓqÐà,¨QÕ/Ðà,×1Ñ1°"°d×6FÑ6FÈ×HXÑHXÐZbÓcÐÜ(Ð):¸D×<LÑ<LÈjÓdˆð �?‰?˜QÔÜ %§
¢
¨?ÀDÇOÁOÐUY×UdÑUdÐCeÐlrÔ sÑà /Ðà •] QÑ&×;Ð;¨*°Q­-¸!Ñ*;ˆ
ßØ 1°!°W°f°W¸f¸u¸fÀaÐ2GÕ H× SÑ SÓ UÐà-×2Ñ2°:È½~ÈxÓXÐØ×-Ñ-Ð.?Ó@ˆØ §>¡>°-Ó#@Õ@ˆà×(Ñ(¨Ó7ˆØ—{‘{ <Ó0ˆØ$§~¡~°d×6JÑ6JÈ<Ó6XÓ'YÕYˆç@Q˜Ð'8¸Õ';Ð<ˆØÐð YeÐWfˆØÐr   )	rQ  rU  r„   rV  rW  rS  r  rP  r0   )r9  r_   r_   ©F)r!   r"   r#   r$   r>   rO  ro  r–   rW   r&   r'   r[   r\   s   @@r   rK  rK  ®  s.   ù‡ € ÷L÷2'ð 'ò
ò2)÷5÷ 5ò 5r   rK  c                   óP   a a€ ] tR tRt oRtRV 3R lltRV3R lR lltRtVtV ;t	# )	ÚSwin2SRStagei%  z`
This corresponds to the Residual Swin Transformer Block (RSTB) in the original implementation.
c                ó0  <€ \         S	V `  4        Wn        W n        \        P
                  ! \        V4       Uu. uF5  p\        TTTTV^,          ^ 8X  d   ^ MVP                  ^,          VR7      NK7  	  up4      V n	        VP                  R8X  d    \        P                  ! W"^^^4      V n        M¿VP                  R8X  d¯   \        P                  ! \        P                  ! W"^,          ^^^4      \        P                  ! RRR7      \        P                  ! V^,          V^,          ^^^ 4      \        P                  ! RRR7      \        P                  ! V^,          V^^^4      4      V n        \        VRR7      V n        \#        V4      V n        R	# u upi )
r   )rK   r…   r„   rÀ   rP  r°   Ú1convÚ3convçš™™™™™É?T©Únegative_sloper©   F)rm   N)r=   r>   rK   r…   r   Ú
ModuleListÚrangerK  r0   ÚlayersÚresi_connectionri   Úconvr´   Ú	LeakyReLUr?   Úpatch_embedry   Úpatch_unembed)
rJ   rK   r…   r„   ÚdepthrÀ   rU  r°   ÚirL   s
   &&&&&&&& €r   r>   ÚSwin2SRStage.__init__*  sH  ø€ Ü‰ÑÔØŒØŒÜ—m’mô ˜uœó
ñ &�Aô Ø!ØØ%5Ø'Ø%&¨¥U¨a¤Z™q°f×6HÑ6HÈAÕ6MØ+A÷ñ &ñ
ó
ˆŒð ×!Ñ! WÔ,ÜŸ	š	 #¨A¨q°!Ó4ˆD�IØ×#Ñ# wÔ.äŸšÜ—	’	˜# a�x¨¨A¨qÓ1Ü—’¨C¸Ô>Ü—	’	˜# �( C¨1¥H¨a°°AÓ6Ü—’¨C¸Ô>Ü—	’	˜# �( C¨¨A¨qÓ1óˆDŒIô 2°&ÈEÔRˆÔä5°fÓ=ˆÖùò7
s   ¹;Fc          	      óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[R,          RS[S[ P                  ,          /# rv  rw  )r   r   s   "€r   r   ÚSwin2SRStage.__annotate__L  sL   ø€ ÷ ñ á—|‘|ðñ  ¡¡S �/ðñ   $�;ð	ñ
 
‰u�|‰|Õ	ñr   c                ó*  € TpVw  rV\        V P                  4       F  w  rxV! WV4      p	V	^ ,          pK  	  WVWV3p
V P                  W4      pV P                  V4      pV P	                  V4      w  rW,           pW3pV'       d   VX	R,          ,          pV# r  )Ú	enumerater”  r™  r–  r˜  )rJ   r   r™   rÅ   Úresidualr2   r3   r›  Úlayer_moduler‡  rV   ru   Ústage_outputss   &&&&         r   rW   ÚSwin2SRStage.forwardL  s¢   € ð !ˆà(‰ˆÜ(¨¯©Ö5‰OˆAÙ(¨ÐJ[Ó\ˆMà)¨!Õ,ŠMñ  6ð
 $¨FÐ:Ðà×*Ñ*¨=ÓKˆØŸ	™	 -Ó0ˆØ×+Ñ+¨MÓ:Ñˆà%Õ0ˆà&Ð:ˆçØ˜]¨2Õ.Õ.ˆMØÐr   )rK   r–  r…   r”  r˜  r™  r  r‰  rY   r\   s   @@r   r‹  r‹  %  s   ù‡ € ñ÷ >÷D÷ ò r   r‹  c                   óH   a a€ ] tR tRt oV 3R ltRV3R lR lltRtVtV ;t# )ÚSwin2SREncoderii  c                ó¬  <€ \         SV `  4        \        VP                  4      V n        Wn        \        P                  ! ^ VP                  \        VP                  4      RR7       Uu. uF  q3P                  4       NK  	  pp\        P                  ! \        V P                  4       Uu. uF‡  p\        VVP                  V^ ,          V^,          3VP                  V,          VP                   V,          V\        VP                  RV 4      \        VP                  RV^,            4       ^ R7      NK‰  	  up4      V n        RV n        R# u upi u upi )r_   Úcpu)r:  N)rK   r…   r„   rš  rÀ   rU  r°   F)r=   r>   ÚlenÚdepthsÚ
num_stagesrK   r   ÚlinspacerX  rò   Úitemr   r’  r“  r‹  rE   rÀ   ÚstagesÚgradient_checkpointing)rJ   rK   Ú	grid_sizeÚxÚdprÚ	stage_idxrL   s   &&&   €r   r>   ÚSwin2SREncoder.__init__j  s  ø€ Ü‰ÑÔÜ˜fŸm™mÓ,ˆŒØŒÜ!&§¢°°6×3HÑ3HÌ#ÈfÏmÉmÓJ\ÐejÕ!kÓlÑ!k˜A�v‰vŽxÑ!kˆÐlÜ—m’mô "' t§¡Ô!7óñ "8�Iô Ø!Ø×(Ñ(Ø&/°¥l°I¸aµLÐ%AØ Ÿ-™-¨	Õ2Ø$×.Ñ.¨yÕ9Ø!¤# f§m¡m°J°YÐ&?Ó"@Ä3ÀvÇ}Á}ÐUdÐW`ÐcdÕWdÐGeÓCfÐgØ+,÷ñ "8ñó
ˆŒð ',ˆÖ#ùò! mùòs   Á)EÂ*BEc                ó¢   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[R,          RS[R,          RS[R,          RS[S[,          /# )r   r   r™   rÅ   NÚoutput_hidden_statesÚreturn_dictrP   )r   rQ   r   rp   rÇ   r   )r   r   s   "€r   r   ÚSwin2SREncoder.__annotate__€  se   ø€ ÷ %
ñ %
á—|‘|ð%
ñ  ¡¡S �/ð%
ñ   $�;ð	%
ñ
 # T�kð%
ñ ˜D•[ð%
ñ 
Ñ%Õ	%ñ%
r   c                óà  € RpV'       d   RMR pV'       d   RMR pV'       d
   Wq3,          p\        V P                  4       Fe  w  ršV
! WV4      pV^ ,          pV^,          pVR,          VR,          3pWb3,          pV'       d
   Wq3,          pV'       g   KV  W‹R,          ,          pKg  	  V'       g1   \        ;QJ d    . R WV3 4       F  NK  	  5# ! R WV3 4       4      # \        VVVR7      # )Nºr   NNc              3   ó0   "  € T F  qf   K  Vx € K  	  R # 5irT   r    )Ú.0Úvs   & r   Ú	<genexpr>Ú)Swin2SREncoder.forward.<locals>.<genexpr>Ÿ  s   é € ÐmÑ$[˜qŸšÓ$[ùs   ‚Œ
©r   r   r   r    rË   r)   )r   r®  r   r   )rJ   r   r™   rÅ   r¶  r·  Úall_input_dimensionsÚall_hidden_statesÚall_self_attentionsr›  Ústage_moduler‡  rV   s   &&&&&&       r   rW   ÚSwin2SREncoder.forward€  sò   € ð  "Ðß"6™B¸DÐß$5™b¸4ÐçØÐ!1Õ1Ðä(¨¯©Ö5‰OˆAÙ(¨ÐJ[Ó\ˆMà)¨!Õ,ˆMØ -¨aÕ 0Ðà 1°"Õ 5Ð7HÈÕ7LÐMÐØ Ð$7Õ7Ð ç#Ø!Ð%5Õ5Ð!ç Ñ Ø#°RÕ'8Õ8Ò#ñ  6÷ ß”5Ñm ]ÐGZÑ$[Óm—5Ðm�5Ñm ]ÐGZÑ$[ÓmÓmÐmä#Ø+Ø+Ø*ô
ð 	
r   )rK   r¯  r«  r®  )FFTrw   r\   s   @@r   r¦  r¦  i  s   ù‡ € õ,÷,%
÷ %
ò %
r   r¦  c                   óv   a a€ ] tR tRt oRtRtRtRt]P                  ! 4       V 3R l4       t
V3R ltRtVtV ;t# )	ÚSwin2SRPreTrainedModeli¨  Úswin2srrO   Tc                óþ  <€ \         SV `  V4       \        V\        P                  \        P
                  34      '       di   \        P                  ! VP                  V P                  P                  R7       VP                  e#   \        P                  ! VP                  4       R# R# \        V\        4      '       dŒ   \        P                  ! VP                  \         P"                  ! ^
4      4       VP%                  4       w  r#\        P&                  ! VP(                  V4       \        P&                  ! VP*                  V4       R# \        V\,        4      '       dž   VP                  P.                  ^8X  dG   VP                  P0                  ^8X  d,   \2        P4                  ! . RO4      P7                  ^^^^4      pM\2        P8                  ! ^^^^4      p\        P&                  ! VP:                  V4       R# R# )zInitialize the weights)ÚstdN©gšwœ¢#¹Ü?gï8EGrùÛ?gB`åÐ"ÛÙ?)r=   Ú_init_weightsrd   r   r�   ri   ÚinitÚtrunc_normal_ÚweightrK   Úinitializer_rangerŒ   Úzeros_r¥   Ú	constant_r³   rÎ   r±   r·   Úcopy_r¹   rº   ÚSwin2SRModelr4   Únum_channels_outr   Útensorr,   rD   Úmean)rJ   Úmoduler¹   rº   r×  rL   s   &&   €r   rÌ  Ú$Swin2SRPreTrainedModel._init_weights°  sK  ø€ ô 	‰Ñ˜fÔ%Ü�fœrŸy™y¬"¯)©)Ð4×5Ò5Ü×Ò˜vŸ}™}°$·+±+×2OÑ2OÕPØ�{‰{Ò&Ü—’˜FŸK™KÖ(ñ 'ä˜Ô 4×5Ò5Ü�NŠN˜6×-Ñ-¬t¯xªx¸«|Ô<Ø=C×=aÑ=aÓ=cÑ:Ð!Ü�JŠJ�v×3Ñ3Ð5JÔKÜ�JŠJ�v×5Ñ5Ð7NÖOÜ˜¤×-Ò-Ø�}‰}×)Ñ)¨QÔ.°6·=±=×3QÑ3QÐUVÔ3VÜ—|’|Ò$<Ó=×BÑBÀ1ÀaÈÈAÓN‘ä—{’{ 1 a¨¨AÓ.�Ü�JŠJ�v—{‘{ DÖ)ñ .r   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   rK   r   )r   r   s   "€r   r   Ú#Swin2SRPreTrainedModel.__annotate__¨  s   ø‡ ‚ áÑò r   r    )Úimage)r!   r"   r#   r$   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingr   Úno_gradrÌ  r%   r&   r'   r[   r\   s   @@r   rÇ  rÇ  ¨  s=   ù‡ € ð "ÐØ$€OØ!ÐØ&*Ð#à
‡]‚]ƒ_ô*ó ð*÷ … r   rÇ  c                   ó^   a a€ ] tR tRt oV 3R ltR tR t]RV3R lR ll4       tRt	Vt
V ;t# )	rÔ  iÅ  c                óF  <€ \         SV `  V4       Wn        VP                  ^8X  d=   VP                  ^8X  d,   \
        P                  ! . RO4      P                  ^^^^4      pM\
        P                  ! ^^^^4      p\        P                  ! VRR7      V n        VP                  V n        \        P                  ! VP                  VP                  ^^^4      V n        \!        V4      V n        \%        WP"                  P&                  P(                  R7      V n        \        P,                  ! VP                  VP.                  R7      V n        \3        V4      V n        \        P                  ! VP                  VP                  ^^^4      V n        V P9                  4        R# )é   Frª   )r°  rM  NrË  )r=   r>   rK   r4   rÕ  r   rÖ  r,   rD   r   r¸   r×  Ú	img_rangeri   rE   Úfirst_convolutionr:   rU   r¦  r@   rh   Úencoderrk   rR  rl   ry   r™  Úconv_after_bodyÚ	post_init)rJ   rK   r×  rL   s   && €r   r>   ÚSwin2SRModel.__init__Ç  s1  ø€ Ü‰Ñ˜Ô ØŒà×Ñ !Ô#¨×(?Ñ(?À1Ô(DÜ—<’<Ò 8Ó9×>Ñ>¸qÀ!ÀQÈÓJ‰Dä—;’;˜q ! Q¨Ó*ˆDÜ—I’I˜d¨uÔ5ˆŒ	à×)Ñ)ˆŒä!#§¢¨6×+>Ñ+>À×@PÑ@PÐRSÐUVÐXYÓ!ZˆÔÜ+¨FÓ3ˆŒÜ% f¿¹×8XÑ8X×8kÑ8kÔlˆŒäŸš f×&6Ñ&6¸F×<QÑ<QÔRˆŒÜ5°fÓ=ˆÔÜ!Ÿyšy¨×)9Ñ)9¸6×;KÑ;KÈQÐPQÐSTÓUˆÔð 	�‰Ör   c                ó.   € V P                   P                  # rT   )rU   r@   rG  s   &r   Úget_input_embeddingsÚ!Swin2SRModel.get_input_embeddingsÞ  s   € Ø�‰×/Ñ/Ð/r   c                ó�  € VP                  4       w   r#pV P                  P                  pWSV,          ,
          V,          pWTV,          ,
          V,          p\        P                  P                  V^ V^ V3R4      pV P                  P                  VP                  VP                  R7      pW,
          V P                  ,          pV# )r_   Úreflect)r:  rä   )rÕ   rK   r0   r   r’   r“   r×  rï   r:  rä   rå  )	rJ   rO   ru   r2   r3   r0   Úmodulo_pad_heightÚmodulo_pad_widthr×  s	   &&       r   Úpad_and_normalizeÚSwin2SRModel.pad_and_normalizeá  s­   € Ø*×/Ñ/Ó1Ñˆˆ1�eð —k‘k×-Ñ-ˆØ(°KÕ+?Õ?À;ÕNÐØ'°+Õ*=Õ=ÀÕLÐÜ—}‘}×(Ñ(¨¸Ð;KÈQÐPaÐ7bÐdmÓnˆð �y‰y�|‰| <×#6Ñ#6¸l×>PÑ>Pˆ|ÓQˆØ$Õ+¨t¯~©~Õ=ˆàÐr   c                ó†   <€ V ^8„  d   QhRS[ P                  RS[R,          RS[R,          RS[R,          RS[S[,          /# )r   rO   rÅ   Nr¶  r·  rP   )r   r   rÇ   r   r   )r   r   s   "€r   r   ÚSwin2SRModel.__annotate__ñ  sT   ø€ ÷ -
ñ -
á×'Ñ'ð-
ñ   $�;ð-
ñ # T�kð	-
ñ
 ˜D•[ð-
ñ 
‘Õ	 ñ-
r   c                ód  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pVP                  w   rgpV P                  V4      pV P                  V4      p	V P                  V	4      w  r«V P                  V
VVVVR7      pV^ ,          pV P                  V4      pV P                  W×V34      pV P                  V4      V	,           pV'       g   V3VR,          ,           pV# \        VVP                  VP                  R7      # )N©rÅ   r¶  r·  r  rÀ  )rK   rÅ   r¶  r·  r+   rò  ræ  rU   rç  rl   r™  rè  r   r   r   )rJ   rO   rÅ   r¶  r·  Úkwargsru   r2   r3   rU   Úembedding_outputr™   Úencoder_outputsÚsequence_outputr  s   &&&&&,         r   rW   ÚSwin2SRModel.forwardð  s9  € ð 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà*×0Ñ0Ñˆˆ1�eð ×-Ñ-¨lÓ;ˆà×+Ñ+¨LÓ9ˆ
Ø-1¯_©_¸ZÓ-HÑ*ÐàŸ,™,ØØØ/Ø!5Ø#ð 'ó 
ˆð *¨!Õ,ˆØŸ.™.¨Ó9ˆà×,Ñ,¨_Àu¸oÓNˆØ×.Ñ.¨Ó?À*ÕLˆçØ%Ð'¨/¸"Õ*=Õ=ˆFàˆMäØ-Ø)×7Ñ7Ø&×1Ñ1ô
ð 	
r   )	rK   rè  rU   rç  ræ  rå  rl   r×  r™  )NNN)r!   r"   r#   r$   r>   rì  rò  r   rW   r&   r'   r[   r\   s   @@r   rÔ  rÔ  Å  s2   ù‡ € õò.0òð ÷-
ñ -
ó ÷-
ð -
r   rÔ  c                   ó<   a a€ ] tR tRt oRtV 3R ltR tRtVtV ;t	# )ÚUpsamplei!  z©Upsample module.

Args:
    scale (`int`):
        Scale factor. Supported scales: 2^n and 3.
    num_features (`int`):
        Channel number of intermediate features.
c                ó"  <€ \         SV `  4        Wn        W^,
          ,          ^ 8X  d�   \        \	        \
        P                  ! V4      4      4       F`  pV P                  RV 2\        P                  ! V^V,          ^^^4      4       V P                  RV 2\        P                  ! ^4      4       Kb  	  R# V^8X  dD   \        P                  ! V^	V,          ^^^4      V n        \        P                  ! ^4      V n        R# \        RV R24      h)r<   Úconvolution_Úpixelshuffle_zScale z/ is not supported. Supported scales: 2^n and 3.N)r=   r>   Úscaler“  rp   rÎ   rí   Ú
add_moduler   ri   ÚPixelShuffleÚconvolutionÚpixelshuffler¬   )rJ   r  Únum_featuresr›  rL   s   &&& €r   r>   ÚUpsample.__init__+  sÙ   ø€ Ü‰ÑÔàŒ
Ø˜Q•YÕ AÔ%äœ3œtŸyšy¨Ó/Ó0Ö1�Ø—‘ ,¨q¨cÐ 2´B·I²I¸lÈAÐP\ÕL\Ð^_ÐabÐdeÓ4fÔgØ—‘ -°¨sÐ 3´R·_²_ÀQÓ5GÖHó 2ð �aŒZÜ!Ÿyšy¨°q¸<Õ7GÈÈAÈqÓQˆDÔÜ "§¢°Ó 2ˆDÖä˜v e WÐ,[Ð\Ó]Ð]r   c                óœ  € V P                   V P                   ^,
          ,          ^ 8X  dp   \        \        \        P                  ! V P                   4      4      4       F7  pV P                  RV 24      ! V4      pV P                  RV 24      ! V4      pK9  	  V# V P                   ^8X  d#   V P                  V4      pV P                  V4      pV# )r<   r   r  )r  r“  rp   rÎ   rí   Ú__getattr__r  r  )rJ   Úhidden_stater›  s   && r   rW   ÚUpsample.forward:  s¯   € Ø�J‰J˜$Ÿ*™* q�.Õ)¨aÔ/Üœ3œtŸyšy¨¯©Ó4Ó5Ö6�Ø#×/Ñ/°,¸q¸cÐ0BÔCÀLÓQ�Ø#×/Ñ/°-À¸sÐ0CÔDÀ\ÓR’ñ 7ð Ðð	 �Z‰Z˜1Œ_Ø×+Ñ+¨LÓ9ˆLØ×,Ñ,¨\Ó:ˆLàÐr   )r  r  r  rY   r\   s   @@r   rþ  rþ  !  s   ù‡ € ñõ^÷
ò 
r   rþ  c                   ó<   a a€ ] tR tRt oRtV 3R ltR tRtVtV ;t	# )ÚUpsampleOneStepiG  ai  UpsampleOneStep module (the difference with Upsample is that it always only has 1conv + 1pixelshuffle)

Used in lightweight SR to save parameters.

Args:
    scale (int):
        Scale factor. Supported scales: 2^n and 3.
    in_channels (int):
        Channel number of intermediate features.
    out_channels (int):
        Channel number of output features.
c                ó²   <€ \         SV `  4        \        P                  ! W!^,          V,          ^^^4      V n        \        P
                  ! V4      V n        R# )r   N)r=   r>   r   ri   r–  r  Úpixel_shuffle)rJ   r  Úin_channelsÚout_channelsrL   s   &&&&€r   r>   ÚUpsampleOneStep.__init__U  s>   ø€ Ü‰ÑÔä—I’I˜k°1­H¸Õ+DÀaÈÈAÓNˆŒ	ÜŸ_š_¨UÓ3ˆÖr   c                óJ   € V P                  V4      pV P                  V4      pV# rT   ©r–  r  )rJ   r±  s   &&r   rW   ÚUpsampleOneStep.forward[  s$   € Ø�I‰I�a‹LˆØ×Ñ˜qÓ!ˆàˆr   r  rY   r\   s   @@r   r  r  G  s   ù‡ € ñõ4÷ò r   r  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚPixelShuffleUpsamplerib  c                ó4  <€ \         SV `  4        \        P                  ! VP                  V^^^4      V n        \        P                  ! RR7      V n        \        VP                  V4      V n
        \        P                  ! W!P                  ^^^4      V n        R# ©rä  Tr¨   N)r=   r>   r   ri   rE   Úconv_before_upsampler—  Ú
activationrþ  ÚupscaleÚupsamplerÕ  Úfinal_convolution©rJ   rK   r  rL   s   &&&€r   r>   ÚPixelShuffleUpsampler.__init__c  sq   ø€ Ü‰ÑÔÜ$&§I¢I¨f×.>Ñ.>ÀÈaÐQRÐTUÓ$VˆÔ!ÜŸ,š,¨tÔ4ˆŒÜ  §¡°Ó>ˆŒÜ!#§¢¨<×9PÑ9PÐRSÐUVÐXYÓ!ZˆÖr   c                óŽ   € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV# rT   )r  r  r  r  )rJ   rû  r±  s   && r   rW   ÚPixelShuffleUpsampler.forwardj  sC   € Ø×%Ñ% oÓ6ˆØ�O‰O˜AÓˆØ�M‰M˜!ÓˆØ×"Ñ" 1Ó%ˆàˆr   )r  r  r  r  rw   r\   s   @@r   r  r  b  s   ù‡ € õ[÷ò r   r  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚNearestConvUpsampleris  c                ó$  <€ \         SV `  4        VP                  ^8w  d   \        R4      h\        P
                  ! VP                  V^^^4      V n        \        P                  ! RR7      V n	        \        P
                  ! W"^^^4      V n
        \        P
                  ! W"^^^4      V n        \        P
                  ! W"^^^4      V n        \        P
                  ! W!P                  ^^^4      V n        \        P                  ! RRR7      V n        R# )rŠ   zNThe nearest+conv upsampler only supports an upscale factor of 4 at the moment.Tr¨   r�  r�  N)r=   r>   r  r¬   r   ri   rE   r  r—  r  Úconv_up1Úconv_up2Úconv_hrrÕ  r  Úlrelur   s   &&&€r   r>   ÚNearestConvUpsampler.__init__t  sË   ø€ Ü‰ÑÔØ�>‰>˜QÔÜÐmÓnÐnä$&§I¢I¨f×.>Ñ.>ÀÈaÐQRÐTUÓ$VˆÔ!ÜŸ,š,¨tÔ4ˆŒÜŸ	š	 ,¸aÀÀAÓFˆŒÜŸ	š	 ,¸aÀÀAÓFˆŒÜ—y’y ¸QÀÀ1ÓEˆŒÜ!#§¢¨<×9PÑ9PÐRSÐUVÐXYÓ!ZˆÔÜ—\’\°¸dÔCˆŽ
r   c           
     óÐ  € V P                  V4      pV P                  V4      pV P                  V P                  \        P
                  P                  P                  V^RR7      4      4      pV P                  V P                  \        P
                  P                  P                  V^RR7      4      4      pV P                  V P                  V P                  V4      4      4      pV# )r   Únearest)Úscale_factorÚmode)r  r  r*  r'  r   r   r’   Úinterpolater(  r  r)  )rJ   rû  Úreconstructions   && r   rW   ÚNearestConvUpsampler.forward�  s¼   € Ø×3Ñ3°OÓDˆØŸ/™/¨/Ó:ˆØŸ*™*Ø�M‰Mœ%Ÿ(™(×-Ñ-×9Ñ9¸/ÐXYÐ`iÐ9ÓjÓkó
ˆð Ÿ*™*Ø�M‰Mœ%Ÿ(™(×-Ñ-×9Ñ9¸/ÐXYÐ`iÐ9ÓjÓkó
ˆð ×/Ñ/°·
±
¸4¿<¹<ÈÓ;XÓ0YÓZˆØÐr   )r  r  r)  r'  r(  r  r*  rw   r\   s   @@r   r%  r%  s  s   ù‡ € õD÷
ò 
r   r%  c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚPixelShuffleAuxUpsampleriŽ  c           	     óŠ  <€ \         SV `  4        VP                  V n        \        P                  ! VP
                  V^^^4      V n        \        P                  ! VP                  V^^^4      V n        \        P                  ! RR7      V n
        \        P                  ! W!P
                  ^^^4      V n        \        P                  ! \        P                  ! ^V^^^4      \        P                  ! RR7      4      V n        \        VP                  V4      V n        \        P                  ! W!P                   ^^^4      V n        R# r  )r=   r>   r  r   ri   r4   Úconv_bicubicrE   r  r—  r  Úconv_auxr´   Úconv_after_auxrþ  r  rÕ  r  r   s   &&&€r   r>   Ú!PixelShuffleAuxUpsampler.__init__�  sè   ø€ Ü‰ÑÔà—~‘~ˆŒÜŸIšI f×&9Ñ&9¸<ÈÈAÈqÓQˆÔÜ$&§I¢I¨f×.>Ñ.>ÀÈaÐQRÐTUÓ$VˆÔ!ÜŸ,š,¨tÔ4ˆŒÜŸ	š	 ,×0CÑ0CÀQÈÈ1ÓMˆŒÜ Ÿmšm¬B¯IªI°a¸ÀqÈ!ÈQÓ,OÔQS×Q]ÒQ]ÐfjÔQkÓlˆÔÜ  §¡°Ó>ˆŒÜ!#§¢¨<×9PÑ9PÐRSÐUVÐXYÓ!ZˆÖr   c                óÀ  € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV P	                  V4      pV P                  V4      R R RW0P                  ,          1RW@P                  ,          13,          VR R RW0P                  ,          1RW@P                  ,          13,          ,           pV P                  V4      pWe3# )r›   N)r6  r  r  r7  r8  r  r  r  )rJ   rû  Úbicubicr2   r3   Úauxr1  s   &&&&&  r   rW   Ú PixelShuffleAuxUpsampler.forward›  sÕ   € Ø×#Ñ# GÓ,ˆØ×3Ñ3°OÓDˆØŸ/™/¨/Ó:ˆØ�m‰m˜OÓ,ˆØ×-Ñ-¨cÓ2ˆà�M‰M˜/Ó*¨1¨aÐ1H°6¿L¹LÕ3HÐ1HÐJ`ÈE×T`ÑT`ÕL`ÐJ`Ð+`ÕaØ�a˜Ð3˜f§|¡|Õ3Ð3Ð5K°u¿|¹|Õ7KÐ5KÐKÕLõMð 	ð ×/Ñ/°Ó@ˆàÐ"Ð"r   )r  r8  r7  r  r6  r  r  r  rw   r\   s   @@r   r4  r4  Ž  s   ù‡ € õ
[÷#ò #r   r4  zm
    Swin2SR Model transformer with an upsampler head on top for image super resolution and restoration.
    c                   óR   a a€ ] tR tRt oV 3R lt]RV3R lR ll4       tRtVtV ;t	# )ÚSwin2SRForImageSuperResolutioniª  c                ód  <€ \         SV `  V4       \        V4      V n        VP                  V n        VP
                  V n        ^@pV P                  R8X  d   \        W4      V n        M¹V P                  R8X  d   \        W4      V n        M—V P                  R8X  d2   \        VP
                  VP                  VP                  4      V n        MUV P                  R8X  d   \        W4      V n        M3\        P                  ! VP                  VP                  ^^^4      V n        V P!                  4        R# )é@   r  Úpixelshuffle_auxÚpixelshuffledirectúnearest+convN)r=   r>   rÔ  rÈ  Ú	upsamplerr  r  r  r4  r  rE   rÕ  r%  r   ri   r  ré  r   s   && €r   r>   Ú'Swin2SRForImageSuperResolution.__init__°  sç   ø€ Ü‰Ñ˜Ô ä# FÓ+ˆŒØ×)Ñ)ˆŒØ—~‘~ˆŒð ˆØ�>‰>˜^Ô+Ü1°&ÓGˆD�MØ�^‰^Ð1Ô1Ü4°VÓJˆD�MØ�^‰^Ð3Ô3ä+¨F¯N©N¸F×<LÑ<LÈf×NeÑNeÓfˆD�MØ�^‰^˜~Ô-ä0°ÓFˆD�Mô &(§Y¢Y¨v×/?Ñ/?À×AXÑAXÐZ[Ð]^Ð`aÓ%bˆDÔ"ð 	�‰Ör   c                ó¼   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[R,          RS[S[,          /# )r   rO   NÚlabelsrÅ   r¶  r·  rP   )r   r   Ú
LongTensorrÇ   r   r   )r   r   s   "€r   r   Ú+Swin2SRForImageSuperResolution.__annotate__Ë  sw   ø€ ÷ S
ñ S
á×'Ñ'¨$Õ.ðS
ñ × Ñ  4Õ'ðS
ñ   $�;ð	S
ñ
 # T�kðS
ñ ˜D•[ðS
ñ 
Ñ+Õ	+ñS
r   c                ó  € Ve   TMV P                   P                  pRpVe   \        R4      hVP                  R,          w  r‰V P                   P                  R8X  dF   \
        P                  P                  VW€P                  ,          W�P                  ,          3RRR7      p
V P                  VVVVR7      pV^ ,          pV P                  R9   d   V P                  V4      pMuV P                  R8X  dN   V P                  VX
W‰4      w  rÞWàP                  P                  ,          V P                  P                  ,           pMWP                  V4      ,           pWÐP                  P                  ,          V P                  P                  ,           pVR	R	RW€P                  ,          1RW�P                  ,          13,          pV'       g"   V3VR
,          ,           pVe   V3V,           # T# \        VVVP                  VP                   R7      # )a%  
Example:
 ```python
 >>> import torch
 >>> import numpy as np
 >>> from PIL import Image
 >>> import httpx
>>> from io import BytesIO

 >>> from transformers import AutoImageProcessor, Swin2SRForImageSuperResolution

 >>> processor = AutoImageProcessor.from_pretrained("caidas/swin2SR-classical-sr-x2-64")
 >>> model = Swin2SRForImageSuperResolution.from_pretrained("caidas/swin2SR-classical-sr-x2-64")

 >>> url = "https://huggingface.co/spaces/jjourney1125/swin2sr/resolve/main/samples/butterfly.jpg"
 >>> with httpx.stream("GET", url) as response:
 ...     image = Image.open(BytesIO(response.read()))
 >>> # prepare image for the model
 >>> inputs = processor(image, return_tensors="pt")

 >>> # forward pass
 >>> with torch.no_grad():
 ...     outputs = model(**inputs)

 >>> output = outputs.reconstruction.data.squeeze().float().cpu().clamp_(0, 1).numpy()
 >>> output = np.moveaxis(output, source=0, destination=-1)
 >>> output = (output * 255.0).round().astype(np.uint8)  # float32 to uint8
 >>> # you can visualize `output` with `Image.fromarray`
 ```Nz'Training is not supported at the momentrº  rB  r;  F)rÕ   r/  Úalign_cornersr÷  r›   r  )Úlossr1  r   r   )r  rC  rD  )rK   r·  ÚNotImplementedErrorr+   rE  r   r’   r0  r  rÈ  r  rå  r×  r  r   r   r   )rJ   rO   rH  rÅ   r¶  r·  rø  rM  r2   r3   r;  rà   rû  r1  r<  r  s   &&&&&&,         r   rW   Ú&Swin2SRForImageSuperResolution.forwardÊ  sÌ  € ðN &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆàˆØÒÜ%Ð&OÓPÐPà$×*Ñ*¨2Õ.‰ˆà�;‰;× Ñ Ð$6Ô6Ü—m‘m×/Ñ/ØØŸ|™|Õ+¨U·\±\Õ-AÐBØØ#ð	 0ó ˆGð —,‘,ØØ/Ø!5Ø#ð	 ó 
ˆð " !�*ˆà�>‰>ÐSÔSØ!Ÿ]™]¨?Ó;‰NØ�^‰^Ð1Ô1Ø"&§-¡-°ÀÈ&Ó"XÑˆNØŸ™×.Ñ.Õ.°·±×1BÑ1BÕB‰Cà)×,BÑ,BÀ?Ó,SÕSˆNà'¯,©,×*@Ñ*@Õ@À4Ç<Á<×CTÑCTÕTˆØ'¨¨1Ð.E°¿¹Õ0EÐ.EÐG]È×Q]ÑQ]ÕI]ÐG]Ð(]Õ^ˆçØ$Ð&¨°­Õ4ˆFØ)-Ò)9�T�G˜fÕ$ÐE¸vÐEä)ØØ)Ø!×/Ñ/Ø×)Ñ)ô	
ð 	
r   )r  rÈ  r  rE  r  )NNNNN)
r!   r"   r#   r$   r>   r   rW   r&   r'   r[   r\   s   @@r   r?  r?  ª  s,   ù‡ € õð4 ÷S
ñ S
ó ÷S
ð S
r   r?  )r?  rÔ  rÇ  )7rZ   Úcollections.abcre   rÎ   Údataclassesr   r   r   Ú r   rÍ  Úactivationsr   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_utilsr	   Úutilsr
   r   r   Úconfiguration_swin2srr   Ú
get_loggerr!   Úloggerr   r6   r8   r‡   r:   r?   ry   r‚   r¥   rý   r
  r  r)  r1  rK  r‹  r¦  rÇ  rÔ  rþ  r  r  r%  r4  r?  Ú__all__r    r   r   Ú<module>r\     s  ðñ )ã Û Ý !ã Ý å &Ý !Ý 9ß KÝ -ß 9Ñ 9Ý 0ð 
×	Ò	˜HÓ	%€ñ ðôð
 ô7˜;ó 7ó óð7ò	òô-˜Ÿ	™	ô -ô<-˜RŸY™Yô -ô6˜rŸy™yô ô3˜"Ÿ)™)ô 3ônE>˜2Ÿ9™9ô E>ôR
˜Ÿ	™	ô 
ô�r—y‘yô ô6˜"Ÿ)™)ô ô 	�B—I‘Iô 	ô%�b—i‘iô %ô2t�2—9‘9ô tônAÐ-ô AôH<
�R—Y‘Yô <
ð~ ô*˜_ó *ó ð*ð8 ôX
Ð)ó X
ó ðX
ôv#ˆr�y‰yô #ôL�b—i‘iô ô6˜BŸI™Iô ô"˜2Ÿ9™9ô ô6#˜rŸy™yô #ñ8 ðôô
o
Ð%;ó o
óð
o
òd W‚r   