机器学习中的人类活动识别

2025年03月17日 | 阅读 9 分钟

人类活动识别(Human Activity Recognition, HAR)是计算机视觉和人机交互领域中一个充满前景的研究方向。它旨在开发能够基于传感器数据自动识别和分类人类行为的系统和技术。

人类活动检测在普适计算、人际通信和人类行为分析中已变得至关重要。HAR的广泛应用促进了人类的安全与福祉。可以利用追踪身体活动、心率和睡眠质量的可穿戴设备来监测个人健康。在智能家居中,基于HAR的解决方案通过识别人员进出房间并相应调节灯光或温度,实现了节能和个人舒适。个人安全设备可以自动通知紧急服务或选定联系人。而这仅仅是冰山一角。

为了更好地理解,我们将构建一个模型,尝试识别人们正在进行的活动。

关于数据集

数据集中,人类活动被分为15个类别。该集合包含约12000多张带标签的图像,包括验证图像。每张照片都对应一个单一的人类活动类别,并存储在为每个已识别类别单独设置的文件夹中。

  • csv:它包含了将用于训练您模型的所有照片。这个文件夹中有15个子文件夹:'calling'(打电话)、'clapping'(鼓掌)、'cycling'(骑行)、'dancing'(跳舞)、'drinking'(喝水)、'eating'(吃饭)、'fighting'(打架)、'hugging'(拥抱)、'laughing'(大笑)、'listening_to_music'(听音乐)、'running'(跑步)、'sitting'(坐着)、'sleeping'(睡觉)、'texting'(发短信)、'using_laptop'(使用笔记本电脑)。
  • csv:包含了5400张人类活动照片。您需要为这些照片预测以下类别名称:'calling'(打电话)、'clapping'(鼓掌)、'cycling'(骑行)、'dancing'(跳舞)、'drinking'(喝水)、'eating'(吃饭)、'fighting'(打架)、'hugging'(拥抱)、'laughing'(大笑)、'listening_to_music'(听音乐)、'running'(跑步)、'sitting'(坐着)、'sleeping'(睡觉)、'texting'(发短信)、'using_laptop'(使用笔记本电脑)。
  • csv:这是将上传到平台的每张图像的预测顺序。请确保您下载的预测结果中,其图像文件名的顺序与此文件中指定的顺序相同。

问题陈述: 人类活动识别(HAR)旨在理解人类行为并对每种行为进行分类。它有着广泛的应用,因此在计算机视觉领域越来越受到关注。人类活动可以通过多种数据模态来表示,包括RGB、骨骼、深度、红外、点云、事件流、音频、加速度、雷达和WiFi信号,这些模态编码了不同来源的有用但截然不同的信息,并根据应用场景具有不同的优势。因此,一些现有出版物已试图研究采用不同模态的各种HAR方法。我们的任务是创建一个使用CNN的图像分类模型,以确定人类正在进行哪种类型的活动。

代码

导入库

加载数据集

一旦图像被加载到系统中,就会创建一个结构化的数据框(dataframe)。这个数据框提供了图像的特定信息,例如文件位置和类别标签。类别标签对于根据指定标准对图片进行分类至关重要,为后续的分析和模型训练奠定了基础。这种有组织的格式简化了图像数据的管理和处理,以便于后续步骤。

输出

Human Activity Recognition Using Machine Learning

选择特征

下面提供的修剪函数接受一个数据框以及最大样本数(max_samples)、最小样本数(min_samples)和一个列名作为参数。它返回一个数据框,其中任何类别的图像数量都不超过 max_samples。如果一个类别的图像少于 min_samples,它将从数据框中被移除。

输出

Human Activity Recognition Using Machine Learning

分割数据集

我们将把数据集分割为训练集、测试集和验证集。

输出

Human Activity Recognition Using Machine Learning

让我们看一些来自训练集的图像。

输出

Human Activity Recognition Using Machine Learning

模型

在这里,我们将创建模型。我们将使用迁移学习和EfficientNetB3模型。


回调(callback)允许用户在训练过程中的关键阶段动态选择是继续还是停止训练。它通过让用户根据自己的偏好调整训练时长,为他们提供了灵活性和控制力。

然后,我们将实例化自定义回调,并创建2个回调来控制学习率和早停(early stop)。

训练模型

我们将让模型在训练集上进行训练。

输出

Human Activity Recognition Using Machine Learning
Human Activity Recognition Using Machine Learning

输出

Human Activity Recognition Using Machine Learning

在测试集上进行预测

我们将定义一个函数,它接受一个测试生成器(test generator)和一个整数 test_steps

并在测试集上生成预测,包括一个混淆矩阵和一个分类报告。

输出

Human Activity Recognition Using Machine Learning
Human Activity Recognition Using Machine Learning

看起来不错,准确率达到了79%。

现在,我们必须保存模型。

输出

Human Activity Recognition Using Machine Learning

处理测试集

输出

Human Activity Recognition Using Machine Learning

模型运行良好。


下一个主题GIS的组成部分