class_docstr: RoI align pooling layer for rotated proposals.
  
  It accepts a feature map of shape (N, C, H, W) and rois with shape
  (n, 6) with each roi decoded as (batch_index, center_x, center_y,
  w, h, angle). The angle is in radian.
  
  Args:
      out_size (tuple): h, w
      spatial_scale (float): scale the input boxes by this number
      sample_num (int): number of inputs samples to take for each
          output sample. 0 to take samples densely for current models.
      aligned (bool): if False, use the legacy implementation in
          MMDetection. If True, align the results more perfectly.
          Default: True.
      clockwise (bool): If True, the angle in each proposal follows a
          clockwise fashion in image space, otherwise, the angle is
          counterclockwise. Default: False.
  
  Note:
      The implementation of RoIAlign when aligned=True is modified from
      https://github.com/facebookresearch/detectron2/
  
      The meaning of aligned=True:
  
      Given a continuous coordinate c, its two neighboring pixel
      indices (in our pixel model) are computed by floor(c - 0.5) and
      ceil(c - 0.5). For example, c=1.3 has pixel neighbors with discrete
      indices [0] and [1] (which are sampled from the underlying signal
      at continuous coordinates 0.5 and 1.5). But the original roi_align
      (aligned=False) does not subtract the 0.5 when computing
      neighboring pixel indices and therefore it uses pixels with a
      slightly incorrect alignment (relative to our pixel model) when
      performing bilinear interpolation.
  
      With `aligned=True`,
      we first appropriately scale the ROI and then shift it by -0.5
      prior to calling roi_align. This produces the correct neighbors;
  
      The difference does not make a difference to the model's
      performance if ROIAlign is used together with conv layers.
class_docstr_tok: ["RoI","align","pooling","layer","for","rotated","proposals",".","It","accepts","a","feature","map","of","shape","(","N",",","C",",","H",",","W",")","and","rois","with","shape","(","n",",","6",")","with","each","roi","decoded","as","(","batch_index",",","center_x",",","center_y",",","w",",","h",",","angle",")",".","The","angle","is","in","radian",".","Args",":","out_size","(","tuple",")",":","h",",","w","spatial_scale","(","float",")",":","scale","the","input","boxes","by","this","number","sample_num","(","int",")",":","number","of","inputs","samples","to","take","for","each","output","sample",".","0","to","take","samples","densely","for","current","models",".","aligned","(","bool",")",":","if","False",",","use","the","legacy","implementation","in","MMDetection",".","If","True",",","align","the","results","more","perfectly",".","Default",":","True",".","clockwise","(","bool",")",":","If","True",",","the","angle","in","each","proposal","follows","a","clockwise","fashion","in","image","space",",","otherwise",",","the","angle","is","counterclockwise",".","Default",":","False",".","Note",":","The","implementation","of","RoIAlign","when","aligned=True","is","modified","from","https",":","\/\/github.com\/facebookresearch\/detectron2\/","The","meaning","of","aligned=True",":","Given","a","continuous","coordinate","c",",","its","two","neighboring","pixel","indices","(","in","our","pixel","model",")","are","computed","by","floor","(","c","-","0.5",")","and","ceil","(","c","-","0.5",")",".","For","example",",","c=1.3","has","pixel","neighbors","with","discrete","indices","[","0","]","and","[","1","]","(","which","are","sampled","from","the","underlying","signal","at","continuous","coordinates","0.5","and","1.5",")",".","But","the","original","roi_align","(","aligned=False",")","does","not","subtract","the","0.5","when","computing","neighboring","pixel","indices","and","therefore","it","uses","pixels","with","a","slightly","incorrect","alignment","(","relative","to","our","pixel","model",")","when","performing","bilinear","interpolation",".","With","`","aligned=True","`",",","we","first","appropriately","scale","the","ROI","and","then","shift","it","by","-0.5","prior","to","calling","roi_align",".","This","produces","the","correct","neighbors",";","The","difference","does","not","make","a","difference","to","the","model's","performance","if","ROIAlign","is","used","together","with","conv","layers","."]
code: def forward(self, features, rois):
      return RoIAlignRotatedFunction.apply(
          features,
          rois,
          self.out_size,
          self.spatial_scale,
          self.sample_num,
          self.aligned,
          self.clockwise,
      )
  
file_path: lavis/lavis/common/annotator/uniformer/mmcv/ops/roi_align_rotated.py
imports: import torch.nn
  from torch.autograd import Function
  from ..utils import ext_loader
label_desc: Use image node_id 2 for calling the RoIAlignRotated obj's underlying member method code with example usage: obj.forward(features, rois) and returns: RoIAlignRotatedFunction