class_docstr: Joiner class.
  
  Args:
      backbone (`Backbone`):
          ResNet backbone with frozen BatchNorm.
      position_embedding (`nn.Module`):
          Position embedding layer.
class_docstr_tok: ["Joiner","class",".","Args",":","backbone","(","`","Backbone","`",")",":","ResNet","backbone","with","frozen","BatchNorm",".","position_embedding","(","`","nn.Module","`",")",":","Position","embedding","layer","."]
code: def forward(self, tensor_list: NestedTensor):
      xs = self[0](tensor_list)
      out: List[NestedTensor] = []
      pos = []
  
      for _, x in xs.items():
          out.append(x)
          # position encoding
          pos.append(self[1](x).to(x.tensors.dtype))
  
      return out, pos
  
file_path: towhee/towhee/models/coformer/backbone.py
imports: import torch
  import torch.nn.functional
  import torchvision
  from torch import nn
  from torchvision.models._utils import IntermediateLayerGetter
  from typing import Dict, List
  from towhee.models.coformer.utils import NestedTensor, is_main_process
  from towhee.models.layers.position_encoding import build_position_encoding
label_desc: Use image node_id 2 for calling the Joiner obj's underlying member method code with example usage: obj.forward(tensor_list) and returns: out,  pos