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

SENet 学习

ILSVRC

是一个比赛,全称是ImageNet Large-Scale Visual Recognition Challenge,平常说的ImageNet比赛指的是这个比赛。
使用的数据集是ImageNet数据集的一个子集,一般说的ImageNet(数据集)实际上指的是ImageNet的这个子集,总共有1000类,每类大约有1000张图像。完整的 ImageNet,有大约1.2million的训练集,5万验证集,15万测试集。ILSVRC从2010年开始举办,到2017年是最后一届。ILSVRC-2012的数据集被用在2012-2014年的挑战赛中(VGG论文中提到)。ILSVRC-2010是唯一提供了test set的一年。
ImageNet可能是指整个数据集(15 million),也可能指比赛用的那个子集(1000类,大约每类1000张),也可能指ILSVRC这个比赛。需要根据语境自行判断。
12-17年期间在ImageNet比赛上提出了一些经典网络,比如AlexNet,ZFNet,VGG, GoogLeNet, ResNet,DenseNet,SENet。我之前的博文都有相应模型及其变体的介绍。

在这里插入图片描述

  • 13 年 ZFNet
  • 16 年 DenseNet

SENET简介

提出背景:卷积核通常被看做是在局部感受野上,在空间上和通道维度上同时对信息进行相乘求和的计算。现有网络很多都是主要在空间维度方面来进行特征的融合(如Inception的多尺度)。
通道维度的注意力机制:在常规的卷积操作中,输入信息的每个通道进行计算后的结果会进行求和输出,这时每个通道的重要程度是相同的。而通道维度的注意力机制,则通过学习的方式来自动获取到每个特征通道的重要程度(即feature map层的权重),以增强有用的通
道特征,抑制不重要的通道特征。
说起卷积对通道信息的处理,有人或许会想到逐点卷积,即kernel大小为1X1的常规卷积。与1X1卷积相比,SENet是为每个channel重新分配一个权重(即重要程度)。而1X1卷积只是在做channel的融合计算,顺带进行升维和降维,也就是说每个channel在计算时的重要程度是相同的。

SENet 模块

在这里插入图片描述

X经过一系列传统卷积得到U,对U先做一个Global Average Pooling,输出的1x1xC数据(即,上图梯形短边的白色向量),这个特征向量一定程度上可以代表之前的输入信息,论文中称之为Squeeze操作。
再经过两个全连接来学习通道间的重要性,用sigmoid限制到[0,1]的范围,这时得到的输出可以看作每个通道重要程度的权重(即上图梯形短边的彩色向量),论文中称之为Excitation操作。
最后,把这个1x1xC的权重乘到U的C个通道上,这时就根据权重对U的channles进行了重要程度的重新分配。

效果

  • 与SE模块可以嵌入到现在几乎所有的网络结构中,而且都可以得到不错的效果提升,用过的都说好。
  • 在大部分模型中嵌入SENet要比非SENet的准确率更高出1%左右,而计算复杂度上只是略微有提升,具体如下图所示。而且SE块会使训练和收敛更容易。CPU推断时间的基准测试:224×224的输入图 像,ResNet-50 164ms, SE-ResNet-50 167ms。在这里插入图片描述

代码

class SqueezeExcite(nn.Module):def __init__(self,input_c: int,   # block input channelexpand_c: int,  # block expand channelse_ratio: float = 0.25):super(SqueezeExcite, self).__init__()squeeze_c = int(input_c * se_ratio)self.conv_reduce = nn.Conv2d(expand_c, squeeze_c, 1)self.act1 = nn.SiLU()  # alias Swishself.conv_expand = nn.Conv2d(squeeze_c, expand_c, 1)self.act2 = nn.Sigmoid()def forward(self, x: Tensor):scale = x.mean((2, 3), keepdim=True)scale = self.conv_reduce(scale)scale = self.act1(scale)scale = self.conv_expand(scale)scale = self.act2(scale)return scale * x

总结

  • SE block 可以理解为 channel维度上的注意力机制(即重分配通道上 feature map对后续计算的权重),与Stochastic Depth Net一样,本论文的贡献更像一种思想,而非模型。在之后的模型中,会经常看见SE block 的身影。例如,SKNet,MobileNet等等。

相关文章:

SENet 学习

ILSVRC 是一个比赛,全称是ImageNet Large-Scale Visual Recognition Challenge,平常说的ImageNet比赛指的是这个比赛。 使用的数据集是ImageNet数据集的一个子集,一般说的ImageNet(数据集)实际上指的是ImageNet的这个子…...

目前和未来的缓存构建

说起来可能有点反直觉,有时候不运行反而可以帮助我们加快速度,这正是网络浏览器运行的指导原则。不必在页面上加载所有内容,缓存的元素已经存在,不需要每次访问网站或网页时都重新加载。页面加载速度越快,浏览器的工作…...

aws亚马逊云免费账号代充值!!!什么是 AWS Lambda?

AWS Lambda 是一项计算服务,可使您无需预配置或管理服务器即可运行代码。 Lambda 在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和操作系统维护、容量调配和弹性伸缩和记录。使用 Lambda,您…...

《从零开始大模型开发与微调 :基于PyTorch与ChatGLM》简介

内 容 简 介 大模型是深度学习自然语言处理皇冠上的一颗明珠,也是当前AI和NLP研究与产业中最重要的方向之一。本书使用PyTorch 2.0作为学习大模型的基本框架,以ChatGLM为例详细讲解大模型的基本理论、算法、程序实现、应用实战以及微调技术,…...

【LeetCode】102. 二叉树的层序遍历

题目链接 文章目录 Python3方法一: 广度优先搜索 (BFS) ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯方法二: 深度优先搜索 (DFS) ⟮ O ( n ) ⟯ \lgroup O(n) \rgroup ⟮O(n)⟯ C方法一: 广度优先搜索 (BFS) ⟮ O ( n ) ⟯ \lgroup O(n…...

golang连接池检查连接失败时如何重试

在Go中,可以通过使用database/sql包的DB类型的Ping方法来检查数据库连接的可用性。如果连接检查失败,可以选择进行重试。以下是一个简单的示例代码,演示了如何在连接检查失败时进行重试: import ("database/sql""…...

从JavaScript到Rust的三年时间小结

Rust 是一种注重安全性、速度和并发性的系统编程语言。它能编译成高效的本地代码,无需垃圾回收即可访问内存等底层资源,同时还能防止分隔故障。 作者讨论了他们几年来用 Rust 构建大型应用程序和库的经验。他们发现 Rust 的借用检查器和类型系统有助于减…...

【Python机器学习】零基础掌握VotingRegressor集成学习

如何更准确地预测房价? 想象一下,你是一名房地产分析师,你的任务是预测一个小区的未来房价。这看似简单,但实际上,房价受到多种因素的影响,如地理位置、房屋面积、周围设施等。你可能会使用线性回归模型来进行预测,但是你会发现,尽管模型的准确性还可以,但还是存在一…...

云计算模式的区域LIS系统源码,基于ASP.NET+JQuery、EasyUI+MVC技术架构开发

云计算模式的区域LIS系统源码 云LIS系统源码,自主版权 LIS系统是专为医院检验科的仪器设备能与计算机连接。可通过LIS系统向仪器发送指令,让仪器自动操作和接收仪器数据。并快速的将检验仪器中的数据导入到医生工作站中进行管理,且可将检验结…...

面向对象设计原则之接口隔离原则

目录 定义接口隔离原则与单一职责原则示例 定义 接口隔离原则,全称为 Interface Segregation Principle,缩写ISP。 原始定义:Clients should not be forced to depend upon interfaces that they don’t use。 翻译: 不应该强行…...

haproxy 负载均衡

haproxy负载均衡 haproxy:基于C语言开发的开源软件 支持高性能的tcp和http负载均衡器,工作中用的版本1.5.9 haproxy功能:主要用于高并发的web站点,工作原理和nginx、lvs都一样 haproxy缺点: 单节点部署,单实例运行。代…...

在el-dialog中使用tinymce 点击工具栏下拉框被遮挡

在el-dialog中使用tinymce控件时,会出现点击工具栏下拉框出现在弹窗下一层,审查元素之后发现是tinymce的下拉框z-index优先级低于el-dialog的z-index导致的,所以需要增加tinymce的下拉框的z-index值。 通过审查元素得到,需要修改t…...

CloudQuery + StarRocks:打造高效、安全的数据库管控新模式

随着技术的迅速发展,各种多元化的数据库产品应运而生,它们不仅类型众多,而且形式各异,国产化数据库千余套,开源数据库百余套 OceanBase 、PolarDB 、StarRocks…还有一些像 Oracle、MySQL 这些传统数据库。这些数据库产…...

各类统计模型R语言的详细使用教程-R语言的线性回归使用教程

各类统计模型R语言的详细使用教程-R语言的线性回归使用教程 前言R语言的线性回归代码示例回归诊断误差项正态qq图内学生化残差外学生化残差线性关系异常值的发现、处理帽子矩阵的方法DFFITS 准则Cook统计量COVRATIO准则多重共线性summaryKlein判别法特征根法条件指数法方差膨胀…...

点云从入门到精通技术详解100篇-基于尺度统一的三维激光点云与高清影像配准

目录 前言 研究现状 三维激光点云与影像配准研究现状 点云配准研究现状...

<蓝桥杯软件赛>零基础备赛20周--第2周

报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周(读者可以按…...

CMake多文件构建初步

前面学习了cmake,不熟悉,只是记录了操作过程;下面再继续; 略有一点进步,增加一个代码文件,之前是1个代码文件; 如下图,prj是空文件夹, CMakeLists.txt如下;…...

游戏研发的解决方案有哪些?

游戏研发的解决方案可以根据不同的需求和情境而有所不同,以下是一些常见的游戏研发解决方案: 游戏引擎: 游戏引擎是游戏研发的基础,它提供了开发游戏所需的核心功能,如图形渲染、物理引擎、音效管理、动画等。一些流行…...

Bayes决策:身高与体重特征进行性别分类

代码与文件请从这里下载:Auorui/Pattern-recognition-programming: 模式识别编程 (github.com) 简述 分别依照身高、体重数据作为特征,在正态分布假设下利用最大似然法估计分布密度参数,建立最小错误率Bayes分类器,写出得到的决…...

【考研数学】数学“背诵”手册 | 需要记忆且容易遗忘的知识点

文章目录 引言一、高数常见泰勒展开 n n n 阶导数公式多元微分函数连续、可微、连续可偏导之间的关系多元函数极值无条件极值条件极值 三角函数的积分性质华里士公式( “点火”公式 )特殊性质 原函数与被积函数的奇偶性结论球坐标变换公式 二、写在最后 …...

HJ3 明明的随机数

牛客网:HJ3 明明的随机数 https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0?tpId37&tqId21226&ru/exam/oj 使用Go语言解题,最简单的方式: 解题一: // 运行时间:5ms 占用内存&#xff1a…...

如何恢复u盘删除文件?2023最新分享四种方法恢复文件

U盘上删除的文件怎么恢复?使用U盘存储文件是非常方便的,例如:在办公的时候,会使用U盘来存储网络上查找到的资料、产品说明等。在学习的时候,会使用U盘来存储教育机构分享的教学视频、重点知识等。而随着U盘存储文件的概…...

8.稳定性专题

1. anr https://code84.com/303466.html 一句话,规定的时间没有干完要干的事,就会发生anrsystem_anr场景 input 5sservice 前台20s 后台60scontentprivider超市 比较少见 原因 主线程耗时 复杂layout iobinder对端block子线程同步锁blockbinder被占满导…...

基于51单片机的四种波形信号发生器仿真设计(仿真+程序源码+设计说明书+讲解视频)

本设计 基于51单片机信号发生器仿真设计 (仿真程序源码设计说明书讲解视频) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0015 这里写目录标题 基于51单片机信号发生…...

不同网段的IP怎么互通

最近在整理工作的时候发现一个不同网段无法互通的问题,就是我们大家熟知的一级路由和二级路由无法互通的问题。由于需要记录整个过程的完整性,这里也需要详细记录下整个过程,明白的人不用看,可以直接跳过,到解决方法去…...

C#序列化与反序列化详解

在我们深入探时C#序列化和反序列化,之前我们先要明白什么是序列化,它又称串行化,是.ET运行时环境用来支持用户定义 类型的流化的机制。序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再…...

如何在k8s的Java服务镜像(Linux)中设置中文字体

问题描述:服务是基于springboot的Java服务,在项目上是通过Maven的谷歌插件打包,再由k8s部署的。k8s的镜像就是一个Java服务,Java服务用到了中文字体。 解决这个问题首先需要搞定镜像字体的问题。有很多类似的解决方案,…...

CT 扫描的 3D 图像分类-预测肺炎的存在

介绍 此示例将展示构建 3D 卷积神经网络 (CNN) 所需的步骤,以预测计算机断层扫描 (CT) 扫描中是否存在病毒性肺炎。2D CNN 通常用于处理 RGB 图像(3 通道)。3D CNN 就是 3D 的等价物:它以 3D 体积或一系列 2D 帧(例如 CT 扫描中的切片)作为输入,3D CNN 是学习体积数据表…...

整合管理案例题分析

本文摘自江山老师文档 五个过程 制定项目章程 1.没有写项目章程,没有颁布 2.项目经理自己颁布项目章程 3.项目经理修改项目章程 4.项目章程授权不够,项目经理没有权限,下面的人不听话 5.项目章程的内容不完整 制定项目管理计划 1.项目…...

mysql4

创建表并插入数据: 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 primary key name VARCHAR(50) 否 否 是 否 否 not null glass VARCHAR(50) 否 否 是 否 否 not nullsch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun …...