class_docstr: Arguments:
      threshold (float): Threshold for classifier confidence score
class_docstr_tok: ["Arguments",":","threshold","(","float",")",":","Threshold","for","classifier","confidence","score"]
docstr: Performs predictions on input frames
  Arguments:
      frames (np.ndarray): Frames on which predictions need
      to be performed
  
  Returns:
      tuple containing predicted_classes (List[List[str]]),
      predicted_boxes (List[List[BoundingBox]]),
      predicted_scores (List[List[float]])
docstr_tok: ["Performs","predictions","on","input","frames","Arguments",":","frames","(","np.ndarray",")",":","Frames","on","which","predictions","need","to","be","performed","Returns",":","tuple","containing","predicted_classes","(","List","[","List","[","str","]","]",")",",","predicted_boxes","(","List","[","List","[","BoundingBox","]","]",")",",","predicted_scores","(","List","[","List","[","float","]","]",")"]
code: def forward(self, frames) -> pd.DataFrame:
      """
      Performs predictions on input frames
      Arguments:
          frames (np.ndarray): Frames on which predictions need
          to be performed
  
      Returns:
          tuple containing predicted_classes (List[List[str]]),
          predicted_boxes (List[List[BoundingBox]]),
          predicted_scores (List[List[float]])
  
      """
      predictions = self.model(frames)
      outcome = []
      for prediction in predictions:
          pred_class = [
              str(self.labels[i])
              for i in list(self.as_numpy(prediction["labels"]))
          ]
          pred_boxes = [
              [i[0], i[1], i[2], i[3]]
              for i in list(self.as_numpy(prediction["boxes"]))
          ]
          pred_score = list(self.as_numpy(prediction["scores"]))
          valid_pred = [
              pred_score.index(x)
              for x in pred_score
              if x > self.threshold
          ]
  
          if valid_pred:
              pred_t = valid_pred[-1]
          else:
              pred_t = -1
  
          pred_boxes = np.array(pred_boxes[: pred_t + 1])
          pred_class = np.array(pred_class[: pred_t + 1])
          pred_score = np.array(pred_score[: pred_t + 1])
          outcome.append(
              {
                  "labels": pred_class,
                  "scores": pred_score,
                  "bboxes": pred_boxes,
              }
          )
      return pd.DataFrame(
          outcome, columns=["labels", "scores", "bboxes"]
      )
  
file_path: evadb/evadb/functions/fastrcnn_object_detector.py
imports: from typing import List
  import numpy
  import pandas
  from evadb.catalog.catalog_type import NdArrayType
  from evadb.functions.abstract.pytorch_abstract_function import PytorchAbstractClassifierFunction
  from evadb.functions.decorators.decorators import forward, setup
  from evadb.functions.decorators.io_descriptors.data_types import PandasDataframe, PyTorchTensor
  from evadb.utils.generic_utils import try_to_import_torch, try_to_import_torchvision
label_desc: Use image node_id 4 for calling the FastRCNNObjectDetector obj's underlying member method code with example usage: obj.forward(frames) and returns: pd