Mask RCNN网络源码解读(Ⅱ) --- ResNet、ResNeXt网络结构、BN及迁移学习

news2025/1/20 5:46:19

目录

1.ResNet简介

2.residual结构和ResNet-34详解

2.1 residual结构

2.2 Batch Normalization 

3.迁移学习 

4.ResNeXt网络结构


1.ResNet简介

        ResNet在2015年由微软实验室提出,斩获当年lmageNet竞赛中分类任务第一名,目标检测第一名。获得coco数据集中目标检测第一名,图像分割第一名。(啥也别说了,就是NB) 。

        网络中的亮点:

        ①超深的网络结构(突破1000层)

        ②提出residual模块
        ③使用Batch Normalization加速训练(丢弃dropout)

        我们看看34层的残差网络的部分:

         在我们的34层的ResNet网络中,首先是个卷积层、其次是个池化层,图中有连接线的结构就是一个残差结构,这个网络就是由一系列的残差结构组成的,最后拼接一个平均池化下采样操作和一个全连接层完成网络输出。

        我们来看一下它的效果: 

        我们发现几个问题:并不是越深效果越好,因为有梯度消失梯度爆炸的问题。

        如何解决这种问题:数据标准化处理、BN、权重归一化...

2.residual结构和ResNet-34详解

2.1 residual结构

        我们来看两种不同的残差结构:左边主要针对网络层数较少的网络,右边主要针对网络层数较大的网络。

        这里的残差指在主分支上经过一系列卷积层所得到的结果的特征矩阵再与我们输入特征矩阵进行相加,相加后再经过ReLU激活函数。

        这里的1\times1的卷积核主要用来改变通道数,那么这两个网络中参数有多少呢?

        假设我们同样的输入一个256维的特征向量:

        对于第一个特征矩阵:

        3*3*256(卷积核参数)*256(卷积核个数,用256个卷积核保证输入输出channel相同),对于第二个卷积核,我们需要3*3*256*256个参数,加起来是1179648个参数。

        对于第二个特征矩阵:

        1*1*256*64 + 3*3*64*64 + 1*1*64*256 = 69632个参数。

        因此使用的残差结构越多,我们省下的计算资源也就越多。

        上表是论文中给出的网络结构。

        我们主要看一下34层的网络结构:

        首先是个7\times7的卷积核,下一层是一个3\times3的最大池化下采样层。对于我们的Conv2_x的残差结构,这里使用了三层残差层。

        对于我们的Conv3_x的残差结构,这里使用了四层残差层。

        对于我们的Conv4_x的残差结构,这里使用了六层残差层。

        对于我们的Conv5_x的残差结构,这里使用了三层残差层。

        最后使用平均池化下采样和全连接层。

        我们发现其有实线和虚线,它们是不一样的吗?

        对于实线结构,它的输入特征矩阵的shape和输出特征矩阵的shape是完全一样的,直接进行相加;对于虚线的结构,它的输入特征矩阵的shape和输出特征矩阵的shape不是完全一样的。

        这里对应我们的conv_3,它的输入特征矩阵的shape是56\times56\times64的,它的输出特征矩阵的shape是28\times28\times 128的,旁边的捷径保证了特征矩阵的高宽通道相同能够进行相加操作。

2.2 Batch Normalization 

        即特征矩阵每个channel对应的维度要满足均值为0,方差为1。

        具体阐述请见博文:

BN详解icon-default.png?t=MBR7https://blog.csdn.net/qq_37541097/article/details/104434557        “对于一个拥有d维的输入x,我们将对它的每一个维度进行标准化处理。”  假设我们输入的x是RGB三通道的彩色图像,那么这里的d就是输入图像的channels即d=3,x=(x^{(1)},x^{(2)},x^{(3)}),其中x^{(1)}就代表我们的R通道所对应的特征矩阵,依此类推。标准化处理也就是分别对我们的R通道,G通道,B通道进行处理。上面的公式不用看,原文提供了更加详细的计算公式:

        计算每一通道(一批数据同一通道的所有数据)的均值方差,将原参数减去均值除以方差得到标准化处理的数据,再根据\gamma\beta对数据的均值和方差进行进一步处理。如果不通过\gamma\beta对数据进行调整,我们的数据均值为0,方差为1。这两个参数是通过反向传播学习得到的。

        来举一个例子,假设batch_size = 2,我们这一批数据中有俩特征矩阵,我们要对这两个特征矩阵(channel = 2)进行归一化处理:

        使用BN时需要注意的一些问题:

(1)训练时要将traning参数设置为True,在验证时将trainning参数设置为False。在pytorch中可通过创建模型的model.train()和model.eval()方法控制。
(2) batch size尽可能设置大点,设置小后表现可能很糟糕,设置的越大求的均值和方差越接近整个训练集的均值和方差。
(3)建议将bn层放在卷积层(Conv)和激活层(例如Relu)之间,且卷积层不要使用偏置bias,因为没有用,参考下图推理,即使使用了偏置bias求出的结果也是一样的y_i^b = y_i

3.迁移学习 

4.ResNeXt网络结构

        更新了残差块结构。

        我们先看看性能参数:

        先来了解一下组卷积:

        对于普通的卷积,假设输入的特征矩阵的channel = C_{in},输出的特征矩阵channel = n,那么我们需要n个卷积核进行卷积操作,对于每一个channel都是k\times k的图像,我们网络所需的参数数量是k\times k \times C_{in}\times n

        对于组卷积,假设输入的特征矩阵的channel = 4,输出的特征矩阵channel 划分为两个组,对每个组分别进行卷积操作(每组的channel为\frac{n}{2}),我们计算下组卷积的参数个数,这里还是假设每个组卷积核的高度和宽度都是等于k的,输入特征矩阵的channel为C_{in},将原始特征矩阵的channel分为g组,因此对于每个组的每个卷积核而言,它的参数个数等于k \times k \times \frac{C_{in}}{g},由于我们最后要得到一个channel为n的特征矩阵,对于每个group而言,我们需要去使用\frac{n}{g}个卷积核,划分了g个组,最后还需乘g

 

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

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

相关文章

信道模型:Rayleigh、Rician、卫星→地面

这里写目录标题比较C. Loo模型:直射阴影,多径不阴影Corazza模型:直射和多径都阴影Lutz模型:好坏2个状态Rayleigh and Rician 信道生成Shadowed-Rician 直射径 散射径[Secure Transmission in Cognitive Satellite Terrestrial Net…

Redis的String类型,原来这么占内存

Redis的String类型,原来这么占内存 存一个 Long 类型这么占内存,Redis 的内存开销都花在哪儿了? 1、场景介绍 假设现在我们要开发一个图片存储系统,要求这个系统能够根据图片 ID 快速查找到图片存储对象 ID。图片 ID 和图片存储对…

【Flink基础】-- 源码中的注解

1.Flink自定义注解级别在升级 Flink版本至 1.15.3时,偶然遇到了一个异常,然后就准备详细了解下源码中的注解。设计注解的初衷:为了更好地进行代码和版本管理,Flink使用了Java的注解特性自定义了注解,对代码进行增强说明…

Kubernetes安全扫描之kubescape

一 背景 Kubescape 是第一个用于测试 Kubernetes 是否按照 NSA 和 CISA 的 Kubernetes 强化指南中定义的安全部署的工具 使用 Kubescape 测试集群或扫描单个 YAML 文件并将其集成到您的流程中。 二 特性 功能:提供多云 K8s 集群检测,包括风险分析、安…

stack 中缀表达式求值

【解法一】双栈思路梳理 【解法二】利用逆波兰表达式求解(中缀转后缀) 这个有俩种方法,一是直接根据条件进行各种情况的推导直接由中缀表达式求解, 二就是将中缀表达式转化为后缀表达式,利用更容易的逆波兰表达式求解…

分享微信小程序开发详细步骤

1、梳理小程序开发功能需求自己可以用思维导图写出自己想要开发的小程序里面,需要设置哪些功能,这些功能帮助我解决什么问题。然后把想法用文字形式在思维导图中写出来。如果不知道如果梳理,也可以找专业的产品经理协助处理。如果不知道功能可…

Vector - VT System - CANCANFDLIN板卡_VT6104|6204

对于做车载开发或者测试的朋友来说,大部分对于CANoe(VN1600系列)是相当的熟悉,我们知道CANoe支持CAN&CANFD&LIN,都有对应的硬件来匹配;但是如果需要做台架测试,VN1600系列的硬件放在架子…

读书笔记:来自一个外企优秀销售的业务心法和秘籍(中)

01 普通销售能达到的三种境界第一 投其所好 (110)销售把自己的资源1奉献出去,控制不了对方的回报,新人都处在这个阶段。第二 互利互惠 (1+1=1)大家互相贡献自己的一部分,…

满足你一切需求的 MMYOLO/MMDet 可视化 (一)

可视化在深度学习时代算是核心需求,借助可视化功能,研究者可以快速定位分析模型以及排查问题。在 OpenMMLab 2.0 时代,MMEngine 对常用的可视化需求进行了设计和实现,其具备如下功能: 提供丰富的开箱即用可视化功能&a…

TP6队列与延时队列

安装在此我就不再略过TP6的项目创建过程了&#xff0c;大致就是安装composer工具&#xff0c;安装成功以后&#xff0c;再使用composer去创建项目即可。think-queue 安装composer require topthink/think-queue项目中添加驱动配置我们需要在安装好的config下找到 queue.php<…

Solon v1.12.1 发布,已累计 10000+ 次提交

一个更现代感的 Java 应用开发框架&#xff1a;更快、更小、更自由。没有 Spring&#xff0c;没有 Servlet&#xff0c;没有 JavaEE&#xff1b;独立的轻量生态。主框架仅 0.1 MB。 Controller public class App {public static void main(String[] args) {Solon.start(App.cl…

leetcode刷题精讲————17.电话号码的字母组合

力扣https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/ 这道题要用到多叉树遍历、回溯、递归、排列组合等相关知识&#xff0c;算是比较经典的例题了&#xff0c;掌握它的核心思想就可以解决这一大类问题。 首先&#xff0c;2~9的数字对应不同…

JS 安全策略 101

依赖审计 依赖审计其实就是利用 npm 或是 yarn 自带的一个 audit 命令检测 node_module 里存在的一些具有安全隐患的依赖项。我习惯用yarn audit, 所以给大家放了张自己博客的 yarn 审计结果。这里显示&#xff1a;一个叫 trim 的包太老了&#xff0c;有很高的安全风险。 有风…

【数据结构初阶】5. 栈和队列

栈 1.1 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。**进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。**栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则…

win7安装onenote2016时碰到30094-1011(0)的 问题

安装办法用途【1】中所有的更新【1】中下载IE11的依赖IE11360软件管家解决OneNote的登录界面不显示问题微软常用运行库360软件管家kernalbase.dll等文件的缺失windowsupdateagent-7.6-x64官网下载Windows6.1-KB4474419-v3-ia64.msu控制面板的update中选择安装支持sha-2校验【3】…

【算法】差分数组

目录1.概述2.代码实现3.应用本文参考&#xff1a; LABULADONG 的算法网站 1.概述 &#xff08;1&#xff09;差分数组的思想与前缀和算法的非常近似&#xff08;有关前置和算法的具体细节可以参考前缀和算法这篇文章&#xff09;&#xff0c;其主要适用于频繁地对原始数组的某…

国产单通道直流有刷马达驱动芯片型号推荐

直流有刷马达驱动芯片是一款适应消费类、工业类的单通道直流有刷驱动IC&#xff0c;适用于各类玩具&#xff0c;智能家居&#xff0c;智能三表。小封装&#xff0c;低功耗&#xff0c;内置完善的保护机制&#xff08;过温/过流/过压&#xff09;。具有一个PWM&#xff08;INA/I…

写了2年文章的我,昨天第一次露脸直播。

作为一名不知名的技术博主&#xff0c;上周六晚上在视频号第一次做露脸直播。 勇敢的迈出视频号开播的第一步&#xff0c;并且数据不错&#xff0c;这个感觉很爽&#xff0c;和写作输出完全是两回事。 写这篇文章的目的是鼓励技术博主们&#xff0c;也尝试一下直播和做视频。 …

ClickHouse 挺快,esProc SPL 更快

开源分析数据库ClickHouse以快著称&#xff0c;真的如此吗&#xff1f;我们通过对比测试来验证一下。 ClickHouse vs Oracle 先用ClickHouse&#xff08;简称CH&#xff09;、Oracle数据库&#xff08;简称ORA&#xff09;一起在相同的软硬件环境下做对比测试。测试基准使用国…

基于ESP8266和SU-03T的离线语音红外遥控器设计

一. 系统设计及框图 之前设计了基于ESP32模块的智能红外遥控器&#xff0c;具体功能见以下CSDN链接&#xff1a; 智能红外遥控器&#xff08;一&#xff09;&#xff1a;功能简介_远望创客学堂的博客-CSDN博客 上面这款智能红外遥控器可以实现红外的远程控制&#xff0c;也可…