code: def rand_cmap(
      nlabels,
      type="bright",
      first_color_black=True,
      last_color_black=False,
      verbose=False,
  ):
      """
      Creates a random colormap to be used together with matplotlib. Useful for segmentation tasks
      :param nlabels: Number of labels (size of colormap)
      :param type: 'bright' for strong colors, 'soft' for pastel colors
      :param first_color_black: Option to use first color as black, True or False
      :param last_color_black: Option to use last color as black, True or False
      :param verbose: Prints the number of labels and shows the colormap. True or False
      :return: colormap for matplotlib
      """
      from matplotlib.colors import LinearSegmentedColormap
      import colorsys
  
      np.random.seed(49)
  
      if type not in ("bright", "soft"):
          print('Please choose "bright" or "soft" for type')
          return
  
      if verbose:
          print("Number of labels: " + str(nlabels))
  
      # Generate color map for bright colors, based on hsv
      if type == "bright":
          randHSVcolors = [
              (
                  np.random.uniform(low=0.0, high=1),
                  np.random.uniform(low=0.2, high=1),
                  np.random.uniform(low=0.9, high=1),
              )
              for i in range(nlabels)
          ]
  
          # Convert HSV list to RGB
          randRGBcolors = []
          for HSVcolor in randHSVcolors:
              randRGBcolors.append(
                  colorsys.hsv_to_rgb(
                      HSVcolor[0], HSVcolor[1], HSVcolor[2]
                  )
              )
  
          if first_color_black:
              randRGBcolors[0] = [0, 0, 0]
  
          if last_color_black:
              randRGBcolors[-1] = [0, 0, 0]
  
          random_colormap = LinearSegmentedColormap.from_list(
              "new_map", randRGBcolors, N=nlabels
          )
  
      # Generate soft pastel colors, by limiting the RGB spectrum
      if type == "soft":
          low = 0.6
          high = 0.95
          randRGBcolors = [
              (
                  np.random.uniform(low=low, high=high),
                  np.random.uniform(low=low, high=high),
                  np.random.uniform(low=low, high=high),
              )
              for i in range(nlabels)
          ]
  
          if first_color_black:
              randRGBcolors[0] = [0, 0, 0]
  
          if last_color_black:
              randRGBcolors[-1] = [0, 0, 0]
          random_colormap = LinearSegmentedColormap.from_list(
              "new_map", randRGBcolors, N=nlabels
          )
  
      # Display colorbar
      if verbose:
          from matplotlib import colors, colorbar
          from matplotlib import pyplot as plt
  
          fig, ax = plt.subplots(1, 1, figsize=(15, 0.5))
  
          bounds = np.linspace(0, nlabels, nlabels + 1)
          norm = colors.BoundaryNorm(bounds, nlabels)
  
          cb = colorbar.ColorbarBase(
              ax,
              cmap=random_colormap,
              norm=norm,
              spacing="proportional",
              ticks=None,
              boundaries=bounds,
              format="%1i",
              orientation="horizontal",
          )
  
      return random_colormap
  
file_path: icevision/icevision/visualize/utils.py
imports: from icevision.imports import *
  from icevision.utils import *
  from matplotlib import patches
  from PIL import Image, ImageFont, ImageDraw
  import PIL
label_desc: Use image node_id 6 for calling a global function with example usage: rand_cmap(nlabels, type, first_color_black, last_color_black, verbose) and returns: random_colormap