DeepFace.analyze:AttributeError:模块'keras.utils.generic_utils'没有属性'populate_dict_with_module_objects
Posted
技术标签:
【中文标题】DeepFace.analyze:AttributeError:模块\'keras.utils.generic_utils\'没有属性\'populate_dict_with_module_objects【英文标题】:DeepFace.analyze: AttributeError: module 'keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objectsDeepFace.analyze:AttributeError:模块'keras.utils.generic_utils'没有属性'populate_dict_with_module_objects 【发布时间】:2021-08-25 13:32:39 【问题描述】:我正在使用 DeepFace 对一些人脸图像进行分析/分类
过程很简单,我将图像下载到文件夹中,然后使用 DeepFace.analyze 对其进行分析
from deepface import DeepFace
url = "url_to_imagefile.jpg"
# Download image
file_path = os.path.join(BASE_DIR, "other_files_ignore_this/image.jpg")
urllib.request.urlretrieve(url, r''.format(save_path))
print(os.path.isfile(file_path))
# Analyze image
obj = DeepFace.analyze(img_path=file_path, actions=['age', 'gender', 'race', 'emotion'])
这个过程给了我一个 AttributeError
*** AttributeError: module 'keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects'
这是我安装的 tensorflow 包:
tensorboard==2.5.0
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.0
tensorflow==2.5.0
tensorflow-estimator==2.5.0
【问题讨论】:
【参考方案1】:我相信您应该确保您的图像文件没有损坏或其他原因,因为我在 colab 上使用最新的 tensorflow 2.5 成功运行了 deep face。虽然运行此软件包的 requirement 版本是 1.9,但您可能希望通过类似的 discussion。
我在colab上测试了以下版本(默认没有变化)。
pip freeze | grep tensorflow
tensorflow==2.5.0
tensorflow-datasets==4.0.1
tensorflow-estimator==2.5.0
tensorflow-gcs-config==2.5.0
tensorflow-hub==0.12.0
tensorflow-metadata==1.0.0
tensorflow-probability==0.12.1
运行 DeepFace
!pip install deepface
from deepface import DeepFace
obj = DeepFace.analyze(img_path="/content/a.png",
actions=['age', 'gender', 'race', 'emotion'])
obj
'age': 30,
'dominant_emotion': 'happy',
'dominant_race': 'middle eastern',
'emotion': 'angry': 1.4167338413528796e-06,
'disgust': 1.0070460736690082e-16,
'fear': 1.4578033333441376e-12,
'happy': 100.0,
'neutral': 2.3746911104183255e-07,
'sad': 1.3744319267774974e-10,
'surprise': 4.669798076874232e-11,
'gender': 'Man',
'race': 'asian': 0.0026936733561638694,
'black': 0.0007858925087059574,
'indian': 0.3253198189851534,
'latino hispanic': 4.1496003657341225,
'middle eastern': 57.77809964287875,
'white': 37.74350510498912,
'region': 'h': 450, 'w': 345, 'x': 88, 'y': 140
这里是tensorflow和keras的版本。
import tensorflow as tf
from tensorflow import keras
tf.__version__, keras.__version__
('2.5.0', '2.5.0')
【讨论】:
【参考方案2】:它的默认面部检测器后端是 mtcnn。问题来自here 提到的依赖关系。
obj = DeepFace.analyze(img_path = file_path
, actions=['age', 'gender', 'race', 'emotion']
, detector_backend = 'opencv')
你可以毫无问题地使用opencv、ssd或retinaface。
【讨论】:
【参考方案3】:我遇到了同样的问题,这个解决方案(由 kirthan0899 在这里发布:https://github.com/fizyr/keras-retinanet/issues/1538)对我有用:
!pip uninstall keras -y
!pip uninstall keras-nightly -y
!pip uninstall keras-Preprocessing -y
!pip uninstall keras-vis -y
!pip uninstall tensorflow -y
!pip install tensorflow==2.3.0
!pip install keras==2.4
【讨论】:
以上是关于DeepFace.analyze:AttributeError:模块'keras.utils.generic_utils'没有属性'populate_dict_with_module_objects的主要内容,如果未能解决你的问题,请参考以下文章
相当于 django 上的 entry.objects.filter(foreignkey__attribut='x') 和 .get()
如何添加 element with a href attribut in multipleelement? [duplicate]
Java–cvc-complex-type.4:Attribut ‘version’ must appear on element ‘web-app’