GoogLeNet创新点总结
GoogLeNet是一种深度卷积神经网络架构,于2014年由Google团队提出,是ILSVRC(ImageNet Large Scale Visual Recognition Challenge)比赛的冠军模型,其创新点主要集中在以下几个方面:
Inception模块: GoogLeNet引入了Inception模块,该模块使用不同大小的卷积核和池化层来捕获不同尺度的特征。Inception模块内部通过多个并行的卷积层和池化层来处理输入数据,然后将它们的输出进行拼接,从而增加了网络对不同尺度特征的感知能力。这种结构有助于提高网络的表达能力,同时减少了参数数量。
import torch.nn as nn
import torch
import torch.nn.functional as F'''step1: 写一个包含卷积层和relu激活函数模块的类'''
class Conv_relu(nn.Module):def __init__(self,in_channels,out_channels,**kwargs):super(Conv_relu, self).__init__()self.conv=nn.Conv2d(in_channels,out_channels,**kwargs)self.relu=nn.ReLU(inplace=True)def forward(self,x):x=self.conv(x)x=self.relu(x)return x'''step2: 构建Inception模块,包含4个分支branch1:1×1卷积branch2:1×1卷积降维-->3×3卷积branch3:1×1卷积将为-->5×5卷积branch4:3×3最大池化-->1×1降维
'''
class Inception(nn.Module):def __init__(self,in_channels,out_channels1x1,reduce_channels3x3,out_channels3x3,reduce_channels5x5,out_channels5x5,out_channels1x1_pool,):super(Inception, self).__init__()#branch1:1×1卷积self.branch1=Conv_relu(in_channels,out_channels1x1,kernel_size=1)#branch2:1×1卷积降维-->3×3卷积self.branch2 =nn.Sequential(Conv_relu(in_channels, reduce_channels3x3, kernel_size=1),Conv_relu(reduce_channels3x3,out_channels3x3,kernel_size=3,padding=1))#branch3:1×1卷积将为-->5×5卷积self.branch3 =nn.Sequential(Conv_relu(in_channels, reduce_channels5x5, kernel_size=1),Conv_relu(reduce_channels5x5,out_channels5x5,kernel_size=5,padding=2))#branch4:3×3最大池化-->1×1降维self.branch4 =nn.Sequential(nn.MaxPool2d(kernel_size=3,stride=1,padding=1),Conv_relu(in_channels,out_channels1x1_pool,kernel_size=1))def forward(self,x):x1=self.branch1(x)x2 = self.branch2(x)x3 = self.branch3(x)x4 = self.branch4(x)x=torch.cat([x1,x2,x3,x4],dim=1)return x# return x1,x2,x3,x4,xif __name__ == '__main__':inc_=Inception(192, 64, 96, 128, 16, 32, 32)device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')inc_.to(device)input_tensor=torch.randn(1,192,64,64).to(device)# out1,out2,out3,out4,out=inc_(input_tensor)out = inc_(input_tensor)# print('branch1特征图尺寸:', out1.size())# print('branch2特征图尺寸:', out2.size())# print('branch3特征图尺寸:', out3.size())# print('branch4特征图尺寸:', out4.size())print('拼接后的特征图尺寸:', out.size())
1x1卷积的使用: GoogLeNet在Inception模块中广泛使用了1x1卷积。1x1卷积可以用来进行特征的线性组合,从而降低特征维度,减少计算负担。这种技术被称为“瓶颈结构”,可以在不引入过多计算负担的情况下增加网络的深度和宽度。
Global Average Pooling(全局平均池化): 在传统的卷积神经网络中,通常使用全连接层来进行分类,这会导致大量的参数和计算量。GoogLeNet使用了全局平均池化来替代全连接层,通过对特征图的所有通道进行平均池化,生成一个特征向量,然后使用一个softmax分类器进行分类。这种做法减少了参数数量,防止过拟合,并降低了计算复杂性。
辅助分类器(Auxiliary Classifiers): GoogLeNet引入了两个辅助分类器,分别连接到中间层的不同位置。这些辅助分类器在训练过程中引入了额外的损失函数,帮助网络更快地进行训练。在测试阶段,这些辅助分类器不起作用,只有主分类器的输出被使用。这种结构有助于缓解梯度消失问题,促进梯度在网络中的传播。
# 辅助分类器
import torch.nn as nn
import torch
import torch.nn.functional as Fclass Aux_classifier(nn.Module):def __init__(self,in_channels,num_classes):super(Aux_classifier, self).__init__()self.avgpool=nn.AvgPool2d(kernel_size=5, stride=3)self.conv=Conv_relu(in_channels,128)self.fc1 = nn.Linear(2048, 1024)self.fc2 = nn.Linear(1024, num_classes)def forward(self,x):x=self.avgpool(x)x=self.conv(x)x=torch.flatten(x,1)x=F.dropout(x,0.5,training=self.training)x=F.relu(self.fc1(x),inplace=True)x=F.dropout(x,0.5,training=self.training)x=self.fc2(x)return x
总之,GoogLeNet通过引入Inception模块、1x1卷积、全局平均池化以及辅助分类器等创新点,成功地构建了一个更深、更宽的网络,具备强大的特征提取和分类能力,并在当时的图像分类竞赛中取得了显著的成绩。这些创新点也为后续深度神经网络的设计提供了重要的启示。
相关文章:
GoogLeNet创新点总结
GoogLeNet是一种深度卷积神经网络架构,于2014年由Google团队提出,是ILSVRC(ImageNet Large Scale Visual Recognition Challenge)比赛的冠军模型,其创新点主要集中在以下几个方面: Inception模块&#…...
不同路径1、2、3合集(980. 不同路径 III)
不同路径一 矩形格,左上角 到 右下角。 class Solution {int [] directX new int[]{-1,1,0,0};int [] directY new int[]{0,0,-1,1};int rows;int cols;public int uniquePathsIII(int[][] grid) {if (grid null || grid.length 0 || grid[0].length 0) {ret…...
【云原生】Yaml文件详解
目录 一、YAML 语法格式1.1查看 api 资源版本标签1.2 写一个yaml文件demo1.3 详解k8s中的port 一、YAML 语法格式 Kubernetes 支持 YAML 和 JSON 格式管理资源对象JSON 格式:主要用于 api 接口之间消息的传递YAML格式:用于配置和管理,YAML 是…...
ffmpeg下载安装教程
ffmpeg官网下载地址https://ffmpeg.org/download.html 这里以windows为例,鼠标悬浮到windows图标上,再点击 Windows builds from gyan.dev 或者直接打开 https://www.gyan.dev/ffmpeg/builds/ 下载根据个人需要下载对应版本 解压下载的文件,并复制bin所在目录 新打开一个命令…...
uniapp之当你问起“tab方法触发时eventchange也跟着触发了咋办”时
我相信没有大佬会在这个问题上卡两个小时吧,记下来大家就当看个乐子了。 当时问题就是,点击tab头切换的时候,作为tab滑动事件的eventchange同时触发了,使得接口请求了两次 大概是没睡好,我当时脑子老想着怎么阻止它冒…...
TS 踩坑之路(四)之 Vue3
一、在使用定义默认值withDefaults和defineProps 组合时,默认值设置报错 代码案例 报错信息 不能将类型“{ isBackBtn: false; }”分配给类型“(props: PropsType) > RouteMsgType”。 对象字面量只能指定已知属性,并且“isBackBtn”不在类型“(pro…...
【音视频】edge与chrome在性能上的比较
目录 结论先说 实验 结论 实验机器的cpu配置 用EDGE拉九路编辑 google拉五路就拉不出来了 资源使用情况 edge报错编辑 如果服务器端 性能也满 了,就会不回复;验证方式 手动敲 8081,不回应。 结论先说 实验 用chrome先拉九路&#…...
Docker Compose编排部署LNMP服务
目录 安装docker-ce 阿里云镜像加速器 文件 启动 安装docker-ce [rootlocalhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo --2023-08-03 18:34:32-- http://mirrors.aliyun.com/repo/Centos-7.repo 正在解析主机 m…...
git使用(常见用法)
一.下载git git官方下载跳转 安装简单,有手就行 二. git的简单使用 1. 连接远程仓库 #初始化 git init #配置账户 git config --global user.name “输入你的用户名” git config --global user.email “输入你的邮箱” git config --list #--q退出 #配置验证邮箱 ssh-key…...
用例拆分情况考虑方案
文章目录 1、方案一方案概述方案分析(1) 把对应图商地图的逻辑给分离开(2) 要使用命令行的方式执行方法 2、方案二3、最终决定 1、方案一 方案概述 每个图商(GD、BD、自建)拆分成单独的类 把参数化的几个图商类别拆分成对应的图商类,在每个类…...
一文搞懂IS-IS报文通用格式
报文格式 IS-IS报文是直接封装在数据链路层的帧结构中的。PDU可以分为两个部分,报文头和变长字段部分。其中头部又可分为通用头部和专用头部。对于所有PDU来说,通用报头都是相同的,但专用报头根据PDU类型不同而有所差别。 IS-IS的PDU有4种类…...
位置参数 关键字参数
在Python中,函数参数可以按照位置或关键字来传递。这导致了两种主要的参数类型:位置参数和关键字参数。 位置参数: 这是最常见的参数类型,当我们调用函数时,传递给函数的参数值是按照它们的位置来确定的。例如,def fun…...
【果树农药喷洒机器人】Part5:基于深度相机与分割掩膜的果树冠层体积探测方法
文章目录 一、引言二、树冠体积测量对比方法2.1冠层体积人工测量法2.2冠层体积拟合测量法 三、基于深度相机与分割掩膜探测树冠体积方法3.1像素值与深度值的转换3.2树冠体积视觉探测法3.3实验分析 总结 一、引言 果树靶标探测是实现农药精准喷施的关键环节,本章以果…...
生活小妙招之UE custom Decal
因为这几年大部分时间都在搞美术,所以博客相关的可能会鸽的比较多,阿巴阿巴 https://twitter.com/Tuatara_Games/status/1674034744084905986 之前正好看到一个贴花相关的小技巧,正好做一个记录,也在这个的基础上做一些小的拓展…...
DAY02_Spring—第三方资源配置管理Spring容器Spring注解开发Spring整合Mybatis和Junit
目录 一 第三方资源配置管理1 管理DataSource连接池对象问题导入1.1 管理Druid连接池1.2 管理c3p0连接池 2 加载properties属性文件问题导入2.1 基本用法2.2 配置不加载系统属性2.3 加载properties文件写法 二 Spring容器1 Spring核心容器介绍问题导入1.1 创建容器1.2 获取bean…...
Icon图标有哪些在线设计的工具推荐
虽然icon图标相对较小,但icon图标在设计中非常重要。高质量的icon图标通常可以决定设计工作的质量。高质量的在线生产icon工具可以提高设计师图标设计的效率。此外,优秀的图标设计师还可以让设计师快速开始图标设计工作。本文为您选择了五种在线生成icon…...
深度学习环境安装依赖时常见错误解决
1.pydantic 安装pydantic时报以下错误: ImportError: cannot import name Annotated from pydantic.typing (C:\Users\duole\anaconda3\envs\vrh\lib\site-packages\pydantic\typing.py) 这个是版本错误,删除装好的版本,重新指定版本安装就…...
opencv基础47 查找图像轮廓cv2.findContours()详解
什么是图像轮廓? 图像轮廓是指图像中物体边缘的连续性曲线。在计算机视觉和图像处理中,轮廓通常被用于检测物体、分割图像以及提取物体特征。 图像轮廓是由一系列连续的像素点组成,这些像素点位于物体边界上。轮廓的特点是在物体和背景之间的…...
Splunk Enterprise for mac(可视化数据分析软件)详细安装教程
Splunk Enterprise for Mac是一款可视化数据分析软件,为你提供强大的搜索、 分析和可视化功能,可以帮助您获得有价值的业务情报,从你机器生成的数据。还在等什么?有需要的朋友,欢迎前来下载! 实时监测和搜…...
如何实现环卫项目运营的数字化管理,达到企业降本增效的目的?
数字环卫是指利用数字技术和数据驱动的方法来改善环卫流程和管理。数字环卫的底层逻辑在于利用技术来优化运营、提高效率并降低环卫项目管理成本。如何实现环卫工程运营数字化管理,达到降本增效的目标: 1.数据收集和分析:实施数据收集机制&a…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
