code: def test_quasi_dense_embed_head_predict(self):
      cfg = mmengine.Config(
          dict(
              num_convs=4,
              num_fcs=1,
              embed_channels=256,
              norm_cfg=dict(type="GN", num_groups=32),
              loss_track=dict(
                  type="MultiPosCrossEntropyLoss", loss_weight=0.25
              ),
              loss_track_aux=dict(
                  type="MarginL2Loss",
                  neg_pos_ub=3,
                  pos_margin=0,
                  neg_margin=0.1,
                  hard_mining=True,
                  loss_weight=1.0,
              ),
          )
      )
  
      embed_head = QuasiDenseEmbedHead(**cfg)
  
      key_feats = torch.rand(2, 256, 7, 7)
      track_feats = embed_head.predict(key_feats)
  
      assert isinstance(track_feats, torch.Tensor)
      assert track_feats.size() == (2, 256)
  
file_path: mmdetection/tests/test_models/test_tracking_heads/test_quasi_dense_embed_head.py
imports: from unittest import TestCase
  import mmengine
  import torch
  from mmengine.structures import InstanceData
  from mmdet.models.tracking_heads import QuasiDenseEmbedHead
  from mmdet.registry import TASK_UTILS
label_desc: Use image node_id 2 for calling the TestQuasiDenseEmbedHead obj's underlying member method code with example usage: obj.test_quasi_dense_embed_head_predict() without return types