常见的卷积神经网络结构——分类、检测和分割
本文持续更新~~
本文整理了近些年来常见的卷积神经网络结构,涵盖了计算机视觉领域的几大基本任务:分类任务、检测任务和分割任务。对于较复杂的网络,本文只会记录其中的核心模块以及重要的网络设计思想,并不会记录完整的网络结构。
有一些网络结构是通用的,可以用于分类、检测和分割任务中的任意一个,本文就选取了其中一个有代表性的任务进行描述。
目录
- 分类任务
- 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: 里面的代码,不确定是否能够正常执行. …...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
