如何实施DEEPExpectation(DEX)年龄检测?

时间:2019-01-25 08:41:06

标签: python tensorflow keras deep-learning imdb

首先,我是深度学习平台的新手,如果我有任何错误,请纠正我。

我正在尝试使用DEX方法来实现年龄检测。到目前为止,我的理解是,他们尝试使用VGG-16体系结构训练CNN重量模型。我正在使用他们在论文中建议的 IMDB_WIKI 数据集。

我正在使用 TensorFlow,Keras Python3 语言训练体重模型。

我训练模型的步骤(我只是从IMDB集开始):

  1. 加载 IMDB mat 文件并获取训练数据和验证数据集(占总数据集的10%)
  2. 使用 ImageNet 权重创建一个 VGG-16 模型(我相信它是一个大型数据集)
  3. 由于 ImageNet 具有1000个类别,因此请删除模型的最后一层,然后放置我的单一年龄层输出层。
  4. 还在输出层的顶部添加一个辍学层(坦率地说,不知道它是如何工作的)

我的实验从这里开始:)

  1. 将层层预训练冻结到VGG-16体系结构中,除了我新添加的层之外,现在有一些不可训练的对象可用。在那种情况下,我的训练年龄准确度仅为19%,这太差了,我希望检测到的实际年龄应该是50-56%。
  2. 看到我猜这可能是由于我没有训练所有层次。我删除了层的冻结并尝试进行训练,但它向我显示了内存不足的异常,此后,我冻结了整个体系结构的8层,经过40个时期的训练,我发现年龄精度为11%,低于之前:(

请问有人可以帮助我正确理解本文吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

“还要在输出层的顶部添加一个辍学层(坦率地说,不知道它是如何工作的”)-这完全是错误的。漏失层集将输出乘以0,使激活和渐变为0。如果将其用作k%的最终层,则结果在k%的情况下将是垃圾,例如降低您的准确性。只要删除它,它应该更好。

答案 1 :(得分:0)

它已经在适用于python的deepface软件包中实现

#!pip install deepface
from deepface import DeepFace
obj = DeepFace.analyze("img1.jpg", actions = ["age", "gender"])
print(obj)

根据DEX纸上的说明训练模型。它在后台建立VGG模型并加载预训练的权重。此外,它还可以在TensorFlow框架和Keras API上运行。