Validating Deep Learning Backend Configuration in Faceswap
This test suite performs essential sanity checks for the Faceswap deep learning project, validating backend configurations and Keras implementations. It ensures proper setup of TensorFlow and DirectML backends while verifying Keras version compatibility.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
deepfakes/faceswap
tests/startup_test.py
#!/usr/bin/env python3
""" Sanity checks for Faceswap. """
import inspect
import pytest
# Ignore linting errors from Tensorflow's thoroughly broken import system
from tensorflow import keras
from tensorflow.keras import backend as K # pylint:disable=import-error
from lib.utils import get_backend
_BACKEND = get_backend()
@pytest.mark.parametrize('dummy', [None], ids=[get_backend().upper()])
def test_backend(dummy): # pylint:disable=unused-argument
""" Sanity check to ensure that Keras backend is returning the correct object type. """
test_var = K.variable((1, 1, 4, 4))
lib = inspect.getmodule(test_var).__name__.split(".")[0]
assert _BACKEND in ("cpu", "directml") and lib == "tensorflow"
@pytest.mark.parametrize('dummy', [None], ids=[get_backend().upper()])
def test_keras(dummy): # pylint:disable=unused-argument
""" Sanity check to ensure that tensorflow keras is being used for CPU """
assert (_BACKEND in ("cpu", "directml")
and keras.__version__ in ("2.7.0", "2.8.0", "2.9.0", "2.10.0"))