Ë
    ÛÓ^j´C  ã                   óŒ  — d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZmZmZmZ dd	lmZ dd
lmZ ddlmZmZmZ ddlmZmZ ddlmZ ddlmZ  ej>                  e «      Z! G d„ dejD                  «      Z# G d„ dejH                  «      Z% G d„ dejD                  «      Z& G d„ dejD                  «      Z' G d„ dejD                  «      Z( G d„ dejD                  «      Z)e G d„ de«      «       Z* G d„ de*«      Z+e G d „ d!e*«      «       Z, ed"¬#«       G d$„ d%e*«      «       Z- ed&¬#«       G d'„ d(e	e*«      «       Z.g d)¢Z/y)*zPyTorch ConvNextV2 model.é    N)Únné   )Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)ÚBackboneOutputÚBaseModelOutputWithNoAttentionÚ(BaseModelOutputWithPoolingAndNoAttentionÚ$ImageClassifierOutputWithNoAttention)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚlogging)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputsé   )ÚConvNextV2Configc                   ó`   ‡ — e Zd ZdZdefˆ fd„Zdej                  dej                  fd„Zˆ xZ	S )ÚConvNextV2GRNz)GRN (Global Response Normalization) layerÚdimc                 óâ   •— t         ‰| �  «        t        j                  t	        j
                  ddd|«      «      | _        t        j                  t	        j
                  ddd|«      «      | _        y )Nr   )ÚsuperÚ__init__r   Ú	ParameterÚtorchÚzerosÚweightÚbias)Úselfr   Ú	__class__s     €ú}/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/convnextv2/modeling_convnextv2.pyr   zConvNextV2GRN.__init__*   sL   ø€ Ü‰ÑÔÜ—l‘l¤5§;¡;¨q°!°Q¸Ó#<Ó=ˆŒÜ—L‘L¤§¡¨Q°°1°cÓ!:Ó;ˆ�	ó    Úhidden_statesÚreturnc                 óÂ   — t         j                  j                  |ddd¬«      }||j                  dd¬«      dz   z  }| j                  ||z  z  | j
                  z   |z   }|S )Né   )r   r)   T)Úordr   Úkeepdiméÿÿÿÿ)r   r+   ç�íµ ÷Æ°>)r   ÚlinalgÚvector_normÚmeanr    r!   )r"   r&   Úglobal_featuresÚnorm_featuress       r$   ÚforwardzConvNextV2GRN.forward/   si   € äŸ,™,×2Ñ2°=ÀaÈVÐ]aÐ2ÓbˆØ'¨?×+?Ñ+?ÀBÐPTÐ+?Ó+UÐX\Ñ+\Ñ]ˆØŸ™ }°}Ñ'DÑEÈÏ	É	ÑQÐTaÑaˆàÐr%   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr   r   ÚFloatTensorr3   Ú__classcell__©r#   s   @r$   r   r   '   s1   ø„ Ù3ð<˜Cõ <ð
 U×%6Ñ%6ð ¸5×;LÑ;L÷ r%   r   c                   óf   ‡ — e Zd ZdZdddœˆ fd„
Zdej                  dej                  fˆ fd„Zˆ xZS )	ÚConvNextV2LayerNormaA  LayerNorm that supports two data formats: channels_last (default) or channels_first.
    The ordering of the dimensions in the inputs. channels_last corresponds to inputs with shape (batch_size, height,
    width, channels) while channels_first corresponds to inputs with shape (batch_size, channels, height, width).
    r-   Úchannels_last©ÚepsÚdata_formatc                ó\   •— t        ‰| �  |fd|i|¤Ž |dvrt        d|› �«      ‚|| _        y )Nr@   )r>   Úchannels_firstzUnsupported data format: )r   r   ÚNotImplementedErrorrA   )r"   Únormalized_shaper@   rA   Úkwargsr#   s        €r$   r   zConvNextV2LayerNorm.__init__?   s?   ø€ Ü‰ÑÐ)Ñ=¨sÐ=°fÒ=ØÐAÑAÜ%Ð(AÀ+ÀÐ&OÓPÐPØ&ˆÕr%   Úfeaturesr'   c                 ó¶   •— | j                   dk(  r9|j                  dddd«      }t        ‰| �  |«      }|j                  dddd«      }|S t        ‰| �  |«      }|S )zŒ
        Args:
            features: Tensor of shape (batch_size, channels, height, width) OR (batch_size, height, width, channels)
        rC   r   r)   r   r   )rA   Úpermuter   r3   )r"   rG   r#   s     €r$   r3   zConvNextV2LayerNorm.forwardE   sj   ø€ ð
 ×ÑÐ/Ò/Ø×'Ñ'¨¨1¨a°Ó3ˆHÜ‘w‘ xÓ0ˆHØ×'Ñ'¨¨1¨a°Ó3ˆHð ˆô ‘w‘ xÓ0ˆHØˆr%   ©	r4   r5   r6   r7   r   r   ÚTensorr3   r:   r;   s   @r$   r=   r=   9   s4   ø„ ñð
 15À/ö 'ð §¡ð °·±÷ ñ r%   r=   c                   óZ   ‡ — e Zd ZdZˆ fd„Zdej                  dej                  fd„Zˆ xZ	S )ÚConvNextV2Embeddingsz‡This class is comparable to (and inspired by) the SwinEmbeddings class
    found in src/transformers/models/swin/modeling_swin.py.
    c                 ó  •— t         ‰| �  «        t        j                  |j                  |j
                  d   |j                  |j                  ¬«      | _        t        |j
                  d   dd¬«      | _	        |j                  | _        y )Nr   ©Úkernel_sizeÚstrider-   rC   r?   )
r   r   r   ÚConv2dÚnum_channelsÚhidden_sizesÚ
patch_sizeÚpatch_embeddingsr=   Ú	layernorm©r"   Úconfigr#   s     €r$   r   zConvNextV2Embeddings.__init__Y   sr   ø€ Ü‰ÑÔÜ "§	¡	Ø×Ñ ×!4Ñ!4°QÑ!7ÀV×EVÑEVÐ_e×_pÑ_pô!
ˆÔô -¨V×-@Ñ-@ÀÑ-CÈÐ[kÔlˆŒØ"×/Ñ/ˆÕr%   Úpixel_valuesr'   c                 óœ   — |j                   d   }|| j                  k7  rt        d«      ‚| j                  |«      }| j	                  |«      }|S )Nr   zeMake sure that the channel dimension of the pixel values match with the one set in the configuration.)ÚshaperS   Ú
ValueErrorrV   rW   )r"   rZ   rS   Ú
embeddingss       r$   r3   zConvNextV2Embeddings.forwarda   sV   € Ø#×)Ñ)¨!Ñ,ˆØ˜4×,Ñ,Ò,ÜØwóð ð ×*Ñ*¨<Ó8ˆ
Ø—^‘^ JÓ/ˆ
ØÐr%   )
r4   r5   r6   r7   r   r   r9   rK   r3   r:   r;   s   @r$   rM   rM   T   s*   ø„ ñô0ð E×$5Ñ$5ð ¸%¿,¹,÷ r%   rM   c                   ór   ‡ — e Zd ZdZd	deddfˆ fd„Zdej                  dej                  fd„Zde	fd„Z
ˆ xZS )
ÚConvNextV2DropPathzÏ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>`_.
    Ú	drop_probr'   Nc                 ó0   •— t         ‰| �  «        || _        y ©N)r   r   ra   )r"   ra   r#   s     €r$   r   zConvNextV2DropPath.__init__t   s   ø€ Ü‰ÑÔØ"ˆ�r%   r&   c                 óP  — | j                   dk(  s| j                  s|S d| j                   z
  }|j                  d   fd|j                  dz
  z  z   }t	        j
                  ||j                  |j                  ¬«      }t	        j                  ||z   «      }|j                  |«      |z  S )Nç        r   r   )r   )ÚdtypeÚdevice)
ra   Útrainingr\   Úndimr   Úrandrf   rg   ÚfloorÚdiv)r"   r&   Ú	keep_probr\   Úrandom_tensors        r$   r3   zConvNextV2DropPath.forwardx   s—   € Ø�>‰>˜SÒ ¨¯ªØ Ð Ø˜Ÿ™Ñ&ˆ	Ø×$Ñ$ QÑ'Ð)¨D°M×4FÑ4FÈÑ4JÑ,KÑKˆÜŸ
™
 5°×0CÑ0CÈM×L`ÑL`ÔaˆÜŸ™ M°IÑ$=Ó>ˆØ× Ñ  Ó+¨mÑ;Ð;r%   c                 ó    — d| j                   › �S )Nzp=)ra   )r"   s    r$   Ú
extra_reprzConvNextV2DropPath.extra_repr�   s   € Ø�D—N‘NÐ#Ð$Ð$r%   )re   )r4   r5   r6   r7   Úfloatr   r   rK   r3   Ústrrp   r:   r;   s   @r$   r`   r`   m   sB   ø„ ññ# %ð #°$õ #ð< U§\¡\ð <°e·l±ló <ð%˜C÷ %r%   r`   c                   ó\   ‡ — e Zd ZdZdˆ fd„	Zdej                  dej                  fd„Zˆ xZS )ÚConvNextV2Layera5  This corresponds to the `Block` class in the original implementation.

    There are two equivalent implementations: [DwConv, LayerNorm (channels_first), Conv, GELU,1x1 Conv]; all in (N, C,
    H, W) (2) [DwConv, Permute to (N, H, W, C), LayerNorm (channels_last), Linear, GELU, Linear]; Permute back

    The authors used (2) as they find it slightly faster in PyTorch.

    Args:
        config ([`ConvNextV2Config`]): Model configuration class.
        dim (`int`): Number of input channels.
        drop_path (`float`): Stochastic depth rate. Default: 0.0.
    c                 ó°  •— t         ‰| �  «        t        j                  ||dd|¬«      | _        t        |d¬«      | _        t        j                  |d|z  «      | _        t        |j                     | _        t        d|z  «      | _        t        j                  d|z  |«      | _        |dkD  rt        |«      | _        y t        j                   «       | _        y )Né   r   )rP   ÚpaddingÚgroupsr-   ©r@   é   re   )r   r   r   rR   Údwconvr=   rW   ÚLinearÚpwconv1r   Ú
hidden_actÚactr   ÚgrnÚpwconv2r`   ÚIdentityÚ	drop_path)r"   rY   r   rƒ   r#   s       €r$   r   zConvNextV2Layer.__init__“   s¡   ø€ Ü‰ÑÔä—i‘i  S°aÀÈ3ÔOˆŒÜ,¨S°dÔ;ˆŒä—y‘y  a¨#¡gÓ.ˆŒÜ˜&×+Ñ+Ñ,ˆŒÜ   S¡Ó)ˆŒÜ—y‘y  S¡¨#Ó.ˆŒØ:CÀcº/Ô+¨IÓ6ˆ�ÌrÏ{É{Ë}ˆ�r%   rG   r'   c                 óN  — |}| j                  |«      }|j                  dddd«      }| j                  |«      }| j                  |«      }| j	                  |«      }| j                  |«      }| j                  |«      }|j                  dddd«      }|| j                  |«      z   }|S )Nr   r)   r   r   )r{   rI   rW   r}   r   r€   r�   rƒ   )r"   rG   Úresiduals      r$   r3   zConvNextV2Layer.forwardŸ   sŸ   € ØˆØ—;‘;˜xÓ(ˆà×#Ñ# A q¨!¨QÓ/ˆØ—>‘> (Ó+ˆØ—<‘< Ó)ˆØ—8‘8˜HÓ%ˆØ—8‘8˜HÓ%ˆØ—<‘< Ó)ˆà×#Ñ# A q¨!¨QÓ/ˆà˜dŸn™n¨XÓ6Ñ6ˆØˆr%   )r   rJ   r;   s   @r$   rt   rt   …   s)   ø„ ñõ
]ð §¡ð °·±÷ r%   rt   c                   ó\   ‡ — e Zd ZdZdˆ fd„	Zdej                  dej                  fd„Zˆ xZS )ÚConvNextV2Stagea�  ConvNeXTV2 stage, consisting of an optional downsampling layer + multiple residual blocks.

    Args:
        config ([`ConvNextV2Config`]): Model configuration class.
        in_channels (`int`): Number of input channels.
        out_channels (`int`): Number of output channels.
        depth (`int`): Number of residual blocks.
        drop_path_rates(`list[float]`): Stochastic depth rates for each layer.
    c                 ó†  •— t         ‰	| �  «        ||k7  s|dkD  r@t        j                  t	        |dd¬«      t        j
                  ||||¬«      g«      | _        nt        j                  «       | _        |xs dg|z  }t        j                  t        |«      D �cg c]  }t        ||||   ¬«      ‘Œ c}«      | _	        y c c}w )Nr   r-   rC   r?   rO   re   )r   rƒ   )
r   r   r   Ú
ModuleListr=   rR   Údownsampling_layerÚrangert   Úlayers)
r"   rY   Úin_channelsÚout_channelsrP   rQ   ÚdepthÚdrop_path_ratesÚjr#   s
            €r$   r   zConvNextV2Stage.__init__¼   s©   ø€ Ü‰ÑÔà˜,Ò&¨&°1ª*Ü&(§m¡mä'¨¸ÐK[Ô\Ü—I‘I˜k¨<À[ÐY_Ô`ðó'ˆDÕ#ô ')§m¡m£oˆDÔ#Ø)Ò:¨c¨U°U©]ˆÜ—m‘mÜ^cÐdiÓ^jÖkÐYZŒ_˜V¨ÀÐQRÑASÖTÒkó
ˆ�ùÚks   ÂB>rG   r'   c                 ój   — | j                   D ]
  } ||«      }Œ | j                  D ]
  } ||«      }Œ |S rc   )rŠ   rŒ   )r"   rG   Úlayers      r$   r3   zConvNextV2Stage.forwardÍ   sA   € Ø×,Ñ,ò 	'ˆEÙ˜X“‰Hð	'à—[‘[ò 	'ˆEÙ˜X“‰Hð	'àˆr%   )r)   r)   r)   NrJ   r;   s   @r$   r‡   r‡   ±   s(   ø„ ñõ
ð" §¡ð °·±÷ r%   r‡   c                   ód   ‡ — e Zd ZU eed<   dZdZdZdgZ e	j                  «       ˆ fd„«       Zˆ xZS )ÚConvNextV2PreTrainedModelrY   Ú
convnextv2rZ   )Úimagert   c                 óÂ   •— t         ‰| �  |«       t        |t        «      r?t	        j
                  |j                  «       t	        j
                  |j                  «       yy)zInitialize the weightsN)r   Ú_init_weightsÚ
isinstancer   ÚinitÚzeros_r    r!   )r"   Úmoduler#   s     €r$   r™   z'ConvNextV2PreTrainedModel._init_weightsÝ   sA   ø€ ô 	‰Ñ˜fÔ%Ü�fœmÔ,Ü�K‰K˜Ÿ™Ô&Ü�K‰K˜Ÿ™Õ$ð -r%   )r4   r5   r6   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚ_no_split_modulesr   Úno_gradr™   r:   r;   s   @r$   r•   r•   Õ   s=   ø… àÓØ$ÐØ$€OØ!ÐØ*Ð+Ðà€U‡]�]ƒ_ó%ó ô%r%   r•   c                   óz   ‡ — e Zd ZdZdeiZˆ fd„Ze ed¬«      de	j                  dee   defd„«       «       Zˆ xZS )ÚConvNextV2Encoderr&   c           
      óN  •— t         ‰| �  |«       t        j                  «       | _        t        j                  d|j                  t        |j                  «      d¬«      j                  |j                  «      D �cg c]  }|j                  «       ‘Œ }}|j                  d   }t        |j                  «      D ]V  }|j                  |   }t        ||||dkD  rdnd|j                  |   ||   ¬«      }| j                  j!                  |«       |}ŒX | j#                  «        y c c}w )Nr   Úcpu)rg   r)   r   )r�   rŽ   rQ   r�   r�   )r   r   r   r‰   Ústagesr   ÚlinspaceÚdrop_path_rateÚsumÚdepthsÚsplitÚtolistrT   r‹   Ú
num_stagesr‡   ÚappendÚ	post_init)	r"   rY   Úxr�   Úprev_chsÚiÚout_chsÚstager#   s	           €r$   r   zConvNextV2Encoder.__init__ë   s  ø€ Ü‰Ñ˜Ô Ü—m‘m“oˆŒô —^‘^ A v×'<Ñ'<¼cÀ&Ç-Á-Ó>PÐY^Ô_×eÑeÐfl×fsÑfsÓtö
àð �H‰H�Jð
ˆð 
ð ×&Ñ& qÑ)ˆÜ�v×(Ñ(Ó)ò 	ˆAØ×)Ñ)¨!Ñ,ˆGÜ#ØØ$Ø$Ø šE‘q qØ—m‘m AÑ&Ø /°Ñ 2ôˆEð �K‰K×Ñ˜uÔ%Ø‰Hð	ð 	�‰Õùò%
s   Á;D"F)Útie_last_hidden_statesrF   r'   c                 óL   — | j                   D ]
  } ||«      }Œ t        |¬«      S )N)Úlast_hidden_state)r¨   r
   )r"   r&   rF   Úlayer_modules       r$   r3   zConvNextV2Encoder.forward  s.   € ð !ŸK™Kò 	8ˆLÙ(¨Ó7‰Mð	8ô .ÀÔNÐNr%   )r4   r5   r6   r    r‡   Ú_can_record_outputsr   r   r   r   rK   r   r   r
   r3   r:   r;   s   @r$   r¥   r¥   ç   sd   ø„ Ø%€OØ*¨OÐ<Ðôð.  Ù¨EÔ2ðOà—|‘|ðOð Ð+Ñ,ðOð 
(ò	Oó 3ó  ôOr%   r¥   c            	       ój   ‡ — e Zd Zˆ fd„Zee	 ddej                  dz  dee	   de
fd„«       «       Zˆ xZS )ÚConvNextV2Modelc                 óø   •— t         ‰| �  |«       || _        t        |«      | _        t        |«      | _        t        j                  |j                  d   |j                  ¬«      | _        | j                  «        y )Nr,   ry   )r   r   rY   rM   r^   r¥   Úencoderr   Ú	LayerNormrT   Úlayer_norm_epsrW   r±   rX   s     €r$   r   zConvNextV2Model.__init__  s`   ø€ Ü‰Ñ˜Ô ØˆŒä.¨vÓ6ˆŒÜ(¨Ó0ˆŒô Ÿ™ f×&9Ñ&9¸"Ñ&=À6×CXÑCXÔYˆŒð 	�‰Õr%   NrZ   rF   r'   c                 óð   — |€t        d«      ‚| j                  |«      } | j                  |fi |¤Ž}|j                  }| j	                  |j                  ddg«      «      }t        |||j                  ¬«      S )Nz You have to specify pixel_valueséþÿÿÿr,   )r¹   Úpooler_outputr&   )r]   r^   r¿   r¹   rW   r0   r   r&   )r"   rZ   rF   Úembedding_outputÚencoder_outputsr¹   Úpooled_outputs          r$   r3   zConvNextV2Model.forward  s„   € ð
 ÐÜÐ?Ó@Ð@àŸ?™?¨<Ó8ÐØ:F¸$¿,¹,ÐGWÑ:bÐ[aÑ:bˆØ+×=Ñ=Ðð Ÿ™Ð'8×'=Ñ'=¸rÀ2¸hÓ'GÓHˆä7Ø/Ø'Ø)×7Ñ7ô
ð 	
r%   rc   )r4   r5   r6   r   r   r   r   r9   r   r   r   r3   r:   r;   s   @r$   r½   r½     sP   ø„ ôð Øà7;ñ
Ø!×-Ñ-°Ñ4ð
ØGMÐN`ÑGað
à	1ò
ó ó ô
r%   r½   zŠ
    ConvNextV2 Model with an image classification head on top (a linear layer on top of the pooled features), e.g. for
    ImageNet.
    )Úcustom_introc            	       ó‚   ‡ — e Zd ZdZˆ fd„Zee	 ddej                  dz  dej                  dz  de
fd„«       «       Zˆ xZS )	Ú ConvNextV2ForImageClassificationFc                 ó<  •— t         ‰| �  |«       |j                  | _        t        |«      | _        |j                  dkD  r3t        j                  |j                  d   |j                  «      | _        nt        j                  «       | _        | j                  «        y )Nr   r,   )r   r   Ú
num_labelsr½   r–   r   r|   rT   Ú
classifierr‚   r±   rX   s     €r$   r   z)ConvNextV2ForImageClassification.__init__?  su   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ)¨&Ó1ˆŒð ×Ñ˜qÒ Ü Ÿi™i¨×(;Ñ(;¸BÑ(?À×ARÑARÓSˆD�Oä Ÿk™k›mˆDŒOð 	�‰Õr%   NrZ   Úlabelsr'   c                 óÖ   —  | j                   |fi |¤Ž}|j                  }| j                  |«      }d}|�| j                  ||| j                  ¬«      }t        |||j                  ¬«      S )aŠ  
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
            `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        N)rÎ   Úpooled_logitsrY   )ÚlossÚlogitsr&   )r–   rÄ   rÍ   Úloss_functionrY   r   r&   )r"   rZ   rÎ   rF   ÚoutputsrÇ   rÒ   rÑ   s           r$   r3   z(ConvNextV2ForImageClassification.forwardN  sy   € ð =L¸D¿O¹OÈLÑ<cÐ\bÑ<cˆØ×-Ñ-ˆØ—‘ Ó/ˆàˆØÐØ×%Ñ%¨VÀ6ÐRV×R]ÑR]Ð%Ó^ˆDä3ØØØ!×/Ñ/ô
ð 	
r%   )NN)r4   r5   r6   Úaccepts_loss_kwargsr   r   r   r   r9   Ú
LongTensorr   r3   r:   r;   s   @r$   rÊ   rÊ   5  s^   ø„ ð  Ðôð Øà_cñ
Ø!×-Ñ-°Ñ4ð
ØEJ×EUÑEUÐX\ÑE\ð
à	-ò
ó ó ô
r%   rÊ   zT
    ConvNeXT V2 backbone, to be used with frameworks like DETR and MaskFormer.
    c            	       ón   ‡ — e Zd ZdZˆ fd„Zeeedej                  de
e   defd„«       «       «       Zˆ xZS )ÚConvNextV2BackboneFc                 óp  •— t         ‰| �  |«       t        |«      | _        t	        |«      | _        |j                  d   g|j                  z   | _        i }t        | j                  | j                  «      D ]  \  }}t        |d¬«      ||<   Œ t        j                  |«      | _        | j                  «        y )Nr   rC   )rA   )r   r   rM   r^   r¥   r¿   rT   Únum_featuresÚzipÚout_featuresÚchannelsr=   r   Ú
ModuleDictÚhidden_states_normsr±   )r"   rY   rß   r¶   rS   r#   s        €r$   r   zConvNextV2Backbone.__init__q  s©   ø€ Ü‰Ñ˜Ô ä.¨vÓ6ˆŒÜ(¨Ó0ˆŒØ#×0Ñ0°Ñ3Ð4°v×7JÑ7JÑJˆÔð !ÐÜ#& t×'8Ñ'8¸$¿-¹-Ó#Hò 	iÑˆE�<Ü)<¸\ÐWgÔ)hÐ Ò&ð	iä#%§=¡=Ð1DÓ#EˆÔ ð 	�‰Õr%   rZ   rF   r'   c                 ó8  — | j                  |«      } | j                  |fi |¤Ž}|j                  }g }t        | j                  |«      D ]:  \  }}|| j
                  v sŒ | j                  |   |«      }|j                  |«       Œ< t        t        |«      |¬«      S )aÃ  
        Examples:

        ```python
        >>> from transformers import AutoImageProcessor, AutoBackbone
        >>> import torch
        >>> from PIL import Image
        >>> import httpx
        >>> from io import BytesIO

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> processor = AutoImageProcessor.from_pretrained("facebook/convnextv2-tiny-1k-224")
        >>> model = AutoBackbone.from_pretrained("facebook/convnextv2-tiny-1k-224")

        >>> inputs = processor(image, return_tensors="pt")
        >>> outputs = model(**inputs)
        ```)Úfeature_mapsr&   )
r^   r¿   r&   rÛ   Ústage_namesrÜ   rß   r°   r	   Útuple)	r"   rZ   rF   rÅ   rÆ   r&   rá   r¶   Úhidden_states	            r$   r3   zConvNextV2Backbone.forward�  s¢   € ð8  Ÿ?™?¨<Ó8ÐØ:F¸$¿,¹,ÐGWÑ:bÐ[aÑ:bˆØ'×5Ñ5ˆàˆÜ#& t×'7Ñ'7¸Ó#Gò 	2ÑˆE�<Ø˜×)Ñ)Ò)Ø>˜t×7Ñ7¸Ñ>¸|ÓL�Ø×#Ñ# LÕ1ð	2ô
 ¬5°Ó+>ÈmÔ\Ð\r%   )r4   r5   r6   Úhas_attentionsr   r   r   r   r   rK   r   r   r	   r3   r:   r;   s   @r$   rØ   rØ   h  s^   ø„ ð €Nôð  Ø Øð#]à—l‘lð#]ð Ð+Ñ,ð#]ð 
ò	#]ó ó !ó ô#]r%   rØ   )rÊ   r½   r•   rØ   )0r7   r   r   Ú r   r›   Úactivationsr   Úbackbone_utilsr   r   Úmodeling_outputsr	   r
   r   r   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_convnextv2r   Ú
get_loggerr4   ÚloggerÚModuler   rÀ   r=   rM   r`   rt   r‡   r•   r¥   r½   rÊ   rØ   Ú__all__© r%   r$   ú<module>rõ      sS  ðñ  ã Ý å &Ý !ß H÷ó õ .Ý &ß @Ñ @ß IÝ 5Ý 6ð 
ˆ×	Ñ	˜HÓ	%€ô�B—I‘Iô ô$˜"Ÿ,™,ô ô6˜2Ÿ9™9ô ô2%˜Ÿ™ô %ô0(�b—i‘iô (ôX!�b—i‘iô !ðH ô% ó %ó ð%ô"%OÐ1ô %OðP ô!
Ð/ó !
ó ð!
ñH ðôô)
Ð'@ó )
óð)
ñX ðôô9]˜Ð(Aó 9]óð9]òx u�r%   