文章:A learnable end-edge-cloud cooperative network for driving emotion sensing
引言:
驾驶员的情绪状态直接影响安全驾驶。在“车-人-路-云”一体化控制框架下,我们提出了一种端-边-云协同情感感知网络模型(EEC-Net)。端侧提取司机人脸视频流的关键帧,并进行批量压缩;边缘侧提取重建图像的感兴趣区域 (ROI) 作为情感识别模型 (tiny_Xception) 的输入进行分类;云控端接收到异常的 ROI 图像数据,进行在线训练,动态调整边缘模型的运行参数。最后,我们在开放和自建的数据集上进行了测试,结果表明tiny_Xception的准确率与 mini_Xception 相比显著提高了 2.45%;EEC-Net 模型能够可靠地感知负面情绪周期,整体系统内存消耗降低约 5%,网络传输数据量和情绪识别的计算时间分别降低 95%、60%。
1.介绍
驾驶员情绪分析在安全驾驶中起着至关重要的作用。由于其在人机交互中的潜在应用,它引起了越来越多的关注,人机交互能够识别主要驾驶员的情绪并根据他们的面部情绪调整他们的行为。研究表明,在现有的交通事故原因分析中,驾驶员的人为因素占 90% 以上 [1]。在驾驶员的人为因素中,“路怒症”是根本原因之一。大约 60% 的机动车司机因在交通拥堵中驾驶的压力和挫败感而患上“路怒症”,这带来了越来越严重的交通安全问题。由“路怒症”引起的攻击性驾驶行为已成为影响交通秩序和安全驾驶的重要因素。因此,识别驾驶员情绪的研究对于维护交通安全具有重要意义。
为了解决大数据量下驾驶员情绪识别的准确性和实时性问题,研究人员利用不同的电子设备来捕捉通过外部信号传达的情绪。随着硬件技术的发展,它变得更容易获得反映人类情绪的信号,例如面部视频序列、声波和脑电图 (EEG) 信号 [2]。其中,面部表情最能直观地反映人的情绪状态和心理活动,是表达情绪必不可少的 [3]。面部表情在情绪识别任务中非常可靠;此外,使用计算机识别表达式具有独特的优势。无论动作有多快,在相机客观捕捉的情况下,计算机都能获取相应的信息并进行处理。通过将面部感知数据与高效稳定的模型相结合,计算机可以低成本处理大规模的情绪识别任务,远超专业人士人工识别情绪的效率。驾驶员的面部识别会自动与驾驶员的身份证件 (ID) 账户网站相匹配。检索上一阶段设置的自动座椅调节、中控显示样式等个性化设置。在驾驶过程中,当检测到驾驶员的路怒表情时,系统可以主动警告驾驶员。长时间自动驾驶识别驾驶员的疲劳状态。结合行程推荐可行的服务区域和停车场信息,确保全程安全驾驶。
在驾驶汽车的相关技术中,感知信息是辅助驾驶做出各种行为决策和运动控制的基础。通过获取充分、准确、可靠的感知信息,辅助驾驶可以做出安全合理的驾驶决策。智能网联汽车依靠各种传感器进行信息感知。通过分析感知数据,可以及早发现驾驶员的异常活动,从而显著提高驾驶安全性。传统上,车载摄像头捕获的视频流会完整上传到远程数据中心,事实证明,远程数据中心在配置资源以进行进一步处理方面非常灵活高效 [4]。但是,这将使网络承担从移动用户到远程数据中心的数据聚合的负担,从而通过分析感知数据显著增加任务处理的响应时间。响应时间对于分析驾驶过程中的感知数据非常重要。在智能网联交通新架构下,将智能计算从车载终端转移到边缘节点,可以有效降低车载终端的计算压力和能耗,促进智能网联汽车的高效决策、协同管理和安全控制。
与其他感知信息相比,相机拍摄数据中的感知信息往往更加丰富和直观,在信息感知中起着至关重要的作用。因此,视频数据是智能网联汽车在进行驾驶员面部情感识别时感知的主要数据类型。在实际应用中,车载摄像头通常具有固定的安装位置、稳定的车载电源和稳定的拍摄角度。它们非常适合作为智能网联汽车中驾驶员的面部信息感知节点 [5]。但是,随着摄像机分辨率的提高,摄像机每秒生成的视频数据会急剧增加。汽车中的单个高清摄像头生成的数据量可以达到每秒数十兆字节。实时视频数据处理对车载情感识别终端提出了巨大的计算和存储要求。无线网络可以连接来自许多车辆的并行视频数据,因此上行链路造成了传输瓶颈。此外,车辆的高速运动会导致无线链路信道环境的动态变化。海量数据的视频传输也会增加无线传输失败的概率,影响情绪识别系统的运行稳定性。
基于上述问题,本文旨在整合边缘计算架构,提高单车和多车场景下驾驶员情绪的识别准确率和处理效率,减少网络传输数据量和系统资源消耗,进一步构建智能车辆安全辅助驾驶系统,帮助制定有效的主动安全控制策略。我们提出了一种端边云协作情感感知网络模型 (EEC-Net)。通过对车载摄像头感知的视频流数据进行一系列优化处理,可以准确获取驾驶员的路怒情绪。EEC-Net 模型的性能在开放和自建数据集上进行测试和评估。实验结果表明,EEC-Net模型的性能远优于传统的驾驶员情感识别模型。本文的主要贡献可以总结如下。
- 在智能网联交通和“车-人-路-云”的一体化控制框架下,提出了网络模型EEC-Net,车内驾驶员表情特征采集、边缘平台集中表情识别、云平台学习和训练的一体化设计保证了分布式情感识别的时效性。
- 在端侧,我们提出了一种基于帧间差异的视频流关键帧提取和基于堆排序的改进霍夫曼图像压缩算法,以实现轻量级图像重建和硬件加速。
- 在边缘侧,我们改进了mini_Xception网络的计算模块,使用 swish 函数的简化 h-swish 激活函数代替传统的整流线性单元 (ReLU) 激活函数,并提出了一种基于感兴趣区域的情感识别模型tiny_Xception,该模型在保持少量函数计算的同时保留了更多的特征,以实现对重构信息的高效、高精度识别。
- 在云控侧,接收边缘服务器识别的异常人脸的感兴趣区域 (ROI) 图像数据,进行在线训练,并将训练后的优化参数下发给边缘服务器,确保边缘模型的工作参数能够动态调整。
- 我们在公共数据集 CASME II 、 Fer2013 和自建数据集 Driver2021 上测试了所提出的模型。结果表明,所提出的EEC-Net比传统的情感识别架构性能更好。
本文的其余部分结构如下。第 2 节概述了边缘计算和深度学习的一些研究以及与情绪识别相关的一些方法。第 3 节提供了包括关键帧提取算法、图像压缩算法、ROI 特征提取和情绪感知学习优化建模在内的方法。我们在第 4 节中介绍了实验结果以评估所提出的方法,最后,在第 5 节中,我们总结了本文。
相关工作
更多的研究旨在通过移动边缘计算协作来满足处理感知数据的延迟要求。**将深度学习与边缘计算相结合,可以显著降低数据传输过程中的数据传输延迟,提高车联网系统的稳定性。**因此,端边云协同计算对于提高智能网联汽车 (ICV) 的驾驶安全性具有重要意义。传统的集中管理平台建设方案主要是通过网络将所有数据上传到云计算中心,并利用云计算中心的超算能力集中解决应用的计算需求 [6]。然而,传统的集中式处理模式在万物互联的背景下存在许多不足。首先,随着边缘设备数量的增加,生成的数据量也激增,导致网络带宽逐渐成为云计算的一部分。其次,随着用户应用数量的增加,未来大型数据中心的能耗需求将难以满足。随着车-路-云协同技术的发展,越来越多的研究集中在通过 MEC 协同满足处理感知数据的时延需求上。将深度学习与边缘计算相结合可以显著减少传输数据所需的时间。因此,可以提高车联网系统的安全性 [7]。一些研究人员对国内外的边缘计算和深度学习进行了详细的研究。Guill ́en 等人 [8] 使用深度学习来评估边缘计算平台的性能,该平台用于预测农业低温,从而为物联网基础设施提供计算资源,而无需添加任何计算资源。Chen 等 [9] 利用全球定位系统 (GPS) 数据集建立了堆栈去噪自编码器的深度模型,提取并利用人员的移动性来预测交通事故风险,并有效集成边缘计算和深度学习,提供交通事故风险的早期预警。
关于情绪识别和分类的研究已经存在一系列。传统的情感识别和分类研究主要包括基于视频图像序列和静态图像的情感识别。Sikka等[10]将视频事件建模为子事件,并应用弱监督学习方法与多个面部特征相结合来预测面部表情、疼痛和意图,以视觉方式表示面部表情的变化。Gao et al. [11] 提出了一种基于开源计算机视觉 (OpenCV) 的面部表情识别方法。该方法通过级联分类器对视频流图像各个位置的各种特征进行窗口检测,得到视频流人脸检测图像,并进行图像预处理。Azman等[12]应用了支持向量机和Viola-jones haar特征算法来监测驾驶员的面部表情。一旦检测到驾驶员持续生气 3 秒,就会发出警报。Breuer 和 Kimmel [13] 使用卷积神经网络 (CNN) 构建了在各种特征提取和缩减 (FER) 数据集上学习的模型,并展示了训练网络进行跨数据集和各种 FER 相关任务的情绪检测的能力。Verma等[14]提出了一种情绪的动态表示,将视频的面部运动信息保存在一帧中,结合横向积累混合网络来捕捉面部表情的微观特征,从而提高模型的准确性。Zhao et al. [15] 提出了一种针对面部特征点的编码策略,利用卷积图网络充分挖掘了不同表情背后面部成分的结构信息,并进一步应用于全脸观察,学习不同表情的全局特征,以推动网络关注信息量最大的面部区域和成分, 在所提出的框架中引入了多级注意力机制,这提高了有效 FER 学习表示的可靠性。Zhang等[16]建议使用大量噪声标记数据来提高在一小组干净标签上训练的FER分类器的性能,提供一种新的姿态建模网络,以自适应地捕获人脸图像深度表示的差异和不同头部下的姿态空间。Jain等[17]提出了一种多角度最优模式深度学习(MAOP-DL)方法,通过使用基于多角度的最优配置来纠正照明变化问题并找到特征集的正确对齐方式;从图像中减去背景和分离前景,然后提取相关关键特征。然后有选择地提取相关特征,并使用长短期记忆卷积神经网络 (LSTM-CNN) 来预测面部表情所需的标签。Chowdary等[18]提出使用一种基于迁移学习的方法,去掉预训练的ConvNet的全连接层,增加一个适合情感识别任务数量的全连接层。Schoneveld等[19]提出了一种模型级融合策略,该策略融合了音频和视觉模式的深度特征表示,然后使用递归神经网络来捕获时间动态以进行情感识别。Said 和 Barr [20] 提出了一种用于人类情感识别的人脸敏感卷积神经网络 (FS-CNN)。FS-CNN 由补丁裁剪和卷积神经网络组成,用于裁剪高分辨率图像人脸并根据特征分析预测面部情绪。
在众多基于深度学习的方法中,一些代表性的作品如表 1 所示。
在智能网联交通系统的新架构下,需要进一步发展该技术体系下的面部表情识别框架,并进行框架建设和技术验证。以上很多研究工作都是对每一帧视频进行检测的,但是当单帧识别率较低时,整体检测会失败。以上部分都依赖于已有的数据集。数据集中的图像序列已经提前进行了分割,因此算法只需要完成模式识别的检测和分类,并不能满足实际任务需求。因此,本文提出了一种端边云协同情感感知网络模型EEC-Net,该模型融合了边缘计算架构,促进了区域多车辆驾驶员表情的分布和高效识别。
3. EEC-Net 模型设计
根据中国智能网联汽车产业联盟发布的车-路-云一体化控制系统框架,路侧单元(RSU)对道路上的智能网联汽车进行无线覆盖,每个RSU都连接到路侧多接入边缘计算(MEC)平台。在此技术体系下,本文提出了一种驱动情感感知的可学习端边云协作网络 EEC-Net。为了指定所提出的 EEC-Net 方法,我们在图 1 中说明了 EEC-Net 的框架。用于驾驶情绪感应的可学习端 edgecloud 协同网络,分为驾驶员人脸感知模块、边缘识别模块、云端在线训练模块。车载摄像头对驾驶员进行人脸感知,进行周期性的人脸视频采集、视频流关键帧提取、图像压缩编码和数据传输;边缘识别接收图像编码数据,并使用集成到 ROI 特征提取中的情感识别模型来识别和分析面部特征。云端接收边缘服务器识别的异常人脸 ROI 图像数据,在线训练,并发布优化后的情绪参数感知学习模型传递给边缘服务器,确保边缘服务器动态调整情感感知学习模型的工作参数。最后,EEC-Net 通过端边云学习模型协同机制,提升车载视频检测和云控制系统的动态服务性能。
3.1. 视频流关键帧提取算法
在实际的驾驶员情绪识别场景中,实时采集驾驶员面部的视频流,转化为连续的图像帧序列,并交付给部署在云平台上的深度学习模型进行集中识别和分类。由于驾驶员的面部表情变化和长期不变的表情循环,视频流中可能存在大量相似的帧。如果将这些相似的帧上传到云端进行识别和分类,会增加网络传输的压力,造成服务器计算、存储、内存占用等资源的浪费。因此,对于情绪识别场景,不需要处理视频流中的每一帧,只需处理变化较大的关键帧即可完成情绪识别任务。本文选取视频流中局部变化较大的关键帧作为网络的输入,并将关键帧的情感分布作为驾驶员路怒情绪识别的判断依据。当驾驶员的面部表情或动作变化较大时,视频流中相邻帧之间的灰度值会存在较大差异,因此提出了一种基于帧间差异的关键帧提取方法;这种方法的主要思想是进行两帧或三帧连续时间的差分运算。将红绿蓝 (RGB) 真彩图像转换为灰度图像后,不同帧的相应像素出现差异,并使用局部最大值选择关键帧,以过滤掉大部分冗余帧。与深度学习算法相比,帧差算法占用资源少,耗时短,精度衰减小。
关键帧提取过程包括以下步骤:1 、输入视频流数据;2、对前后帧图像进行预处理,并进行灰化和高斯滤波;3、计算相邻帧之间的像素差值;4 、引入 smoothing 参数,使峰值更加明显;5、根据 Maximum Local 值提取 DIFFERENCE 值作为关键帧。
3.2. 改进的 Huffman 堆排序图像重建算法
在 EEC-Net 中,边缘侧需要持续接收车载设备长时间传递的驾驶员人脸图像数据,以及大量数据进行情绪识别,这对服务器的内存、计算、存储等性能构成了巨大挑战。因此,在车联网领域,图像无损压缩技术变得必不可少。为了保证压缩和重建的图像不会影响情感识别任务的准确性,需要在不损失图像质量的情况下减小图像数据量。霍夫曼编码作为无损压缩的一种方式,在算法复杂度和压缩效率方面优于其他压缩方法。考虑到情感识别任务场景的实时性要求,进一步提高图像压缩重建的处理速度,该文将传统的霍夫曼图像压缩算法与堆排序算法相结合。我们提出了一种基于堆排序的改进霍夫曼图像压缩算法hs_Huffman,在保证无损压缩的基础上提高了图像压缩的速度。hs_Huffman主要改进了霍夫曼代码生成的霍夫曼树构建中的排序方法,将整个字符串的通用排序算法改为堆排序,采用堆排序选择源符号概率最低的两个节点,并生成新的概率节点添加到序列中进行排序并再次选择。
hs_Huffman算法的过程包括以下步骤:1 ,提取关键帧图像的信息源符号和信息源符号的概率;2,根据概率约束为信息源符号创建一个堆,将堆调整为一个小的根堆,并取出堆顶部的最小数据;3,选择两个概率最小的信息源符号来构建最优霍夫曼树;4,生成一个新的概率节点加法序列,表示两个概率的和;5 ,重复步骤 1 到步骤 4,直到霍夫曼树的构建完成;6、根据原始路径回溯重建图像。改进的 Huffman 堆排序图像压缩如算法 2 所示。
3.3. 驾驶员面部感兴趣区域提取
当使用 EEC-Net 识别驾驶员的情绪时,由于在不同情绪下拍摄的同一个人的面部图像包含相同的特征,如鼻子、耳朵和脸型,这些不相关的特征会减弱关键特征对数据的影响,如嘴巴、眼睛和眉毛,导致 EEC-Net 情绪识别的准确性降低。在本文中,我们考虑将驾驶员面部图像中的感兴趣区域作为输入网络的主体,用于图像识别研究和实验。如果由于驾驶员头部偏移导致无法正确识别人脸的 ROI 特征区域,此类异常的人脸 ROI 图像数据将被传送到云端进行处理。此外,为了避免干扰造成的误检测结果,一些检测到的尺寸较小或长度和宽度不平衡的图像被丢弃。
3.4. 情绪感知学习优化的建模
利用云计算和边缘计算的协同优势,高效识别大规模 ROI 图像数据并反馈路怒症。在云端,接收边缘服务器识别出的异常人脸 ROI 图像数据,在线训练tiny_Xception模型,并将优化后的情绪感知学习模型参数发布到边缘服务器,以便边缘服务器动态调整情绪感知学习模型的运行参数,提高 EEC-Net 情绪识别准确率。CNN 深度学习的持续发展改进了架构,以实现更准确的图像分类技术。同样,tiny_Xception架构是根据几个基本概念开发的,包括卷积层、深度可分离卷积层和初始模块。此外,CNN 架构中的激活函数是必要的,其中 H-Swish 是一种新的激活函数,旨在改进传统的激活函数。本节介绍了 ROI 的深度可分离卷积过程、tiny_Xception架构以及用于驾驶员情绪识别的图像分类模型的 h-swish 激活函数的新修改。
3.4.1. 深度可分离卷积层
tiny_Xception 中的深度可分离卷积结合了深度卷积和点卷积,以减少颜色通道空间和深度维度的计算和建模参数。
这是通过创建与 1 × 1 的卷积核大小来更深入地划分传统卷积过程,将深度卷积与点卷积相关联,从而操作图 3 所示的深度可分离卷积。tiny_Xception的深度可分离卷积,包括相对于 1 × 1 点卷积的 RGB 颜色的每个颜色通道的 3 × 3 个滤镜。深度卷积为输入数据集 M 的每个通道生成一个滤波器,并使用输入通道的一个滤波器生成特征图,该滤波器计算确定 DF × DF × M 和深度卷积。
知识积累
1.什么是Mini-Xception网络
Mini-Xception 是一种基于 Xception 网络的轻量化深度神经网络架构,专为需要高效计算资源的应用场景设计,如移动设备上的实时人脸表情识别、边缘计算等。它继承了 Xception 网络的主要思想,但通过减少网络层数和参数量来实现更好的性能与计算效率的平衡。
背景知识:
Xception 网络全称为 Extreme Inception,它是 Inception 网络的扩展版。Inception 网络采用了多个卷积核尺寸的组合来处理输入数据,但 Xception 引入了 深度可分离卷积(Depthwise Separable Convolution),将标准卷积操作分为 深度卷积(Depthwise Convolution) 和 逐点卷积(Pointwise Convolution)。这种分解减少了参数量,提高了网络的计算效率。
Mini-Xception的特点:
-
轻量化:Mini-Xception 的设计目标是在保证准确率的前提下,减少参数量和计算复杂度,适合资源有限的设备,如移动设备或嵌入式系统。
-
结构简化:相比于标准 Xception 网络,Mini-Xception 网络具有较少的层数,减少了卷积层的深度和卷积核数量。
-
深度可分离卷积:Mini-Xception 继承了 Xception 的关键特性,即使用深度可分离卷积来代替标准卷积。这种卷积操作首先在空间维度上进行分离卷积,再通过 1x1 卷积完成通道间的组合,大大降低了计算开销。
-
实时处理:由于网络的简化和计算效率的提高,Mini-Xception 在许多实时应用中表现优异,如实时人脸表情识别和姿态估计。
Mini-Xception网络的应用:
-
人脸表情识别:Mini-Xception 网络最早被应用于实时人脸表情识别任务中。它能够在低计算资源的条件下,通过摄像头捕获人脸,并识别出多种情感,如快乐、愤怒、悲伤等。
-
边缘计算:由于其低计算需求,Mini-Xception 常被部署在边缘设备上,用于图像处理、对象检测等任务。
-
移动设备:Mini-Xception 适合在移动设备上运行,特别是需要实时反馈的应用,如人脸识别、手势识别等。
Mini-Xception网络结构示例:
以下是一个典型的 Mini-Xception 网络结构简要示例:
def mini_xception(input_shape):
inputs = Input(shape=input_shape)
# Entry flow: First convolution layer
x = Conv2D(8, (3, 3), strides=(1, 1), padding='same')(inputs)
x = BatchNormalization()(x)
x = Activation('relu')(x)
# Depthwise separable convolution blocks
for filters in [16, 32, 64]:
x = SeparableConv2D(filters, (3, 3), padding='same')(x)
x = BatchNormalization()(x)
x = Activation('relu')(x)
x = MaxPooling2D(pool_size=(2, 2))(x)
# Fully connected layers
x = GlobalAveragePooling2D()(x)
x = Dense(64, activation='relu')(x)
x = Dense(num_classes, activation='softmax')(x)
model = Model(inputs, x)
return model
总结:
Mini-Xception 网络通过采用深度可分离卷积、大幅简化网络结构等方式,在保证良好准确率的同时显著减少计算量和参数量,适合在资源受限的设备上进行高效的实时应用,如人脸表情识别、移动设备视觉处理等。
2.数据集 CASME II 、 Fer2013 的介绍
CASME II 和 FER2013 是两个常用于情感分析和面部表情识别的著名数据集。它们各自有不同的特点,广泛应用于计算机视觉和情感计算的研究中。以下是这两个数据集的详细介绍:
1. CASME II
全称:Chinese Academy of Sciences Micro-Expression II
用途:微表情识别
数据集概述:
CASME II 是一个专注于微表情识别的高质量数据集,由中国科学院心理研究所发布。它包含了自发的、经过标注的微表情视频,这些视频通过捕捉被试在观看特定情感刺激时的表情变化来获得。
特点:
- 微表情:CASME II 特别关注的是 微表情,这类表情通常持续时间非常短(20至200毫秒),并且具有不易察觉的面部肌肉运动变化。微表情在反映情绪时通常被隐藏,因此识别这些表情在安全、心理学和人机交互等领域具有重要意义。
- 高帧率:数据集以 200 fps(帧/秒)的速率录制,确保能够捕捉到微妙且快速的表情变化。
- 参与者:CASME II 中包含 35 名中国人的微表情视频片段。
- 标签:每个视频片段都有情感标签,主要包括 7 种表情类别:愤怒(Anger)、厌恶(Disgust)、恐惧(Fear)、开心(Happiness)、悲伤(Sadness)、惊讶(Surprise)和其他(Others)。
数据格式:
- 视频片段分为不同的微表情序列,经过专家手动标注,提供了高质量的微表情标签。
- 包括每个视频的起始帧、结束帧和表情的发生帧。
应用场景:
CASME II 广泛应用于微表情分析、情感计算、心理学研究和安全监控等领域,特别是用于识别短暂、难以觉察的表情变化。
2. FER2013
全称:Facial Expression Recognition 2013
用途:面部表情识别
数据集概述:
FER2013 是在 2013 年的 Kaggle 比赛中发布的用于面部表情识别的公开数据集。该数据集包含了大量标注的面部图像,旨在推动面部表情识别任务的进展。
特点:
-
图像规模:数据集包含 35,887 张灰度图像,每张图像的分辨率为 48x48 像素。这些图像是从网络上抓取并通过自动标注系统生成的。
-
表情类别:FER2013 的图像标注有 7 种基本表情类别,包括:
- 愤怒(Angry)
- 厌恶(Disgust)
- 恐惧(Fear)
- 开心(Happy)
- 悲伤(Sad)
- 惊讶(Surprise)
- 中性(Neutral)
-
分割:数据集分为训练集、验证集和测试集。每个类别的图像数量相对平衡,方便训练和测试表情识别模型。
数据格式:
- 每个样本是一个 48x48 像素的灰度图像,并附有相应的表情类别标签。
- 图像中包含各种不同的面部角度、光照条件和背景,这为表情识别任务带来了现实中的挑战。
应用场景:
FER2013 主要用于深度学习领域的面部表情识别任务,常用于训练卷积神经网络(CNN)模型,尤其适合用于表情分类、情感分析等任务。由于它包含大量的图像,它也是一个适合训练深度神经网络的大规模数据集。
数据集的对比:
- CASME II:专注于微表情,包含高帧率视频数据,面向短时间内的微表情变化。适合用于微表情识别、心理学等领域的研究。
- FER2013:包含大规模静态表情图像,适合用于表情分类任务,特别是在面部表情识别和深度学习研究中的应用。
总结来说,CASME II 强调高帧率的微表情分析,而 FER2013 提供了大量低分辨率的静态图像用于表情分类,两者各有不同的应用场景。
3.学会自建数据集(待学习)
4.深度学习和边缘计算相结合
深度学习和边缘计算相结合 是近年来非常热门的研究方向。随着物联网(IoT)、智能设备和5G技术的发展,越来越多的应用需要在边缘设备上进行实时处理,如自动驾驶、智能家居、无人机、工业监控等场景。这种结合能够解决传统云计算的一些问题,例如延迟、带宽限制和隐私安全问题。
1. 边缘计算概述
边缘计算 是指在靠近数据源的地方进行计算和数据处理,而不是将所有数据传输到中央服务器或云端处理。这样可以减少数据传输的延迟、降低带宽需求,并提高系统的响应速度。
边缘计算的优势:
- 低延迟:由于数据在靠近源头的地方处理,通信和处理延迟较低,适用于实时性要求高的任务。
- 带宽节省:无需将所有数据上传到云端,减少了网络带宽的压力。
- 隐私保护:数据可以在本地处理,敏感信息不需要传输到远程服务器,有助于提高用户隐私。
- 脱机运行:部分任务可以在没有网络连接的情况下本地执行,增强了系统的可靠性。
2. 深度学习与边缘计算结合的必要性
深度学习 是当前最为有效的人工智能技术之一,广泛应用于图像识别、语音识别、自然语言处理等任务。然而,深度学习模型往往需要大量的计算资源和存储空间。传统上,这些深度学习任务大多依赖于云端服务器的强大计算能力。
然而,随着边缘计算的发展和需求,深度学习模型在边缘设备上进行推理或甚至训练成为一种新趋势。这种结合带来了许多优势:
主要动机:
-
实时性要求:在一些对实时性要求较高的任务中(如自动驾驶、无人机导航、人脸识别等),无法承受将数据传输到云端再返回的时间延迟。因此,必须在边缘设备上完成深度学习模型的推理。
-
带宽限制:大量的数据传输(如视频流、传感器数据)会消耗大量网络带宽。如果可以在边缘设备上直接处理数据,可以显著减少需要传输的数据量。
-
隐私和安全:许多应用场景涉及到敏感的个人数据,如家庭监控、医疗数据等。将这些数据留在本地进行处理而不是上传到云端,可以提高隐私和数据安全性。
-
离线工作:在某些情况下,边缘设备可能无法时刻连接到互联网,例如远程监控系统或无人机。如果深度学习模型能够在边缘设备上独立运行,即使离线也能继续工作。
3. 结合的技术挑战
将深度学习与边缘计算相结合并非易事,主要面临以下几个挑战:
模型大小和计算资源限制:
- 深度学习模型往往非常大,如 ResNet、VGG 等经典卷积神经网络模型可能包含上亿个参数。这对于资源有限的边缘设备(如手机、摄像头、物联网设备)来说,计算和存储都是极大的挑战。
功耗:
- 边缘设备通常功耗有限,不能承受高计算量的持续运行。如何在保持低功耗的同时运行复杂的深度学习模型,是一个亟待解决的问题。
模型优化:
- 为了解决边缘计算设备计算能力不足的问题,深度学习模型通常需要进行压缩和优化,如:
- 模型量化:将 32 位浮点数表示的参数量化为 8 位或更低,以减少计算复杂度和存储需求。
- 模型剪枝:通过剪枝移除网络中不重要的参数或神经元,以减少模型规模和计算开销。
- 知识蒸馏:利用大型模型(教师模型)训练出一个较小的模型(学生模型),使得较小的模型也能达到接近教师模型的性能。
- 轻量化模型设计:设计轻量化的深度学习模型,如 MobileNet、ShuffleNet、SqueezeNet 等,专门用于边缘设备上的深度学习任务。
网络连接不稳定:
- 边缘设备通常工作在网络环境不稳定或者带宽较低的条件下,这要求模型在网络环境差的情况下也能有较好的表现。
4. 典型应用场景
1. 自动驾驶
自动驾驶汽车必须实时分析环境信息,包括行人、车辆、交通标志等,这要求在汽车的边缘设备(如摄像头、雷达传感器等)上运行深度学习模型进行实时分析。边缘计算的低延迟优势能够确保汽车在快速变化的环境中做出及时反应。
2. 智能家居
智能家居中的边缘设备(如智能音箱、摄像头、门锁等)通常依赖于深度学习来识别用户的语音命令、监控家庭安全等。这些设备需要在本地处理大量的数据,尤其是涉及用户隐私的数据。
3. 工业物联网
在工业4.0背景下,工厂中的传感器和摄像头生成大量数据,实时监测设备状态、检测产品缺陷等。这些数据可以直接在边缘设备上处理,避免了数据传输的延迟和带宽瓶颈。
4. 无人机
无人机常用于农田监测、交通监控、灾害管理等场景。这些任务中,无人机需要进行实时图像识别和决策,而不能完全依赖远程服务器的计算能力,因此需要在边缘端运行深度学习模型。
5. 未来方向
- 硬件加速:像 TPU(Tensor Processing Unit)、NPU(Neural Processing Unit)等专用芯片已经在边缘设备上被广泛应用。这些硬件为边缘设备上的深度学习推理提供了高效支持。
- 联邦学习:结合边缘计算与联邦学习技术,数据不需要上传到中央服务器,模型可以在本地设备上进行训练,并通过共享模型参数实现协同学习,进一步增强隐私保护。
总结
深度学习与边缘计算的结合 实现了在资源受限的边缘设备上运行复杂的AI任务,提供了低延迟、高隐私和实时性处理的优势。虽然面临计算资源和功耗的挑战,但通过模型优化、硬件加速和创新算法,深度学习将在边缘计算领域发挥越来越重要的作用。
5.路测单元(RSU)
路侧单元(RSU,Roadside Unit) 是智能交通系统(ITS)中重要的基础设施组件,通常安装在道路旁边,用于支持车联网(V2X, Vehicle-to-Everything)通信。RSU 是智能网联交通环境下的关键设备之一,能够与车辆、交通控制系统以及云平台等进行数据交互。
RSU的主要功能:
-
数据采集:RSU能够通过安装的传感器采集道路、交通流量、环境等信息,如车辆速度、交通流量、路况信息等。
-
车辆通信中继:RSU充当车与车(V2V)、车与基础设施(V2I)以及车与网络(V2N)之间的通信中继,确保车辆能够在不同环境中实现无缝的连接与数据交换。例如,当两辆车之间的直接通信受限时,RSU 可以作为中继节点,帮助车辆之间转发数据。
-
车路协同:RSU可以为车辆提供实时的道路信息、交通灯信号状态、车道封闭、事故警告等数据,帮助车辆进行驾驶决策。它还可以协调不同车辆之间的交通行为,例如在交叉路口优化交通流量。
-
支持边缘计算:RSU通常与多接入边缘计算(MEC)平台结合,提供边缘计算资源。通过在靠近数据源的地方进行计算,RSU 可以减少数据传输到云端的延迟,提升实时数据处理的能力。这在自动驾驶、车内娱乐和驾驶员监控等应用中尤为重要。
-
安全监控:RSU可以收集和分析交通和车辆数据,帮助识别潜在的安全隐患,如路面上的异常行为、交通违规等,并将相关信息传递给交通管理中心或云端平台。
RSU的应用场景:
-
交通管理:RSU可以实时监控和优化交通流量,减少拥堵,优化信号灯控制,提高道路利用率。
-
自动驾驶支持:在自动驾驶环境中,RSU可以为车辆提供高精度的环境感知信息,如交通标志、信号灯状态和道路危险预警等,辅助车辆作出更好的驾驶决策。
-
车联网应用:RSU支持车辆与周围基础设施、其他车辆、行人和网络的实时交互,实现车联网的各种应用场景,如自动收费、车队管理、道路安全预警等。
-
边缘计算与智能交通:通过与边缘计算结合,RSU能够快速处理来自车辆和道路的实时数据,支持高速、低延迟的智能交通应用,如实时事故预警和交通优化。
RSU的技术要求:
- 通信协议:RSU通常支持多种车联网通信协议,如DSRC(专用短程通信)和C-V2X(蜂窝车联网)。
- 计算能力:作为边缘节点,RSU需要具备一定的计算能力来处理数据,特别是与多接入边缘计算平台结合时,能够支持本地的实时数据分析和计算任务。
- 可靠性和稳定性:RSU作为基础设施组件,通常需要具备全天候运行的能力,能够在恶劣天气条件下或复杂的交通环境中保持正常运行。
RSU 是实现智能网联车辆、智能交通系统和智慧城市的重要组成部分,通过车路协同和边缘计算等技术,RSU有助于提升交通安全、减少拥堵并推动自动驾驶的广泛应用。
6.使用h-switch激活函数代替原有的RELU激活函数
使用简化的h-swish(Hard-Swish)激活函数替代传统的ReLU激活函数是一种优化深度神经网络性能的策略,尤其是在移动设备等计算资源有限的环境中。h-swish是一种改进的非线性激活函数,它与Swish激活函数类似,但在计算复杂度上有所简化。
1. ReLU激活函数
ReLU(Rectified Linear Unit)的定义如下:
f ( x ) = max ( 0 , x ) f(x) = \max(0, x) f(x)=max(0,x)
虽然ReLU简单且有效,但它有以下问题:
- 负值区域没有梯度,可能导致梯度消失问题(Dead ReLU)。
- 它并没有考虑输入值大于零但接近零的部分,而这些值在某些任务中可能有用。
2. h-swish激活函数
Hard-Swish (h-swish) 是一种基于 Swish 的近似版本,计算更高效,定义如下:
h-swish ( x ) = x ⋅ min ( max ( x + 3 , 0 ) , 6 ) 6 \text{h-swish}(x) = x \cdot \frac{\min(\max(x + 3, 0), 6)}{6} h-swish(x)=x⋅6min(max(x+3,0),6)
或者可以简化为:
h-swish
(
x
)
=
x
⋅
ReLU6
(
x
+
3
)
6
\text{h-swish}(x) = x \cdot \frac{\text{ReLU6}(x + 3)}{6}
h-swish(x)=x⋅6ReLU6(x+3)
其中,ReLU6 是将输入值限制在 [0, 6] 的 ReLU 函数。
相比于标准的 Swish 函数:
Swish ( x ) = x ⋅ σ ( x ) \text{Swish}(x) = x \cdot \sigma(x) Swish(x)=x⋅σ(x)
其中, σ ( x ) \sigma(x) σ(x) 是 Sigmoid 函数。Swish 的计算需要 Sigmoid,这在资源受限的环境中计算较为复杂。而 h-swish 用更简单的操作来近似 Swish 函数,从而大大降低了计算成本。
3. 为什么选择 h-swish 替代 ReLU?
- 更平滑的非线性:h-swish 在接近零的区域比 ReLU 更平滑,能够更好地保持梯度传播,解决ReLU的“死亡”问题。
- 低计算成本:h-swish 的计算复杂度接近 ReLU,但它保留了 Swish 的部分优势,比如在负值区域也能保留部分信息。
- 适合移动设备:h-swish 是 MobileNetV3 中的主要激活函数,它在低算力设备上表现出色,计算效率高且性能优越。
4. 实现 h-swish 激活函数
在大多数深度学习框架(如 TensorFlow 或 PyTorch)中,h-swish 可以轻松实现。以 PyTorch 为例:
import torch
import torch.nn as nn
class HSwish(nn.Module):
def forward(self, x):
return x * torch.relu6(x + 3) / 6
# 替换 ReLU 为 HSwish
model = nn.Sequential(
nn.Linear(128, 64),
HSwish(),
nn.Linear(64, 10)
)
通过替换 ReLU 为 h-swish,网络模型在性能和计算效率上可以取得更好的平衡,尤其是在资源受限的设备上(如手机、嵌入式设备等)。
5. 实际应用
h-swish 已被应用于 MobileNetV3 等轻量级网络中,实验证明它能够显著减少推理时间,提升模型的整体性能。
总结
在计算资源有限的场景中,h-swish 激活函数是 ReLU 的优秀替代选择,它通过简化 Swish 的计算方式,提供了更平滑的非线性特性,同时保持了高效的计算性能。