class_docstr: The quasi-dense track head.
docstr: Extract roi features.
  
  Args:
      feats (list[Tensor]): list of multi-level image features.
      bboxes (list[Tensor]): list of bboxes in sampling result.
  
  Returns:
      Tensor: The extracted roi features.
docstr_tok: ["Extract","roi","features",".","Args",":","feats","(","list","[","Tensor","]",")",":","list","of","multi-level","image","features",".","bboxes","(","list","[","Tensor","]",")",":","list","of","bboxes","in","sampling","result",".","Returns",":","Tensor",":","The","extracted","roi","features","."]
code: def extract_roi_feats(
      self, feats: List[Tensor], bboxes: List[Tensor]
  ) -> Tensor:
      """Extract roi features.
  
      Args:
          feats (list[Tensor]): list of multi-level image features.
          bboxes (list[Tensor]): list of bboxes in sampling result.
  
      Returns:
          Tensor: The extracted roi features.
      """
      rois = bbox2roi(bboxes)
      bbox_feats = self.roi_extractor(
          feats[: self.roi_extractor.num_inputs], rois
      )
      return bbox_feats
  
file_path: mmdetection/mmdet/models/tracking_heads/quasi_dense_track_head.py
imports: from typing import List, Optional
  from mmengine.model import BaseModule
  from torch import Tensor
  from mmdet.registry import MODELS, TASK_UTILS
  from mmdet.structures import TrackSampleList
  from mmdet.structures.bbox import bbox2roi
  from mmdet.utils import InstanceList
label_desc: Use image node_id 5 for calling the QuasiDenseTrackHead obj's underlying member method code with example usage: obj.extract_roi_feats(feats, bboxes) and returns: bbox_feats