RIS 系列 See-Through-Text Grouping for Referring Image Segmentation 论文阅读笔记

RIS 系列 See-Through-Text Grouping for Referring Image Segmentation 论文阅读笔记

  • 一、Abstract
  • 二、引言
  • 三、相关工作
    • 3.1 Semantic Segmentation and Embeddings
    • 3.2 Referring Expression Comprehension
    • 3.3 Referring Image Segmentation
  • 四、方法
    • 4.1 视觉表示
    • 4.2 文本表示
    • 4.3 See-through-Text Embedding
    • 4.4 Bottom-up STEP Heatmaps
    • 5.5 Top-down Heatmap Refinement
      • 细节
    • 4.6 训练
  • 五、实验
    • 5.1 消融研究
    • 5.2 与 SOTA 方法的比较
    • 5.3 定量分析
  • 六、结论

写在前面

  最近 Arxiv 没啥新东西了,找篇老的文章读读,看看它们之间的区别在哪里。

  • 论文地址:See-Through-Text Grouping for Referring Image Segmentation
  • 代码地址:源文未提供
  • 收录于:ICCV 2019
  • Ps:2023 年的最后一篇博文阅读笔记,我今年的 flag 也实现啦。主页 更多干货,欢迎关注呀,期待 6 千粉丝有你的参与呦~

一、Abstract

  基于传统的分组技术,本文提出一种方法来解决指代分割。提出的方法受循环卷积神经网络 convolutional-recurrent neural network (ConvRNN) 驱动,迭代地执行自顶向下的,对分割线索的自下而上的聚合过程。给定语言表达式,本文提出的方法学习去预测与其相关的每个像素,并驱动一个 See-through-Text Embedding Pixelwise (STEP) 热力图。通过学到的视觉-文本 co-embedding 得出像素水平的分割 masks。将热力图转化为一个精炼的热力图,ConvRNN 执行一个自上而下的近似。在精炼热力图辅助下,通过重新评估注意力分布来更新指代表达式的文本表示,然后计算一个新的 STEP 热力图作为 ConvRNN 的下一步输入。本文提出的方法泛化性强,无需来自其他 DNN 模型的目标检测结果,达到了 SOTA 的效果。

二、引言

  首先指出深度神经网络 deep neural networks (DNNs) 搭配大尺度图像/视频数据集的分割效果很好,而问题在于这些方法智能应用在那些预定义的目标类别上。接下来指出 RIS 的定义,应用。

  本文旨在解决 RIS 问题,其中自然语言指代表达式用于引导像素级图像 mask 的生成。接下来再水一下 RIS 任务的难度。之前的方法总是采用 “拼接-卷积” 的流程:先拼接视觉和语言特征,然后应用卷积操作在拼接后的特征上。然而在未考虑像素的视觉特征与自然语言描述相关联的情况下,效果不那么好。

  接下来是对 bottom-up 和 top-down 方法的介绍,bottom-up 方法关注于将像素分组到一致的区域,而 top-down 则是利用先验信息,例如目标表示去完成这一任务。本文提出的分割方法是一种综合利用 bottom-up 和 top-down 视角下的 DNN 方法。

  给定一个 RIS 训练集,先学习一种兼容性表示是可行的。例如那些在指代区域中的像素产生较高的兼容性得分,而不在指代区域内的分数较低。

在这里插入图片描述
  如上图所示,提出的方法包含一个收集像素分割线索的的 bottom-up 部分 See-through-Text Embedding Pixelwise (STEP),旨在衡量视觉-语言 co-embedding 的兼容性。另一方面,计算分类损失的 GT 信息可以教导模型以 top-down 的方式精炼每一步的 STEP 热力图。此外,设计了一个 ConvRNN 模型来迭代 bottom-up 和 top-down 的信息。方法优势总结如下:

  • 不同于 “拼接-卷积” 的处理,文本的方法显式地学习到一个视觉-文本 co-embedding,名为 See-through-Text Embedding Pixelwise (STEP) 来对齐两个模态;
  • 提出的 STEP 输出一个兼容性得分来衡量给定的指代表达式,反过来又关联相关像素到对应区域。其中的分组原则配备了传统的 bottom-up 方法用于图像分割;
  • 提出的 ConvRNN 以及合适的加权/注意力计划确保了迭代融合过程的成果,增强了最后的分割效果;
  • 提出的方法是一种标注的 DNN 方法,其结构包含 bottom-up 和 top-down 推理。在几大数据集上实现了 SOTA 的效果。

三、相关工作

3.1 Semantic Segmentation and Embeddings

  首先引入 Fully Convolutional Network (FCN),接下来是一些方法的介绍:DeepLab、DeViSE 等。本文的方法同样也计算注意力,但是在像素水平上而不是 box 水平上。

3.2 Referring Expression Comprehension

  首先是对 REC 的粗略介绍,接着举例一些方法,还提到了 VQA。通常采用 Recurrent
Neural Network (RNN) 来编码序列,此外还引入一种卷积的 RNN 来融合多个热力图。此外, embedding 的共同学习还广泛应用在 VQA 中。 不同之处:并非使用平均池化将每个区域转变为一个向量用于后续的 embedding,而是稠密地 embed 每个像素的视觉表示到一个公共空间。提出的 See-through-Text Embedding Pixelwise (STEP) 为后续的 top-down 分组提供了上下文信息。

3.3 Referring Image Segmentation

  这一部分就有点多了,首先指出谁是第一个引入 RIS 任务的,之后是一些方法的介绍,例如 MAttNet 等。

  总结下:大多数之前的方法遵循 “拼接-卷积” 的理念,而卷积层用于融合这些拼接的多模态特征用于生成最终的分割。相比之下,文本的方法显式地学习一个 co-embedding 用于衡量多模态特征的兼容性,最后对图像分割的 bottom-up 进行分组。此外,使用了一个 ConvRNN 整合 top-down 和 bottom-up 的分割线索。

四、方法


  如上图所示,给定一个输入图像 I I I 和语言表达式 S S S,这一任务旨在定位到由 S S S 指定的前景区域。提出的 ConvRNN 受 see-through-text grouping 所驱动。在每一时间步上,首先从特征提取模型的感受野特征图上决策出 I I I 的视觉表示。之后 bottom-up grouping 将 embeded 这两种表示到一个公共特征空间用于逐像素的衡量多模态间的兼容性且生成 STEP 热力图 Q t Q_t Qt,表明每个像素的前景概率。以 Q t Q_t Qt 为输入,ConvRNN 将其提炼为 P t P_t Pt,即为时间步 t t t 的指代分割概率图。建立在这些迭代过程之上,本文的方法最终得到一个分割结果 P T P_T PT

4.1 视觉表示

  采用 DeepLab ResNet-101v2,预训练在 Pscal VOC 上生成视觉表示。输入图像调整至 W × H W\times H W×H 尺寸,零填充,输出五个特征图 F ℓ , ℓ ∈ { 1 , 2 , 3 , 4 , 5 } F_{\ell},\ell\in\{1,2,3,4,5\} F,{1,2,3,4,5}。在每个 F ℓ F_{\ell} F 上直接拼接上一个 8 维度的空间坐标来增强空间位置表示信息。ConvRNN 执行从 t = 1 , … , T t=1,\ldots,T t=1,,T,其中 T = 5 × K T=5\times K T=5×K,表明 K K K 折部署。在每一时间步上,视觉表示由 F ℓ t F_{\ell_{t}} Ft 来确定,其中 ℓ t = 4 m o d 5 \ell_t = 4~mod~5 t=4 mod 5

  具体来说,设置输入图像尺寸 W = H = 320 W=H=320 W=H=320,因此特征图的尺寸分别是: F 1 = F 2 = 80 × 80 F_1=F_2=80\times80 F1=F2=80×80 F 3 = F 4 = F 5 = 40 × 40 F_3=F_4=F_5=40\times40 F3=F4=F5=40×40。添加 8 维空间坐标表示后,通道维度分别为 72 , 264 , 520 , 1032 , 2056 72,264,520,1032,2056 72,264,520,1032,2056

4.2 文本表示

  使用 S = { w 1 , w 2 , … , w n } S=\{w_1,w_2,\ldots,w_n\} S={w1,w2,,wn} 表示给定的语言表达式,而在时间步 t t t 上的文本表示为 s t \mathrm s_t st。使用预训练的 GloVe 模型来编码每个词 w i ∈ S w_i\in S wiS 到一个 300D 的词 embedding w i ∈ R 300 \mathrm{w}_i\in\mathbb{R}^{300} wiR300。输入的句子 S S S 然后通过 GloVe 词 embedding 进行表示。注意:若 I I I 中的区域变得明显时,则 S S S 的文本表示也会逐渐增强。至此,拼接 S S S 中的 n n n 个词 embedding,然后送入单层的双向 LSTM。令 h j \mathrm{h}_j hj 表示 biLSTM 中,第 j j j 个单词的隐藏层输出,令 v i \mathrm{v}_i vi 表示 I I I 中像素 i i i 位置的视觉特征向量, v i \mathrm{v}_i vi 的维度与 F ℓ t F_{\ell_t} Ft 有关。之后分别在每个隐藏状态的输出上附上一个 1 × 1 1\times1 1×1 卷积,以得到 h j ↦ h ~ j ∈ R 400 \mathbf{h}_j\mapsto\tilde{\mathbf{h}}_j\in\mathbb{R}^{400} hjh~jR400 v i ↦ v ~ i ∈ R 400 \mathbf{v}_i\mapsto\tilde{\mathbf{v}}_i\in\mathbb{R}^{400} viv~iR400。然后在每个时间步 t t t 上, S S S 的文本表示执行逐像素 co-embedding 如下:
s t = ∑ i ∈ I π { P t − 1 ( i ) } × ∑ j = 1 n π { ⟨ v ~ i , h ~ j ⟩ } h j \mathrm{s}_t=\sum_{i\in I}\pi\{P_{t-1}(i)\}\times\sum_{j=1}^n\pi\{\langle\tilde{\mathrm{v}}_i,\tilde{\mathrm{h}}_j\rangle\}\mathrm{h}_j st=iIπ{Pt1(i)}×j=1nπ{⟨v~i,h~j⟩}hj其中 π { ⋅ } \pi\{\cdot\} π{} 表示 Softmax 函数, P t − 1 ( i ) P_{t-1}(i) Pt1(i) 为像素 i i i 成为指代前景的概率。 视觉参与的 s t \mathrm{s}_t st 表示连接到预测的分割图 P t − 1 P_{t-1} Pt1 上。

  GloVe 模型预训练在公共的 Crawl 数据集上,840B 个 tokens。每个句子 20 个单词长度。biLSTM 的细胞尺寸设为 1000。

4.3 See-through-Text Embedding

  为计算 ConvRNN 在每一时间步 t t t 上的 STEP,首先定义每一像素的视觉表示为 v \mathrm{v} v,然后采用两组映射 ϕ ( v ) \phi (\mathrm{v}) ϕ(v) ψ ( s ) \psi(\mathrm{s}) ψ(s) ( v , l ) (\mathrm{v},\mathrm{l}) (v,l) 映射到视觉-文本 co-embedding 的邻近空间上。因此,像素关联的任务就变为了通过相应的 embedding 函数来预测两个模态表示间的关系。

  除 biLSTM 外,还考虑了 atrous convolution 来增强上下文信息。具体来说,对所有来自 F ℓ , ℓ ∈ { 1 , 2 , 3 , 4 , 5 } F_{\ell},\ell\in\{1,2,3,4,5\} F,{1,2,3,4,5} 的特征图,利用卷积核尺寸为 3 × 3 3\times3 3×3,比例为 r = 3 r=3 r=3 的 atrous convolutions 生成。因此,给定成对表示 v \mathrm{v} v s \mathrm{s} s,STEP 通过一个归一化的单层全连接网络生成其 ebedding:
ϕ ( v ) = N L 2 ( tanh ⁡ ( W v ⋅ v + b v ) ) ψ ( s ) = N L 2 ( tanh ⁡ ( W s ⋅ s + b s ) ) \begin{aligned}\phi(\mathbf{v})&=\mathrm{NL}_2(\tanh(W_v\cdot\mathbf{v}+\mathbf{b}_v))\\\psi(\mathbf{s})&=\mathrm{NL}_2(\tanh(W_s\cdot\mathbf{s}+\mathbf{b}_s))\end{aligned} ϕ(v)ψ(s)=NL2(tanh(Wvv+bv))=NL2(tanh(Wss+bs))其中 W W W b b b 分别为 fc 网络的权重和 bias, N L 2 ( ⋅ ) \mathrm{NL}_2(\cdot) NL2() 表示 L 2 L2 L2-归一化,输出维度设为 1000。

4.4 Bottom-up STEP Heatmaps

  准备使用余弦相似度来衡量每一视觉-文本对的相似度。在像素 i i i 处与视觉特征 v i \mathrm{v}_i vi 的STEP 相似度通过内乘获得:
Q ( i ) = max ⁡ { 0 , ⟨ ϕ ( v i ) , ψ ( s ) ⟩ } Q(i)=\max\{0,\left.\langle\phi(\mathbf{v}_i),\psi(\mathbf{s})\rangle\right\} Q(i)=max{0,ϕ(vi),ψ(s)⟩}其示意图如下图所示:

在这里插入图片描述

5.5 Top-down Heatmap Refinement

  时间步 t t t 上的 STEP 的热力图 Q t Q_t Qt 源于 bottom-up grouping,其中像素关联通过衡量给定文本表达式 s t \mathrm{s}_t st 实现。这一过程极度依赖于局部联系,因此缺乏对指代分割的全局视角。于是本文将 top-down 过程整合进 ConvRNN,在指代分割的 GT 指导下来提炼 Q t Q_t Qt

  在本文的方法中,选择在 ConvRNN 下实施 top-down 的热力图提炼。具体来说,采用 GRU 卷积作为 base 模型,输入为 { x t } \{x_t\} {xt},则有:
f t = σ ( R f ∗ h t − 1 + W f ∗ x t + b f ) zt = σ ( R z ∗ h t − 1 + W z ∗ x t + b z ) h ^ t = tanh ⁡ ( R h ∗ ( f t ⊙ h t − 1 ) + W h ∗ x t + b h ) h t = z t ⊙ h t − 1 + ( 1 − z t ) ⊙ h ^ t \begin{aligned} &f_t =\sigma(R^f*h_{t-1}+W^f*x_t+b^f) \\ &\text{zt} =\sigma(R^z*h_{t-1}+W^z*x_t+b^z) \\ &\hat{h}_{t} =\tanh(R^h*(f_t\odot h_{t-1})+W^h*x_t+b^h) \\ &h_{t} =z_t\odot h_{t-1}+(1-z_t)\odot\hat{h}_t \end{aligned} ft=σ(Rfht1+Wfxt+bf)zt=σ(Rzht1+Wzxt+bz)h^t=tanh(Rh(ftht1)+Whxt+bh)ht=ztht1+(1zt)h^t其中 f t f_t ft z t z_t zt h t h_t ht 分别为重置门的门值,更新门的门值,以及 t t t 时刻帧的隐藏激活值。输入的权重和循环隐藏单元分别为 W ∗ W^* W R ∗ R^* R b b b 表示 bias, σ \sigma σ 为 sigmoid 函数, ⊙ \odot 表示逐元素乘法。GRU 将输入和遗忘门组合到一个更新门 z t z_t zt 上,用于平衡之前的激活值 h t 1 h_{t1} ht1 和更新的激活值 h ^ t \hat h_t h^t,遗忘门 f t f_t ft 决定是否遗忘之前的激活。

  来自 ConvGRU 的最终隐藏层由多分辨率信息图组成,用于预测指代的前景概率。使用一个 1 × 1 1\times1 1×1 卷积来得到最终的概率图:
P T = σ ( W P ∗ h T + b P ) P_T=\sigma(W^P*h_T+b^P) PT=σ(WPhT+bP)

细节

  GRU 卷积的权重尺寸为 h × w × c × f h\times w\times c\times f h×w×c×f,其中 h , w , c , f h,w,c,f h,w,c,f 分别表示卷积核的高、宽、输入通道的数量、滤波器的数量。实验中设置 h = w = c = 3 h=w=c=3 h=w=c=3 f = 32 f=32 f=32。共有 5 × K 5\times K 5×K 张 STEP 热力图 { Q t } \{Q_t\} {Qt} 作为 GRU 卷积的输入,从而生成最终的指代分割。

4.6 训练

  完整的 DNN 模型连接解耦的 bottom-up 和 top-down 过程。为使得网络端到端训练,采用双向插值上采样热力图:
P T → upsample P ∈ R W × H P_T\xrightarrow{\text{upsample}} P \in \mathbb{R}^{W\times H} PTupsample PRW×H
  接下来是二值交叉熵损失函数的定义:
L = − 1 H W ∑ i { G log ⁡ P + ( 1 − G ) log ⁡ ( 1 − P ) } ( i ) L=\frac{-1}{HW}\sum_i\{G\log P+(1-G)\log(1-P)\}(i) L=HW1i{GlogP+(1G)log(1P)}(i)
  模型采用 Adam 优化器训练,700K 次迭代。权重衰减和初始的学习率分别为 0.005,0.00025,采用 polynomial 衰减,其指数为 0.9。

五、实验

  • 数据集:ReferItGame (ReferIt)、UNC & UNC+、Google-Ref (GRef);
  • 指标:mean intersection-over-union metric (mIoU)、Prec@X: X ∈ { 0.5 , 0 : 6 , 0.7 , 0.8 , 0.9 } X\in \{0.5,0:6,0.7,0.8,0.9\} X{0.5,0:6,0.7,0.8,0.9}

5.1 消融研究

在这里插入图片描述
在这里插入图片描述

5.2 与 SOTA 方法的比较

在这里插入图片描述

5.3 定量分析

在这里插入图片描述
在这里插入图片描述

六、结论

  本文提出一种 DNN 架构,由两个解耦模块组成,用于解决 RIS 任务。 第一个模块解决 bottom-up grouping 问题,输出为 See-through-Text Embedding Pixelwise (STEP) 热力图。第二个模块将 ConvRNN 视为 top-down 驱动机制来提炼生成的 STEP 热力图。创新点在于 ConvRNN 的输入为前一步指代的输出。实验效果很好。

写在后面

  读这篇论文就知道不是大陆的笔锋,原来是湾湾国立清华大学出品。论文新颖性放在 18、19 年来说还是可以的,实验也还行。

  落笔千言,终究结束。2023 年啊,52周,写完了 52 篇高质量博文。期待我们下一次相见~

另外吐槽下 CSDN 2023 年的博客之星,越来越水了,真实离谱,一堆灌水,一坨翔。

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

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

相关文章

【yolofastest上手】

一、前言 yolofastest网上资料比较少,也没有视频教学,所以想要使用参考了很多资料,只能说各资料都不尽全,让刚接触的小白无从下手。 参考资料: github地址 yolo-fastest 快速上手 修改参数遇到的问题 能在ARM-CPU上实时识别图像的…

销售转行上位机编程:我的学习与职业经历分享

同学们好,我是杨工,原先是一名销售。 通过在华山编程培训中心学习,成功转行上位机编程,对此我想分享学习和职业经历。 在职业生涯的早期,我并没有考虑将技术融入到我的工作中。然而,在几次创业的失败后&a…

{MySQL}索引事务和JDBC

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、索引1.1索引是什么1.2作用1.3代码 二、事务2.1什么是事务2.2使用 三.JDBC总结 前言 接着上次,继续讲下MySQL 提示:以下是本篇文章正…

Jmeter吞吐量控制器总结

吞吐量控制器(Throughput Controller) 场景: 在同一个线程组里, 有10个并发, 7个做A业务, 3个做B业务,要模拟这种场景,可以通过吞吐量模拟器来实现。 添加吞吐量控制器 用法1: Percent Executions 在一个线程组内分别建立两个吞吐量控制器, 分别放业务A和业务B …

用CSS中的动画效果做一个转动的表

<!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><title></title><style>*{margin:0;padding:0;} /*制作表的样式*/.clock{width: 500px;height: 500px;margin:0 auto;margin-top:100px;border-rad…

【数据结构】双向带头循环链表的实现

前言&#xff1a;在前面我们学习了顺序表、单向链表&#xff0c;今天我们在单链表的基础上进一步来模拟实现一个带头双向链表。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:数据结构 &#x1f448; &#x1f4af;代码仓库:卫卫周大胖的…

USB -- STM32F103复合设备(HID+MassStorage)传输讲解(十)

目录 链接快速定位 前沿 1 描述符讲解 1.1 设备描述符 1.2 配置描述符 1.3 接口描述符 1.4 功能描述符 1.5 端点描述符 1.6 字符串描述符 1.7 报告描述符 2 运行演示 链接快速定位 USB -- 初识USB协议&#xff08;一&#xff09; 源码下载请参考链接&#xff1a;…

java中PhantomReference WeakReference SoftReference垃圾回收触发时机以及使用场景

java 中对象引用一般引用分为四种情况 强引用 即我们平常创建的对象 Object obj new Object() 垃圾回收触发时机 在没设置 jvm 参数 -XX:PretenureSizeThreshold 和 -XX:MaxTenuringThreshold 的情况下 -XX:PretenureSizeThreshold 的值为 0&#xff0c;即未设置大对象直接…

三巨头对决:深入了解pnpm、yarn与npm

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 三巨头对决&#xff1a;深入了解pnpm、yarn与npm 前言包管理器简介npm&#xff08;Node Package Manager&#xff09;&#xff1a;Yarn&#xff1a;pnpm&#xff08;Performant Npm&#xff09;&#…

基于Mapify的在线艺术地图设计

地图是传递空间信息的有效载体&#xff0c;更加美观、生动的地图产品也是我们追求目标。 那么&#xff0c;我们如何才能制出如下图所示这样一幅艺术性较高的地图呢&#xff1f;今天我们来一探究竟吧&#xff01; 按照惯例&#xff0c;现将网址给出&#xff1a; https://www.m…

SpringBoot知识

1、Spring和SpringBoot对比 2、版本调整 &#xff08;1&#xff09;先排除是否是JDK与SpringBoot的版本不一致导致的&#xff1a;如JDK1.8和SpringBoot3.1.5冲突&#xff1b; &#xff08;2&#xff09;调整编译版本 &#xff08;3&#xff09;调整maven的jdk &#xff08;4&…

Vscode运行调试文件

文章目录 vscode调试运行流程vscode 执行报错settings.json成功截图 vscode调试运行流程 vscode左侧菜单栏点击运行调试icon&#xff0c;点击菜单右侧栏运行和调试按钮&#xff0c;选择node调试器&#xff0c;js文件行数左边点击添加红色断点&#xff0c;运行当前文件 vscode…

【docker实战】01 Linux上docker的安装

Docker CE是免费的Docker产品的新名称&#xff0c;Docker CE包含了完整的Docker平台&#xff0c;非常适合开发人员和运维团队构建容器APP。 Ubuntu 14.04/16.04&#xff08;使用 apt-get 进行安装&#xff09; # step 1: 安装必要的一些系统工具 sudo apt-get update sudo ap…

湘潭大学-2023年下学期-c语言-作业0x0a-综合1

A 求最小公倍数 #include<stdio.h>int gcd(int a,int b) {return b>0?gcd(b,a%b):a; }int main() {int a,b;while(~scanf("%d%d",&a,&b)){if(a0&&b0) break;printf("%d\n",a*b/gcd(a,b));}return 0; }记住最大公约数的函数&…

如何编写一个javaAgent jar工具包超详细教程

介绍 Java Agent技术 Java Agent技术是JDK提供的用来编写Java工具的技术&#xff0c;使用这种技术生成一种特殊的jar包&#xff0c;这种jar包可以让Java程序 运行其中的代码。 Java Agent技术的两种模式 Java Agent技术实现了让Java程序执行独立的Java Agent程序中的代码…

【机组期末速成】CPU的结构与功能|CPU结构|指令周期概述|指令流水线|中断系统

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;计算机组成原理&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 前言&#xff1a; 最近在备战期末考试&#xff0c;所以本专栏主要是为了备战期末计算机组成原理这门考试&#xff0c;讲的比较浅显&…

详解Keras3.0 Layer API: Dropout layer

Dropout layer 图1 标准的神经网络 图2 加了Dropout临时删除部分神经元 Dropout层的作用是在神经网络中引入正则化&#xff0c;以防止过拟合。它通过随机丢弃一部分神经元&#xff08;如图2&#xff09;的输出来减少模型对训练数据的依赖性。这样可以提高模型的泛化能力&#x…

C++初阶——基础知识(函数重载与引用)

目录 1.命名冲突 2.命名空间 3.缺省参数 4.函数重载 1.函数重载的特点包括&#xff1a; 2.函数重载的好处包括&#xff1a; 3.引用 引用的特点包括 引用的主要用途包括 引用和指针 引用 指针 类域 命名空间域 局部域 全局域 第一个关键字 命名冲突 同一个项目之间冲…

二分查找--二分查找算法(朴素二分模板)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 本题题目链接https://leetcode.cn/problems/binary-search/description/ 算法原理 二段性&#xff0c;我们发现这个数组可以找到某种规律将其分为两段&#xff0c;不断划分下去&#xff0c;最终可以找到target 图示 我们分…

图灵日记之java奇妙历险记--继承和多态

目录 继承概念继承语法父类成员访问子类中访问父类的成员变量子类中访问父类的成员方法 super关键字子类构造方法super和this初始化protected关键字继承方式final 关键字继承与组合 多态条件向上转型重写动态绑定&&静态绑定多态再理解向下转型多态的优缺点好处缺陷 继承…