import{S as da,i as ua,s as ga,e as n,k as m,w as b,t as s,M as _a,c as a,d as o,m as h,a as r,x as w,h as i,b as l,N as va,G as t,g as p,y,q as $,o as N,B as S,v as ba,L as ha}from"../../chunks/vendor-hf-doc-builder.js";import{T as wa}from"../../chunks/Tip-hf-doc-builder.js";import{D as Bt}from"../../chunks/Docstring-hf-doc-builder.js";import{C as Xt}from"../../chunks/CodeBlock-hf-doc-builder.js";import{I as Ze}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{E as ma}from"../../chunks/ExampleCodeBlock-hf-doc-builder.js";function ya(H){let d,k,g,u,v;return u=new Xt({props:{code:`from transformers import UperNetConfig, UperNetForSemanticSegmentation

# Initializing a configuration
configuration = UperNetConfig()

# Initializing a model (with random weights) from the configuration
model = UperNetForSemanticSegmentation(configuration)

# Accessing the model configuration
configuration = model.config`,highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> UperNetConfig, UperNetForSemanticSegmentation

<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># Initializing a configuration</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>configuration = UperNetConfig()

<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># Initializing a model (with random weights) from the configuration</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>model = UperNetForSemanticSegmentation(configuration)

<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-comment"># Accessing the model configuration</span>
<span class="hljs-meta">&gt;&gt;&gt; </span>configuration = model.config`}}),{c(){d=n("p"),k=s("Examples:"),g=m(),b(u.$$.fragment)},l(f){d=a(f,"P",{});var _=r(d);k=i(_,"Examples:"),_.forEach(o),g=h(f),w(u.$$.fragment,f)},m(f,_){p(f,d,_),t(d,k),p(f,g,_),y(u,f,_),v=!0},p:ha,i(f){v||($(u.$$.fragment,f),v=!0)},o(f){N(u.$$.fragment,f),v=!1},d(f){f&&o(d),f&&o(g),S(u,f)}}}function $a(H){let d,k,g,u,v;return{c(){d=n("p"),k=s("Although the recipe for forward pass needs to be defined within this function, one should call the "),g=n("code"),u=s("Module"),v=s(`
instance afterwards instead of this since the former takes care of running the pre and post processing steps while
the latter silently ignores them.`)},l(f){d=a(f,"P",{});var _=r(d);k=i(_,"Although the recipe for forward pass needs to be defined within this function, one should call the "),g=a(_,"CODE",{});var W=r(g);u=i(W,"Module"),W.forEach(o),v=i(_,`
instance afterwards instead of this since the former takes care of running the pre and post processing steps while
the latter silently ignores them.`),_.forEach(o)},m(f,_){p(f,d,_),t(d,k),t(d,g),t(g,u),t(d,v)},d(f){f&&o(d)}}}function Na(H){let d,k,g,u,v;return u=new Xt({props:{code:`from transformers import AutoImageProcessor, UperNetForSemanticSegmentation
from PIL import Image
from huggingface_hub import hf_hub_download

image_processor = AutoImageProcessor.from_pretrained("openmmlab/upernet-convnext-tiny")
model = UperNetForSemanticSegmentation.from_pretrained("openmmlab/upernet-convnext-tiny")

filepath = hf_hub_download(
    repo_id="hf-internal-testing/fixtures_ade20k", filename="ADE_val_00000001.jpg", repo_type="dataset"
)
image = Image.open(filepath).convert("RGB")

inputs = image_processor(images=image, return_tensors="pt")

outputs = model(**inputs)

logits = outputs.logits  # shape (batch_size, num_labels, height, width)
list(logits.shape)`,highlighted:`<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoImageProcessor, UperNetForSemanticSegmentation
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> PIL <span class="hljs-keyword">import</span> Image
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> hf_hub_download

<span class="hljs-meta">&gt;&gt;&gt; </span>image_processor = AutoImageProcessor.from_pretrained(<span class="hljs-string">&quot;openmmlab/upernet-convnext-tiny&quot;</span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>model = UperNetForSemanticSegmentation.from_pretrained(<span class="hljs-string">&quot;openmmlab/upernet-convnext-tiny&quot;</span>)

<span class="hljs-meta">&gt;&gt;&gt; </span>filepath = hf_hub_download(
<span class="hljs-meta">... </span>    repo_id=<span class="hljs-string">&quot;hf-internal-testing/fixtures_ade20k&quot;</span>, filename=<span class="hljs-string">&quot;ADE_val_00000001.jpg&quot;</span>, repo_type=<span class="hljs-string">&quot;dataset&quot;</span>
<span class="hljs-meta">... </span>)
<span class="hljs-meta">&gt;&gt;&gt; </span>image = Image.<span class="hljs-built_in">open</span>(filepath).convert(<span class="hljs-string">&quot;RGB&quot;</span>)

<span class="hljs-meta">&gt;&gt;&gt; </span>inputs = image_processor(images=image, return_tensors=<span class="hljs-string">&quot;pt&quot;</span>)

<span class="hljs-meta">&gt;&gt;&gt; </span>outputs = model(**inputs)

<span class="hljs-meta">&gt;&gt;&gt; </span>logits = outputs.logits  <span class="hljs-comment"># shape (batch_size, num_labels, height, width)</span>
<span class="hljs-meta">&gt;&gt;&gt; </span><span class="hljs-built_in">list</span>(logits.shape)
[<span class="hljs-number">1</span>, <span class="hljs-number">150</span>, <span class="hljs-number">512</span>, <span class="hljs-number">512</span>]`}}),{c(){d=n("p"),k=s("Examples:"),g=m(),b(u.$$.fragment)},l(f){d=a(f,"P",{});var _=r(d);k=i(_,"Examples:"),_.forEach(o),g=h(f),w(u.$$.fragment,f)},m(f,_){p(f,d,_),t(d,k),p(f,g,_),y(u,f,_),v=!0},p:ha,i(f){v||($(u.$$.fragment,f),v=!0)},o(f){N(u.$$.fragment,f),v=!1},d(f){f&&o(d),f&&o(g),S(u,f)}}}function Sa(H){let d,k,g,u,v,f,_,W,Gt,dt,F,B,Ke,re,Jt,Qe,Yt,ut,x,Vt,se,Zt,Kt,Ue,Qt,eo,xe,to,oo,gt,Pe,no,_t,Ee,et,ao,vt,X,yn,bt,G,ro,Ce,so,io,wt,C,lo,ie,co,po,le,fo,mo,yt,q,J,tt,ce,ho,ot,uo,$t,je,go,Nt,j,pe,_o,fe,vo,bo,wo,T,Te,yo,$o,me,No,So,he,ko,Uo,xo,Ae,Po,Fe,Eo,St,qe,Co,kt,I,Y,nt,de,jo,at,To,Ut,Ie,Ao,xt,ue,Pt,V,Fo,ze,qo,Io,Et,ge,Ct,De,zo,jt,z,Z,rt,_e,Do,st,Oo,Tt,U,ve,Lo,D,Mo,Oe,Ro,Ho,be,Wo,Bo,Xo,O,Go,Le,Jo,Yo,Me,Vo,Zo,Ko,K,Qo,Q,we,en,L,tn,Re,on,nn,it,an,rn,At,M,ee,lt,ye,sn,ct,ln,Ft,E,$e,cn,pt,pn,fn,P,Ne,mn,R,hn,He,dn,un,ft,gn,_n,vn,te,bn,oe,qt;return f=new Ze({}),re=new Ze({}),ce=new Ze({}),de=new Ze({}),ue=new Xt({props:{code:`from transformers import SwinConfig, UperNetConfig, UperNetForSemanticSegmentation

backbone_config = SwinConfig(out_features=["stage1", "stage2", "stage3", "stage4"])

config = UperNetConfig(backbone_config=backbone_config)
model = UperNetForSemanticSegmentation(config)`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> SwinConfig, UperNetConfig, UperNetForSemanticSegmentation

backbone_config = SwinConfig(out_features=[<span class="hljs-string">&quot;stage1&quot;</span>, <span class="hljs-string">&quot;stage2&quot;</span>, <span class="hljs-string">&quot;stage3&quot;</span>, <span class="hljs-string">&quot;stage4&quot;</span>])

config = UperNetConfig(backbone_config=backbone_config)
model = UperNetForSemanticSegmentation(config)`}}),ge=new Xt({props:{code:`from transformers import ConvNextConfig, UperNetConfig, UperNetForSemanticSegmentation

backbone_config = ConvNextConfig(out_features=["stage1", "stage2", "stage3", "stage4"])

config = UperNetConfig(backbone_config=backbone_config)
model = UperNetForSemanticSegmentation(config)`,highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> ConvNextConfig, UperNetConfig, UperNetForSemanticSegmentation

backbone_config = ConvNextConfig(out_features=[<span class="hljs-string">&quot;stage1&quot;</span>, <span class="hljs-string">&quot;stage2&quot;</span>, <span class="hljs-string">&quot;stage3&quot;</span>, <span class="hljs-string">&quot;stage4&quot;</span>])

config = UperNetConfig(backbone_config=backbone_config)
model = UperNetForSemanticSegmentation(config)`}}),_e=new Ze({}),ve=new Bt({props:{name:"class transformers.UperNetConfig",anchor:"transformers.UperNetConfig",parameters:[{name:"backbone_config",val:" = None"},{name:"hidden_size",val:" = 512"},{name:"initializer_range",val:" = 0.02"},{name:"pool_scales",val:" = [1, 2, 3, 6]"},{name:"use_auxiliary_head",val:" = True"},{name:"auxiliary_loss_weight",val:" = 0.4"},{name:"auxiliary_in_channels",val:" = 384"},{name:"auxiliary_channels",val:" = 256"},{name:"auxiliary_num_convs",val:" = 1"},{name:"auxiliary_concat_input",val:" = False"},{name:"loss_ignore_index",val:" = 255"},{name:"**kwargs",val:""}],parametersDescription:[{anchor:"transformers.UperNetConfig.backbone_config",description:`<strong>backbone_config</strong> (<code>PretrainedConfig</code> or <code>dict</code>, <em>optional</em>, defaults to <code>ResNetConfig()</code>) &#x2014;
The configuration of the backbone model.`,name:"backbone_config"},{anchor:"transformers.UperNetConfig.hidden_size",description:`<strong>hidden_size</strong> (<code>int</code>, <em>optional</em>, defaults to 512) &#x2014;
The number of hidden units in the convolutional layers.`,name:"hidden_size"},{anchor:"transformers.UperNetConfig.initializer_range",description:`<strong>initializer_range</strong> (<code>float</code>, <em>optional</em>, defaults to 0.02) &#x2014;
The standard deviation of the truncated_normal_initializer for initializing all weight matrices.`,name:"initializer_range"},{anchor:"transformers.UperNetConfig.pool_scales",description:`<strong>pool_scales</strong> (<code>Tuple[int]</code>, <em>optional</em>, defaults to <code>[1, 2, 3, 6]</code>) &#x2014;
Pooling scales used in Pooling Pyramid Module applied on the last feature map.`,name:"pool_scales"},{anchor:"transformers.UperNetConfig.use_auxiliary_head",description:`<strong>use_auxiliary_head</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>True</code>) &#x2014;
Whether to use an auxiliary head during training.`,name:"use_auxiliary_head"},{anchor:"transformers.UperNetConfig.auxiliary_loss_weight",description:`<strong>auxiliary_loss_weight</strong> (<code>float</code>, <em>optional</em>, defaults to 0.4) &#x2014;
Weight of the cross-entropy loss of the auxiliary head.`,name:"auxiliary_loss_weight"},{anchor:"transformers.UperNetConfig.auxiliary_channels",description:`<strong>auxiliary_channels</strong> (<code>int</code>, <em>optional</em>, defaults to 256) &#x2014;
Number of channels to use in the auxiliary head.`,name:"auxiliary_channels"},{anchor:"transformers.UperNetConfig.auxiliary_num_convs",description:`<strong>auxiliary_num_convs</strong> (<code>int</code>, <em>optional</em>, defaults to 1) &#x2014;
Number of convolutional layers to use in the auxiliary head.`,name:"auxiliary_num_convs"},{anchor:"transformers.UperNetConfig.auxiliary_concat_input",description:`<strong>auxiliary_concat_input</strong> (<code>bool</code>, <em>optional</em>, defaults to <code>False</code>) &#x2014;
Whether to concatenate the output of the auxiliary head with the input before the classification layer.`,name:"auxiliary_concat_input"},{anchor:"transformers.UperNetConfig.loss_ignore_index",description:`<strong>loss_ignore_index</strong> (<code>int</code>, <em>optional</em>, defaults to 255) &#x2014;
The index that is ignored by the loss function.`,name:"loss_ignore_index"}],source:"https://github.com/huggingface/transformers/blob/v4.27.1/src/transformers/models/upernet/configuration_upernet.py#L27"}}),K=new ma({props:{anchor:"transformers.UperNetConfig.example",$$slots:{default:[ya]},$$scope:{ctx:H}}}),we=new Bt({props:{name:"to_dict",anchor:"transformers.UperNetConfig.to_dict",parameters:[],source:"https://github.com/huggingface/transformers/blob/v4.27.1/src/transformers/models/upernet/configuration_upernet.py#L112"}}),ye=new Ze({}),$e=new Bt({props:{name:"class transformers.UperNetForSemanticSegmentation",anchor:"transformers.UperNetForSemanticSegmentation",parameters:[{name:"config",val:""}],parametersDescription:[{anchor:"transformers.UperNetForSemanticSegmentation.This",description:"<strong>This</strong> model is a PyTorch [torch.nn.Module](https &#x2014;//pytorch.org/docs/stable/nn.html#torch.nn.Module) sub-class. Use",name:"This"},{anchor:"transformers.UperNetForSemanticSegmentation.it",description:`<strong>it</strong> as a regular PyTorch Module and refer to the PyTorch documentation for all matter related to general usage and &#x2014;
behavior. &#x2014;
config (<a href="/docs/transformers/v4.27.1/en/model_doc/upernet#transformers.UperNetConfig">UperNetConfig</a>): Model configuration class with all the parameters of the model.
Initializing with a config file does not load the weights associated with the model, only the
configuration. Check out the <a href="/docs/transformers/v4.27.1/en/main_classes/model#transformers.PreTrainedModel.from_pretrained">from_pretrained()</a> method to load the model weights.`,name:"it"}],source:"https://github.com/huggingface/transformers/blob/v4.27.1/src/transformers/models/upernet/modeling_upernet.py#L350"}}),Ne=new Bt({props:{name:"forward",anchor:"transformers.UperNetForSemanticSegmentation.forward",parameters:[{name:"pixel_values",val:": typing.Optional[torch.Tensor] = None"},{name:"output_attentions",val:": typing.Optional[bool] = None"},{name:"output_hidden_states",val:": typing.Optional[bool] = None"},{name:"labels",val:": typing.Optional[torch.Tensor] = None"},{name:"return_dict",val:": typing.Optional[bool] = None"}],parametersDescription:[{anchor:"transformers.UperNetForSemanticSegmentation.forward.pixel_values",description:`<strong>pixel_values</strong> (<code>torch.FloatTensor</code> of shape <code>(batch_size, num_channels, height, width)</code>) &#x2014;
Pixel values. Padding will be ignored by default should you provide it. Pixel values can be obtained using
<a href="/docs/transformers/v4.27.1/en/model_doc/auto#transformers.AutoImageProcessor">AutoImageProcessor</a>. See <a href="/docs/transformers/v4.27.1/en/model_doc/segformer#transformers.SegformerFeatureExtractor.__call__">SegformerImageProcessor.<strong>call</strong>()</a> for details.`,name:"pixel_values"},{anchor:"transformers.UperNetForSemanticSegmentation.forward.output_attentions",description:`<strong>output_attentions</strong> (<code>bool</code>, <em>optional</em>) &#x2014;
Whether or not to return the attentions tensors of all attention layers in case the backbone has them. See
<code>attentions</code> under returned tensors for more detail.`,name:"output_attentions"},{anchor:"transformers.UperNetForSemanticSegmentation.forward.output_hidden_states",description:`<strong>output_hidden_states</strong> (<code>bool</code>, <em>optional</em>) &#x2014;
Whether or not to return the hidden states of all layers of the backbone. See <code>hidden_states</code> under
returned tensors for more detail.`,name:"output_hidden_states"},{anchor:"transformers.UperNetForSemanticSegmentation.forward.return_dict",description:`<strong>return_dict</strong> (<code>bool</code>, <em>optional</em>) &#x2014;
Whether or not to return a <a href="/docs/transformers/v4.27.1/en/main_classes/output#transformers.utils.ModelOutput">ModelOutput</a> instead of a plain tuple.`,name:"return_dict"},{anchor:"transformers.UperNetForSemanticSegmentation.forward.labels",description:`<strong>labels</strong> (<code>torch.LongTensor</code> of shape <code>(batch_size, height, width)</code>, <em>optional</em>) &#x2014;
Ground truth semantic segmentation maps for computing the loss. Indices should be in <code>[0, ..., config.num_labels - 1]</code>. If <code>config.num_labels &gt; 1</code>, a classification loss is computed (Cross-Entropy).`,name:"labels"}],source:"https://github.com/huggingface/transformers/blob/v4.27.1/src/transformers/models/upernet/modeling_upernet.py#L363",returnDescription:`
<p>A <a
  href="/docs/transformers/v4.27.1/en/main_classes/output#transformers.modeling_outputs.SemanticSegmenterOutput"
>transformers.modeling_outputs.SemanticSegmenterOutput</a> or a tuple of
<code>torch.FloatTensor</code> (if <code>return_dict=False</code> is passed or when <code>config.return_dict=False</code>) comprising various
elements depending on the configuration (<a
  href="/docs/transformers/v4.27.1/en/model_doc/upernet#transformers.UperNetConfig"
>UperNetConfig</a>) and inputs.</p>
<ul>
<li>
<p><strong>loss</strong> (<code>torch.FloatTensor</code> of shape <code>(1,)</code>, <em>optional</em>, returned when <code>labels</code> is provided) \u2014 Classification (or regression if config.num_labels==1) loss.</p>
</li>
<li>
<p><strong>logits</strong> (<code>torch.FloatTensor</code> of shape <code>(batch_size, config.num_labels, logits_height, logits_width)</code>) \u2014 Classification scores for each pixel.</p>
<Tip warning={true}>
<p>The logits returned do not necessarily have the same size as the <code>pixel_values</code> passed as inputs. This is
to avoid doing two interpolations and lose some quality when a user needs to resize the logits to the
original image size as post-processing. You should always check your logits shape and resize as needed.</p>
</Tip>
</li>
<li>
<p><strong>hidden_states</strong> (<code>tuple(torch.FloatTensor)</code>, <em>optional</em>, returned when <code>output_hidden_states=True</code> is passed or when <code>config.output_hidden_states=True</code>) \u2014 Tuple of <code>torch.FloatTensor</code> (one for the output of the embeddings, if the model has an embedding layer, +
one for the output of each layer) of shape <code>(batch_size, patch_size, hidden_size)</code>.</p>
<p>Hidden-states of the model at the output of each layer plus the optional initial embedding outputs.</p>
</li>
<li>
<p><strong>attentions</strong> (<code>tuple(torch.FloatTensor)</code>, <em>optional</em>, returned when <code>output_attentions=True</code> is passed or when <code>config.output_attentions=True</code>) \u2014 Tuple of <code>torch.FloatTensor</code> (one for each layer) of shape <code>(batch_size, num_heads, patch_size, sequence_length)</code>.</p>
<p>Attentions weights after the attention softmax, used to compute the weighted average in the self-attention
heads.</p>
</li>
</ul>
`,returnType:`
<p><a
  href="/docs/transformers/v4.27.1/en/main_classes/output#transformers.modeling_outputs.SemanticSegmenterOutput"
>transformers.modeling_outputs.SemanticSegmenterOutput</a> or <code>tuple(torch.FloatTensor)</code></p>
`}}),te=new wa({props:{$$slots:{default:[$a]},$$scope:{ctx:H}}}),oe=new ma({props:{anchor:"transformers.UperNetForSemanticSegmentation.forward.example",$$slots:{default:[Na]},$$scope:{ctx:H}}}),{c(){d=n("meta"),k=m(),g=n("h1"),u=n("a"),v=n("span"),b(f.$$.fragment),_=m(),W=n("span"),Gt=s("UPerNet"),dt=m(),F=n("h2"),B=n("a"),Ke=n("span"),b(re.$$.fragment),Jt=m(),Qe=n("span"),Yt=s("Overview"),ut=m(),x=n("p"),Vt=s("The UPerNet model was proposed in "),se=n("a"),Zt=s("Unified Perceptual Parsing for Scene Understanding"),Kt=s(`
by Tete Xiao, Yingcheng Liu, Bolei Zhou, Yuning Jiang, Jian Sun. UPerNet is a general framework to effectively segment
a wide range of concepts from images, leveraging any vision backbone like `),Ue=n("a"),Qt=s("ConvNeXt"),eo=s(" or "),xe=n("a"),to=s("Swin"),oo=s("."),gt=m(),Pe=n("p"),no=s("The abstract from the paper is the following:"),_t=m(),Ee=n("p"),et=n("em"),ao=s("Humans recognize the visual world at multiple levels: we effortlessly categorize scenes and detect objects inside, while also identifying the textures and surfaces of the objects along with their different compositional parts. In this paper, we study a new task called Unified Perceptual Parsing, which requires the machine vision systems to recognize as many visual concepts as possible from a given image. A multi-task framework called UPerNet and a training strategy are developed to learn from heterogeneous image annotations. We benchmark our framework on Unified Perceptual Parsing and show that it is able to effectively segment a wide range of concepts from images. The trained networks are further applied to discover visual knowledge in natural scenes."),vt=m(),X=n("img"),bt=m(),G=n("small"),ro=s("UPerNet framework. Taken from the "),Ce=n("a"),so=s("original paper"),io=s("."),wt=m(),C=n("p"),lo=s("This model was contributed by "),ie=n("a"),co=s("nielsr"),po=s(". The original code is based on OpenMMLab\u2019s mmsegmentation "),le=n("a"),fo=s("here"),mo=s("."),yt=m(),q=n("h2"),J=n("a"),tt=n("span"),b(ce.$$.fragment),ho=m(),ot=n("span"),uo=s("Resources"),$t=m(),je=n("p"),go=s("A list of official Hugging Face and community (indicated by \u{1F30E}) resources to help you get started with UPerNet."),Nt=m(),j=n("ul"),pe=n("li"),_o=s("Demo notebooks for UPerNet can be found "),fe=n("a"),vo=s("here"),bo=s("."),wo=m(),T=n("li"),Te=n("a"),yo=s("UperNetForSemanticSegmentation"),$o=s(" is supported by this "),me=n("a"),No=s("example script"),So=s(" and "),he=n("a"),ko=s("notebook"),Uo=s("."),xo=m(),Ae=n("li"),Po=s("See also: "),Fe=n("a"),Eo=s("Semantic segmentation task guide"),St=m(),qe=n("p"),Co=s("If you\u2019re interested in submitting a resource to be included here, please feel free to open a Pull Request and we\u2019ll review it! The resource should ideally demonstrate something new instead of duplicating an existing resource."),kt=m(),I=n("h2"),Y=n("a"),nt=n("span"),b(de.$$.fragment),jo=m(),at=n("span"),To=s("Usage"),Ut=m(),Ie=n("p"),Ao=s("UPerNet is a general framework for semantic segmentation. It can be used with any vision backbone, like so:"),xt=m(),b(ue.$$.fragment),Pt=m(),V=n("p"),Fo=s("To use another vision backbone, like "),ze=n("a"),qo=s("ConvNeXt"),Io=s(", simply instantiate the model with the appropriate backbone:"),Et=m(),b(ge.$$.fragment),Ct=m(),De=n("p"),zo=s("Note that this will randomly initialize all the weights of the model."),jt=m(),z=n("h2"),Z=n("a"),rt=n("span"),b(_e.$$.fragment),Do=m(),st=n("span"),Oo=s("UperNetConfig"),Tt=m(),U=n("div"),b(ve.$$.fragment),Lo=m(),D=n("p"),Mo=s("This is the configuration class to store the configuration of an "),Oe=n("a"),Ro=s("UperNetForSemanticSegmentation"),Ho=s(`. It is used to
instantiate an UperNet model according to the specified arguments, defining the model architecture. Instantiating a
configuration with the defaults will yield a similar configuration to that of the UperNet
`),be=n("a"),Wo=s("openmmlab/upernet-convnext-tiny"),Bo=s(" architecture."),Xo=m(),O=n("p"),Go=s("Configuration objects inherit from "),Le=n("a"),Jo=s("PretrainedConfig"),Yo=s(` and can be used to control the model outputs. Read the
documentation from `),Me=n("a"),Vo=s("PretrainedConfig"),Zo=s(" for more information."),Ko=m(),b(K.$$.fragment),Qo=m(),Q=n("div"),b(we.$$.fragment),en=m(),L=n("p"),tn=s("Serializes this instance to a Python dictionary. Override the default "),Re=n("a"),on=s("to_dict()"),nn=s(`. Returns:
`),it=n("code"),an=s("Dict[str, any]"),rn=s(": Dictionary of all the attributes that make up this configuration instance,"),At=m(),M=n("h2"),ee=n("a"),lt=n("span"),b(ye.$$.fragment),sn=m(),ct=n("span"),ln=s("UperNetForSemanticSegmentation"),Ft=m(),E=n("div"),b($e.$$.fragment),cn=m(),pt=n("p"),pn=s("UperNet framework leveraging any vision backbone e.g. for ADE20k, CityScapes."),fn=m(),P=n("div"),b(Ne.$$.fragment),mn=m(),R=n("p"),hn=s("The "),He=n("a"),dn=s("UperNetForSemanticSegmentation"),un=s(" forward method, overrides the "),ft=n("code"),gn=s("__call__"),_n=s(" special method."),vn=m(),b(te.$$.fragment),bn=m(),b(oe.$$.fragment),this.h()},l(e){const c=_a('[data-svelte="svelte-1phssyn"]',document.head);d=a(c,"META",{name:!0,content:!0}),c.forEach(o),k=h(e),g=a(e,"H1",{class:!0});var Se=r(g);u=a(Se,"A",{id:!0,class:!0,href:!0});var mt=r(u);v=a(mt,"SPAN",{});var ht=r(v);w(f.$$.fragment,ht),ht.forEach(o),mt.forEach(o),_=h(Se),W=a(Se,"SPAN",{});var $n=r(W);Gt=i($n,"UPerNet"),$n.forEach(o),Se.forEach(o),dt=h(e),F=a(e,"H2",{class:!0});var It=r(F);B=a(It,"A",{id:!0,class:!0,href:!0});var Nn=r(B);Ke=a(Nn,"SPAN",{});var Sn=r(Ke);w(re.$$.fragment,Sn),Sn.forEach(o),Nn.forEach(o),Jt=h(It),Qe=a(It,"SPAN",{});var kn=r(Qe);Yt=i(kn,"Overview"),kn.forEach(o),It.forEach(o),ut=h(e),x=a(e,"P",{});var ne=r(x);Vt=i(ne,"The UPerNet model was proposed in "),se=a(ne,"A",{href:!0,rel:!0});var Un=r(se);Zt=i(Un,"Unified Perceptual Parsing for Scene Understanding"),Un.forEach(o),Kt=i(ne,`
by Tete Xiao, Yingcheng Liu, Bolei Zhou, Yuning Jiang, Jian Sun. UPerNet is a general framework to effectively segment
a wide range of concepts from images, leveraging any vision backbone like `),Ue=a(ne,"A",{href:!0});var xn=r(Ue);Qt=i(xn,"ConvNeXt"),xn.forEach(o),eo=i(ne," or "),xe=a(ne,"A",{href:!0});var Pn=r(xe);to=i(Pn,"Swin"),Pn.forEach(o),oo=i(ne,"."),ne.forEach(o),gt=h(e),Pe=a(e,"P",{});var En=r(Pe);no=i(En,"The abstract from the paper is the following:"),En.forEach(o),_t=h(e),Ee=a(e,"P",{});var Cn=r(Ee);et=a(Cn,"EM",{});var jn=r(et);ao=i(jn,"Humans recognize the visual world at multiple levels: we effortlessly categorize scenes and detect objects inside, while also identifying the textures and surfaces of the objects along with their different compositional parts. In this paper, we study a new task called Unified Perceptual Parsing, which requires the machine vision systems to recognize as many visual concepts as possible from a given image. A multi-task framework called UPerNet and a training strategy are developed to learn from heterogeneous image annotations. We benchmark our framework on Unified Perceptual Parsing and show that it is able to effectively segment a wide range of concepts from images. The trained networks are further applied to discover visual knowledge in natural scenes."),jn.forEach(o),Cn.forEach(o),vt=h(e),X=a(e,"IMG",{src:!0,alt:!0,width:!0}),bt=h(e),G=a(e,"SMALL",{});var zt=r(G);ro=i(zt,"UPerNet framework. Taken from the "),Ce=a(zt,"A",{href:!0});var Tn=r(Ce);so=i(Tn,"original paper"),Tn.forEach(o),io=i(zt,"."),zt.forEach(o),wt=h(e),C=a(e,"P",{});var We=r(C);lo=i(We,"This model was contributed by "),ie=a(We,"A",{href:!0,rel:!0});var An=r(ie);co=i(An,"nielsr"),An.forEach(o),po=i(We,". The original code is based on OpenMMLab\u2019s mmsegmentation "),le=a(We,"A",{href:!0,rel:!0});var Fn=r(le);fo=i(Fn,"here"),Fn.forEach(o),mo=i(We,"."),We.forEach(o),yt=h(e),q=a(e,"H2",{class:!0});var Dt=r(q);J=a(Dt,"A",{id:!0,class:!0,href:!0});var qn=r(J);tt=a(qn,"SPAN",{});var In=r(tt);w(ce.$$.fragment,In),In.forEach(o),qn.forEach(o),ho=h(Dt),ot=a(Dt,"SPAN",{});var zn=r(ot);uo=i(zn,"Resources"),zn.forEach(o),Dt.forEach(o),$t=h(e),je=a(e,"P",{});var Dn=r(je);go=i(Dn,"A list of official Hugging Face and community (indicated by \u{1F30E}) resources to help you get started with UPerNet."),Dn.forEach(o),Nt=h(e),j=a(e,"UL",{});var Be=r(j);pe=a(Be,"LI",{});var Ot=r(pe);_o=i(Ot,"Demo notebooks for UPerNet can be found "),fe=a(Ot,"A",{href:!0,rel:!0});var On=r(fe);vo=i(On,"here"),On.forEach(o),bo=i(Ot,"."),Ot.forEach(o),wo=h(Be),T=a(Be,"LI",{});var ke=r(T);Te=a(ke,"A",{href:!0});var Ln=r(Te);yo=i(Ln,"UperNetForSemanticSegmentation"),Ln.forEach(o),$o=i(ke," is supported by this "),me=a(ke,"A",{href:!0,rel:!0});var Mn=r(me);No=i(Mn,"example script"),Mn.forEach(o),So=i(ke," and "),he=a(ke,"A",{href:!0,rel:!0});var Rn=r(he);ko=i(Rn,"notebook"),Rn.forEach(o),Uo=i(ke,"."),ke.forEach(o),xo=h(Be),Ae=a(Be,"LI",{});var wn=r(Ae);Po=i(wn,"See also: "),Fe=a(wn,"A",{href:!0});var Hn=r(Fe);Eo=i(Hn,"Semantic segmentation task guide"),Hn.forEach(o),wn.forEach(o),Be.forEach(o),St=h(e),qe=a(e,"P",{});var Wn=r(qe);Co=i(Wn,"If you\u2019re interested in submitting a resource to be included here, please feel free to open a Pull Request and we\u2019ll review it! The resource should ideally demonstrate something new instead of duplicating an existing resource."),Wn.forEach(o),kt=h(e),I=a(e,"H2",{class:!0});var Lt=r(I);Y=a(Lt,"A",{id:!0,class:!0,href:!0});var Bn=r(Y);nt=a(Bn,"SPAN",{});var Xn=r(nt);w(de.$$.fragment,Xn),Xn.forEach(o),Bn.forEach(o),jo=h(Lt),at=a(Lt,"SPAN",{});var Gn=r(at);To=i(Gn,"Usage"),Gn.forEach(o),Lt.forEach(o),Ut=h(e),Ie=a(e,"P",{});var Jn=r(Ie);Ao=i(Jn,"UPerNet is a general framework for semantic segmentation. It can be used with any vision backbone, like so:"),Jn.forEach(o),xt=h(e),w(ue.$$.fragment,e),Pt=h(e),V=a(e,"P",{});var Mt=r(V);Fo=i(Mt,"To use another vision backbone, like "),ze=a(Mt,"A",{href:!0});var Yn=r(ze);qo=i(Yn,"ConvNeXt"),Yn.forEach(o),Io=i(Mt,", simply instantiate the model with the appropriate backbone:"),Mt.forEach(o),Et=h(e),w(ge.$$.fragment,e),Ct=h(e),De=a(e,"P",{});var Vn=r(De);zo=i(Vn,"Note that this will randomly initialize all the weights of the model."),Vn.forEach(o),jt=h(e),z=a(e,"H2",{class:!0});var Rt=r(z);Z=a(Rt,"A",{id:!0,class:!0,href:!0});var Zn=r(Z);rt=a(Zn,"SPAN",{});var Kn=r(rt);w(_e.$$.fragment,Kn),Kn.forEach(o),Zn.forEach(o),Do=h(Rt),st=a(Rt,"SPAN",{});var Qn=r(st);Oo=i(Qn,"UperNetConfig"),Qn.forEach(o),Rt.forEach(o),Tt=h(e),U=a(e,"DIV",{class:!0});var A=r(U);w(ve.$$.fragment,A),Lo=h(A),D=a(A,"P",{});var Xe=r(D);Mo=i(Xe,"This is the configuration class to store the configuration of an "),Oe=a(Xe,"A",{href:!0});var ea=r(Oe);Ro=i(ea,"UperNetForSemanticSegmentation"),ea.forEach(o),Ho=i(Xe,`. It is used to
instantiate an UperNet model according to the specified arguments, defining the model architecture. Instantiating a
configuration with the defaults will yield a similar configuration to that of the UperNet
`),be=a(Xe,"A",{href:!0,rel:!0});var ta=r(be);Wo=i(ta,"openmmlab/upernet-convnext-tiny"),ta.forEach(o),Bo=i(Xe," architecture."),Xe.forEach(o),Xo=h(A),O=a(A,"P",{});var Ge=r(O);Go=i(Ge,"Configuration objects inherit from "),Le=a(Ge,"A",{href:!0});var oa=r(Le);Jo=i(oa,"PretrainedConfig"),oa.forEach(o),Yo=i(Ge,` and can be used to control the model outputs. Read the
documentation from `),Me=a(Ge,"A",{href:!0});var na=r(Me);Vo=i(na,"PretrainedConfig"),na.forEach(o),Zo=i(Ge," for more information."),Ge.forEach(o),Ko=h(A),w(K.$$.fragment,A),Qo=h(A),Q=a(A,"DIV",{class:!0});var Ht=r(Q);w(we.$$.fragment,Ht),en=h(Ht),L=a(Ht,"P",{});var Je=r(L);tn=i(Je,"Serializes this instance to a Python dictionary. Override the default "),Re=a(Je,"A",{href:!0});var aa=r(Re);on=i(aa,"to_dict()"),aa.forEach(o),nn=i(Je,`. Returns:
`),it=a(Je,"CODE",{});var ra=r(it);an=i(ra,"Dict[str, any]"),ra.forEach(o),rn=i(Je,": Dictionary of all the attributes that make up this configuration instance,"),Je.forEach(o),Ht.forEach(o),A.forEach(o),At=h(e),M=a(e,"H2",{class:!0});var Wt=r(M);ee=a(Wt,"A",{id:!0,class:!0,href:!0});var sa=r(ee);lt=a(sa,"SPAN",{});var ia=r(lt);w(ye.$$.fragment,ia),ia.forEach(o),sa.forEach(o),sn=h(Wt),ct=a(Wt,"SPAN",{});var la=r(ct);ln=i(la,"UperNetForSemanticSegmentation"),la.forEach(o),Wt.forEach(o),Ft=h(e),E=a(e,"DIV",{class:!0});var Ye=r(E);w($e.$$.fragment,Ye),cn=h(Ye),pt=a(Ye,"P",{});var ca=r(pt);pn=i(ca,"UperNet framework leveraging any vision backbone e.g. for ADE20k, CityScapes."),ca.forEach(o),fn=h(Ye),P=a(Ye,"DIV",{class:!0});var ae=r(P);w(Ne.$$.fragment,ae),mn=h(ae),R=a(ae,"P",{});var Ve=r(R);hn=i(Ve,"The "),He=a(Ve,"A",{href:!0});var pa=r(He);dn=i(pa,"UperNetForSemanticSegmentation"),pa.forEach(o),un=i(Ve," forward method, overrides the "),ft=a(Ve,"CODE",{});var fa=r(ft);gn=i(fa,"__call__"),fa.forEach(o),_n=i(Ve," special method."),Ve.forEach(o),vn=h(ae),w(te.$$.fragment,ae),bn=h(ae),w(oe.$$.fragment,ae),ae.forEach(o),Ye.forEach(o),this.h()},h(){l(d,"name","hf:doc:metadata"),l(d,"content",JSON.stringify(ka)),l(u,"id","upernet"),l(u,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),l(u,"href","#upernet"),l(g,"class","relative group"),l(B,"id","overview"),l(B,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),l(B,"href","#overview"),l(F,"class","relative group"),l(se,"href","https://arxiv.org/abs/1807.10221"),l(se,"rel","nofollow"),l(Ue,"href","convnext"),l(xe,"href","swin"),va(X.src,yn="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/upernet_architecture.jpg")||l(X,"src",yn),l(X,"alt","drawing"),l(X,"width","600"),l(Ce,"href","https://arxiv.org/abs/1807.10221"),l(ie,"href","https://huggingface.co/nielsr"),l(ie,"rel","nofollow"),l(le,"href","https://github.com/open-mmlab/mmsegmentation/blob/master/mmseg/models/decode_heads/uper_head.py"),l(le,"rel","nofollow"),l(J,"id","resources"),l(J,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),l(J,"href","#resources"),l(q,"class","relative group"),l(fe,"href","https://github.com/NielsRogge/Transformers-Tutorials/tree/master/UPerNet"),l(fe,"rel","nofollow"),l(Te,"href","/docs/transformers/v4.27.1/en/model_doc/upernet#transformers.UperNetForSemanticSegmentation"),l(me,"href","https://github.com/huggingface/transformers/tree/main/examples/pytorch/semantic-segmentation"),l(me,"rel","nofollow"),l(he,"href","https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/semantic_segmentation.ipynb"),l(he,"rel","nofollow"),l(Fe,"href","./tasks/semantic_segmentation"),l(Y,"id","usage"),l(Y,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),l(Y,"href","#usage"),l(I,"class","relative group"),l(ze,"href","convnext"),l(Z,"id","transformers.UperNetConfig"),l(Z,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),l(Z,"href","#transformers.UperNetConfig"),l(z,"class","relative group"),l(Oe,"href","/docs/transformers/v4.27.1/en/model_doc/upernet#transformers.UperNetForSemanticSegmentation"),l(be,"href","https://huggingface.co/openmmlab/upernet-convnext-tiny"),l(be,"rel","nofollow"),l(Le,"href","/docs/transformers/v4.27.1/en/main_classes/configuration#transformers.PretrainedConfig"),l(Me,"href","/docs/transformers/v4.27.1/en/main_classes/configuration#transformers.PretrainedConfig"),l(Re,"href","/docs/transformers/v4.27.1/en/main_classes/configuration#transformers.PretrainedConfig.to_dict"),l(Q,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),l(U,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),l(ee,"id","transformers.UperNetForSemanticSegmentation"),l(ee,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),l(ee,"href","#transformers.UperNetForSemanticSegmentation"),l(M,"class","relative group"),l(He,"href","/docs/transformers/v4.27.1/en/model_doc/upernet#transformers.UperNetForSemanticSegmentation"),l(P,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8"),l(E,"class","docstring border-l-2 border-t-2 pl-4 pt-3.5 border-gray-100 rounded-tl-xl mb-6 mt-8")},m(e,c){t(document.head,d),p(e,k,c),p(e,g,c),t(g,u),t(u,v),y(f,v,null),t(g,_),t(g,W),t(W,Gt),p(e,dt,c),p(e,F,c),t(F,B),t(B,Ke),y(re,Ke,null),t(F,Jt),t(F,Qe),t(Qe,Yt),p(e,ut,c),p(e,x,c),t(x,Vt),t(x,se),t(se,Zt),t(x,Kt),t(x,Ue),t(Ue,Qt),t(x,eo),t(x,xe),t(xe,to),t(x,oo),p(e,gt,c),p(e,Pe,c),t(Pe,no),p(e,_t,c),p(e,Ee,c),t(Ee,et),t(et,ao),p(e,vt,c),p(e,X,c),p(e,bt,c),p(e,G,c),t(G,ro),t(G,Ce),t(Ce,so),t(G,io),p(e,wt,c),p(e,C,c),t(C,lo),t(C,ie),t(ie,co),t(C,po),t(C,le),t(le,fo),t(C,mo),p(e,yt,c),p(e,q,c),t(q,J),t(J,tt),y(ce,tt,null),t(q,ho),t(q,ot),t(ot,uo),p(e,$t,c),p(e,je,c),t(je,go),p(e,Nt,c),p(e,j,c),t(j,pe),t(pe,_o),t(pe,fe),t(fe,vo),t(pe,bo),t(j,wo),t(j,T),t(T,Te),t(Te,yo),t(T,$o),t(T,me),t(me,No),t(T,So),t(T,he),t(he,ko),t(T,Uo),t(j,xo),t(j,Ae),t(Ae,Po),t(Ae,Fe),t(Fe,Eo),p(e,St,c),p(e,qe,c),t(qe,Co),p(e,kt,c),p(e,I,c),t(I,Y),t(Y,nt),y(de,nt,null),t(I,jo),t(I,at),t(at,To),p(e,Ut,c),p(e,Ie,c),t(Ie,Ao),p(e,xt,c),y(ue,e,c),p(e,Pt,c),p(e,V,c),t(V,Fo),t(V,ze),t(ze,qo),t(V,Io),p(e,Et,c),y(ge,e,c),p(e,Ct,c),p(e,De,c),t(De,zo),p(e,jt,c),p(e,z,c),t(z,Z),t(Z,rt),y(_e,rt,null),t(z,Do),t(z,st),t(st,Oo),p(e,Tt,c),p(e,U,c),y(ve,U,null),t(U,Lo),t(U,D),t(D,Mo),t(D,Oe),t(Oe,Ro),t(D,Ho),t(D,be),t(be,Wo),t(D,Bo),t(U,Xo),t(U,O),t(O,Go),t(O,Le),t(Le,Jo),t(O,Yo),t(O,Me),t(Me,Vo),t(O,Zo),t(U,Ko),y(K,U,null),t(U,Qo),t(U,Q),y(we,Q,null),t(Q,en),t(Q,L),t(L,tn),t(L,Re),t(Re,on),t(L,nn),t(L,it),t(it,an),t(L,rn),p(e,At,c),p(e,M,c),t(M,ee),t(ee,lt),y(ye,lt,null),t(M,sn),t(M,ct),t(ct,ln),p(e,Ft,c),p(e,E,c),y($e,E,null),t(E,cn),t(E,pt),t(pt,pn),t(E,fn),t(E,P),y(Ne,P,null),t(P,mn),t(P,R),t(R,hn),t(R,He),t(He,dn),t(R,un),t(R,ft),t(ft,gn),t(R,_n),t(P,vn),y(te,P,null),t(P,bn),y(oe,P,null),qt=!0},p(e,[c]){const Se={};c&2&&(Se.$$scope={dirty:c,ctx:e}),K.$set(Se);const mt={};c&2&&(mt.$$scope={dirty:c,ctx:e}),te.$set(mt);const ht={};c&2&&(ht.$$scope={dirty:c,ctx:e}),oe.$set(ht)},i(e){qt||($(f.$$.fragment,e),$(re.$$.fragment,e),$(ce.$$.fragment,e),$(de.$$.fragment,e),$(ue.$$.fragment,e),$(ge.$$.fragment,e),$(_e.$$.fragment,e),$(ve.$$.fragment,e),$(K.$$.fragment,e),$(we.$$.fragment,e),$(ye.$$.fragment,e),$($e.$$.fragment,e),$(Ne.$$.fragment,e),$(te.$$.fragment,e),$(oe.$$.fragment,e),qt=!0)},o(e){N(f.$$.fragment,e),N(re.$$.fragment,e),N(ce.$$.fragment,e),N(de.$$.fragment,e),N(ue.$$.fragment,e),N(ge.$$.fragment,e),N(_e.$$.fragment,e),N(ve.$$.fragment,e),N(K.$$.fragment,e),N(we.$$.fragment,e),N(ye.$$.fragment,e),N($e.$$.fragment,e),N(Ne.$$.fragment,e),N(te.$$.fragment,e),N(oe.$$.fragment,e),qt=!1},d(e){o(d),e&&o(k),e&&o(g),S(f),e&&o(dt),e&&o(F),S(re),e&&o(ut),e&&o(x),e&&o(gt),e&&o(Pe),e&&o(_t),e&&o(Ee),e&&o(vt),e&&o(X),e&&o(bt),e&&o(G),e&&o(wt),e&&o(C),e&&o(yt),e&&o(q),S(ce),e&&o($t),e&&o(je),e&&o(Nt),e&&o(j),e&&o(St),e&&o(qe),e&&o(kt),e&&o(I),S(de),e&&o(Ut),e&&o(Ie),e&&o(xt),S(ue,e),e&&o(Pt),e&&o(V),e&&o(Et),S(ge,e),e&&o(Ct),e&&o(De),e&&o(jt),e&&o(z),S(_e),e&&o(Tt),e&&o(U),S(ve),S(K),S(we),e&&o(At),e&&o(M),S(ye),e&&o(Ft),e&&o(E),S($e),S(Ne),S(te),S(oe)}}}const ka={local:"upernet",sections:[{local:"overview",title:"Overview"},{local:"resources",title:"Resources"},{local:"usage",title:"Usage"},{local:"transformers.UperNetConfig",title:"UperNetConfig"},{local:"transformers.UperNetForSemanticSegmentation",title:"UperNetForSemanticSegmentation"}],title:"UPerNet"};function Ua(H){return ba(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Aa extends da{constructor(d){super();ua(this,d,Ua,Sa,ga,{})}}export{Aa as default,ka as metadata};
