常见的卷积神经网络结构——分类、检测和分割
本文持续更新~~
本文整理了近些年来常见的卷积神经网络结构,涵盖了计算机视觉领域的几大基本任务:分类任务、检测任务和分割任务。对于较复杂的网络,本文只会记录其中的核心模块以及重要的网络设计思想,并不会记录完整的网络结构。
有一些网络结构是通用的,可以用于分类、检测和分割任务中的任意一个,本文就选取了其中一个有代表性的任务进行描述。
目录
- 分类任务
- 1.VGG
- 2. Inception v1
- 3. Inception V2
- 4. ResNet
- 5. DenseNet
- 检测任务
- 1. FPN
- 2. PAN
- 分割任务
- 1. FCN
- 2. U-Net
- 3. SegNet
- 4. PSPNet
- 参考文章
分类任务
1.VGG
论文地址:https://arxiv.org/abs/1409.1556
论文提出了6种不同的VGG网络,最常用的是VGG16。VGG16采用了5组13层卷积和5层最大池化,并且使用3层全连接和1层Softmax完成分类任务。
VGGNet使用的卷积核全部为3×33×33×3,优点在于:两个3×33×33×3的卷积核和一个5×55×55×5的卷积核的感受野大小一致,但参数量更少;两个3×33×33×3的卷积核比一个5×55×55×5的卷积核的非线性表达能力更强,因为其拥有两个激活函数,可提高网络的学习能力。
2. Inception v1
论文地址:https://arxiv.org/pdf/1409.4842
通过设计一个稀疏网络结构,但是能够产生稠密的数据,既能增加神经网络表现,又能保证计算资源的使用效率。 共4个通道,其中3个卷积通道分别使用1×11×11×1、3×33×33×3、5×55×55×5的卷积核,保证了每个通道的感受野大小不同,从而获得不同尺度的特征;1个池化通道采用最大池化操作,以减少空间大小,降低过度拟合。使用1×11×11×1的卷积核进行降维,减小了特征图的维度。
3. Inception V2
论文地址:https://arxiv.org/pdf/1502.03167
在不增加过多计算量的同时提高网络的表达能力,因而修改 Inception 的内部计算逻辑,提出了比较特殊的卷积计算结构。使用3×33×33×3的卷积核代替5×55×55×5的卷积核(用小卷积核代替大卷积核);分解卷积,将n×nn×nn×n的卷积分解为1×n1×n1×n +++ n×1n×1n×1,进一步降低了参数量;在保持相同感受野的同时减少参数量。
4. ResNet
论文地址:https://arxiv.org/abs/1512.03385
ResNet可以说是卷积神经网络的一个里程碑式的结构,自从ResNet被提出后,此后的分类、检测和分割等任务大都使用ResNet作为骨干网络进行特征提取。
ResNet的思想比较简单,引入了一个残差结构来解决梯度消失的问题。普通网络需要直接拟合输出H(x)H(x)H(x),而ResNet通过引入一个shortcut连接,将需要拟合的映射变为F(x)=H(x)−xF(x)=H(x)-xF(x)=H(x)−x。即相对于直接优化潜在映射H(x)H(x)H(x),优化残差映射F(x)F(x)F(x)更容易。
5. DenseNet
论文地址:https://arxiv.org/abs/1608.06993
DenseNet通过建立前面所有层与后面层的密集连接,即直接将前面所有层的特征Concat后传到下一层,实现了特征在通道维度上的复用。
DenseNet采用了激活函数在前,卷积层在后的顺序,与一般的卷积网络不同;每个BottleNeck中,1×11×11×1大小的卷积的作用是固定输出通道数,达到降维的作用。
检测任务
1. FPN
论文地址:https://arxiv.org/abs/1612.03144
FPN(Feature Pyramid Network,特征图金字塔网络),主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能。FPN通过高层特征进行上采样(对高层特征进行放大,即卷积后的特征数最少的那一层)和低层特征进行自顶向下的连接(反向卷积),而且每一层都会进行预测。
算法大致结构如下:一个自底向上的线路,一个自顶向下的线路,横向连接(lateral connection)。
2. PAN
论文地址:https://arxiv.org/abs/1803.01534
PAN(Path Aggregation Network,路径聚合网络)采用自底向上路径增强的方法,在较低的层次上使用精确的定位信号来增强整个特征层次结构,缩短了较低层次与最上层特征之间的信息路径。提出了自适应特征池,它将特征网格和所有特征层连接起来,使每个特征层中的有用信息直接传播到下面的建议子网络。
分割任务
1. FCN
论文地址:https://arxiv.org/abs/1411.4038
FCN是对图像进行像素级的分类(也就是每个像素点都进行分类),从而解决了语义级别的图像分割问题。FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的特征图进行上采样,使它恢复到输入图像相同的尺寸,从而可以对每一个像素都产生一个预测,同时保留了原始输入图像中的空间信息,最后在上采样的特征图进行像素的分类。简单的说,FCN与CNN的区别在于FCN把CNN最后的全连接层换成卷积层,其输出的是一张已经标记好的图,而不是一个概率值。
2. U-Net
论文地址:https://arxiv.org/abs/1505.04597
网络的左侧是由卷积和Max Pooling构成的一系列降采样操作,由4个block组成,每个block使用了3个有效卷积和1个Max Pooling降采样,每次降采样之后Feature Map的个数乘2,因此有了图中所示的Feature Map尺寸变化。最终得到了尺寸为32×3232 × 3232×32的Feature Map。网络的右侧部分同样由4个block组成,每个block开始之前通过反卷积将Feature Map的尺寸乘2,同时将其个数减半(最后一层略有不同),然后和左侧对称的Feature Map合并,由于左侧和右侧的Feature Map的尺寸不一样,U-Net是通过将左侧的Feature Map裁剪到和扩展路径相同尺寸的Feature Map进行归一化的(即图1中左侧虚线部分)。右侧的卷积操作依旧使用的是有效卷积操作,最终得到的Feature Map的尺寸是338×338338 × 338338×338。由于该任务是一个二分类任务,所以网络有两个输出Feature Map。
3. SegNet
论文地址:https://arxiv.org/abs/1511.00561
SegNet的核心由一个编码器网络和一个对应的解码器网络以及一个像素级分类层组成。
4. PSPNet
论文地址:https://arxiv.org/abs/1612.01105
PSPNet的核心模块是Pyramid Pooling Modules,融合了四种不同金字塔尺度下的特征。通过CNN得到的特征图经过四种尺度的池化操作得到四种尺寸的特征图,然后经过卷积操作改变特征图的通道,在通过上采样操作恢复特征图的尺寸大小,最后与输入特征图进行Concat,得到最终的金字塔池化全局特征。
参考文章
四、全卷积网络FCN详细讲解(超级详细哦)
快速理解Unet的网络结构
SegNet算法详解
相关文章:

常见的卷积神经网络结构——分类、检测和分割
本文持续更新~~ 本文整理了近些年来常见的卷积神经网络结构,涵盖了计算机视觉领域的几大基本任务:分类任务、检测任务和分割任务。对于较复杂的网络,本文只会记录其中的核心模块以及重要的网络设计思想,并不会记录完整的网络结构。…...

20230323英语学习
Why Can You “Hear the Ocean” in Seashells? 为啥能在贝壳里“听见海的声音”? We’re told a number of stories as kids. One of the more harmless of these little lies is the one about seashells.You know the one: hold up a seashell to your ear, an…...

【粉丝投稿】上海某大厂的面试题,岗位是测开(25K*16)
简单介绍一句,大专出身,三年经验。跳了四次槽,面试了无数次,现在把自己的面试经验整理出来分享给大家,堪称必杀技! 1,一切从实际出发,对实际工作进行适当修饰 2,不会的简…...
shell简单使用介绍
脚本的基本元素声明,在解释并执行当前脚本文件中的语句之前,需要声明使用的命令解释器#一般写的解释器为 #!/bin/bash这里的#不再是注释了,而是必要的声明命令,也就是需要执行的语句注释,对代码进行解释说明分为单行注…...

RK3568平台开发系列讲解(调试篇)内核函数调用堆栈打印方法汇总
🚀返回专栏总目录 文章目录 一、dump_stack 函数二、WARN_ON(condition)函数三、BUG_ON (condition)函数四、panic (fmt...)函数沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将对驱动调试方法进行汇总学习。 一、dump_stack 函数 dump_stack 作用:打印内核调…...

一次内存泄露排查
前因: 因为测试 长时间压测导致 接口反应越来越慢,甚至 导致服务器 崩溃 排查过程 1、top 查看是 哪个进程 占用 内存过高 2、根据 进程 id 去查找 具体是哪个 程序的问题 ps -ef| grep 41356 可以看到 具体的 容器位置 排查该进程 对象存活 状态…...

「Mac安装ps」Adobo Photoshop 2023 下载安装详情教程,支持 AI 插件的 24 版 Photoshop
前言 Adobo Photoshop 2023 已推出,由于目前AI人工智能技术火爆,而很多的 AI 插件最低也需要24版的 photoshop ,所以这里我遍搜集并整理了此新版本的 photoshop 安装使用教程,后续也将提供 AI 插件的下载安装教程 安装文件下载 …...

Redis单线程还是多线程?IO多路复用原理
目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、Redis6.0引入多线程四、Redis主线程和IO线程是如何完成请求的?1、服务端和客户端建立socket连接2、IO线程读取并解析请求3、主线程执行请求命令4、IO线程会写回socket和主线程清…...

小菜鸟Python历险记:(第五集)
今天写的文章是记录我从零开始学习Python的全过程。在Python中对方法进行备注的时候,往往都是写在方法中的第一行所在位置。在书写注释以后,在调用方法的时候,鼠标点击方法会有一个浮动的提示显示备注内容。具体如下图所示:注释的…...

【思维模型】五分钟了解<复利思维>,为何学习复利思维?什么是复利思维?如何应用复利思维?
【思维模型】五分钟了解<复利思维>,为何学习复利思维?什么是复利思维?如何应用复利思维?1. 为何学习复利思维?2. 什么是复利思维?3. 如何应用复利思维?4. 小结参考&#…...
Vue.js语法详解:从入门到精通
Vue.js是一个流行的JavaScript框架,用于构建用户界面。它的核心特性包括数据双向绑定、组件化架构、虚拟DOM和响应式系统等。在本文中,我们将深入探讨Vue.js的语法,帮助读者更好地理解和应用Vue.js。1.模板语法Vue.js的模板语法采用了类似HTM…...
程序员的代码行数越少越好?
有些人可能会认为,应用程序中的代码行越少,就越容易阅读。这句话只有部分正确,我认为代码可读性的度量标准包括:代码应具备一致性代码应具备自我描述性代码应具备良好的文档代码应使用稳定的现代功能代码不应过于复杂代码的性能不…...
【每日一题Day156】LC1032字符流 | 字典树
字符流【LC1032】 设计一个算法:接收一个字符流,并检查这些字符的后缀是否是字符串数组 words 中的一个字符串。 例如,words ["abc", "xyz"] 且字符流中逐个依次加入 4 个字符 a、x、y 和 z ,你所设计的算法…...

V2G模式下含分布式能源网优化运行研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 📋📋📋本文目录如下:🎁🎁🎁 目录 💥1 概述 📚2 运行结果 &am…...

手写一个简单的RPC框架
学习RPC框架,由繁化简,了解其本质原理 文章目录项目简介什么是RPC?项目模块项目代码common模块client模块server模块framework模块测试项目简介 什么是RPC? RPC(Remote Procedure Call)即远程过程调用&am…...

【剑指offer】旋转数组的最小数字
👑专栏内容:剑指offer⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录一、题目描述1、题目2、示例示例1示例2二、题目分析1、暴力法2、二分法三、代码汇总1、暴力法2、二分法一、题目描述 1、题…...

【Dorker】Portainer轻量级可视化工具
文章目录Portainer简介登录Portainer第一次登录需创建admin,访问地址:xxx.xxx.xxx.xxx:9000选择local选项卡后本地docker详细信息展示安装nginx私有镜像仓库管理Portainer简介 Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板…...
基于 vue.js 进行组件封装的方案
摘要:本文将介绍如何基于 vue.js 进行组件封装的方案。我们将从分析组件封装的优势开始,然后依次介绍 vue.js 的基本概念,以及如何创建、封装和使用自定义组件。最后,我们将通过一个实际的示例,演示如何实现一个基于 v…...

【Unityc#专题篇】之c#基础篇
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:uni…...

Python(白银时代)——模块、包、异常
异常 概念 程序运行时,如果Python 解释器遇到了错误,会停止程序运行,并且提示错误信息,这就是异常 程序停止执行并提示错误信息的动作,称为 抛出异常 异常捕获 try: 里面的代码,不确定是否能够正常执行. …...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...