code: def performance_diff(
      model1: "CLASSIFIER_TYPE",
      model2: "CLASSIFIER_TYPE",
      test_data: np.ndarray,
      test_labels: np.ndarray,
      perf_function: Union[str, Callable] = "accuracy",
      **kwargs,
  ) -> float:
      """
      Calculates the difference in performance between two models on the test_data with a performance function.
  
      Note: For multi-label classification, f1 scores will use 'micro' averaging unless otherwise specified.
  
      :param model1: A trained ART classifier.
      :param model2: Another trained ART classifier.
      :param test_data: The data to test both model's performance.
      :param test_labels: The labels to the testing data.
      :param perf_function: The performance metric to be used. One of ['accuracy', 'f1'] or a callable function
             `(true_labels, model_labels[, kwargs]) -> float`.
      :param kwargs: Arguments to add to performance function.
      :return: The difference in performance performance(model1) - performance(model2).
      :raises `ValueError`: If an unsupported performance function is requested.
      """
      from sklearn.metrics import accuracy_score, f1_score
  
      model1_labels = model1.predict(test_data)
      model2_labels = model2.predict(test_data)
  
      if perf_function == "accuracy":
          model1_acc = accuracy_score(
              test_labels, model1_labels, **kwargs
          )
          model2_acc = accuracy_score(
              test_labels, model2_labels, **kwargs
          )
          return model1_acc - model2_acc
  
      if perf_function == "f1":
          n_classes = test_labels.shape[1]
          if n_classes > 2 and "average" not in kwargs:
              kwargs["average"] = "micro"
          model1_f1 = f1_score(test_labels, model1_labels, **kwargs)
          model2_f1 = f1_score(test_labels, model2_labels, **kwargs)
          return model1_f1 - model2_f1
  
      if callable(perf_function):
          return perf_function(
              test_labels, model1_labels, **kwargs
          ) - perf_function(test_labels, model2_labels, **kwargs)
  
      raise ValueError(
          f"Performance function '{perf_function}' not supported"
      )
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  import math
  import os
  import shutil
  import sys
  import tarfile
  import warnings
  import zipfile
  from functools import wraps
  from inspect import signature
  from typing import TYPE_CHECKING, Callable, List, Dict, Optional, Tuple, Union
  import numpy
  import six
  from scipy.special import gammainc
  from tqdm.auto import tqdm
  from art import config
label_desc: Use image node_id 41 for calling a global function with example usage: performance_diff(model1, model2, test_data, test_labels, perf_function) and returns: unknown, unknown, unknown