class_docstr: Corner cropping and multi-scale cropping.
      Two data augmentation techniques introduced in:
      Towards Good Practices for Very Deep Two-Stream ConvNets,
      http://arxiv.org/abs/1507.02159
      Limin Wang, Yuanjun Xiong, Zhe Wang and Yu Qiao
  
  Parameters:
  ----------
  size : int
      height and width required by network input, e.g., (224, 224)
  scale_ratios : list
      efficient scale jittering, e.g., [1.0, 0.875, 0.75, 0.66]
  fix_crop : bool
      use corner cropping or not. Default: True
  more_fix_crop : bool
      use more corners or not. Default: True
  max_distort : float
      maximum aspect ratio distortion, used together with scale_ratios. Default: 1
  
  Inputs:
      - **data**: a list of frames with shape [H x W x C]
  
  Outputs:
      - **out**: a list of cropped frames with shape [size x size x C]
class_docstr_tok: ["Corner","cropping","and","multi-scale","cropping",".","Two","data","augmentation","techniques","introduced","in",":","Towards","Good","Practices","for","Very","Deep","Two-Stream","ConvNets",",","http",":","\/\/arxiv.org\/abs\/1507.02159","Limin","Wang",",","Yuanjun","Xiong",",","Zhe","Wang","and","Yu","Qiao","Parameters",":","--","--","--","--","--","size",":","int","height","and","width","required","by","network","input",",","e.g.",",","(","224",",","224",")","scale_ratios",":","list","efficient","scale","jittering",",","e.g.",",","[","1.0",",","0.875",",","0.75",",","0.66","]","fix_crop",":","bool","use","corner","cropping","or","not",".","Default",":","True","more_fix_crop",":","bool","use","more","corners","or","not",".","Default",":","True","max_distort",":","float","maximum","aspect","ratio","distortion",",","used","together","with","scale_ratios",".","Default",":","1","Inputs",":","-","*","*","data","*","*",":","a","list","of","frames","with","shape","[","H","x","W","x","C","]","Outputs",":","-","*","*","out","*","*",":","a","list","of","cropped","frames","with","shape","[","size","x","size","x","C","]"]
docstr: Fixed cropping strategy. Select crop size from
  pre-defined list (computed by scale_ratios).
  
  Inputs:
      - **data**: height and width of input tensor
  
  Outputs:
      - **out**: a list of crop sizes to crop the image
docstr_tok: ["Fixed","cropping","strategy",".","Select","crop","size","from","pre-defined","list","(","computed","by","scale_ratios",")",".","Inputs",":","-","*","*","data","*","*",":","height","and","width","of","input","tensor","Outputs",":","-","*","*","out","*","*",":","a","list","of","crop","sizes","to","crop","the","image"]
code: def fillCropSize(self, scale_ratios, max_distort, image_h, image_w):
      """Fixed cropping strategy. Select crop size from
      pre-defined list (computed by scale_ratios).
  
      Inputs:
          - **data**: height and width of input tensor
  
      Outputs:
          - **out**: a list of crop sizes to crop the image
  
      """
      crop_sizes = []
      base_size = np.min((image_h, image_w))
      for h_index, scale_rate_h in enumerate(scale_ratios):
          crop_h = int(base_size * scale_rate_h)
          for w_index, scale_rate_w in enumerate(scale_ratios):
              crop_w = int(base_size * scale_rate_w)
              if np.absolute(h_index - w_index) <= max_distort:
                  # To control the aspect ratio distortion
                  crop_sizes.append((crop_h, crop_w))
  
      return crop_sizes
  
imports: from __future__ import division
  import random
  import math
  import numbers
  import numpy
  from mxnet.gluon import Block
label_desc: Use image node_id 3 for calling the VideoMultiScaleCrop obj's underlying member method code with example usage: obj.fillCropSize(scale_ratios, max_distort, image_h, image_w) and returns: crop_sizes