AttributeError : le module 'tensorflow' n'a pas d'attribut 'get_default_graph' dans tensorflow

Aug 18 2020

J'obtiens l'erreur suivante dans mon code.

import mtcnn
# print version
print(mtcnn.__version__)

# demonstrate face detection on 5 Celebrity Faces Dataset
from os import listdir
from PIL import Image
from numpy import asarray
from matplotlib import pyplot
from mtcnn.mtcnn import MTCNN
print("MTCNN: {}".format(mtcnn.__version__))
import tensorflow as tf
from tensorflow import keras

# extract a single face from a given photograph
def extract_face(filename, required_size=(160, 160)):
    # load image from file
    image = Image.open(filename)
    # convert to RGB, if needed
    image = image.convert('RGB')
    # convert to array
    pixels = asarray(image)
    # create the detector, using default weights
    detector = MTCNN()
    # detect faces in the image
    results = detector.detect_faces(pixels)
    # extract the bounding box from the first face
    x1, y1, width, height = results[0]['box']
    # bug fix
    x1, y1 = abs(x1), abs(y1)
    x2, y2 = x1 + width, y1 + height
    # extract the face
    face = pixels[y1:y2, x1:x2]
    # resize pixels to the model size
    image = Image.fromarray(face)
    image = image.resize(required_size)
    face_array = asarray(image)
    return face_array

# specify folder to plot
#folder = '5-celebrity-faces-dataset/train/ben_afflek/'
folder = '5-celebrity-faces-dataset/train/ben_afflek'
i = 1
# enumerate files
for filename in listdir(folder):
    # path
    path = folder + '/' + filename
    # get face
    face = extract_face(path)
    print(i, face.shape)
    # plot
    pyplot.subplot(2, 7, i)
    pyplot.axis('off')
    pyplot.imshow(face)
    i += 1
pyplot.show()

Erreur:

anaconda3\envs\py3\lib\site-packages\keras\backend\tensorflow_backend.py", ligne 68, dans get_uid graph = tf.get_default_graph()

AttributeError : le module 'tensorflow' n'a pas d'attribut 'get_default_graph'

J'ai essayé plusieurs importations différentes, mais rien ne fonctionne. Il semble que cette erreur soit habituelle, mais je ne trouve rien qui résolve mon problème.

Réponses

1 TimbusCalin Aug 18 2020 at 13:32

Dans la réponse ici, importer des keras depuis tensorflow, comme vous l'avez fait, résout le problème.

Mais le problème dans votre cas est que le MTCNN fonctionne sur Keras pur au lieu de TensorFlow, donc le fait que vous chargez dans votre keras "main.py" à partir de tensorflow n'a aucun effet. Vous devez soit rétrograder la version de tensorflow, soit modifier chaque importation dans MTCNN, ce qui n'est malheureusement pas garanti.