当前位置: 首页 > news >正文

基于Resnet、LSTM、Shufflenet及CNN网络的Daily_and_Sports_Activities数据集仿真

在深度学习领域,不同的网络结构设计用于解决特定的问题。本文将详细分析四种主流网络结构:卷积神经网络(CNN)、残差网络(ResNet)、长短期记忆网络(LSTM)和洗牌网络(ShuffleNet),并通过实际的实验,来分析一下这四种网络结构对于Daily_and_Sports_Activities数据集的实验仿真效果。
要在文章一开始配合图例的方式更具体地介绍数据集和实验目标,可以采用以下结构:


一、Daily_and_Sports_Activities数据集与实验目标

1.1 Daily_and_Sports_Activities数据集简介

Daily_and_Sports_Activities数据集包含了19类日常活动和体育活动的图像,旨在训练和测试深度学习模型对不同活动类型的识别能力。
在这里插入图片描述

并且数据集中的图像经过预处理,都变成了包含有各种动作信息的坐标,方便我们去进行进一步的实验分析:
在这里插入图片描述
在这里插入图片描述

1.2 实验目标

我们的目标是评估和比较四种不同的深度学习网络结构在处理同一数据集时的性能。具体来说,我们将关注以下几个关键指标:

  • 准确率(Accuracy):模型正确分类的图像比例。
  • 精确率(Precision):在所有预测为正的图像中,真正为正的比例。
  • 召回率(Recall):在所有实际为正的图像中,被正确预测为正的比例。
  • F1分数(F1-score):精确率和召回率的调和平均值,衡量模型在精确度和召回率之间的平衡。
  • 参数量(Parameter):模型中的总参数数量,影响模型的复杂度和计算资源需求。
  • 推理时间(Inference Time):模型对单个图像进行预测所需的时间,反映模型的实时处理能力。

二、四种网络结构对比分析

1.CNN(Convolutional Neural Network)

CNN 是深度学习中用于处理具有网格结构的数据(如图像)的网络结构,卷积神经网络的基本结构大致包括:卷积层、激活函数、池化层、全连接层、输出层:
在这里插入图片描述

更具体来看:
在这里插入图片描述

网络代码实现:

class CNN(nn.Module):def __init__(self, train_shape, category):super(CNN, self).__init__()# 构建卷积层、批量归一化层和ReLU激活函数的序列self.layer = nn.Sequential(# 卷积层的参数:输入通道、输出通道、卷积核大小、步长、填充nn.Conv2d(1, 64, (3, 1), (2, 1), (1, 0)),nn.BatchNorm2d(64),nn.ReLU(),# 更多卷积层...)# 自适应平均池化层和全连接层self.ada_pool = nn.AdaptiveAvgPool2d((1, train_shape[-1]))self.fc = nn.Linear(512*train_shape[-1], category)

特点分析

  • 局部连接:每个卷积神经元只与输入数据的一个局部区域相连接,这减少了计算量。
  • 权重共享:卷积核的权重在整个输入数据上共享,进一步减少模型参数。
  • 层次结构:通过多层结构,CNN能够学习从简单到复杂的特征表示。
  • 自动提取特征:无需手动设计特征提取器,CNN能够自动学习数据中的特征。

2.ResNet(Residual Neural Network)

在这里插入图片描述

残差网络是一种深度学习模型,通过引入“残差学习”的概念来解决深度神经网络训练困难的问题。ResNet 通过引入残差学习解决了深层网络训练中的梯度消失问题。

class Block(nn.Module):def __init__(self, inchannel, outchannel, stride):super().__init__()# 构建残差块self.block = nn.Sequential(nn.Conv2d(inchannel, outchannel, (3, 1), (stride, 1), (1, 0)),# 更多层...)# 残差连接self.short = nn.Sequential()if (inchannel != outchannel or stride != 1):self.short = nn.Sequential(nn.Conv2d(inchannel, outchannel, (3, 1), (stride, 1), (1, 0)),)

输入通过一个或多个卷积层后,与输入相加,形成残差。这样做可以使得网络学习到的是输入和输出之间的残差,而不是直接学习输出,从而缓解了梯度消失问题,使得网络可以成功训练更深的模型。
在这里插入图片描述

特点分析

  • 残差连接:通过添加输入到输出,允许梯度更有效地传播到前面的层。
  • 简化训练:残差连接使得网络可以训练得更深,而不会出现梯度消失或爆炸的问题。
  • 恒等映射:在某些情况下,网络层可以学习到恒等映射,这有助于网络学习更复杂的函数。

3.LSTM(Long Short-Term Memory)

LSTM 是一种特殊的 RNN,设计用来解决长序列数据中的梯度消失问题。在这里插入图片描述

class LSTM(nn.Module):def __init__(self, train_shape, category):super().__init__()# 构建LSTM层self.lstm = nn.LSTM(train_shape[-1], 512, 2, batch_first=True)# 全连接层self.fc = nn.Linear(512, category)

特点分析

  • 门控机制:包含输入门、遗忘门和输出门,控制信息的流动,使得网络能够学习长期依赖。
  • 序列处理:LSTM能够处理序列数据,适用于时间序列预测、语言模型等任务。
  • 记忆能力:LSTM的单元状态可以跨越时间步骤进行信息传递,这使得网络能够记住长期信息。

4.ShuffleNet(洗牌网络)

ShuffleNet 是一种轻量级的 CNN,设计用于移动和嵌入式设备,它通过使用分组卷积和通道洗牌操作来减少计算量,同时保持了较高的准确率。
在这里插入图片描述

分组卷积:将输入通道分成多个组,每组独立进行卷积操作,然后合并结果。这样可以减少计算量和参数数量。
在这里插入图片描述

通道洗牌:在分组卷积后,通过通道洗牌操作重新混合不同组的特征图,以保持特征的多样性。在这里插入图片描述

class ChannelShuffleModule(nn.Module):def __init__(self, channels, groups):super().__init__()# 通道混合模块

特点分析

  • 深度可分离卷积:减少了模型的计算量和参数数量。
  • 通道混合:通过重组通道提高了模型的表达能力,同时保持了计算效率。
  • 轻量化设计:ShuffleNet通过特定的设计减少了模型的复杂性,适用于计算资源受限的环境。

5.总结

每种网络结构都有其特定的优势和适用场景,CNN 提供了一种强大的特征提取方法,适用于图像识别等领域。ResNet 通过残差连接解决了深层网络的训练难题。LSTM 以其门控机制在序列数据处理方面表现出色。ShuffleNet 则是一种为移动和嵌入式设备设计的轻量级网络。在设计深度学习模型时,需要根据任务的具体需求、数据的特性以及可用的计算资源来选择最合适的网络结构,接下来我们将进行实际的实验训练,来分析一下这四种网络结构对于Daily_and_Sports_Activities数据集仿真实验。

三、具体的实验仿真和对比

在对Daily_and_Sports_Activities数据集进行的实验中,我们对比了CNN、ResNet、LSTM和ShuffleNet四种网络结构的性能。

Daily_and_Sports_Activities 数据集训练方法概述

训练Daily_and_Sports_Activities数据集涉及几个关键步骤,包括数据预处理、模型选择、训练配置、训练执行以及评估,以下是我们整个流程的概述:

  1. 环境搭建:导入所需的库,包括PyTorch、NumPy、os等,并设置工作目录。

  2. 参数解析:使用argparse库解析命令行参数,设置数据集、模型、保存路径、批量大小、训练周期数和学习率等。

  3. 数据集和模型定义:定义数据集和模型的字典,便于选择不同的数据集处理类和模型架构。

  4. 参数处理和设备配置:根据参数设置数据保存路径、选择计算设备(GPU或CPU)。

  5. 数据加载和预处理:加载数据集,如果.npy格式的数据已存在则直接加载,否则进行数据预处理并保存。

  6. 张量转换:将数据和标签转换为PyTorch张量,为模型训练做准备。

  7. 模型实例化:根据选择的模型架构实例化模型对象。

  8. 数据加载器:创建训练和测试的DataLoader,用于批量加载数据。

  9. 配置优化器和损失函数:设置AdamW优化器、学习率调度器和交叉熵损失函数。

  10. 训练执行:进行训练循环,包括前向传播、损失计算、反向传播和参数更新。

  11. 评估:在每个周期结束时,在测试集上评估模型性能,计算准确率、精确度、召回率和F1分数。

  12. 结果记录:打印输出训练和测试结果,记录模型性能。

整个过程记录我们自己的模型训练和评估的流程,具体的代码太过于多,就不展示了,需要可以联系我获取。

1.1 CNN网络结构

在这里插入图片描述

1.2 训练结果

在这里插入图片描述

2.1 ResNet网络结构

在这里插入图片描述

2.2 训练结果

在这里插入图片描述

3.1 LSTM网络结构

在这里插入图片描述

3.2 训练结果在这里插入图片描述

4.1 shufflenet网络结构

在这里插入图片描述

4.2 训练结果

在这里插入图片描述

四、实验结果分析

将四种模型得到的训练结果写入表格中,得到了如下图所示的结果,分别对其 准确率(Accuracy)、精确率(Precision) 、召回率(Recall) 、F1分数(F1-score)、参数量(Parameters)和推理时间(Inference Time) 进行分析和对比:

1.实验结果概览

模型名准确率(Accuracy)精确率(Precision)召回率(Recall)F1分数(F1-score)参数量(Parameter)推理时间(Inference Time)
CNN0.87930.91600.87930.89739569471.3570
ResNet0.87240.91940.87340.895315027373.3007
LSTM0.80300.82440.80300.813633940652.7796
ShuffleNet0.87160.90790.87160.889411603411.7889

2.分析与总结

2.1准确率与召回率

  • CNN 在准确率上表现最佳,达到了0.8793,其次是ResNet,准确率为0.8724。这表明CNN在分类任务上具有较好的总体性能。
  • LSTM 的准确率和召回率较低,分别为0.8030,这可能与其处理时间序列数据的特性有关,而DASA数据集可能不完全适合LSTM的结构。

2.2精确率与F1分数

  • ResNet 在精确度上表现最佳,达到了0.9194,这表明其在预测时具有较高的置信度。
  • CNNResNet 的F1分数接近,分别为0.8973和0.8953,说明两者在精确度和召回率之间取得了较好的平衡。

2.3参数量

  • LSTM 拥有最多的参数,达到了3394065,这可能是由于其复杂的门控机制导致的。
  • ResNet 由于其深层结构,参数量也较多,为1502737。
  • ShuffleNetCNN 的参数量相对较少,分别为1160341和956947,这使得它们在计算资源受限的环境中更具优势。

2.4推理时间

  • CNN 的推理时间最短,为1.3570秒,这与其较少的参数量和高效的卷积运算有关。
  • LSTM 的推理时间最长,为2.7796秒,这可能是因为其处理序列数据的循环特性导致计算成本较高。
  • ShuffleNet 的推理时间为1.7889秒,介于CNN和LSTM之间。

3.个人观点

从实验结果来看,CNN和ResNet在准确率和精确度上表现较为突出,这可能是因为它们能够有效地捕捉图像特征,并且ResNet的残差连接有助于训练更深的网络。LSTM虽然在参数量上最多,但在该数据集上的表现并不理想,可能是因为DASA数据集并不完全是序列数据,LSTM的优势在于处理长序列依赖关系,而DASA数据集的特点可能并未充分发挥这一优势

ShuffleNet在推理时间上表现良好,这表明它在需要快速推理的应用场景中可能是一个不错的选择。同时,它的参数量和准确率也相对平衡,适合资源受限的设备。

综上所述,选择哪种网络结构应根据具体的应用场景和需求来决定。如果需要快速推理并且对准确率有一定要求,CNN或ShuffleNet可能是更好的选择;如果需要构建深层网络并且对精确度有较高要求,ResNet可能更合适;而LSTM可能更适合那些具有明显时间序列特性的数据集。

相关文章:

基于Resnet、LSTM、Shufflenet及CNN网络的Daily_and_Sports_Activities数据集仿真

在深度学习领域,不同的网络结构设计用于解决特定的问题。本文将详细分析四种主流网络结构:卷积神经网络(CNN)、残差网络(ResNet)、长短期记忆网络(LSTM)和洗牌网络(Shuff…...

mac系统vsCode中使用Better Comments在.vue文件里失效

问题:关于Better Comments默认在html、TS、JS中有效,在vue中无效,需要单独进行配置 windows系统可以参考友链Better Comments(注释高亮)在vue文件里失效的问题 关于Better Comments电脑的配置路径: Windows系统&…...

UE5.3 C++ Ceiusm中的POI 制作3DUI 结合坐标转化

一.核心思路WidgetComponent CesiumGloberAnchor 二.先制作POI 创建C Actor来制作,APOI。直接上代码 #pragma once#include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "CesiumGlobeAnchorComponent.h" #includ…...

一起学Git【第六节:查看版本差异】

git diff是 Git 版本控制系统中用于展示差异的强大工具。他可以用于查看文件在工作区、暂存区和版本库之间的差异、任意两个指定版本之间的差异和两个分支之间的差异等,接下来进行详细的介绍。 1.显示工作区与暂存区之间的差异 # 显示工作区和暂存区之间的差异,后面不加参数…...

numpy np.newaxis介绍

np.newaxis 是 NumPy 中用于增加数组维度的关键字。它的作用是为数组插入一个新的维度,从而改变数组的形状(shape)。 基本用法 np.newaxis 等价于 None,可以作为索引使用,用于在指定位置增加一个维度。增加的维度的大…...

小程序配置文件 —— 16 项目配置文件和配置 sass

目录 项目配置文件配置 sass 项目配置文件 在创建项目的时候,每个项目的根目录生成两个 config.json 文件(project.config.json 和 project.private.config.json ),用于保存开发者在工具上做的个性化配置,例如和编译有…...

【yolov5】实现FPS游戏人物检测,并定位到矩形框上中部分,实现自瞄

介绍 本人机器学习小白,通过语言大模型百度进行搜索,磕磕绊绊的实现了初步效果,能有一些锁头效果,但识别速度不是非常快,且没有做敌友区分,效果不是非常的理想,但在4399小游戏中爽一下还是可以…...

概率统计与随机过程--作业5

一、推导题 二、计算题 1、某单位为了研究太阳镜销售和广告费用之间的关系,搜集了以下数据,使用回归分析方法得到线性回归模型: 广告费用(万元)x 2 5 6 7 22 25 28 30 22 18 销售量(个&#xf…...

“802.11g”,“802.11n”,“802.11ac”,“802.11ax”

802.11g、802.11n、802.11ac、802.11ax都是IEEE制定的无线局域网(WLAN)标准,它们各自具有不同的特点和性能。以下是对这四个标准的详细介绍: 1. 802.11g 定义:802.11g是IEEE制定的一种无线局域网标准,它提…...

Kubernetes 常用的网络插件

上篇内容跟大家简单聊了k8s网络模型原理。分别围绕着容器、Pod、Service、网络策略等展开了详细的讲解。这次想跟大家聊聊k8s的CNI网络插件。 CNI 是 Kubernetes 网络模型的核心组件,它是一个插件接口,允许用户选择和配置网络插件来管理 Pod 的网络。CN…...

Retrofit和rxjava 实现窜行请求,并行请求,循环多次请求,递归请求,错误重试

在使用 Retrofit 和 RxJava 时,可以通过多种方式实现多次请求,比如串行请求、并行请求、依赖请求等。以下是一些常见的实现方式: 1. 串行请求(依赖关系) 一个请求的结果作为另一个请求的输入,可以用 flat…...

2025年度好用便签推荐,电脑桌面便签app分享

在快节奏的现代生活中,高效的时间管理和任务规划变得尤为重要。一款好用的便签软件不仅能帮助我们记录灵感、待办事项,还能极大地提升我们的工作效率。 在众多电脑桌面便签中,好用便签以其出色的桌面便签功能脱颖而出,备受用户青…...

【论文解读】Arbitrary-steps Image Super-resolution via Diffusion Inversion

级别:arXiv Computer Vision and Pattern Recognition(2024)作者:Zongsheng Yue,Kang Liao,Chen Change Loy时间:2024论文链接:Arbitrary-steps Image Super-resolution via Diffusion Inversion摘要 技术概述:该技术基于扩散反转,通过设计部分噪声预测策略来构建扩散…...

kkFileView集成springboot:使用自定义预览接口(非minio预览接口),发现无法预览资源

目录 1、背景2、原因分析3、解决办法 1、背景 按照项目验收要求,需要对minio中存储的数据进行加密 之前提供给kkFileView的预览地址都是获取的minio预览地址 由于minio中的资源进行了加密处理,所以我们自定义预览接口(进行解密操作&#xff…...

被裁20240927 --- 嵌入式硬件开发 STM32篇

人很容易原谅别人的错误但很难原谅别人的正确 1. 文档、手册、指南、资源2. MCU 结构3. MCU 和 MPU 的区别4. 一些概念什么是看门狗 ?什么是 DMA ?什么是晶振 ?什么是片内外设?软件协议、硬件协议、数据协议、通讯协议、通信协议u…...

留学生交流互动系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…...

C/C++ 数据结构与算法【图】 图+邻接矩阵+邻接表+DFS+BFS+最小生成树+最短路径+拓扑排序详细解析【日常学习,考研必备】带图+详细代码

一、图的定义 1)无向图,有向图,完全图 2)稀疏图,稠密图,网,邻接,关联 3)度 4)路径 5)连通图 6)权与网 7)子图 8&#xff0…...

Linux实验报告7-文件管理

目录 一:实验目的 二:实验内容 (1)查看/etc/inittab文件的权限属性,并指出该文件的所有者以及文件所属组群。 (2)新建文件test,设置文件权限为r--r-----。 (3)新建文件test2,设系统中有用户study和用户组studygr…...

RJ45网口模块设计

1、以太网概述及RJ45实物 2、常用网口信号介绍 3、RJ45网口布局布线要点分析 4、总结 1、变压器下面需要进行挖空处理,以免底下的铜引入干扰,(将多边形挖空区域的所在层设置为Multi-Layer多层) 2、为了更直观的看一个类中线的长…...

电子电器架构 --- 智能座舱HUD技术革新

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源&…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

JVM垃圾回收机制全解析

Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...

MySQL的pymysql操作

本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

消息队列系统设计与实践全解析

文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...