class_docstr: Semi-COCODataSet used for supervised and unsupervised dataSet
code: def __getitem__(self, idx):
      n = len(self.roidbs)
      if self.repeat > 1:
          idx %= n
      # data batch
      roidb = copy.deepcopy(self.roidbs[idx])
      if self.mixup_epoch == 0 or self._epoch < self.mixup_epoch:
          idx = np.random.randint(n)
          roidb = [roidb, copy.deepcopy(self.roidbs[idx])]
      elif self.cutmix_epoch == 0 or self._epoch < self.cutmix_epoch:
          idx = np.random.randint(n)
          roidb = [roidb, copy.deepcopy(self.roidbs[idx])]
      elif self.mosaic_epoch == 0 or self._epoch < self.mosaic_epoch:
          roidb = [
              roidb,
          ] + [
              copy.deepcopy(self.roidbs[np.random.randint(n)])
              for _ in range(4)
          ]
      if isinstance(roidb, Sequence):
          for r in roidb:
              r["curr_iter"] = self._curr_iter
      else:
          roidb["curr_iter"] = self._curr_iter
      self._curr_iter += 1
  
      return self.transform(roidb)
  
imports: import os
  import copy
  import numpy
  from ppdet.core.workspace import register, serializable
  from .dataset import DetDataset
  from ppdet.utils.logger import setup_logger
label_desc: Use image node_id 3 for calling the SemiCOCODataSet obj's underlying member method code with example usage: obj.__getitem__(idx) and returns: self