class_docstr: A sampler wrapper for grouping images with similar aspect ratio (< 1 or.
  
  >= 1) into a same batch.
  
  Args:
      sampler (Sampler): Base sampler.
      batch_size (int): Size of mini-batch.
      drop_last (bool): If ``True``, the sampler will drop the last batch if
          its size would be less than ``batch_size``.
class_docstr_tok: ["A","sampler","wrapper","for","grouping","images","with","similar","aspect","ratio","(","<","1","or",".",">","=","1",")","into","a","same","batch",".","Args",":","sampler","(","Sampler",")",":","Base","sampler",".","batch_size","(","int",")",":","Size","of","mini-batch",".","drop_last","(","bool",")",":","If","``","True","``",",","the","sampler","will","drop","the","last","batch","if","its","size","would","be","less","than","``","batch_size","``","."]
code: def __iter__(self) -> Sequence[int]:
      for idx in self.sampler:
          # hard code to solve TrackImgSampler
          if isinstance(self.sampler, TrackImgSampler):
              video_idx, _ = idx
          else:
              video_idx = idx
          # video_idx
          data_info = self.sampler.dataset.get_data_info(video_idx)
          # data_info {video_id, images, video_length}
          img_data_info = data_info["images"][0]
          width, height = (
              img_data_info["width"],
              img_data_info["height"],
          )
          bucket_id = 0 if width < height else 1
          bucket = self._aspect_ratio_buckets[bucket_id]
          bucket.append(idx)
          # yield a batch of indices in the same aspect ratio group
          if len(bucket) == self.batch_size:
              yield bucket[:]
              del bucket[:]
  
      # yield the rest data and reset the bucket
      left_data = (
          self._aspect_ratio_buckets[0] + self._aspect_ratio_buckets[1]
      )
      self._aspect_ratio_buckets = [[] for _ in range(2)]
      while len(left_data) > 0:
          if len(left_data) <= self.batch_size:
              if not self.drop_last:
                  yield left_data[:]
              left_data = []
          else:
              yield left_data[: self.batch_size]
              left_data = left_data[self.batch_size :]
  
file_path: mmdetection/mmdet/datasets/samplers/batch_sampler.py
imports: from typing import Sequence
  from torch.utils.data import BatchSampler, Sampler
  from mmdet.datasets.samplers.track_img_sampler import TrackImgSampler
  from mmdet.registry import DATA_SAMPLERS
label_desc: Use image node_id 1 for calling the TrackAspectRatioBatchSampler obj's underlying member method code with example usage: obj.__iter__() without return types