code: def read_submissions_from_directory(dirname, use_gpu):
      """Scans directory and read all submissions.
  
      Args:
        dirname: directory to scan.
        use_gpu: whether submissions should use GPU. This argument is
          used to pick proper Docker container for each submission and create
          instance of Attack or Defense class.
  
      Returns:
        List with submissions (subclasses of Submission class).
      """
      result = []
      for sub_dir in os.listdir(dirname):
          submission_path = os.path.join(dirname, sub_dir)
          try:
              if not os.path.isdir(submission_path):
                  continue
              if not os.path.exists(
                  os.path.join(submission_path, "metadata.json")
              ):
                  continue
              with open(
                  os.path.join(submission_path, "metadata.json")
              ) as f:
                  metadata = json.load(f)
              if use_gpu and ("container_gpu" in metadata):
                  container = metadata["container_gpu"]
              else:
                  container = metadata["container"]
              entry_point = metadata["entry_point"]
              submission_type = metadata["type"]
              if (
                  submission_type == "attack"
                  or submission_type == "targeted_attack"
              ):
                  submission = Attack(
                      submission_path, container, entry_point, use_gpu
                  )
              elif submission_type == "defense":
                  submission = Defense(
                      submission_path, container, entry_point, use_gpu
                  )
              else:
                  raise ValueError(
                      "Invalid type of submission: %s" % submission_type
                  )
              result.append(submission)
          except (IOError, KeyError, ValueError):
              print(
                  "Failed to read submission from directory ",
                  submission_path,
              )
      return result
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import argparse
  import csv
  import json
  import os
  import subprocess
  import numpy
  from PIL import Image
label_desc: Use image node_id 2 for calling a global function with example usage: read_submissions_from_directory(dirname, use_gpu) and returns: result