深度学习在年龄估计中的应用

在本文中,将探讨如何利用深度学习技术中的卷积神经网络(CNN)来估计图像中人物的年龄。这是系列文章的第二篇,将讨论图像数据集的选择和获取。数据集是解决任何图像分类问题,包括年龄估计问题的关键组成部分。将使用这些数据来训练CNN,以区分包含人脸的图像,并将它们分类到不同的年龄组中,如儿童、青少年、成年人等。此外,这些数据还将用于评估CNN模型的准确性,即模型如何从图片中准确预测人物的年龄。

需要什么样的图像?

为了估计人们的年龄,需要包含人脸的图像。同时,必须知道每张图像中人物的年龄。在深度学习术语中,图像需要用人物的年龄(以年为单位)进行“标记”。

需要多少图像?

需要多少图片这个问题很难精确回答。数量取决于正在解决的问题和设定的目标。深度学习研究人员表示,解决分类问题至少需要每个类别1000个样本。CNN成功训练所需的最小数据样本数量源于过拟合问题。如果数据集不足以训练CNN,模型将无法泛化信息。因此,CNN模型在处理训练数据时可能非常精确,但在处理测试数据时可能会给出糟糕的结果。

年龄组

正如在系列的中提到的,将年龄估计视为一个分类问题。因此,需要将整个年龄范围分成几个年龄组,然后将一个人分类到这些组中的一个。为了实际应用,使用以下年龄组:

  • 1-5岁
  • 6-10岁
  • 11-15岁
  • 16-18岁
  • 19-21岁
  • 22-30岁
  • 31-44岁
  • 45-60岁
  • 61-80岁
  • 80-100岁

有十个组(类别),至少需要10,000张图像来训练CNN。还需要额外的图像来测试训练后CNN的质量。通常,测试需要10-20%的训练数据。因此,数据集中至少需要11-12,000张图像来训练和测试CNN。

不要忘记:不仅图像的总数很重要,样本分布也同样重要。理想的数据集包括每个类别中相同数量的样本,以避免类别不平衡问题。另一个重要方面是:每个年龄组的图像子集必须包括各种条件下的样本:微笑和严肃的面孔;戴眼镜和不戴眼镜的人;男性和女性等。这将使CNN能够从图像中提取各种特征,并只选择那些有助于估计年龄的特征。

获取数据

在决定需要什么数据之后,是时候获取图像了。幸运的是,有许多开放的人脸数据集,可以用它们来实现目的。快速的互联网搜索可以找到几个带有年龄标签的人脸数据集:

  • FGNET - 大约1,000张不同大小的人脸图像,带有年龄标签
  • UTKFace - 大约23,000张200x200像素的人脸图像,带有年龄、性别和种族标签
  • Adience - 大约25,000张带有年龄和性别标签的人脸图像
  • IMDB-WIKI - 超过500,000张带有年龄和性别标签的图像

将使用UTKFace数据集,它包含适当对齐和裁剪的人脸图像,每张图像只有一个人脸。如所见,每个文件名包含三个前缀数字。第一个数字是人物的年龄(以年为单位),第二个是性别标签,最后一个是种族标签。

组织数据

为了方便起见,让在工作计算机上按照以下目录结构组织数据集

C:\Faces C:\Faces\Results C:\Faces\Testing C:\Faces\Training C:\Faces\UTKFace

UTKFace文件夹包含UTKFace数据集中的原始图像,已移除年龄超过100岁的图像。现在需要将原始数据集分成训练和测试部分。以下是一个简单的Python类,用于分割数据:

import os from shutil import copyfile class DataSplitter: def __init__(self, part): self.part = part def split(self, folder, train, test): filenames = os.listdir(folder) for (i, fname) in enumerate(filenames): src = os.path.join(folder, fname) if (i % self.part) == 0: dst = os.path.join(test, fname) else: dst = os.path.join(train, fname) copyfile(src, dst)

传递给类构造函数的part参数是原始数据中将用于测试的部分。folder参数是原始数据集目录的路径,而traintest参数分别代表训练和测试数据集目录的路径。执行以下Python代码将分割数据集:

ds = DataSplitter(10) ds.split(r"C:\Faces\UTKFace", r"C:\Faces\Training", r"C:\Faces\Testing")

原始数据以1:9的比例分割。也就是说,每第十张原始图像将进入测试数据集,其余的九张将保留在训练集中。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485