#python #tensorflow #deep-learning
#python #tensorflow #глубокое обучение
Вопрос:
Я получаю следующую ошибку в своем коде.
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()
Ошибка:
anaconda3envspy3libsite-packageskerasbackendtensorflow_backend.py «, строка 68, в get_uid graph = tf.get_default_graph()
Ошибка атрибута: модуль ‘tensorflow’ не имеет атрибута ‘get_default_graph’
Я попробовал несколько разных импортов, но ничего не работает. Кажется, что эта ошибка обычная, но я не нахожу ничего, что решало бы мою проблему.
Ответ №1:
В приведенном здесь ответе импорт keras из tensorflow, как и вы, решает проблему.
Но проблема в вашем случае заключается в том, что MTCNN работает на чистом Keras вместо TensorFlow, поэтому тот факт, что вы загружаете в свой «main.py » keras из tensorflow не имеет никакого эффекта. Вам либо нужно понизить версию tensorflow, либо вы изменяете каждый импорт в MTCNN, что, к сожалению, не гарантирует работу.
Комментарии:
1. Да, проблема связана с MTCNN и версией tensorflow