code: def forward(self, data, rois):
      assert data.size(1) == self.out_channels
      if self.no_trans:
          offset = data.new_empty(0)
          return deform_roi_pooling(
              data,
              rois,
              offset,
              self.spatial_scale,
              self.out_size,
              self.out_channels,
              self.no_trans,
              self.group_size,
              self.part_size,
              self.sample_per_part,
              self.trans_std,
          )
      else:
          n = rois.shape[0]
          offset = data.new_empty(0)
          x = deform_roi_pooling(
              data,
              rois,
              offset,
              self.spatial_scale,
              self.out_size,
              self.out_channels,
              True,
              self.group_size,
              self.part_size,
              self.sample_per_part,
              self.trans_std,
          )
          offset = self.offset_fc(x.view(n, -1))
          offset = offset.view(n, 2, self.out_size, self.out_size)
          return deform_roi_pooling(
              data,
              rois,
              offset,
              self.spatial_scale,
              self.out_size,
              self.out_channels,
              self.no_trans,
              self.group_size,
              self.part_size,
              self.sample_per_part,
              self.trans_std,
          )
  
file_path: EasyOCR/easyocr/DBNet/assets/ops/dcn/modules/deform_pool.py
imports: from torch import nn
  from ..functions.deform_pool import deform_roi_pooling
label_desc: Use image node_id 2 for calling the DeformRoIPoolingPack obj's underlying member method code with example usage: obj.forward(data, rois) and returns: deform_roi_pooling, deform_roi_pooling