Inception模型实现孤立手语词的识别

news2024/12/22 15:55:10

实现孤立手语词的识别流程如下,在实际研究中,本章将着重研究第三阶段内容,也就是模型的设计与实现过程,目的是提高手语图像的识别准确率。              

Inception模型实现

Inception模型是谷歌研究人员在2014年提出的一个深度卷积神经网络。它的主要特点是使用了Inception模块,可以提取不同尺度的特征。Inception模块内部使用了多个卷积核来进行不同尺度的卷积,然后将结果结合起来,使网络可以在不同尺度上提取不同的特征,从而提高模型的性能和准确性。该模型在ImageNet大规模视觉识别竞赛中表现出色,成为深度学习领域非常重要的模型之一。Inception模型使用了一个叫做Inception模块的核心组件,它由几个平行的卷积层和冗余层组成。不同大小的卷积核捕捉不同的图像特征,从而更好地适应不同物体的大小和形状。在每个Inception模块中,图像特征被分割成不同的分支,这些分支的输出被聚集起来,形成下一层的输入。除了多维卷积锥和聚合层,Inception模型还使用1x1卷积锥来降低模型的复杂性。这个卷积核减少了输入特征图中的通道数量,从而减少了计算的数量,也提高了模型的准确性。此外,Inception模型中还使用了批量归一化和ReLU等激活函数来进一步提高模型的准确性。"

由于经典inception模型太复杂,在现有计算上跑起来比较吃力,因此,在学习和研究透inception模型原理之后,我们设计了一个简单的inception模型,该模型不仅具有inception模型的优点,还结合具体数据情况做了简单的缩减,其实现代码如下:

visible = Input(shape=(IMG_SIZE, IMG_SIZE, 3))

    layer = inception_module(visible, 2, 2, 2, 2, 2, 2)

    layer = AveragePooling2D((5, 5), strides=3)(layer)  # Average Pooling layer

    layer = Flatten()(layer)

    # layer = Dense(200, activation='relu')(layer)  # FC layer with 200

    layer = Dense(classes, activation='softmax', name='OUTPUT')(layer)  #

    model = Model(inputs=visible, outputs=layer)“

其中,个Inception模块为:

      def inception_module(layer_in, f1, f2_in, f2_out, f3_in, f3_out, f4_out):

    conv1 = Conv2D(f1, (1,1), padding='same', activation='relu')(layer_in)

    conv3 = Conv2D(f2_in, (1,1), padding='same', activation='relu')(layer_in)

    conv3 = Conv2D(f2_out, (3,3), padding='same', activation='relu')(conv3)

    conv5 = Conv2D(f3_in, (1,1), padding='same', activation='relu')(layer_in)

    conv5 = Conv2D(f3_out, (3,3), padding='same', activation='relu')(conv5)

    pool = MaxPooling2D((3,3), strides=(1,1), padding='same')(layer_in)

    pool = Conv2D(f4_out, (1,1), padding='same', activation='relu')(pool)

    # concatenate filters, assumes filters/channels last

    print(pool.shape)

    layer_out = Concatenate()([conv1, conv3, conv5, pool])

    return layer_out

以上代码实现了Inception模块的功能,并通过堆叠Inception模块实现了一个卷积神经网络。该网络的输入层是形状为(IMG_SIZE, IMG_SIZE, 3)的图像,其中IMG_SIZE是图像的尺寸。Inception模块由7个卷积层和一个最大池化层组成,用于提取特征。每个Inception模块的输出被馈送到下一个Inception模块。最后,将所有特征连接到一起,并通过全连接层输出到softmax分类器中。该代码的逻辑是,先定义了Inception模块函数,然后用可见层作为输入,并使用该函数来创建多个Inception模块。在最后一层后添加了全连接层,输出分类器的预测结果。

SE-Inception模型设计与实现

为了进一步提高Inception模型的性能,我们设计实现了SE-Inception模型,SE-Inception模型是对Inception模型的进一步改进,它采用了一种称为SE(Squeeze-and-Excitation)block的结构来增强Inception模型的表示能力。SE-Inception模型与Inception模型的区别在于,它在每个Inception module中添加了SE block,用于对每个分支的特征图进行调整和加权。通过这种方式,SE-Inception模型可以更好地提取和表示输入图像中的特征,从而提高模型的准确性和性能。

SE(Squeeze-and-Excitation)block是一种能够自适应地调节网络中每个通道的重要性的模块。它是由Jie Hu等人在2018年提出的,在Inception模型中进行了应用,有效提高了模型的性能。SE block由两个步骤组成:第一个步骤是通过全局平均池化层将每个特征图压缩为一个单一的值,称为该特征图的通道统计量;第二个步骤是应用一组全连接层来学习每个通道的加权重要性,以重新调整特征图中每个通道的相对权重。SE(Squeeze-and-Excitation)block的实现代码如下:

这段代码定义了一个函数SEBlock,该函数实现了SE(Squeeze-and-Excitation)block。SE block是一种用于卷积神经网络中的模块,可以增强模型对特定通道的响应,从而提高网络的准确性。SE block通过在网络中增加一个squeeze操作和一个excitation操作来实现。该函数的参数包括se_ratio(squeeze和excitation操作中的比例因子,默认为16)、activation(激活函数,默认为relu)、data_format(数据格式,默认为channels_last)和ki(权重初始化方式,默认为he_normal)。

该函数的实现包括以下步骤为,首先,从输入张量中获取通道轴和输入通道数。接着,计算降维后的通道数。接着,进行squeeze操作,即使用全局平均池化层将每个通道的特征压缩为一个值,并通过一个全连接层将这些值映射为一个向量。接着,对squeeze操作的输出进行excitation操作,即通过一个全连接层将向量映射为一个向量,再通过sigmoid激活函数将其归一化到0到1的范围内。接着,将excitation操作的输出与输入张量进行乘法运算,从而增强模型对特定通道的响应。最后,该函数返回增强后的张量。

结合实现的SEBlock函数,我们可以实现SE-Inception模型,其代码如下所示:

    visible = Input(shape=(IMG_SIZE, IMG_SIZE, 3))

    # add inception block 1

    layer = inception_module(visible, 16, 32, 16, 16, 16, 16)

    layer = SEBlock(se_ratio=1, activation ="relu", data_format= 'channels_last')(layer )  #se_block

    layer = AveragePooling2D((3, 3), strides=2)(layer)  # Average Pooling layer

    # layer=attach_attention_module()(layer)

    layer = Flatten()(layer)

    # layer = Dense(200, activation='relu')(layer)  # FC layer with 200

    layer = Dense(classes, activation='softmax', name='OUTPUT')(layer)  #

    # create model

    model = Model(inputs=visible, outputs=layer)

上述代码,通过调用inception_module()函数实现了一个Inception模块,并在模块后面添加了一个SE块(通过SEBlock()函数实现),然后加上了一个平均池化层,最后使用Flatten()函数将特征张量展平,并通过Dense()函数实现输出层的分类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/489356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网工Python:如何使用Netmiko的SCP函数进行文件传输?

在网络设备管理中,传输配置文件、镜像文件等是经常需要进行的操作。Netmiko是一个Python库,可用于与各种网络设备进行交互,提供了一些用于传输文件的函数,其中包括SCP(Secure Copy Protocol)函数。本文将介…

【软考备战·希赛网每日一练】2023年5月4日

文章目录 一、今日成绩二、错题总结第一题第二题第三题第四题三、知识查缺 题目及解析来源:2023年05月04日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 修改Linux文件权限命令:chmod。 第二题 解析: 第三题 解析…

欧拉奔赴品牌2.0时代,女性汽车真实用户需求被定义?

每年的上海国际汽车工业展览会,不仅是各大汽车品牌的技术“秀场”,也是品牌的营销“修罗场”。今年上海车展出圈的营销事件特别多,热度甚至一再蔓延到汽车行业外,其中欧拉也贡献了不少流量。 据了解,在2023上海车展欧…

mount disk space from SAN

mount disk from FC-SAN 配置硬盘域、存储池、LUN、主机及LUN与与主机之间的映射。 fc-san多路径范例1 fc-san多路径2 mount disk from iSCSI [rootqionghai11g ~]# iscsiadm -m discovery -t sendtargets -p 192.16.10.188:3260 Starting iscsid: [ OK ] 192.16.10.188:32…

Yolov1 源码讲解 voc.py

先看结构 1.mean_rgb是voc2007专用的均值 voc2007分别是这样的 坐标格式(X0,Y0,X1,Y1)其中X0,Y0是左上角的坐标,X1,Y1是右下角的坐标。 coco,voc ,yolo数据集中的bbox的坐标格式_coco bbox格式_十二耳环的博客-CSDN…

Jmeter之BeanShell取出需要参数,传递给下个请求

一、事件背景: 上周同事用Jmeter录制脚本,录制成功回放后,并没有达到自己想要的结果。 他的真实需求是,想从数据库取出某个字段值,然后对数据库做操作。 也就是想实现做参数传递的效果,我心痒痒的&#…

ConcurrentHashMap底层源码解析

ConcurrentHashMap线程安全,底层数组链表红黑树。 思想,分而治之。 JDK7有Segment对象,分段锁 JDK8没有了这个对象 总结, 首先计算hash, 如果集合没有元素,开始initTable方法初始化,这里扩容讲…

有人说ChatGPT信息不新?

Hello ,我是小索奇,今天给大家分享一个插件,这个插件可以通过抓取网页获得最新内容,它可以有效的避免ChatGPT信息过时,获取不到最新的信息等等 演示-这里问它一些问题: 现在几点了呀 可以看到时间也是很准确的&#x…

Linux权限(+Linux基本指令(下))

目录 一.基本指令补充 1.date指令 2.find指令 3.tar指令 4.Linux下的常用热键 二.Linux权限 1.Shell 2.Linux权限的概念 一.基本指令补充 1.date指令 😆date指令可以用于显示日期和时间戳😆Linux的时间戳与Unix时间戳一致,指的是从1970年1月1日…

使用无标注的数据训练Bert

文章目录 1、准备用于训练的数据集2、处理数据集3、克隆代码4、运行代码5、将ckpt模型转为bin模型使其可在pytorch中运用 Bert官方仓库:https://github.com/google-research/bert 1、准备用于训练的数据集 此处准备的是BBC news的数据集,下载链接&…

Python | 人脸识别系统 — UI界面设计

本博客为人脸识别系统的UI界面设计代码解释 人脸识别系统博客汇总:人脸识别系统-博客索引 项目GitHub地址:【待】 注意:阅读本博客前请先参考以下博客 工具安装、环境配置:人脸识别系统-简介 阅读完本博客后可以继续阅读&#xff…

不用下载就能使用的4款轻量在线PS工具

PS是一种非常熟悉的设计工具,也是一种在设计领域占有重要地位的软件,如常见的产品设计、平面设计或摄影后期设计,几乎与PS的使用密不可分。PS本身也有很多功能,每个人的日常设计图纸、图纸修复等工作都可以用PS完成。 但PS有很多…

yolov8 OpenCV DNN 部署 推理报错

yolov8是yolov5作者发布的新作品 目录 1、下载源码 2、下载权重 3、配置环境 4、导出onnx格式 5、OpenCV DNN 推理 1、下载源码 git clone https://github.com/ultralytics/ultralytics.git 2、下载权重 git clone https://github.com/ultralytics/assets/releases/dow…

MySQL知识学习05(InnoDB存储引擎对MVCC的实现)

1、一致性非锁定读和锁定读 一致性非锁定读 对于 一致性非锁定读(Consistent Nonlocking Reads) ,通常做法是加一个版本号或者时间戳字段,在更新数据的同时版本号 1 或者更新时间戳。查询时,将当前可见的版本号与对…

K8S资源-configmap创建六种方式

云原生实现配置分离重要实现方式 两者都是用来存储配置文件,configmap存储通用的配置文件,secret存储需要加密的配置文件。 将配置文件configmap挂在到pod上 创建configmap 1.基于配置文件目录创建configmap kubectl create cm cmdir --from-fileconf…

医学图像分割之U-Net

一、背景及问题 在过去两年中,在很多视觉识别任务重,深度卷积网络的表现优于当时最先进的方法。但这些深度卷积网络的发展受限于网络模型的大小以及训练数据集的规模。虽然这个限制有过突破,也是在更深的网络、更大的数据集中产生的更好的性能…

【redis】redis的缓存过期淘汰策略

【redis】redis的缓存过期淘汰策略 文章目录 【redis】redis的缓存过期淘汰策略前言一、面试题二、redis内存满了怎么办?1、redis默认内存是多少?在哪查看?如何修改?在conf配置文件中可以查看 修改,内存默认是0redis的默认内存有…

使用意图intent构建一个多活动的Android应用

安卓意图Intent是Android应用组件(Activity、Service、Broadcast Receiver)之间进行交互的一种重要方式。Intent允许启动一个活动、启动一个服务、传递广播等。Intent使应用能够响应系统及其他应用的动作。Intent使用的主要目的有: 1、 启动Activity:可以启动自己应用内的Activ…

DDPM--生成扩散模型

DDPM–生成扩散模型 Github: https://github.com/daiyizheng/Deep-Learning-Ai/blob/master/AIGC/Diffusion.ipynb DDPM 是当前扩散模型的起点。在本文中,作者建议使用马尔可夫链模型,逐步向图像添加噪声。 函数 q ( x t ∣ x t − 1 ) q(x_t | x_t-1…

java获取真实ip的方法

在网络中,如果不想被人监听,那么就需要获取 IP地址了,在电脑中我们可以使用到 ip地址获取工具,那么如何在 Java中获取真实的 IP地址呢? 1、首先我们需要先准备一台电脑,然后将电脑进行联网; 2、…