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

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

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()函数实现输出层的分类。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文把 JavaScript 中的 this 聊得明明白白

文章目录 1.this 是什么?2.this的指向2.1 全局上下文的 this 指向2.2 函数(普通函数)上下文中的 this 指向2.3 事件处理程序中的 this 指向2.4 以对象的方式调用时 this 的指向2.5 构造函数中的 this 指向2.6 在 类上下文中 this 的指向。2.7…

84.python input输入函数知识拓展

文章目录 1. input函数知识回顾2. input常犯错误解析3. 用函数转换从终端输入的数据3.1 输入的数为整数,则用int转换为整数3.2 输入的数为浮点数,则用float转换为浮点数3.3 不考虑输入的数据类型,则用eval函数转换 4. 变量的多种赋值方式4.1 …

【软考中级】2022下半年软件设计师案例分析题级答案

试题一(共15分) 阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】 随着新能源车数量的迅猛增长,全国各地电动汽车配套充电桩急速增长,同时 也带来了充电桩计量准确性的问题。充电桩都需要配备相应的…

JAVA9新特性

JAVA9新特性 概述 ​ 经过4次推迟,历经曲折的Java9最终在2017年9月21日发布。因为里面加入的模块化系统,在最初设想的时候并没有想过那么复杂,花费的时间超出预估时间。距离java8大约三年时间。 ​ Java 9提供了超过150项新功能特性&#x…

三个令人惊艳超有用的 ChatGPT 项目,开源了!

自 3 月初 Open AI 开放 ChatGPT API 以来,GitHub 上诞生的开源项目数量之多,着实多得让我眼花缭乱、应接不暇。 今天,我将着重挑选几个对日常工作、生活、学习帮助较大的 ChatGPT 开源项目,跟大家分享下,希望对你有所…

使用eclipse创建一个图书管理系统(1)-----搭建架构

目录 思维导图: 图书管理系统的创建: 第一步:搭建框架-------使用者 第二步:搭建框架------被使用者 第三步:操作方法 第四步:main函数 思维导图: 前言: 昨天学了一下使用Java…

games103——作业2

实验二主要使用隐式积分法以及PBD法完成布料仿真 完整项目已上传至github。 文章目录 基于物理的方法弹簧系统单个弹簧多个弹簧弹簧网络结构化弹簧网络(Structured Spring Networks)非结构化弹簧网络(Unstructured Spring Networks)三角网格表示 代码 求解质量弹簧系统的显示积…

(别再手动点APP了)UiAutomator2自动化测试框架带你玩转APP操作

目录 前言 一、uiautomator/uiautomator2的前生今世 1.官方文档介绍 2.梳理一下脉络 3.三款框架对比 二、uiautomator2简介 1.项目组成 2.工作原理 三、环境搭建 1.安装uiautomator2 2.初始化设备 3.init时都干了啥? 四、基础操作 1.连接设备 2.命令…

Python——函数

概念 函数是一段具有特定功能,可重复使用的代码,python提供了很多内置函数,如:print(),input(),len()函数等,以及标准库函数,math库中的sqrt()函数等,除此之外用户还可以…

Hive3面试基础

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、基本知识Hive31.表的类型和表的存储格式a)b)c)创建表i)ii) 2.表 二、使用步骤1.引入库2.读入数据 总结 前言 面试准备之Hive 回顾…

设计模式之适配器模式

目录 1、什么是适配器模式 2、为什么用适配器模式 3、适配器模式的结构 4、类适配器模式代码实现 4.1 思想 4.2 代码实现 4.3 问题分析 5、对象适配器模式代码实现 5.1 思想 5.2 代码实现 6、适配器模式应用场景 1、什么是适配器模式 适配器模式(Adapter…

19. Unity - 2D游戏开发小记02 --- 伪透视图、2D物体碰撞、瓦片地图碰撞、素材缩放平铺

1. 伪视图 在2D游戏开发当中,当角色移动时,会发生物体与物体之间的前后遮挡。2D视图中的前后关系是由 Y 轴决定,y 值越小物体越靠前。unity的渲染应开启根据 y 值的大小进行渲染才能保证正确的遮挡效果,在菜单栏Editor–>project setting --> Graphic中按照下图方式…

C++三大特性—继承“复杂的菱形继承及菱形虚拟继承”

C的一个大坑:菱形继承 希望这篇文章能让你理解什么是菱形继承,以及菱形继承的注意事项 单继承与多继承 单继承:一个子类只有一个直接父类时称这个继承关系为单继承 多继承:一个子类有两个或以上直接父类时称这个继承关系为多继承…

凌恩生物美文分享|HGTree v2.0:水平基因转移数据库

水平基因转移(HGT)是指遗传物在物种间从一个相邻生物体到另一个生物体横向传递,是原核生物遗传变异的重要过程。HGT是负责塑造原核生物基因组和在自然选择中生存的驱动力之一,对原核生物的进化有很大贡献,但它会使物种进化史复杂化&#xff0…

【Linux】进程信号保存

前言 上篇博客我们了解了进程信号的概念和信号如何产生。 本篇我们将学习进程信号如何保存。 文章目录 前言一. 阻塞信号二. 递达动作三. 信号集四. 信号集操作函数结束语 一. 阻塞信号 首先我们需要一些预备知识 实际执行信号的处理动作称为信号递达(Delivery&am…

数字图像处理-绪论

数字图像处理-绪论 文章目录 前言一、闲谈二、什么是数字图像处理?2.1. 什么是数字图像?2.1.1. 可见光图像2.1.2. 不可见光图像 2.2. 什么是数字图像处理? 三、数字图像处理的前世今生3.1. 数字图像处理的前世3.2. 数字图像处理的今生 四、数…

【嵌入式系统】课程复习资料整理

【嵌入式系统】课程复习资料整理 一、绪论 1.定义 从技术的角度定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件&a…

使用crontab定时自动更新DDNS

需求说明: N1盒子的armbian系统配置好了 ipv6 的ddns,实现了域名访问本机,但是本地ipv6可能会发生变化,当发生变化后,需要手动执行指令,将新的ip与域名绑定,现在我们采用定时任务,每…

Nuvoton NK-980IOT开发板 u-boot 编译

前言 最近搭建了 Nuvoton NK-980IOT开发板 的开发编译环境,记录一下 u-boot 的 编译流程 Nuvoton NK-980IOT开发板 资源还是比较的丰富的,可以用于 嵌入式Linux 或者 RT-Thread 的学习开发 开发板上电比较的容易,两根 USB 线即可&#xff0…

计网笔记 01 概述 计算机网络体系结构、参考模型

文章目录 前言1、计网概述1.1 概念、组成、功能、分类1.1.1 概念1.1.2 计网组成1.1.2 计网分类 1.2 标准化工作及相关组织1.2.1 标准的分类 1.3 性能指标★★★1.3.1 速率相关性能指标1.3.2 时延相关指标 2、体系结构&参考模型★★★★★(对应王道视频7-10p 相当…