深度学习年龄估计:入门





5.00/5 (7投票s)
在本文中,我们将开始介绍如何使用深度神经网络从图像中估计一个人的年龄。
为了妥善服务客户,零售商必须了解其客户群的人口统计信息。获取此类数据并非易事。如果零售商能够利用其现有的店内安全摄像头自动收集人口统计信息,那会怎样?
在本系列文章中,您将学习如何使用深度神经网络(DNN) 从图像中估计一个人的年龄。
CNN
让我们用深度学习(DL) 来表述年龄估计问题。由于这个问题可以通过许多不同的方式解决,使用各种 DL 方法,我们必须首先选择合适的方法和工具。我们将使用卷积神经网络(CNN) 作为我们任务的最佳现代工具。CNN 最初被引入为人类视觉系统的简单模型。由于它们继承了该系统的一些属性,因此它们可以解决人类使用视觉所能解决的相同问题:分类对象、识别面孔、预测运动等等。最新研究表明,使用 CNN 可以从面部图像中获得最准确的年龄估计。
回归与分类
为了使用 CNN,年龄估计问题可以有两种不同的表述方式:回归问题或分类问题。对于回归公式,我们有一组人脸图像,其中每张图像上的人物年龄都是已知的。然后,我们训练我们的网络从另一张图像中估计一个人的年龄。
在分类问题中,我们也有带年龄标签的图像集。但在这里,我们将整个年龄区间划分为子区间,引入了几个年龄组。因此,我们训练 CNN 来对图像进行分类,使其属于某个年龄组(类别)。
分类公式似乎更适合我们的目标。首先,我们不需要精确估计一个人的年龄,因为零售商只需要知道“年龄组”来预测客户的购买力就足够了。其次,使用 CNN 方法更容易解决分类问题,并且有许多现成的网络架构可以处理各种图像分类问题。所以这就是我们将要使用的——图像分类。
分类分步进行
解决分类问题的常见步骤如下:
- 收集图像数据集。用于训练和测试 CNN 的图像集是成功解决方案的第一个核心要素。对于我们的任务,我们需要获取包含人脸的图像。所有图像应具有相同的质量和尺寸。每张图像上的人物年龄必须是已知的。
- 设计 CNN 结构。为解决任何分类问题开发独特的 CNN 结构是很常见的做法。这一步对于达到所需的准确性至关重要。在本系列中,我们将选择一种流行的用于图像分类的 CNN 结构——最适合我们问题的结构。
- 创建 CNN。在这里,我们需要使用现有的 DL 框架之一来实现我们设计的 CNN。幸运的是,现代 DL 框架可以轻松构建复杂的 CNN。
- 训练 CNN 进行年龄估计。在这一步,我们将使用创建的 CNN 并编写一些代码将图像输入网络,以训练它进行年龄分类。训练完成后,我们将估计年龄预测的准确性。
- 使用 CNN 进行年龄预测。在最后一步,我们将使用预训练的 CNN 从图像中估计一个人的年龄。在这里,我们需要编写一些代码来加载 CNN 和图像,并运行年龄预测。
在本系列中,上述每个步骤都将作为一篇文章。
工具
我们将用于设计和创建 CNN 以及实现 DL 算法的框架称为Keras。我们选择该框架有几个原因。首先,Keras 是一个开源的跨平台神经网络库。其次,它支持所有现代、最先进的 CNN 架构。最后,它允许以最少的精力和代码编写来解决 DL 问题。由于 Keras 是一个Python 库,我们将用Python 编写所有代码。您可以在您选择的 Python 开发环境中安装 Keras。
为了处理图像,我们需要一个图像处理库。我们的选择是OpenCV。这是图像处理和计算机视觉的实际标准。此外,我们还将使用一些辅助库,例如Scikit-learn。这些库通常预装在常见的 Python 开发环境中。
下一步
如果您——正如我们所希望的——将继续阅读本系列文章,请准备好 Python。从下一篇文章开始,我们将引导您完成创建自己的 DL 年龄估计应用程序的过程。
历史
- 2020年7月17日:初始版本