class_docstr: Rethinking Atrous Convolution for Semantic Image Segmentation.
  
  This head is the implementation of `DeepLabV3
  <https://arxiv.org/abs/1706.05587>`_.
  
  Args:
      dilations (tuple[int]): Dilation rates for ASPP module.
          Default: (1, 6, 12, 18).
code: def __init__(self, dilations=(1, 6, 12, 18), **kwargs):
      super(ASPPHead, self).__init__(**kwargs)
      assert isinstance(dilations, (list, tuple))
      self.dilations = dilations
      self.image_pool = nn.Sequential(
          nn.AdaptiveAvgPool2d(1),
          ConvModule(
              self.in_channels,
              self.channels,
              1,
              conv_cfg=self.conv_cfg,
              norm_cfg=self.norm_cfg,
              act_cfg=self.act_cfg,
          ),
      )
      self.aspp_modules = ASPPModule(
          dilations,
          self.in_channels,
          self.channels,
          conv_cfg=self.conv_cfg,
          norm_cfg=self.norm_cfg,
          act_cfg=self.act_cfg,
      )
      self.bottleneck = ConvModule(
          (len(dilations) + 1) * self.channels,
          self.channels,
          3,
          padding=1,
          conv_cfg=self.conv_cfg,
          norm_cfg=self.norm_cfg,
          act_cfg=self.act_cfg,
      )
  
file_path: lavis/lavis/common/annotator/uniformer/mmseg/models/decode_heads/aspp_head.py
imports: import torch
  import torch.nn
  from annotator.uniformer.mmcv.cnn import ConvModule
  from annotator.uniformer.mmseg.ops import resize
  from ..builder import HEADS
  from .decode_head import BaseDecodeHead
label_desc: Use image node_id 1 to create a new ASPPHead object from inherited base classes: BaseDecodeHead with example: obj = ASPPHead(dilations)