class_docstr: DensePose head using DeepLabV3 model from
  "Rethinking Atrous Convolution for Semantic Image Segmentation"
  <https://arxiv.org/abs/1706.05587>.
class_docstr_tok: ["DensePose","head","using","DeepLabV3","model","from","''","Rethinking","Atrous","Convolution","for","Semantic","Image","Segmentation","''","<","https",":","\/\/arxiv.org\/abs\/1706.05587",">","."]
code: def forward(self, features):
      x0 = features
      x = self.ASPP(x0)
      if self.use_nonlocal:
          x = self.NLBlock(x)
      output = x
      for i in range(self.n_stacked_convs):
          layer_name = self._get_layer_name(i)
          x = getattr(self, layer_name)(x)
          x = F.relu(x)
          output = x
      return output
  
imports: import fvcore.nn.weight_init
  import torch
  from torch import nn
  from torch.nn import functional
  from detectron2.config import CfgNode
  from detectron2.layers import Conv2d
  from .registry import ROI_DENSEPOSE_HEAD_REGISTRY
label_desc: Use image node_id 2 for calling the DensePoseDeepLabHead obj's underlying member method code with example usage: obj.forward(features) and returns: output