Visual Interpretability for Deep Learning: a Survey

news2024/11/25 6:31:49

Visual Interpretability for Deep Learning: a Survey----《深度学习的视觉可解释性:综述》

摘要

  本文回顾了最近在理解神经网络表示以及学习具有可解释性/解耦的中间层表示的神经网络方面的研究。尽管深度神经网络在各种任务中表现出了优越的性能,但可解释性始终是深度神经网络的致命弱点。目前,深度神经网络获得了高辨别力,但代价是其黑箱表示的低可解释性。我们相信高模型可解释性可以帮助人们打破深度学习的几个瓶颈,例如,通过极少的注释学习、在语义层面上通过人机交流学习、以及在语义层面上调试网络表示。我们专注于卷积神经网络(CNN),并重新审视CNN表示的可视化,我们专注于卷积神经网络(CNN),并重新审视了CNN表示的可视化、诊断预训练CNN表示的方法、解耦预训练CNN表示的方法、具有解耦表示的CNN的学习,以及基于模型可解释性的端到端学习。最后,我们讨论了可解释人工智能的未来趋势。

引言

  卷积神经网络(CNN)在许多视觉任务中取得了优异的性能,如对象分类和检测。然而,端到端学习策略使CNN表示成为一个黑盒子。除了最终的网络输出,人们很难理解隐藏在网络内部的CNN预测的逻辑。近年来,越来越多的研究人员认识到模型的高可解释性在理论和实践中都具有重要价值,并开发了具有可解释性知识表示的模型。
  在这篇论文中,我们对当前理解神经网络表示和学习具有可解释/解耦表示的神经网络的研究进行了调查。我们可以将综述的范围大致定义为以下六个研究方向。

  • 中间网络层CNN表示的可视化。 这些方法主要合成了一个图像,该图像最大化了预训练CNN中给定单元的得分,或者将卷积层的特征图反转回输入图像。详细讨论请参见第2节。
  • CNN表征的诊断。 相关研究可能会诊断出CNN针对不同对象类别的特征空间,或者发现卷积层中潜在的表示缺陷。详情请参阅第3节。
  • CNN滤波器中“混合模式”的解耦。 这些研究主要是将卷积层中的复杂表示分解,并将网络表示转化为可解释的图。详情请参阅第4节。
  • 建立可解释的模型。 我们在第 5 节中讨论了可解释的 CNN [Zhang et al, 2017c]、胶囊网络 [Sabour et al, 2017]、可解释的 R-CNN [Wu et al, 2017] 和 InfoGAN [Chen et al, 2016]。
  • 通过人机交互进行语义级中端学习。 CNN 表示的清晰语义解开可能会进一步实现弱监督神经网络的“中端”学习。第 7 节介绍了通过人机交互学习新模型的方法 [Zhang et al, 2017b] 和在非常有限的人类监督下主动问答 [Zhang et al, 2017a]。

  其中,CNN表示的可视化是探索网络表示最直接的方式。网络可视化还为许多诊断 CNN 表征的方法提供了技术基础。预训练 CNN 特征表示的解耦和可解释网络表示的学习对最先进的算法提出了更大的挑战。最后,可解释或解耦的网络表示也是弱监督中端学习的起点。
  模型可解释性的值: 高卷积层中清晰的语义可以帮助人们信任网络的预测。正如 [Zhang et al, 2018b] 中所讨论的,考虑到数据集和表示偏差,测试图像的高精度仍然不能确保 CNN 能够编码正确的表示。例如,CNN 可能使用不可靠的上下文(眼睛特征)来识别面部图像的“口红”属性。因此,人们通常无法完全信任网络,除非 CNN 能够在语义上或视觉上解释其逻辑,例如使用什么模式进行预测。
  此外,基于可解释或解开的网络表示的神经网络的中端学习或调试也可以显着减少对人工注释的需求。此外,基于网络的语义表示,未来有可能在语义层面将多个CNN合并成一个通用网络(即为不同任务编码通用知识表示的网络)。
  在以下部分中,我们回顾上述研究方向并讨论技术发展的潜在未来。

CNN 表示的可视化

  CNN 中滤波器的可视化是探索隐藏在神经单元内部的视觉模式的最直接方法。已经开发了不同类型的网络可视化方法。
  首先,基于梯度的方法是网络可视化的主流。这些方法主要是计算给定CNN单元相对于输入图像的分数的梯度。他们使用梯度来估计最大化单位分数的图像外观。[Olah 等人,2017] 提供了一个现有技术的工具箱,用于可视化预训练 CNN 的不同卷积层中编码的模式。
  其次,上卷积网络是另一种可视化 CNN 表示的典型技术。上卷积网络将 CNN 特征图反转为图像。我们可以将上卷积网络视为间接说明特征图对应的图像外观的工具,尽管与基于梯度的方法相比,上卷积网络无法在数学上确保可视化结果准确反映 CNN 中的实际表示。类似地,[Nguyen et al, 2017]进一步向对抗性生成网络引入了一个额外的先验,它控制合成图像的语义。我们可以使用 CNN 特征图作为可视化的先验。
  此外,[Zhou et al,2015]提出了一种精确计算特征图中神经激活的图像分辨率感受野的方法。神经激活的实际感受野小于使用滤波器大小计算的理论感受野。感受野的准确估计有助于人们理解滤波器的表示。

CNN 表征的诊断

  有些方法超越了 CNN 的可视化,还可以诊断 CNN 表示,以获得对 CNN 中编码的特征的深入理解。我们将所有相关研究大致分为以下五个方向。
  第一个方向的研究从全局的角度分析CNN的特征。第二个研究方向提取直接为标签/属性提供网络输出的图像区域,以解释标签/属性的 CNN 表示。CNN 特征空间中的脆弱点估计也是诊断网络表示的一个流行方向。第四个研究方向是基于网络特征空间分析来细化网络表示。第五个研究方向是 CNN 潜在的、有偏差的表示。

将 CNN 表示分解为解释图和决策树

将 CNN 表示分解为解释图

  与前面章节中网络表示的可视化和诊断相比,将 CNN 特征分解为人类可解释的图形表示(即解释图)可以为网络表示提供更彻底的解释。[张等人,2018a; [Zhang et al, 2016] 提出了预训练 CNN 的卷积层中的解耦特征,并使用图形模型来表示隐藏在 CNN 内部的语义层次结构。
  如图 2 所示,CNN 高卷积层中的每个滤波器通常代表模式的混合。例如,过滤器可以由对象的头部和尾部两者激活。因此,为了提供预训练 CNN 中如何组织视觉知识的全局视图,[Zhang 等人,2018a;张等人,2016]旨在回答以下三个问题:
在这里插入图片描述

  1. CNN 的每个卷积滤波器可以记忆多少种视觉模式?
  2. 共同激活哪些模式来描述对象部分?
  3. 两个共同激活模式之间的空间关系是什么?

  如图3所示,解释图解释了CNN内部隐藏的知识语义。解释图解开了卷积层的每个过滤器特征图中的部分模式的混合,并使用每个图节点来表示一个部分。
在这里插入图片描述

  • 解释图有多层。每个图层对应于 CNN 的特定卷积层。
  • 卷积层中的每个过滤器可以代表不同对象部分的外观。该算法自动解开在单个过滤器中编码的部分模式的混合,并使用解释图中的节点来表示每个部分模式。
  • 解释图中的每个节点通过不同的图像一致地表示相同的对象部分。我们可以使用节点来定位输入图像相应的部分。在某种程度上,节点对形状变形和姿态变化具有鲁棒性。
  • 每条边都编码相邻层中两个节点之间的协同激活关系和空间关系。
  • 我们可以将解释图视为卷积层特征图的压缩。CNN 有多个卷积层。每个卷积层可能有数百个过滤器,每个过滤器可能会产生具有数百个神经单元的特征图。我们可以用解释图中的数万个节点来表示这些特征图中所有数千万个神经单元所包含的信息,即通过哪些部分模式激活特征图,以及部分模式在输入图像中的定位位置。
  • 就像字典一样,每个输入图像只能触发解释图中部分模式(节点)的一小部分。每个节点描述了一个具有高可移植性的公共部分模式,该模式由数百或数千个训练图像共享。

  图 4 列出了说明图中不同节点对应的排名最高的图像块。图 5 可视化了解释图第 L 层中前 50% 的节点推断出的对象部分的空间分布,推断得分最高。图 6 显示了由单个节点推断的对象部分。
在这里插入图片描述

将CNN表示分解为决策树

  [Zhang et al ., 2018c]进一步提出了一种决策树来编码全连通层中的决策模式。决策树不是为分类而设计的。相反,决策树用于定量解释每个 CNN 预测的逻辑。即给定输入图像,我们使用 CNN 进行预测。决策树告诉人们卷积层中的哪些过滤器用于预测以及它们对预测的贡献有多大。
如图7所示,该方法挖掘全连接层中存储的潜在决策模式。决策树以由粗到细的方式组织这些潜在的决策模式。此外,本研究使用 [Zhang et al, 2017c] 的方法来解开顶部卷积层中滤波器的表示,即使每个滤波器代表特定的对象部分。这样,人们就可以使用决策树在语义层面解释每个 CNN 预测的基本原理,即 CNN 使用哪些对象部分来进行预测。
在这里插入图片描述

学习具有可解释/解耦表示的神经网络

  前面几节中提到的几乎所有方法都侧重于对预训练网络的理解。在本节中,我们回顾了学习神经网络解耦表示的研究,其中中间层的表示不再是黑匣子,而是具有清晰的语义含义。与理解预训练网络相比,具有解耦表示的学习网络提出了更多挑战。到目前为止,在这个方向上发表的研究仅有少数。

可解释的卷积神经网络

  如图 8 所示,[Zhang et al, 2017c] 开发了一种修改普通 CNN 的方法,通过向卷积层中的每个滤波器添加损失来获得高卷积层中的解耦表示。损失用于将特征图正则化为特定对象部分的表示。
在这里插入图片描述
  请注意,人们不需要注释任何对象部分或纹理来监督可解释 CNN 的学习。相反,损失在端到端学习过程中自动为每个过滤器分配一个对象部分。如图9所示,该方法设计了一些模板。每个模板Tμi都是一个具有相同大小特征图的矩阵。Tμi描述了当目标部分主要触发特征图中的第i个单元时特征图激活的理想分布。
在这里插入图片描述
  给定将特征图拟合到模板的联合概率,滤波器的损失被公式化为特征图和模板之间的互信息。这种损失促进了类别间激活的低熵,即卷积层中的每个过滤器都被分配到特定的类别。如果输入图像属于目标类别,则损失期望滤波器的特征图与模板很好地匹配;否则,过滤器需要保持停用状态。此外,这种损失还导致神经激活空间分布的熵变低。 当输入图像属于目标类别时,特征图应该专门适合单个模板。换句话说,过滤器需要激活特征图上的单个位置。
  这项研究假设,如果过滤器重复激活各种特征图区域,那么该过滤器更有可能描述低级纹理(例如颜色和边缘),而不是高级部分。例如,左眼和右眼可以由不同的滤波器来表示,因为两只眼睛的上下文是对称的,但不相同。
  图 10 显示了可解释 CNN 的不同滤波器生成的特征图。每个过滤器通过各种图像一致地表示相同的对象部分。
在这里插入图片描述

可解释的 R-CNN

  [Wu et al, 2017] 提出了一种基于 R-CNN 的对象检测的定性可解释模型学习方法。其目标是在对象检测过程中自动展开对象部分的潜在配置。该方法的学习不使用任何部分注释进行监督。[Wu et al., 2017] 使用一个自顶向下的层次和组合语法,即一个 And-Or 图(AOG),来模拟对象部分的潜在配置。这个方法使用基于 AOG 的解析操作符来替代 R-CNN 中使用的 RoI-Pooling 操作符。基于 AOG 的解析利用了对象的可解释的组合结构,并保持了 R-CNN 的区分能力。这个想法与解开局部的、自底向上的和自顶向下的信息组件进行预测的概念相关[Wu et al, 2007; Yang et al, 2009; Wu and Zhu, 2011]。
  在检测过程中,边界框被解释为动态地从AOG派生的最佳解析树。在学习过程中,采用折叠-展开方法对AOG和R-CNN进行端到端训练。
  图11表示了对象检测的示例。所提出的方法检测对象边界框。该方法还确定对象的潜在解析树和部分配置作为检测中的定性提取原理。
在这里插入图片描述

胶囊网络

  [Sabour et al, 2017] 设计了新颖的神经单元,即胶囊,以替代传统的神经单元来构建胶囊网络。每个胶囊输出一个活动向量而不是标量。活动向量的长度表示胶囊的激活强度,活动向量的方向编码实例化参数。较低层中的活动胶囊向相邻较高层中的胶囊发送消息。该方法使用迭代协议路由机制为低层胶囊分配更高的权重,其输出更好地适合高层胶囊的实例化参数。
  实验表明,当人们使用 MNIST 数据集 [LeCun 等人,1998b] 训练胶囊网络时,胶囊会编码特定的语义概念。胶囊活动向量的不同维度控制不同的特征,包括1)尺度和厚度,2) 局部部分,3) 笔划粗细,3) 局部倾斜,以及 4) 宽度和平移。

信息最大化生成对抗网络

  信息最大化生成对抗网络[Chen et al, 2016],即InfoGAN,是生成对抗网络的扩展。信息最大化生成对抗网络[Chen et al, 2016],即InfoGAN,是生成对抗网络的扩展。InfoGAN 将生成器的输入变量分为两种类型,即不可压缩噪声 z 和潜在代码 c。本研究旨在学习潜在代码 c 以无监督的方式编码某些语义概念。
  InfoGAN 已使用 MNIST 数据集 [LeCun 等人,1998b]、CelebA 数据集 [Liu 等人,2015]、SVHN 数据集 [Netzer 等人,2011]、3D 人脸数据集 [Paysan 等人,2009] 进行训练,以及 3D 椅子数据集 [Aubry et al, 2014]。实验表明,潜在代码成功编码了 MNIST 数据集中的数字类型、旋转和数字宽度、SVHN 数据集中的光照条件和车牌上下文、方位角、是否存在眼镜、发型、以及 CelebA 数据集中的情感,以及 3D 面部和椅子数据集中的宽度和 3D 旋转。

网络可解释性的评估指标

  模型可解释性的评估指标对于可解释模型的开发至关重要。这是因为与传统的明确定义的视觉应用(例如对象检测和分割)不同,网络可解释性更难以定义和评估。网络可解释性的评价指标可以帮助人们定义网络可解释性的概念,指导学习可解释网络表示的发展。迄今为止,只有很少的研究讨论了网络可解释性的评估。提出一个有前景的评估指标对于最先进的算法来说仍然是一个巨大的挑战。在本节中,我们简单介绍了CNN滤波器可解释性的两个最新评估指标,即[Bau et al,2017]提出的滤波器可解释性和[Zhang et al,2018a]提出的位置不稳定性。

滤波器的可解释性

  [Bau et al, 2017] 为 CNN 过滤器定义了六种类型的语义,即对象、零件、场景、纹理、材质和颜色。过滤器可解释性的评估需要人们在像素级别的测试图像上注释这六种语义。评估指标衡量滤波器神经激活的图像分辨率感受野与图像上的像素级语义注释之间的适合度。

位置不稳定

  另一个评估指标是位置不稳定。该指标由 [Zhang et al, 2018a] 提出,用于评估 CNN 过滤器和对象部分表示之间的适应性。

中端学习的网络可解释性

  根据第 4 节和第 5 节中讨论的研究,人们可以解开预训练 CNN 的表示,或者学习具有可解释、解开表示的新网络。这种可解释/解耦的网络表示可以进一步实现语义级别的中端模型学习,而无需强监督。我们简要回顾了两项典型研究[Zhang et al, 2017a;张等人,2017b]的中端学习如下。

主动问答学习与或图

  基于 [Zhang et al, 2016] 提出的语义与或表示,[Zhang et al, 2017a] 开发了一种使用主动问答对预训练 CNN 的卷积层中的神经模式进行语义化的方法,建立分层对象理解的模型。
  如图 13 所示,CNN 已针对对象分类进行了预训练。该方法旨在提取四层可解释的与或图(AOG)来解释隐藏在 CNN 中的语义层次结构。AOG 编码四层语义,涵盖特征图上的语义部分(OR 节点)、部分模板(AND 节点)、潜在模式(OR 节点)和神经单元(终端节点)。在 AOG 中,AND 节点表示零件的组成区域,OR 节点对局部零件的替代模板/变形候选者列表进行编码。顶部部件节点(OR 节点)使用其子节点来表示部件的一些模板候选。第二层中的每个部分模板(AND 节点)使用子潜在模式来表示其组成区域。第三层(OR 节点)中的每个潜在模式自然对应于滤波器特征图中的一定范围的单元。潜在模式选择此范围内的单位来解释其几何变形。
在这里插入图片描述
  为了学习 AOG,[Zhang et al, 2017a] 允许计算机主动识别和询问当前 AOG 无法解释其神经模式的对象。如图14所示,在主动问答的每个步骤中,当前AOG用于在所有未注释图像中定位对象部分。该方法主动选择不能很好地拟合AOG的对象,即无法解释的对象。该方法预测询问每个无法解释的对象的潜在收益,从而确定最佳的问题序列(例如询问模板类型和无法解释的对象部分的边界框)。通过这种方式,该方法使用答案来完善现有零件模板或挖掘新对象零件模板的潜在模式,以增长 AOG 分支。图 15 比较了不同方法的部分定位性能。基于 QA 的学习比其他基线表现出显着更高的效率。该方法使用大约 1/6-1/3 的零件注释进行训练,但与 fast-RCNN 方法相比,实现了类似或更好的零件定位性能。
在这里插入图片描述

CNN 模式的交互式操作

  使用对象边界框的注释对 CNN 进行预训练以进行对象分类。[Zhang et al, 2017b] 探索了一种交互式方法来诊断 CNN 的知识表示,以便将 CNN 模式转移到模型对象部分。与需要大量训练样本的传统​​ CNN 端到端学习不同,该方法在单次/多次学习场景中从 CNN 中挖掘对象部分模式。
  更具体地说,该方法使用很少(例如三个)对象图像上的部分注释进行监督。给定一个部分的边界框注释,所提出的方法首先使用 [Zhang et al, 2016] 从 CNN 的卷积层中挖掘与注释部分相关的潜在模式。AOG 用于组织所有挖掘的模式作为目标部分的表示。该方法将挖掘的潜在模式可视化,并要求人们交互式地删除与目标部分无关的潜在模式。通过这种方式,人们可以简单地从 AOG 分支中删除不正确的潜在模式来完善 AOG。图 16 可视化了最初挖掘的模式和人类交互后剩余的模式。在人类交互的指导下,[Zhang et al,2017b]表现出了卓越的零件定位性能。
在这里插入图片描述

未来趋势和结论

  本文综述了网络可解释性范围内的几个研究方向。在早期,神经单元模式的可视化是理解网络表示的起点。随后,人们逐渐发展出分析神经网络特征空间和诊断神经网络内部潜在表征缺陷的方法。目前,将卷积层的混沌表示分解为图模型和/或符号逻辑已成为打开神经网络黑匣子的新兴研究方向。将预训练的 CNN 转换为解释图的方法已被提出,并在知识转移和弱监督学习方面表现出显着的效率。
  端到端学习可解释神经网络,其中间层编码可理解的模式,也是一种未来趋势。 可解释的 CNN 已经开发出来,其中高卷积层中的每个过滤器代表一个特定的对象部分。
  此外,基于 CNN 模式的可解释表示,语义级中端学习被提出来加速学习过程。 与传统的端到端学习相比,中端学习允许人类交互来指导学习过程,并且可以用很少的注释进行监督。
  未来,我们相信中端学习仍将是一个基础研究方向。此外,基于可解释网络的语义层次结构,在语义级别调试 CNN 表示将创建新的视觉应用程序。

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

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

相关文章

基于SpringBoot+Vue+uniapp微信小程序实验室预约管理平台详细设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

getid3 获取视频时长

1、首先,我们需要先下载一份PHP类—getid3https://codeload.github.com/JamesHeinrich/getID3/zip/master 2.我在laravel6.0 中使用 需要在composer.json 自动加载 否则系统访问不到 在命令行 执行 composer dump-autoload $getID3 new \getID3();//视频文件需要放…

【PostgreSql本地备份为dump文件与恢复】使用脚本一键备份为dump文件

环境:windows数据库:postgresql 1.准备脚本 backUpDb.bat 脚本为备份脚本,双击运行,右键可以选择编辑;restoreDb.bat 脚本为恢复脚本,双击运行,右键选择编辑; 1.1 脚本介绍 如上图…

数据结构:串(定义,基本操作,存储结构)

目录 1.串的定义2.串的基本操作3.字符集编码4.串的存储结构1.顺序存储2.链式存储 1.串的定义 串,即字符串( String)是由零个或多个字符组成的有限序列。 一般记为s ‘a1a2……an’ (n ≥0) 其中,S是串名,单引号括起来的字符序列是…

企业清算有哪些类型?在哪里可以查看相关公告?

企业清算是什么? 企业清算指企业按章程规定解散以及由于破产或其他原因宣布终止经营后,对企业的财产、债权、债务进行全面清查,并进行收取债权,清偿债务和分配剩余财产的经济活动。 企业清算给分为破产清算,非破产清…

华为云交换数据空间 EDS:“可信、可控、可证”能力实现你的数据你做主

文章目录 前言一、数据安全流通价值的必要性和紧迫性1.1、交换数据空间(EDS)背景1.2、《数字中国建设整体布局规划》1.3、数据流通成为制约数据要素价值释放的瓶颈 二、华为云 EDS 解决方案介绍2.1、构建可控数据交换空间2.2、可控的数据交换框架2.3、定…

互联网医院|线上医疗引领行业发展

您是否曾经遇到过这样的问题:在忙碌的工作中,突然感到身体不适,但却又不想浪费时间和金钱去实体医院?或者是因为疫情的限制,出门看病变得困难重重?那么,今天我要向您介绍的,正是解决…

中断 NVIC的概念和原理

1.什么是中断 中断: 由于中断源的触发,常规程序被打断, CPU转 而运行中断响应函数,而后又回到常规程序的执行, 这一过程叫做中断。 中断优先级的概念 中断的意义和作用 中断处理的过程和术语 STM32 GPIO外部中断简…

【java:牛客每日三十题总结-3】

java:牛客每日三十题总结 总结如下 总结如下 集合相关知识点 Collection主要的子接口: List:可以存放重复内容 Set:不能存放重复内容,所有重复的内容靠hashCode()和equals()两个方法区分 Queue:队列接口 SortedSet:可以对集合中的数据进行排序 Map没有继承Collection接口&…

最新AI系统ChatGPT源码+AI绘画系统源码+支持GPT4.0+Midjourney绘画+搭建部署教程+附源码

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

黑豹程序员-SpringBoot中整合knife4j接口文档

1、Knife介绍 黑豹程序员-架构师学习路线图-百科&#xff1a;Knife4j API接口文档管理 2、坐标 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.7</version&…

银河麒麟等 Linux系统 安装 .net 3.1,net 6及更高版本的方法

确定 系统的版本。华为鲲鹏处理器是 Arm64位的。 于是到windows 官网下载对应版本 .net sdk 下载地址 https://dotnet.microsoft.com/zh-cn/download/dotnet 2.下载完成后&#xff0c;再linux 服务器 上进入到文件所在目录&#xff0c;建议全英文路径。 然后依次输入以下命令 …

图论09-桥和割点

文章目录 1 寻找桥的算法2 桥的代码实现3 寻找割点的算法4 割点的代码实现 1 寻找桥的算法 2 桥的代码实现 package Chapt06_Bridge;import java.util.ArrayList;public class FindBridges {private Graph G;private boolean[] visited;//ord数组记录访问的顺序private int or…

极狐GitLab CI 助力 .Net 项目研发效率和质量双提升

目录 .NET nuget 自动生成测试包&#xff08;prerelease&#xff09;版本号 .NET 版本号规范 持续集成自动打包 持续集成自动修改版本号 .NET 行级增量代码规范——拯救老项目 本地全量代码规范 行级增量代码规范 很多团队或开发者都会使用 C#、VB 等语言开发 .Net 应用…

区块链游戏,游戏开发

区块链游戏是一种基于区块链技术的新兴游戏类型&#xff0c;它具有去中心化、安全性高、透明度高、可追溯等特点。与传统的游戏开发相比&#xff0c;区块链游戏开发需要更多的技术和知识储备&#xff0c;同时也需要更加注重游戏本身的玩法和用户体验。 在区块链游戏中&#xff…

【PHP网页应用】MySQL数据库增删改查 基础版

使用PHP编写一个简单的网页&#xff0c;实现对MySQL数据库的增删改和展示操作 页面实现在index.php&#xff0c;其中basic.php为没有css美化的原始人版本 函数实现在database.php 目录 功能基本实现版 CSS美化版 basicindex.php index.php database.php 代码讲解 功能基…

红海云签约和兆服饰,科技引领服饰行业人力资源数字化转型

和兆服饰从事多品牌多品类经营管理&#xff0c;旗下拥有POLOSPORT、POLOKIDS、CARTELO等国际品牌。作为一个主打POLO文化的服饰品牌&#xff0c;诞生于美国的POLOSPORT拥有现代感的产品设计、系列化的产品搭配、全方位的服务&#xff0c;是最具美国马球精神的休闲时尚服饰品牌之…

【云栖2023】张治国:MaxCompute架构升级及开放性解读

简介&#xff1a; 本文根据2023云栖大会演讲实录整理而成&#xff0c;演讲信息如下 演讲人&#xff1a;张治国|阿里云智能计算平台研究员、阿里云MaxCompute负责人 演讲主题&#xff1a;MaxCompute架构升级及开放性解读 活动&#xff1a;2023云栖大会 MaxCompute发展经历了…

springcloud二手交易平台系统源码

开发技术&#xff1a; 大等于jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09;&#xff0c;nodejs&#xff0c;vscode&#xff08;webstorm&#xff09; springcloud springboot mybatis vue elementui mysql 功能介绍&#xff1a; 用户端&…

视频剪辑高手的秘诀:如何从视频中提取封面,提高视频点击率

在视频分享平台上&#xff0c;一个吸引人的封面往往能吸引更多的观众点击。一个好的封面可以传达视频的主题&#xff0c;吸引人们的兴趣&#xff0c;提高视频的点击率。那么&#xff0c;如何从视频中提取封面呢&#xff1f;下面&#xff0c;让我们一起来看看云炫AI智剪如何操作…