class_docstr: Logs the input and output images of a module.
  
  Images are stacked into a mosaic, with different clips from top to bottom
  and time progressing from left to right.
  
  Args:
      batch: A set of images to log at the end of each validation epoch.
class_docstr_tok: ["Logs","the","input","and","output","images","of","a","module",".","Images","are","stacked","into","a","mosaic",",","with","different","clips","from","top","to","bottom","and","time","progressing","from","left","to","right",".","Args",":","batch",":","A","set","of","images","to","log","at","the","end","of","each","validation","epoch","."]
code: def append_images(self, image_dict, image_group):
      keys = ("flow", "image1", "image2", "image2_est")
      for i, key in enumerate(keys):
          if image_group[i] is not None:
              image_dict.setdefault(key, []).append(image_group[i])
      return image_dict
  
imports: from pathlib import Path
  import hydra
  import numpy
  import pytorch_lightning
  import torch
  import wandb
  from data_module import Vimeo90kSeptupletLightning
  from dvc_module import DvcModule
  from omegaconf import DictConfig, OmegaConf
  from pytorch_lightning.callbacks import LearningRateMonitor, ModelCheckpoint
  from pytorch_lightning.loggers import WandbLogger
  from neuralcompression.functional import optical_flow_to_color
  from neuralcompression.models import DVC
label_desc: Use image node_id 2 for calling the WandbImageCallback obj's underlying member method code with example usage: obj.append_images(image_dict, image_group) and returns: image_dict