Switch to side-by-side view

--- a
+++ b/BioSeqNet/resnest/gluon/data_utils.py
@@ -0,0 +1,63 @@
+from PIL import Image
+
+import mxnet as mx
+from mxnet.gluon import Block
+from ..transforms import *
+
+class RandAugment(object):
+    def __init__(self, n, m):
+        self.n = n
+        self.m = m
+        self.augment_list = rand_augment_list()
+        self.topil = ToPIL()
+
+    def __call__(self, img):
+        img = self.topil(img)
+        ops = random.choices(self.augment_list, k=self.n)
+        for op, minval, maxval in ops:
+            if random.random() > random.uniform(0.2, 0.8):
+                continue
+            val = (float(self.m) / 30) * float(maxval - minval) + minval
+            img = op(img, val)
+        return img
+
+
+class ToPIL(object):
+    """Convert image from ndarray format to PIL
+    """
+    def __call__(self, img):
+        x = Image.fromarray(img.asnumpy())
+        return x
+
+class ToNDArray(object):
+    def __call__(self, img):
+        x = mx.nd.array(np.array(img), mx.cpu(0))
+        return x
+
+class AugmentationBlock(Block):
+    r"""
+    AutoAugment Block
+
+    Example
+    -------
+    >>> from autogluon.utils.augment import AugmentationBlock, autoaug_imagenet_policies
+    >>> aa_transform = AugmentationBlock(autoaug_imagenet_policies())
+    """
+    def __init__(self, policies):
+        """
+        plicies : list of (name, pr, level)
+        """
+        super().__init__()
+        self.policies = policies
+        self.topil = ToPIL()
+        self.tond = ToNDArray()
+
+    def forward(self, img):
+        img = self.topil(img)
+        policy = random.choice(self.policies)
+        for name, pr, level in policy:
+            if random.random() > pr:
+                continue
+            img = apply_augment(img, name, level)
+        img = self.tond(img)
+        return img