class_docstr: Abstract generator class.
      
docstr: Randomly apply visual effect on each image.
          
code: def random_visual_effect_group(self, image_group, annotations_group):
      """Randomly apply visual effect on each image."""
      assert len(image_group) == len(annotations_group)
  
      if self.visual_effect_generator is None:
          # do nothing
          return image_group, annotations_group
  
      for index in range(len(image_group)):
          # apply effect on a single group entry
          (
              image_group[index],
              annotations_group[index],
          ) = self.random_visual_effect_group_entry(
              image_group[index], annotations_group[index]
          )
  
      return image_group, annotations_group
  
imports: import numpy
  import random
  import warnings
  from tensorflow import keras
  from ..utils.anchors import anchor_targets_bbox, anchors_for_shape, guess_shapes
  from ..utils.config import parse_anchor_parameters, parse_pyramid_levels
  from ..utils.image import TransformParameters, adjust_transform_for_image, apply_transform, preprocess_image, resize_image
  from ..utils.transform import transform_aabb
label_desc: Use image node_id 17 for calling the Generator obj's underlying member method code with example usage: obj.random_visual_effect_group(image_group, annotations_group) and returns: image_group,  annotations_group, image_group,  annotations_group