多模态+SNN个人学习历程和心得

祖传开头

这次想写一个一直深藏心中的研究方向,那就是多模态方向。其实当初在实验室那会儿,最先接触的就是多模态的工作,因此这是我科研之路的起点。只不过,后来经历了一些波折,导致个人没有往这个方向深挖,这篇博客主要是想记录一些多模态相关的知识基础,还会涉及一些脉冲神经网络(SNN)的知识,同时记录个人参与过的工作,留下一些回忆。


多模态学习

基本概念

多模态学习,或者称为多模态机器学习(MMML),是近年来学术界非常热门的话题和方向。就如2023年讨论度最高的大模型方向,目前也在往多模态方向进军,各大企业都追求开发多模态的大模型。多模态听起来可能有点抽象,但不难理解。

所谓模态(Modality),通常指的是某种感觉、知觉或信息传递的方式或通道,具体可以涵盖不同的感觉或信息传递方式,如视觉、听觉、触觉、嗅觉和味觉等,每种感觉或信息传递方式都可以被称为一种模态。多模态(Multimodal)则是指涉及多种不同感觉或信息传递方式的情况。在多模态信息处理中,不同的感觉通道可以相互交互,以综合或增强对信息的理解和感知。

形式

多模态可能有以下三种形式:

  • 描述同一对象的多媒体数据。如互联网环境下描述某一特定对象的视频、图片、语音、文本等信息,这种是最常见的多模态的理解。
  • 来自不同传感器的同一类媒体数据。如医学影像学中不同的检查设备所产生的图像数据, 如CT、B超、核磁共振等。
  • 具有不同的数据结构特点、表示形式的表意符号与信息。包括了结构化和非结构化的数据单元,数学概念的多种表达方式,以及语义符号的不同形态。例如,可以用不同的数据格式来描述同一地理位置,如地理坐标、地图图像或文字描述。同样,数学中的某个概念可以以公式、逻辑符号、函数图或解释性文本的形式呈现。语义符号也具有多样性,如词向量、词袋、知识图谱等,都可用于表达相同的概念或语义。

我们再细说多模态数据。对于同一个对象,描述的方式可以是不同的(视角或领域不同),把描述这些数据的每一个领域或者视角叫做一个模态。通俗地理解,就是输入数据的类型不同,比如文本、图片、音频、视频等等。在视频分析中,视频可以分解为音频、图像、字幕等多模态信息;每个图片又可以表示成强度或者灰度、纹理等不同模态特征。

模态间的关联性:每个模态能为其余模态提供一定的信息,即模态之间存在一定的关联性。对不同模态数据进行同等处理或对所有模态特征进行简单的连接整合不能保证挖掘任务的有效性。

多模态机器学习是指基于不同模态的数据进行学习的算法,通常研究文本、语音和视觉。

一般方法

  • 表征(Representation)。找到某种对多模态信息的统一表示,分为协同表征Coordinated representations(每个模态各自映射然后用用相关度距离来约束表示)和联合表征Joint representations(多个模态一起映射);
  • 翻译(Translation)。一个模态映射到另一个模态,分为 example-based(有候选集,如检索任务)和 generative(Encoder-Decoder);
  • 对齐(Alignment)。找模态子成份之间的关系,如某词对应某区域。分显式对齐和隐式对齐,Attention 首当其冲;
  • 融合(Fusion)。整合信息,分为 model-agnostic(早晚融合)和 model-based(融合更深入);
  • 联合学习(Co-learning)。通过利用丰富的模态的知识来辅助稀缺的模态,分为parallel(如迁移学习),non-parallel(迁移学习,zero shot),hybrid 等。

多模态情感分析

多模态情感分析(MSA)是一种用于分析人类情感的方法,它通过同时分析文本、图像、语音等多种信息模态来识别情感。这种方法能够更全面地了解人类情感,因为它能捕捉到文本中难以表现的信息,例如面部表情和语音语气。

现阶段的多模态情感分析任务,大多站在如何有效地将多模态的特征信息进行融合这一角度考虑问题,目的是排除与情感分析任务无关的噪声数据,最大化利用与情感分析任务相关的多模态数据,包括单模态内的数据交互与模态间的数据交互,最终达到分析情感极性的目标。

在这里插入图片描述

多模态融合

1、特征级融合(早期融合)
特征级融合(有时称为早期融合)将每种形态(文本、音频或视觉)的所有特征组合成单个特征向量,在开始提取特征后就进行融合,然后将其输入到分类算法中。特征级融合的好处是,它允许不同的多模态特征之间的早期关联,从而可以更好地完成任务。

这种融合方法的缺点是时间同步,因为收集到的特征属于几种模态,在许多领域可能差异很大。因此,在融合过程发生之前,需要将特征转换为所需的格式。这种融合方法不能有效地表示模态内的动态,它无法过滤掉从多个模态收集的冲突或冗余数据。模型基本结构如下:

在这里插入图片描述


2、后期融合(晚期融合)
由于模态之间的数据的相关性较高,以及多模态数据源无法同步的问题,针对该场景,有了后期融合模型。在后期融合中,先对各模态的特征进行独立处理和分类,然后将分类结果融合形成最终的决策向量,即前期各模态数据单独训练得到预测结果,后期采用决策或者集成的方式将多模型的输出结果进行规则融合。因为融合发生在分类之后,这个过程被称为晚期融合。

由于早期融合的挑战,大多数学者选择在决策级融合中分别对每个模态的输入建模,最后整合单模态识别的结果。由于不同分类器产生的错误不相关,分类器融合优于单独的分类器。由于由许多模态产生的决策通常具有相同形式的数据,从不同模态接收的决策的融合比特征级的融合更容易。这种融合过程的另一个好处是,每个模态可以使用可用的最佳分类器或模型学习其特征。当分析任务需要使用不同的分类器时,决策级融合步骤中所有这些分类器的学习过程变得困难和耗时。模型基本结构如下:

在这里插入图片描述


3、混合融合
既然有了早期融合和晚期融合,为了平衡上述两种方法的优劣,于是有了混合融合模型,即针对数据同步、相关性不强的的模态进行早期融合,对相关性强、数据和更新不同的模态进行晚期融合。在一些数据集上,效果可能要好于早期融合和晚期融合。其模型结构如下:

在这里插入图片描述


4、张量融合
张量融合使用一个张量融合层(显式模拟单模态、双模态和三模态相互作用)构建了一个使用模态嵌入的3倍笛卡尔积,它将所需的训练样本数量降至最低。其中一种张量融合技术 MTFN 的体系结构如下图所示:

在这里插入图片描述


5、双模态融合
基于两两的模态表示,新的端到端网络实现了融合(相关增量)和分离(差异增量),这两个组件同时接受训练。由于模态之间已知的信息不平衡,该模型以两个双模态对作为输入。其中一个双模态融合架构 BBFN 结构模型如下图所示:

在这里插入图片描述


6、基于注意力机制的融合
背景信息提取和多模态融合是多模态情感分析和情感识别中最重要的两个难点。基于双向递归神经网络模型的多层次背景特征提取称为基于注意机制的融合。在话语层面,每种情态对情感和情感分类的贡献不同。因此,该模型建议多模态融合采用基于注意的互态融合,以适应每个互态话语的重要性。将上下文注意的单模态特征两个两个地连接起来形成双模态特征,然后将所有双模态特征合并在一起形成三模态特征向量,每一步融合后提取上下文特征。其中一种基于融合机制的模型MMHA 体系结构如下图所示:

在这里插入图片描述

以上是对多模态学习的简单介绍,我提及的都是比较基础的概念,大家可以参考其他大佬or奆佬的博客学习学习!


个人工作

接下来我简单介绍个人之前在实验室参与的科研项目(多模态情感分析),我参与的部分其实不多,但是整个流程基本了解,主要目的是助于大家更深入地了解多模态学习(同时让我巩固一下知识😂)。

数据集

在该工作中,我们自己构建了一个用于情感分析的印尼多模态视频数据集(命名为IMVD)。我所在实验室的成员从YouTube上收集了187个印尼语视频(人工找时间成本确实高)。该数据集涉及不同领域:餐厅/烹饪、名人、美容评论、品牌/产品、网络名人博主、在线教程、政治、健康、情感、个人经历、书籍推荐、社会事件和观点。

1、获取方法
这些视频是通过在YouTube人工检索找到的(搜索相关的印尼语单词),然后根据是否符合以下标准进行筛选: ①说话者的脸部应清晰地面对摄像头约1分钟;②视频中只有说话者的声音,背景噪声应尽可能小;③说话者表达了他/她的观点(明显或含蓄)。

所有选中的视频片段也都经过预处理。每段视频都要经过人工编辑,选择包含观点的片段,以确保生成的视频包含单一的主题。视频中经常会出现文字标题字幕或解释,有时还伴有动画。为了解决这一问题,我们对部分视频片段进行手动分割。

有些视频中的人物讲话时,镜头会被打断,或转向其他地方,从而影响视频质量。我们会在不影响讲话内容的前提下尽量减少这种情况的出现。不过操作起来有点难,我们的处理方式会对这些视频的情感分析造成影响。

此外,在该数据集中,我们还保留了一些印尼当地的特征,如戴头巾的女性,以及带有一点点BGM的视频(越来越多的YouTube博主喜欢给视频加BGM,增加了音频情感分析的难度)。

2、转录
对视频进行预处理后,我们再进行人工转录,以提取每段视频中的每一句话。许多印尼视频不包含字幕,因此我们请印尼语专业的同学帮忙口述每个视频,同时用ELAN工具获取文本内容。此外,我们还为每个句子进行情感标注,并根据说话者表达的意思和停顿来判断每个句子的开始和结束,然后手动划分每个句子在音频中的位置。之后,我们从获得的eaf文件中提取每句话的开始时间、结束时间、文本内容和情感标注。

每个视频包含4-16个语句,每个句子的长度从3s-20s不等。虽然人工转录耗费了大量人力和时间,但结果比较可靠,而且有助于同时收集其他数据。

3、情感标注
我们使用ELAN工具进行情感标注。标注是根据语句对应的视频、对应的音频和语句内容进行的。我们将每个语句标记为七种情感类别:恐惧、厌恶、愤怒、悲伤、中性、高兴和惊喜。在标注中,我们用数字来表示相应的情绪(-4 表示恐惧,-3 表示厌恶,-2 表示愤怒,-1 表示悲伤,0 表示中立,1 表示高兴,2 表示惊讶)。

4、音频特征提取
我们从每个视频片段的音轨中提取每个视频的音频,并根据文本句子的时间段进行切割,这样每个视频至少有3个子音频片段。同时,我们使用OpenSmile工具提取每段音频的音高和音强。

5、视频特征提取
根据文本句子的时间段,从每个完整视频中分割并提取子视频,因此许多子视频属于同一视频。每个视频片段中只有一个人,大部分时间他们都面对镜头。同时,我们使用dlib库提取了人脸的坐标特征,得到了68个关键点的定位,并使用几何方法计算相关特征点,得到了13个人脸情感特征。

后续

写到这突然发现,后续的工作我不太了解,当时主要是师兄师姐在负责。我们用了一个多模态情感分析任务的框架,尝试将该框架的数据集换成我们自己的数据集,这就涉及到数据对齐、模态融合等工作,可惜的是,当时我还年轻,没有参与后面的代码工作中。

不过通过这段经历,我对多模态这三个字有了浅薄的认识,意味着我开始入门多模态这一领域了。当时的我始终认为这个方向是相当有前景的,事实证明确实如此,有机会的话,我还会继续钻研多模态的相关研究。


脉冲神经网络

基本概念

脉冲神经网络(SNN)属于第三代神经网络模型,建立在脉冲神经元的基础上,模拟了神经元和突触状态,更接近于生物神经元,因此具有很大的潜力。SNN 使用脉冲——这是一种发生在时间点上的离散事件,而非常见的连续值。每个峰值由代表生物过程的微分方程表示出来,其中最重要的是神经元的膜电位。本质上,一旦神经元达到了某一电位,脉冲就会出现,随后达到电位的神经元会被重置。对此,最常见的模型是 Integrate-And-Fire(LIF)模型。此外,SNN 通常是稀疏连接的,并会利用特殊的网络拓扑。

SNN结构

SNN体系结构由脉冲神经元和互连的突触组成,这些突触由可调节的标量权重建模。实现SNN的第一步是使用基于速率的方法、某种形式的时间编码或群体编码将模拟输入数据编码为脉冲序列。如前所述,大脑中的生物神经元(和仿真的脉冲神经元类似)从神经网络中的其他神经元接收突触输入。生物神经网络既具有动作电位生成动力学,又具有网络动力学。与真正的生物网络相比,人工SNN的网络动力学得到了极大的简化。

那么,在这种情况下,假设建模的脉冲神经元具有纯阈值动力学是有用的。突触前神经元的活动调节突触后神经元的膜电位,当膜电位超过阈值时产生动作电位或脉冲。在具有大量的生物学细节和高计算成本的HH模型之后,人们提出了多种神经元模型,例如脉冲响应模型(SRM)、Izhikevich神经元模型以及泄漏整合放电(LIF)神经元。 LIF模型非常受欢迎,因为它可以捕获外部输入的直观特性,从而以明确的阈值在整个泄漏的细胞膜上累积电荷。(这两段比较学术化。。可以选择性跳读,大概了解即可)

脉冲神经网络中的脉冲序列通过突触连接传播。突触既可以是兴奋性的,可以在接受输入时增加神经元的膜电位,也可以是抑制性的,可以降低神经元的膜电位。学习的结果可以改变自适应突触的强度(权重)。 SNN的学习规则是开发多层(深度SNN的最具挑战性的组成部分,因为脉冲序列的不可微性限制了流行的反向传播算法。

脉冲神经网络分为三种拓扑结构,分别是前馈型脉冲神经网络、递归型脉冲神经网络和混合型脉冲神经网络。

1、前馈型
在多层前馈脉冲神经网络结构中,网络中的神经元是分层排列的,输入层各神经元的脉冲序列表示对具体问题输入数据的编码,并将其输入脉冲神经网络的下一层。最后一层为输出层,该层各神经元输出的脉冲序列构成网络的输出。输入层和输出层之间可以有一个或者多个隐藏层。

此外,在传统的前馈人工神经网络中,两个神经元之间仅有一个突触连接,而脉冲神经网络可采用多突触连接的网络结构,两个神经元之间可以有多个突触连接,每个突触具有不同的延时和可修改的连接权值。多突触的不同延时使得突触前神经元输入的脉冲能够在更长的时间范围对突触后神经元的脉冲发放产生影响。突触前神经元传递的多个脉冲再根据突触权值的大小产生不同的突触后电位。

2、递归型
递归型神经网络不同于多层前馈神经网络和单层神经网络,网络结构中具有反馈回路,即网络中神经元的输出是以前时间步长上神经元输出的递归函数。递归神经网络可以模拟时间序列,用来完成控制、预测等任务,其反馈机制一方面使得它们能够表现更为复杂的时变系统;另一方面也使得有效学习算法的设计及其收敛性分析更为困难。

传统递归人工神经网络的两种经典学习算法分别为实时递归学习算法和随时间演化的反向传播算法,这两种算法都是递归地计算梯度的学习算法。递归脉冲神经网络是指网络中具有反馈回路的脉冲神经网络,由于其信息编码及反馈机制不同于传统递归人工神经网络,由此网络的学习算法构建及动力学分析较为困难。递归脉冲神经网络可应用于诸多复杂问题的求解中,如语言建模、手写数字识别以及语音识别等。递归脉冲神经网络可分为两大类:全局递归脉冲神经网络和局部脉冲神经网络。

3、混合型
混合型脉冲神经网络包括前馈型结构又包含递归型结构。

SNN的优劣性

1、优势

  • SNN 的优势主要体现在用加法取代乘法,用bit数据取代整数/浮点数的高能效计算方式;
  • 能耗低、并行能力更强,以及可以在专门的神经形态计算平台上获得加速运算;
  • 速度上来说,在神经形态芯片上,SNN比ANN速度快很多;
  • 对于具有反馈连接,或者说复杂网络结构的SNN,其潜力可能是巨大的。SNN可以建立局部的学习机制,例如BCM、STDP 等学习算法,同时他们与ANN所用的BP算法最大的不同在于,学习所需的信息并不需要特定的传播路径,而是仅仅依赖于前后神经元自身的信息(包括但不限于膜电位、发放率、发放时间,以及各种低通滤波之后的信息)。这意味着,学习可以与运算同步进行(on-line learning),而不需要BP的前馈、反馈分离。与此同时,学习是可以通过自组织的方式进行的,在确保网络稳定性的同时,不需要一个“中心化”的指挥者(尽管注意力可能充当了一种“指挥者”的作用)。甚至,学习出来的连接可以是双向的,而BP算法限于其性质无法对反馈连接进行训练。通过局部的学习方式,建立起来的网络也拥有更高的复杂度。

2、劣势

  • 在当前的同步计算机制下,SNN完成一次前向推理通常需要几百至几千时间步长的模拟,导致了极大的额外延迟和能耗;
  • 在正常硬件上模拟SNN需要耗费大量算力,因为它需要模拟微分方程;
  • SNN目前还处于初级阶段,目前SNN和CNN很接近,甚至有研究者直接称之为S-CNN,因为只换了激活函数,如RELU→LIF;
  • 性能方面,目前ANN转SNN的方法可以接近ANN,但是很难超越;
  • SNN跟ANN比性能,是比不过的;
  • 在GPU或者CPU上,SNN的速度不比ANN好多少;
  • SNN的训练困难,尽管有无监督生物学习方法,如赫布学习(Hebbian learning)和STDP,但没有适合SNN的有效监督训练方法能够优于第二代神经网络的性能;
  • 由于脉冲训练不可微,无法在不损失准确时间信息的前提下使用梯度下降来训练SNN。

ANN和SNN对比

一般认为ANN是纯数字编码的,神经元输入输出都是数值(浮点数、定点数或者模拟值)。而SNN则是脉冲时间编码的,神经元的输入输出都是脉冲序列(0-1 向量)。这是两者的本质区别。除此以外,SNN在训练方法上也很不一样,常采用传说中的STDP学习规则,这种学习规则需要同时看前级和后级神经元的发放情况,共同决定权重的改变量。相反ANN一般都是BP学习规则,权重更新仅仅与后级神经元反馈回来的误差有关,而跟前级神经元无关。但是,学习规则并不是两者的本质区别,一方面两种网络都各自有多种训练方法,另一方面由于STDP一直不理想,现在很多SNN喜欢用BP来训练,然后再做一次ANN到SNN的映射。

不同模态特征转换为脉冲序列

1、图像特征→脉冲序列

图像特征指图像中所包含的有用信息,这些信息可以用来描述图像的形状、大小、颜色、纹理等。将图像特征转换为脉冲序列是一种数字图像处理技术,它通过将图像中的有用信息编码为一系列的比特位来实现。将图像特征转换为脉冲序列一般的几个步骤:

  • 对图像进行预处理,并通过图像分析技术提取图像中的有用信息。这一步可以通过图像滤波、图像边缘检测、图像分割等方法来实现;
  • 使用编码算法将图像特征编码为一系列比特位。这一步通常会选择一种适当的编码方案,并根据图像特征的特点进行编码;
  • 将编码后的比特位转换为脉冲序列。这一步通常会使用脉冲宽度调制(PWM)技术,将比特位转换为脉冲序列;
  • 对脉冲序列进行信号处理,并将它转换为可以通过信道传输的信号。这一步通常会使用信号滤波器、数字信号处理器等技术来实现。

2、音频特征→脉冲序列

音频特征指音频信号中所包含的有用信息,这些信息可以用来描述音频的频率、音色、时间和空间信息等。将音频特征转换为脉冲序列是一种数字信号处理技术,它通过将音频信号中的有用信息编码为一系列的比特位来实现。将音频特征转换为脉冲序列一般的几个步骤:

  • 对音频信号进行采样,并将其转换为数字信号。这一步需要使用数字信号处理器(DSP)或其他采样器来实现;
  • 使用信号分析技术提取音频信号中的有用特征。这一步通常会选择一种适当的分析方法,并根据音频信号的特点进行分析;
  • 使用编码算法将音频特征编码为一系列比特位。这一步通常会选择一种适当的编码方案,并根据音频特征的特点进行编码;
  • 将编码后的比特位转换为脉冲序列。这一步通常会使用脉冲宽度调制(PWM)技术,将比特位转换为脉冲序列。

3、文本特征→脉冲序列

文本特征指文本信息中所包含的有用信息,这些信息可以用来描述文本的语言、语法、语义等内容。将文本特征转换为脉冲序列是一种数据编码技术,它通过将文本信息编码为一系列的比特位来实现。将文本特征转换为脉冲序列一般的几个步骤:

  • 对文本信息进行预处理,并通过语言分析技术提取文本中的有用信息。这一步可以通过分词、词性标注、语法分析等方法来实现;
  • 使用编码算法将文本特征编码为一系列比特位。这一步通常会选择一种适当的编码方案,并根据文本特征的特点进行编码;
  • 将编码后的比特位转换为脉冲序列。这一步通常会使用脉冲宽度调制(PWM)技术,将比特位转换为脉冲序列;
  • 对脉冲序列进行信号处理,并将它转换为可以通过信道传输的信号。这一步通常会使用信号滤波器、数字信号处理器等。

上述转换方法是个人基于其他研究和当前的方法总结的,仅供参考。SNN我也接触过蛮长一段时间的,所以自己就摸索出了一些方法。目前SNN还处于萌芽阶段,网上相关的介绍也不多,希望我的经验对同样打算入门SNN的小伙伴有帮助。

再会

好了,写完这篇继续肝毕设了,到时有机会再和各位聊聊我毕设的工作哈哈哈哈哈,如果感觉这篇文章有用,点赞关注就不会迷路了💙

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

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

相关文章

PayPal账号被关联!跨境卖家如何自救?关于PayPal防关联你不得不知道的事!

很多跨境卖家的支付平台都会选择 PayPal,但是 PayPal 账号在使用过程中也经常会遇见关联,风控等问题,这时候为了保护我们的 PayPal 账号安全,防关联就很重要。今天龙哥就分享一些关于 PayPal 防关联的内容,希望能够帮助…

重新认识canvas,掌握必要的联结密码

查看专栏目录 canvas示例教程100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

C++ continue语句

作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环 与break的区别在于,如果把上述continue换位break,则该程序执行到break则会直接退出for循环,不再执行后面的代码和以后的循环。 实…

Web实战丨基于django+html+css+js的电子商务网站

文章目录 写在前面实验目标需求分析实验内容安装依赖库1.登陆界面2.注册界面3.电子商城界面4.其他界面 运行结果写在后面 写在前面 本期内容:基于DjangoHTMLCSSJS的电子商务网站 实验环境: vscode或pycharmpython(3.11.4)django 代码下载地址&#x…

【Kafka-3.x-教程】-【七】Kafka 生产调优、Kafka 压力测试

【Kafka-3.x-教程】专栏: 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五…

观成科技-加密C2框架EvilOSX流量分析

工具简介 EvilOSX是一款开源的,由python编写专门为macOS系统设计的C2工具,该工具可以利用自身释放的木马来实现一系列集成功能,如键盘记录、文件捕获、浏览器历史记录爬取、截屏等。EvilOSX主要使用HTTP协议进行通信,通信内容为特…

蓝凌EIS pdf.aspx 任意文件读取漏洞

漏洞描述: 蓝凌EIS智慧协同平台是一个简单、高效的工作方式专为成长型企业打造的沟通、协同、社交的移动办公平台,覆盖OA、沟通、客户、人事、知识等管理需求,集合了非常丰富的模块,满足组织企业在知识、项目管理系统建设等需求的…

jmeter循环控制器

1.循环控制器 简单粗暴 写几次 循环几次 经常结合自定义变量使用 2.foreach控制器 搭配 变量一起使用的循环 一般变量的值是一个集合或者 是2个及2个以上的内容

[中阶]1月29-2月2晚8点-软件需求设计方法学全程实例剖析

建模方法学包含以下技能: A-业务建模——定位需要改进的目标组织(人群或机构)以及该组织接下来最需要改进的问题。 B-需求——描述为了改进组织的问题,所引入的信息系统必须具有的表现。 C-分析——提炼为了满足功能需求&#…

《ORANGE’S:一个操作系统的实现》读书笔记(二十七)文件系统(二)

上一篇文章我们记录了如何操作硬盘,并且编写了简单的硬盘驱动程序用于获取一些硬盘的参数。这篇文章就在上一篇文章的基础上记录文件系统,完善硬盘驱动程序。 文件系统 现在我们该仔细考虑如何构建一个文件系统了。这并不是我们第一次接触文件系统&…

python 工作目录 与 脚本所在目录不一致

工作目录:执行脚本的地方 我以为工作目录会是当前执行脚本的目录位置,但其实不是,例如: 图中红色文件为我执行的脚本文件,但是实际的工作目录是PYTHON LEARNING 可以用如下代码查询当前工作目录: import os…

dubbo的springboot集成

1.什么是dubbo? Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo …

【三】把Python Tk GUI打包exe可执行程序,移植到其他机器可用

背景 这是一个系列文章。上一篇【【二】为Python Tk GUI窗口添加一些组件和绑定一些组件事件-CSDN博客】 使用python脚本写一个小工具。因为命令行运行的使用会有dos窗口,交互也不是很方便,开发环境运行也不方便分享给别人用,所以想到…

ubantu中的docker安装

1.Ubuntu Docker 安装 | 菜鸟教程 (runoob.com) 我就是看这个教程进行操作的 2.执行下面两步,就算是安装完成了 3.启动,并检查是否安装成功: 4.安装之后,怎么用,那就是自己随便探索咯,可以看博客&#xf…

3D Web可视化开发工具包HOOPS Communicator:提供Web端浏览大型模型新方案!

前言:HOOPS Communicator是Tech Soft 3D旗下的主流产品之一,具有强大的、专用的高性能图形内核,专注于基于Web的高级3D工程应用程序。其由HOOPS Server和HOOPS Web Viewer两大部分组成,提供了HOOPS Convertrer、Data Authoring的模…

【Spring Cloud】Gateway组件的三种使用方式

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Spring Cloud》。🎯🎯 &am…

游戏版 ChatGPT,要用 AI 角色完善生成工具实现 NPC 自由

微软与 AI 初创公司 Inworld 合作,推出基于 AI 的角色引擎和 Copilot 助理,旨在提升游戏中 NPC 的交互力和生命力,提升游戏体验。Inworld 致力于打造拥有灵魂的 NPC,通过生成式 AI 驱动 NPC 行为,使其动态响应玩家操作…

蜗牛目标检测数据集VOC格式480张

蜗牛,一种缓慢而坚韧的软体动物,以其螺旋形的外壳和黏附力极强的黏液而为人所熟知。 蜗牛体型呈螺旋形,有一个硬壳保护其柔软的身体。壳的形状和纹理因种类而异,有的光滑如玻璃,有的则布满细纹。蜗牛的头部有两对触角…

现代 C++ 及 C++ 的演变

C 活跃在程序设计领域。该语言写入了许多新项目,而且据 TIOBE 排行榜数据显示,C 的受欢迎度和使用率位居第 4,仅次于 Python、Java 和 C。 尽管 C 在过去二十年里的 TIOBE 排名都位居前列(2008 年 2 月排在第 5 名,到…

el-table实现多行合并的效果,并可编辑单元格

背景 数据为数组包对象&#xff0c;对象里面有属性值是数组&#xff1b;无需处理数据&#xff0c;直接使用el-table包el-table的方法&#xff0c;通过修改el-table的样式直接实现多行合并的效果 html代码 <template><div><el-table size"mini" :d…