class_docstr: Encoder-Decoder with Atrous Separable Convolution for Semantic Image
  Segmentation.
  
  This head is the implementation of `DeepLabV3+
  <https://arxiv.org/abs/1802.02611>`_.
  
  Args:
      c1_in_channels (int): The input channels of c1 decoder. If is 0,
          the no decoder will be used.
      c1_channels (int): The intermediate channels of c1 decoder.
class_docstr_tok: ["Encoder-Decoder","with","Atrous","Separable","Convolution","for","Semantic","Image","Segmentation",".","This","head","is","the","implementation","of","`","DeepLabV3+","<","https",":","\/\/arxiv.org\/abs\/1802.02611",">","`","_",".","Args",":","c1_in_channels","(","int",")",":","The","input","channels","of","c1","decoder",".","If","is","0",",","the","no","decoder","will","be","used",".","c1_channels","(","int",")",":","The","intermediate","channels","of","c1","decoder","."]
docstr: Forward function.
docstr_tok: ["Forward","function","."]
code: def forward(self, inputs):
      """Forward function."""
      x = self._transform_inputs(inputs)
      aspp_outs = [
          resize(
              self.image_pool(x),
              size=x.size()[2:],
              mode="bilinear",
              align_corners=self.align_corners,
          )
      ]
      aspp_outs.extend(self.aspp_modules(x))
      aspp_outs = torch.cat(aspp_outs, dim=1)
      output = self.bottleneck(aspp_outs)
      if self.c1_bottleneck is not None:
          c1_output = self.c1_bottleneck(inputs[0])
          output = resize(
              input=output,
              size=c1_output.shape[2:],
              mode="bilinear",
              align_corners=self.align_corners,
          )
          output = torch.cat([output, c1_output], dim=1)
      output = self.sep_bottleneck(output)
      output = self.cls_seg(output)
      return output
  
file_path: lavis/lavis/common/annotator/uniformer/mmseg/models/decode_heads/sep_aspp_head.py
imports: import torch
  import torch.nn
  from annotator.uniformer.mmcv.cnn import ConvModule, DepthwiseSeparableConvModule
  from annotator.uniformer.mmseg.ops import resize
  from ..builder import HEADS
  from .aspp_head import ASPPHead, ASPPModule
label_desc: Use image node_id 2 for calling the DepthwiseSeparableASPPHead obj's underlying member method code with example usage: obj.forward(inputs) and returns: output