code: def create_pipeline(
      self,
      pipeline_params: DataPipelineParams,
      params: Optional[CalamariDataGeneratorParams],
  ) -> DataPipeline:
      if params is not None and isinstance(params, ImageLoaderParams):
          params.channels = self.params.input_channels  # set channels
      return self.data_pipeline_cls()(
          pipeline_params,
          self,
          generator_params=params,
      )
  
imports: import logging
  import os
  from typing import Type, Optional
  import tensorflow
  from tfaip.data.data import DataBase
  from tfaip.data.databaseparams import DataPipelineParams
  from tfaip.data.pipeline.datapipeline import DataPipeline
  from tfaip.data.pipeline.definitions import PipelineMode, INPUT_PROCESSOR
  from tfaip.data.pipeline.processor.params import SequentialProcessorPipelineParams
  from calamari_ocr.ocr.augmentation.dataaugmentationparams import DataAugmentationAmount
  from calamari_ocr.ocr.dataset.datareader.base import CalamariDataGeneratorParams
  from calamari_ocr.ocr.dataset.datareader.file import FileDataParams
  from calamari_ocr.ocr.dataset.imageprocessors.augmentation import AugmentationProcessorParams
  from calamari_ocr.ocr.dataset.imageprocessors.default_image_processors import default_image_processors
  from calamari_ocr.ocr.dataset.imageprocessors.preparesample import PrepareSampleProcessorParams
  from calamari_ocr.ocr.dataset.params import DataParams
  from calamari_ocr.ocr.dataset.pipeline import CalamariPipeline
  from calamari_ocr.ocr.dataset.postprocessors.ctcdecoder import CTCDecoderProcessorParams
  from calamari_ocr.ocr.dataset.postprocessors.reshape import ReshapeOutputsProcessorParams
  from calamari_ocr.ocr.dataset.textprocessors.default_text_processor import default_text_pre_processors
  from calamari_ocr.utils.image import ImageLoaderParams
label_desc: Use image node_id 5 for calling the Data obj's underlying member method code with example usage: obj.create_pipeline(pipeline_params, params) and returns: self