class_docstr: Dense video captioning module that encodes a video and generate tokens.
code: def setup(self):
      self.decoder_type = self.config.get("decoder_type", "t5_decoder")
      decoder_config = self.config.decoder.get(self.decoder_type)
      num_bins = self.config.decoder.get("num_bins")
      self.encoder_type = self.config.encoder.get("encoder_type")
      encoder_config = self.config.encoder.get(self.encoder_type)
      self.embedder, self.decoder = self._get_decoder(
          self.decoder_type, decoder_config, num_bins
      )
  
      self.encoder = self._get_encoder(
          self.encoder_type, encoder_config, self.embedder, num_bins
      )
  
imports: import functools
  from typing import Any, Dict, Mapping, Optional, Tuple
  from absl import logging
  import flax.linen
  from flax.training import common_utils
  import jax
  import jax.numpy
  import ml_collections
  from scenic.model_lib.base_models import base_model
  from scenic.model_lib.base_models import model_utils
  from scenic.projects.baselines import vit
  from scenic.projects.t5 import layers
  from scenic.projects.t5 import model
  from t5x import decoding
  from t5x.models import DecodeFnCallable
label_desc: Use image node_id 3 for calling the DenseVideoCaptioningModule obj's underlying member method code with example usage: obj.setup() without return types