在零售行业中,了解顾客的年龄对于制定有效的市场策略至关重要。然而,获取这些数据并不总是容易的。如果零售商能够使用现有的店内安全摄像头自动收集人口统计信息会怎样呢?
在本系列文章中,将学习如何使用深度神经网络(DNN)从图像中估计一个人的年龄段。
让将年龄估计问题表述为深度学习(DL)问题。由于这个问题可以用许多不同的DL方法解决,首先需要选择合适的方法和工具。将使用卷积神经网络(CNN)作为任务的最佳现代工具。CNN最初是作为人类视觉系统的一个简单模型引入的。由于它们继承了系统的一些属性,它们可以解决人类使用视觉解决的相同问题:分类对象、识别面孔、预测运动等。最新的研究表明,使用CNN可以从面部图像中获得最准确的年龄估计。
要使用CNN,年龄估计问题可以以两种不同的方式表述:作为回归问题或作为分类问题。对于回归表述,有一组面部图像,每张图像上都有已知的人的年龄。然后训练网络来估计另一张图像上的人的年龄。
在分类问题中,也有一组带有年龄标签的图像。但在这里,将整个年龄区间划分为子区间,引入了几个年龄组。因此,训练CNN对图像进行分类,以确定它们属于哪个年龄组(类别)。
分类表述似乎更适合目标。首先,不需要精确估计一个人的年龄,因为对于零售商来说,只要知道“年龄组”就可以预测顾客的购买力。其次,分类问题更容易使用CNN方法解决,并且有许多现成的网络架构可以应对各种图像分类问题。因此,这就是将要使用的——图像分类。
以下是解决分类问题的常见步骤:
用于学习和测试CNN的图像集是成功解决方案的第一个核心要素。对于任务,需要获取带有面部的图像。所有图像应具有相同的质量和大小。每张图像上的人的年龄必须是已知的。
开发独特的CNN结构以解决任何分类问题是常见做法。这一步对于实现所需的准确性至关重要。在本系列文章中,将选择一个适合问题的流行CNN结构,用于图像分类。
在这里,需要使用现有的深度学习框架实现设计的CNN。幸运的是,现代深度学习框架使得构建复杂的CNN变得容易。
在这一步中,将使用创建的CNN并编写一些代码,将图像输入网络以训练它进行年龄分类。训练完成后,将估计年龄预测的准确性。
在最后一步中,将使用预训练的CNN从图像中估计一个人的年龄。在这里,需要编写一些代码来加载CNN和图像,并运行年龄预测。
在系列文章中,上述每个步骤都是单独的一篇文章。
将用于设计和创建CNN以及实现深度学习算法的框架称为Keras。选择这个框架有几个原因。首先,Keras是一个开源的跨平台神经网络库。其次,它支持所有现代的、最先进的CNN架构。最后,它允许以最小的努力和代码编写来解决深度学习问题。由于Keras是Python库,将用Python编写所有代码。可以在选择的Python开发环境中安装Keras。
要处理图像,需要一个图像处理库。选择的是OpenCV。这是图像处理和计算机视觉的事实上的标准。此外,还将使用一些辅助库,如Scikit-learn。这些通常在常见的Python开发环境中预安装。