019:什么是 Resnet50 神经网络

news2025/1/24 7:59:29

本文为合集收录,欢迎查看合集/专栏链接进行全部合集的系统学习。

合集完整版请查看这里。

在上一节中,使用了一个简单的神经网络进行识别数字。

这个网络结构非常简单,一是因为层数少,二是因为结构是顺序的,没有其他分支结构。

这类神经网络的结构表示起来大概就像是:conv -> relu -> conv -> relu -> maxpool -> fc 这种,一层连接着一层,这种神经网络结构可以被称为顺序结构的神经网络,也是最简单的一种结构。

现在介绍一个相对来说更加复杂,但我认为在计算机视觉领域非常重要的一个神经网络结构——Resnet50 模型结构。

本专栏后面所有的算法解析、代码实战以及模型的性能调优,也都是基于该神经网络模型来进行的。

什么是 Resnet50 神经网络

Resnet 神经网络是何凯明在《Deep Residual Learning for Image Recognition》论文中首次提出的。

Resnet50 模型之所以叫这个名字,是因为模型的核心思想就藏在名字里。

名字可以拆分为:Res + net + 50,Res 是 Residual (残差)的缩写,50 指的是整个网络中有 50 个卷积层。

Resnet 有很多系列,比如 Resnet18, Resnet101等,后面跟的数字代表的是神经网络中的卷积层的数量。

基本上你可以这么理解:数字越大,卷积层越多,网络的深度越深,神经网络提取的特征越多。

下图是 Resnet 各系列的网络结构汇总表。可以看到在 Resnet50 的那一列中,从第一层到最后一层,总共50个卷积算法,这里把最后一层的全连接层也看做了卷积,至于为什么可以这么看,是因为两者有算法等价关系。
在这里插入图片描述

残差

那么 Res(Residual)残差又是个什么东西呢?

所谓残差,其实就是在顺序连接的神经网络中,增加了一个 short cut 分支结构,俗称为高速公路。

比如,在上一节手写数字识别那个里子中,模型是一层一层往下传的,这种顺序的神经网络如果层数不多,是完全可以使用的的,但是如果层数很深(比如50层或者几百层),数据这么一层一层往下传,在训练时就会发现神经网络很难被训练出来。

训练不出来的原因有很多,其中一个可能是由于反向传播时梯度消失的问题。

而残差结构就是为了解决这个问题。

如下图所示,左侧是正常的神经网络层,一层层往下传,在右侧增加一条连线,使得整个网络结构形成了一个残差结构。这样,网络的输出不再是单纯卷积的输出 F(x),而是原来的输出和输入的叠加 F(x) + X。
在这里插入图片描述

右侧的连线也被叫做高速公路:输入数据X不经过任何运算,可以快速到达输出的地方。

正是由于这个高速公路的存在,使得数据(无论是正向传播还是反向传播时传递梯度),数据都可以“无损”的通过,避免了上面说到的梯度消失的问题。

这种结构就是残差结构,在很多CV任务中,几乎都可以看到这种结构的存在,不论是图像识别的网络,还是目标检测的网络。

总结一下

Resnet50 是一个经典的图像分类网络,并且在图像分类任务上表现出色,它的创新就是引入了残差结构来确保网络深度可以搭建的很深。

很多工业项目中,会以 resnet50 为 back bone(骨干网络)来构建自己的神经网络。

也就说,不少CV网络中的骨干结构就是 resnet 结构,算法的层数不一定是50层,但是算法、原理几乎是一样的,在这个骨干结构的前后,在加一些模型自有的算法,从而来完成自己的特定任务。

为什么可以这样?

是因为resnet这种结构,包括卷积参数的设计,被证实有很强的图像特征提取能力,只要是图像任务,即使不是识别也需要提取特征,因此将 resnet 结构作为一种特征提取器来使用。

除此之外,几乎每一家做 AI 芯片的公司,都会以 resnet50 这个神经网络在自家芯片上跑出来的性能数据来作为宣传手段,这是因为只要这个网络性能好,就说明这家芯片至少在计算机视觉这个大领域内,性能都会有较好的泛化性,可见该模型的重要性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序获取位置服务

wx.getLocation({type: gcj02,success(res) {wx.log(定位成功);},fail(err) {wx.log(定位失败, err);wx.showModal({content: 请打开手机和小程序中的定位服务,success: (modRes) > {if (modRes.confirm) {wx.openSetting({success(setRes) {if (setRes.authSetting[scope.u…

煤矿场景下拖链检测数据集VOC+YOLO格式21407张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):21407 标注数量(xml文件个数):21407 标注数量(txt文件个数):2140…

Charles 4.6.7 浏览器网络调试指南:HTTPS抓包(三)

概述 在现代互联网应用中,网络请求和响应是服务交互的核心。对于开发者和测试人员来说,能够准确捕获并分析这些请求,是保证系统稳定性和性能的关键。Charles作为一个强大的网络调试工具,不仅可以捕获普通的HTTP请求,还…

第五天 Labview数据记录(5.1 INI配置文件读写)

5.1 INI配置文件读写 INI配置文件是一种简单的文本文件,通常用于存储软件的配置信息。它具有以下作用: 存储软件配置参数方便软件的维护和更新提高软件的灵活性和可扩展性便于用户修改和共享配置 5.1.1 前面板 1)新建项目SaveData_Exampl…

1905电影网中国地区电影数据分析(一) - 数据采集、清洗与存储

文章目录 前言一、数据采集步骤及python库使用版本1. python库使用版本2. 数据采集步骤 二、数据采集网页分析1. 分析采集的字段和URL1.1 分析要爬取的数据字段1.2 分析每部电影的URL1.2 分析每页的URL 2. 字段元素标签定位 三、数据采集代码实现1. 爬取1905电影网分类信息2. 爬…

qml Dialog详解

1、概述 Dialog是QML(Qt Modeling Language)中用于显示对话框的组件,它提供了一个模态窗口,通常用于与用户进行重要交互,如确认操作、输入信息或显示警告等。Dialog组件具有灵活的布局和样式选项,可以轻松…

开关电源设计(1)--电感和伏秒平衡

电感(Inductor)是电子电路中用于存储磁场能量的被动元件,其核心特性是阻碍电流的变化。当电流通过导线时,周围会产生磁场,电感是衡量导线(或线圈)存储磁场能量能力的物理量。 先认识几个公式 …

Blazo-Blazor Web App项目结构

让我们还是从创建项目开始,来一起了解下Blazor Web App的项目情况 创建项目 呈现方式 这里我们可以看到需要选择项目的呈现方式,有以上四种呈现方式 ● WebAssembly ● Server ● Auto(Server and WebAssembly) ● None 纯静态界面静态SSR呈现方式 WebAs…

数据表中的数据查询

文章目录 一、概述二、简单查询1.列出表中所有字段2.“*”符号表示所有字段3.查询指定字段数据4.DISTINCT查询 三、IN查询四、BETWEEN ADN查询1.符合范围的数据记录查询2.不符合范围的数据记录查询 五、LIKE模糊查询六、对查询结果排序七、简单分组查询1.统计数量2.统计计算平均…

System slimming and Quicker action

今天介绍2款提升工作效率的软件,一款用于系统瘦身,当你的各个盘快满的时候,你又不知道该删除哪些文件的时候,就可以用这个插件,进行系统瘦身;另外一款是可以快捷做很多操作以节省时间,比如有很多…

2025年华为云一键快速部署饥荒联机服务器教程

饥荒是一款动作冒险类求生游戏,自行部署专属游戏联机服务器,可以确保游戏的流畅性和稳定性,获得更好的游戏体验。为了方便玩家搭建专属游戏联机服务器,华为云推出了云游戏专场,无需专业技术,新手小白也能一…

OSCP - Proving Grounds - Quackerjack

主要知识点 端口转发 具体步骤 执行nmap扫描,开了好多端口,我先试验80和8081,看起来8081比较有趣 Nmap scan report for 192.168.51.57 Host is up (0.0011s latency). Not shown: 65527 filtered tcp ports (no-response) PORT STATE SERVICE …

Go 切片:用法和本质

要想更好的了解一个知识点,实战是最好的经历。 题目 我这里放一道题目: package mainimport "fmt"func SliceRise(s []int) {s append(s, 0)for i : range s {s[i]}fmt.Println(s) }func SlicePrint() {s1 : []int{1, 2}s2 : s1s2 append…

零售业革命:改变行业的顶级物联网用例

mpro5 产品负责人Ruby Whipp表示,技术进步持续重塑零售业,其中物联网(IoT)正引领这一变革潮流。 研究表明,零售商们正在采用物联网解决方案,以提升运营效率并改善顾客体验。这些技术能够监控运营的各个方面…

安卓动态设置Unity图形API

命令行方式 Unity图像api设置为自动,安卓动态设置Vulkan、OpenGLES Unity设置 安卓设置 创建自定义活动并将其设置为应用程序入口点。 在自定义活动中,覆盖字符串UnityPlayerActivity。updateunitycommandlineararguments (String cmdLine)方法。 在该方法中,将cmdLine…

Go学习:iota枚举

iota注意事项: iota:常量自动生成器,每隔一行,自动累加iota给常量赋值使用iota 遇到 const,重置为 0可以只写一个iotaiota如果是同一行,值都一样 简单代码: package mainimport "fmt&qu…

SpringBoot篇 单元测试 理论篇

1.单元测试概念介绍 简单来说,单元测试是对软件中的最小可测试单元进行检查和验证。在 Java 中,单元测试的最小单元是类。Spring Boot 提供了 spring-boot-starter-test 依赖,包含了 JUnit、Mockito、Hamcrest 等常用的测试框架1。&#xff0…

Formality:不可读(unread)的概念

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482https://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 在Formality中有时会遇到不可读(unread)这个概念,本文就将对此…

ThreeJS示例教程200+【目录】

Three.js 是一个强大的 JavaScript 库,旨在简化在网页上创建和展示3D图形的过程。它基于 WebGL 技术,但提供了比直接使用 WebGL 更易于使用的API,使得开发者无需深入了解 WebGL 的复杂细节就能创建出高质量的3D内容。 由于目前内容还不多,下面的内容暂时做一个占位。 文章目…

【前端】Hexo 部署指南_hexo-deploy-git·GitHub Actions·Git Hooks

文章目录 前言基于 hexo-deploy-git基于 GitHub Actions基于 Git Hooks云平台端服务器端Git HooksSSHNginx 本地机端原理参考 前言 原文地址:https://blog.dwj601.cn/FrontEnd/Hexo/hexo-deployment/ #mermaid-svg-dfuCXqzZCx5I07IO {font-family:"trebuchet …