【论文串烧】多媒体推荐中的模态平衡学习 | 音视频语音识别中丢失导致的模态偏差对丢失视频帧鲁棒性的影响

文章目录

    • 一、多媒体推荐中的模态平衡学习
      • 1.1 研究背景
      • 1.2 解决问题
      • 1.3 实施方案
      • 1.4 文章摘要
      • 1.5 文章重点
      • 1.6 文章图示
        • 图 1:不同模型变体在 AmazonClothing 数据集上的初步研究
        • 图 2:CKD模型架构的说明
        • 图 3:在 Amazon-Clothing 数据集上训练过程中的性能曲线
    • 二、音视频语音识别中丢失导致的模态偏差对丢失视频帧鲁棒性的影响
      • 2.1 研究背景
      • 2.2 解决问题
      • 2.3 实施方案
      • 2.4 文章摘要
      • 2.5 文章贡献
      • 2.6 文章图示
        • 图 1:不同dropout率下AVSR的CER退化曲线
        • 图 2:ASR和AVSR转录相似性分析
        • 图 3:ASR和不同AVSR设置的中间表示相似性矩阵
        • 图 4:模态偏差假设(MBH)的说明
        • 图 5:所提出的AVSR系统的整体框架

一、多媒体推荐中的模态平衡学习

1.1 研究背景

  • 多媒体内容在现代网络时代的主导地位,以及推荐系统在处理多媒体内容时面临的挑战。随着互联网内容以多种形式(如图像、文本、视频等)呈现,如何有效地整合这些多模态信息成为推荐系统研究的关键问题。然而,多模态信息的整合常常遇到模态不平衡问题,即不同模态之间的信息量不平衡,导致在所有模态上优化相同目标时,弱模态的性能优化不足

1.2 解决问题

  • 多模态推荐模型中的模态不平衡问题,即在多模态推荐系统中,由于不同模态的信息量不平衡,导致某些模态(如视觉模态)的性能优化不足,从而影响整体推荐效果

1.3 实施方案

  • 提出了一种名为Counterfactual Knowledge Distillation (CKD) 的方法,通过模态特定的知识蒸馏来指导多模态模型从单模态教师模型中学习特定于模态的知识。此外,设计了一种新颖的通用和特定蒸馏损失,以指导多模态学生模型从教师模型中学习更广泛和深入的知识。通过使用反事实推断技术估计每个模态对训练目标的因果效应,可以确定弱模态,量化不平衡程度,并相应地重新加权蒸馏损失。CKD方法可以作为插件模块,用于晚期融合和早期融合的任何现有多媒体推荐模型。

1.4 文章摘要

论文的摘要指出,多模态内容的推荐系统需要有效地整合来自不同模态的信息。然而,不同模态之间的信息不平衡导致了弱模态的性能优化不足。为了解决这些问题,论文提出了CKD方法,该方法通过模态特定的知识蒸馏和反事实推断技术,解决了模态不平衡问题,并充分利用了所有模态。通过在六个不同的推荐系统模型上进行广泛的实验,证明了CKD方法可以显著提高推荐性能。

1.5 文章重点

  • 提出了CKD框架,用于解决多模态推荐中的模态不平衡问题
  • 设计了模态特定的知识蒸馏方法和通用-特定蒸馏损失。
  • 使用反事实推断技术来估计模态的因果效应,并据此调整蒸馏损失的权重。
  • 在多个数据集和推荐系统模型上验证了CKD的有效性。

1.6 文章图示

图 1:不同模型变体在 AmazonClothing 数据集上的初步研究

在这里插入图片描述

  • 这张图展示了在 AmazonClothing 数据集上,多模态模型与单模态模型(仅文本和仅图像模型)的性能比较。图中显示了召回率(Recall@20)随训练周期(Epoch)的变化。阴影区域表示每种模态在多模态模型中的优化不足程度。使用早停法(early stopping)结束训练,导致不同模型的曲线长度不同。从图中可以看出,多模态模型中的视觉和文本模态的性能都不如相应的单模态模型,这表明在多模态联合训练过程中,不同模态之间存在相互抑制现象,导致整体性能低于单模态模型的简单相加(1 + 1 < 2)。此外,性能较差的弱模态(例如示例中的视觉模态)遭受更严重的优化不足问题。

在推荐系统中,召回率(Recall)是衡量模型性能的一个重要指标,它表示的是推荐系统能够从所有相关项中检索到的项的比例。召回率越高,意味着推荐系统能够找到更多用户可能感兴趣的项目,从而提供更全面的推荐。

召回率的计算公式为:
Recall = Number of relevant items retrieved Number of relevant items \text{Recall} = \frac{\text{Number of relevant items retrieved}}{\text{Number of relevant items}} Recall=Number of relevant itemsNumber of relevant items retrieved

召回率关注的是推荐系统是否能够捕捉到用户的所有潜在兴趣,而不是推荐列表中的排名或排序。

然而,召回率并不是唯一的性能指标。在实际应用中,通常会结合其他指标来全面评估推荐系统的性能,例如:

  1. 精确率(Precision):推荐系统推荐的项目中,相关项目所占的比例。精确率越高,表示推荐结果的质量越好,用户遇到不相关推荐的概率越低。

  2. F1分数(F1 Score)精确率和召回率的调和平均数,用于在两者之间取得平衡。

图 2:CKD模型架构的说明

在这里插入图片描述

这个图表由三部分组成,分别展示了 CKD 模型的整体框架、蒸馏损失的说明以及学习速度估计的说明。

  • (a) 整体框架:展示了通过模态特定的知识蒸馏,CKD 如何指导多模态模型从单模态教师模型中学习特定于模态的知识,从而缓解模态之间的竞争。λ 通常表示一个超参数,用于平衡不同损失函数之间的权重。在机器学习模型中,特别是在包含多个损失函数或目标函数的情况下,超参数 λ 用于调整这些函数在最终优化目标中的相对重要性

  • (b) 蒸馏损失的说明:在训练三元组上,使用铰链蒸馏损失鼓励学生模型在训练三元组上的表现优于教师模型;在没有监督的通用三元组上,使用交叉熵蒸馏损失鼓励学生模型模仿教师模型。

  • © 学习速度估计的说明:通过反事实推断,可以估计每个模态在黑盒多模态模型中的学习速度,从而估计模态之间的不平衡程度。

图2:(a)CKD模型架构示意图。通过特定于模态的知识蒸馏,CKD可以引导多模态模型从单模态教师那里学习特定于模态的知识,从而缓解模态之间的竞争(§3.1)。(b)在训练三元组上,铰链蒸馏损失鼓励学生模型比教师表现得更好(§3.1.3),而在没有监督的通用三元组上,CE蒸馏损失鼓励学生模型模仿教师(§3.1.4)。©通过反事实推理,我们可以估计黑盒多模态模型中每个模态的学习速度(§3.2)。

  1. w/supervision (有监督)

    • 这个术语指的是在训练过程中使用明确标注的数据,即训练集中的三元组 ((u, i, j)),其中 (i) 是用户 (u) 的正样本(用户与项目的实际互动),而 (j) 是负样本(用户未与该项目互动)。在这种情况下,模型有明确的信号来判断一个推荐是好是坏,因此可以使用这种监督信息来指导模型的训练。
  2. w/o supervision (无监督)

    • 相对的,“w/o supervision” 指的是在训练过程中不依赖于明确标注的数据。在多模态学习中,这可能意味着使用一些通用的三元组 ((u, i, j)),其中 (i) 和 (j) 并不固定为正负样本,而是随机或均匀采样的。这种情况下,模型没有明确的监督信号来区分好的推荐和坏的推荐,因此需要使用不同的策略来学习。
  3. Lhinge (铰链损失)

    • “Lhinge” 指的是铰链损失(Hinge Loss),这是一种常用于分类任务的损失函数,特别是在支持向量机(SVM)中。在蒸馏过程中,铰链损失用于鼓励学生模型在训练三元组上的预测性能超越教师模型。具体来说,铰链损失会惩罚那些学生模型预测不如教师模型的情况,从而推动学生模型在模仿教师的同时,努力超越教师模型的性能。
  4. Lce (交叉熵损失)

    • “Lce” 指的是交叉熵损失(Cross-Entropy Loss),这是一种常用于分类任务的损失函数,特别是在训练神经网络时。在蒸馏过程中,交叉熵损失用于无监督场景,鼓励学生模型模仿教师模型的输出。即使没有明确的正负样本标签,交叉熵损失也可以通过比较学生模型和教师模型对通用三元组的预测来帮助学生模型学习。
  • 在CKD框架中,通过结合有监督和无监督的蒸馏损失,模型可以在保留教师模型知识的同时,提高对多模态数据的理解和预测性能。这种结合使用铰链损失和交叉熵损失的策略,使得模型在训练时既能够利用明确的监督信号,又能够从更广泛的数据中学习,从而提高模型的泛化能力和推荐质量。
图 3:在 Amazon-Clothing 数据集上训练过程中的性能曲线
  • 这张图展示了在 Amazon-Clothing 数据集上,使用 CKD 方法和不使用 CKD 方法的多模态模型以及单模态模型的性能变化。图中显示了召回率(Recall@20)随训练周期(Epoch)的变化。可以看出,使用 CKD 方法的模型在整体多模态性能和单模态性能上都优于不使用 CKD 方法的模型,这表明 CKD 方法能够有效提高模型在多模态学习中的性能。

在这里插入图片描述

在Amazon-Clothing数据集上训练期间的性能曲线。阴影区域表示我们的方法的改进(最好用彩色显示)。

二、音视频语音识别中丢失导致的模态偏差对丢失视频帧鲁棒性的影响

AVSR 视听语音识别
ASR 自动语音识别

2.1 研究背景

研究背景:

  • 先进的视听语音识别(AVSR)系统在处理缺失视频帧的情况下表现出敏感性,性能甚至不如单模态模型。
  • 尽管在视频模态上应用常见的dropout技术可以增强对缺失帧的鲁棒性,但在处理完整数据输入时却会导致性能损失。

2.2 解决问题

研究解决的问题:

  • 论文探讨了为什么在视频训练数据上应用dropout策略虽然增强了对缺失视频模态的鲁棒性,但在处理完整数据输入时却导致性能下降的矛盾现象。
  • 研究了由dropout引起的模态偏差问题,特别是对音频模态的过度依赖,并提出了解决这一问题的方法。

2.3 实施方案

研究实施方案:

  1. 提出了模态偏差假设(Modality Bias Hypothesis, MBH),系统地描述了模态偏差与多模态系统中缺失模态的鲁棒性之间的关系。
  2. 提出了**多模态分布近似与知识蒸馏(Multimodal Distribution Approximation with Knowledge Distillation, MDA-KD)**框架,以减少对音频模态的过度依赖,同时保持性能和鲁棒性。
  3. 为了处理完全缺失的模态,采用了适配器(adapters)来动态切换决策策略。

2.4 文章摘要

  • 论文首先通过实验验证了dropout技术引入的模态偏差,发现这种偏差在隐藏的表示子空间中本质上表现为从多模态到单模态分布的转变。
  • 接着,提出了MBH来描述多模态系统中模态偏差对决策过程的影响,以及模态偏差与模态缺失鲁棒性之间的关系。
  • 为了改善AVSR在视频数据缺失时的鲁棒性,同时避免在完整输入时性能下降,提出了MDA-KD方法。该方法通过从相对无偏差的教师模型中提取隐藏知识,指导鲁棒学生模型的学习,以防止任务相关表示的分布转移到单模态分布。
  • 对于视频严重或完全缺失的情况,通过适配器动态切换决策偏差,以特定模态的表示为主导。
  • 通过在MISP2021和MISP2022数据集上的综合实验评估了所提方法的有效性。

2.5 文章贡献

论文的主要贡献包括:

  • 揭示了dropout引起的模态偏差,并发现它本质上是隐藏表示子空间中从多模态到单模态分布的转变。
  • 提出了MBH来系统描述多模态系统中模态偏差对决策过程的影响,以及模态偏差与模态缺失鲁棒性之间的关系。
  • 提出了MDA-KD框架来增强对缺失视频的鲁棒性,并避免在完整输入时性能下降。
  • 在MISP2021和MISP2022数据集上实现了顶级的AVSR性能,同时保持了对缺失视频帧的鲁棒性。

2.6 文章图示

图 1:不同dropout率下AVSR的CER退化曲线
  • 横坐标表示的是测试时视频帧的缺失率。这些数值(0.1、0.3、0.5、0.7)代表了在模型测试阶段,视频数据中被随机丢弃或缺失的视频帧的比例
    在这里插入图片描述

  • 这张图展示了在不同训练dropout率下,AVSR系统在面对缺失视频帧时的性能(以字符错误率CER表示)。

Dropout率是指在训练过程中随机“丢弃”(即用特殊的填充值,如零,替换)输入数据(在本文中是视频帧)的比例。例如:

0.1 表示在训练过程中有10%的视频帧数据被随机丢弃。
0.3 表示有30%的视频帧数据被随机丢弃。
0.5 表示有50%的视频帧数据被随机丢弃。
0.7 表示有70%的视频帧数据被随机丢弃。

  • 与没有dropout的基线AVSR系统(红色线)相比,应用dropout策略的其他AVSR系统在处理缺失输入时表现更好,但在处理完整数据输入时表现更差。
  • 随着训练dropout率的增加,AVSR的CER曲线逐渐趋向于单模态ASR的CER曲线(虚线)。

在视频帧上用不同的丢失率训练的AVSR的CER(以%计)退化曲线。与基线AVSR相比,无丢失(红色),其他AVSR系统在缺失输入时表现更好,但在完整数据输入时表现更差。随着训练脱落率的增加,AVSR的CER曲线逐渐收敛到ASR的CER曲线(虚线)。

图 2:ASR和AVSR转录相似性分析

在这里插入图片描述

  • 这两组图展示了随着训练dropout率的增加,ASR和AVSR识别转录的相似性如何变化。
  • 相似性通过相对CER(%)来衡量,其中ASR转录替代了基准真实转录。
  • 随着训练dropout率的增加,可以看到转录相似性增加,表明AVSR系统在dropout训练下越来越倾向于ASR的决策模式。
图 3:ASR和不同AVSR设置的中间表示相似性矩阵

在这里插入图片描述

AVSR 视听语音识别
ASR 自动语音识别

  • 这张图展示了ASR和不同AVSR配置之间中间层表示的余弦距离相似性矩阵
  • 对角线上的元素表示相同输入的中间表示之间的相似性。
  • 随着训练dropout率的增加,对角线变亮,表明AVSR多模态分布在潜在决策子空间中越来越接近ASR的单模态分布。

这通常表示的是两种不同系统的样本索引的对比。

AVSR sample indices指的是来自视听语音识别(Audio-Visual Speech Recognition)系统的样本索引。这些样本可能包括了音频和视频信息,用于训练或测试AVSR模型。

ASR sample indices:指的是来自自动语音识别 Automatic Speech Recognition)系统的样本索引。这些样本仅包括音频信息,没有视频信息。

图 4:模态偏差假设(MBH)的说明

在这里插入图片描述

  • 左侧子图展示了多模态系统中潜在决策特征的组成部分,采用维恩图的形式表示。
  • 右侧子图展示了随着训练dropout率的增加,决策偏差的动态过程
  • Dropout导致在音频上的一致性模态偏差,无论缺失的程度如何。

模态偏差假设(Modality Bias Hypothesis,MBH)在左侧子图中,潜在表征的任务相关分量(阴影部分)由Zsa、Zsv和Zg组成,分别表示音频特定的、视觉特定的决策特征和模态一般的决策特征。相应的比例用α、β和γ表示。右边的子图显示了一个决定性偏差的动态过程,随着训练退出率的增加。无论缺失的程度如何,丢弃都会导致音频上一致的模态偏差。

图 5:所提出的AVSR系统的整体框架

在这里插入图片描述

  • 展示了处理缺失视频帧和嘈杂语音的AVSR系统的整体框架。
  • 在MDA-KD中,从具有完整数据输入的教师模型的潜在分布中采样潜在知识,作为防止鲁棒性训练中dropout引起的模态偏差的锚点
  • 对于完全缺失的视频输入,激活MS-Adapter以实现动态决策切换。

拟议的AVSR系统的总体框架。我们解决了具有挑战性的现实世界中的场景,包括丢失的视频帧和嘈杂的语音,在训练和测试阶段的重叠率超过40%。在MDA-KD中,潜在知识是从具有完整数据输入的教师模型的潜在分布中采样的。这种潜在的知识作为一个锚点,以防止辍学引起的模态偏差在鲁棒性训练的学生网络。对于完全丢失的视频输入,MS适配器被激活以启用动态决策开关

  1. CA (Cross-Attention)

    • 交叉注意力(Cross-Attention)是一种注意力机制,它允许模型在处理一种类型的输入(如文本)时,考虑另一种类型的输入(如图像)的信息。这种机制在多模态学习中非常重要,因为它可以帮助模型学习不同模态之间的关联。
  2. FFN (Feed-Forward Network)

    • 前馈网络(Feed-Forward Network)是神经网络中的一种基本组件,它由一组全连接层(也称为线性层)组成,通常在卷积神经网络(CNN)和Transformer架构中使用。FFN可以学习输入数据的非线性表示。
  3. Conformer (Convolutional Transformer)

    • Conformer是一种结合了卷积神经网络(CNN)和Transformer架构优点的神经网络模型。它在处理序列数据时,通过使用卷积层来捕捉局部特征,同时使用Transformer的自注意力机制来捕捉全局依赖关系。Conformer在自然语言处理任务中,尤其是语音识别和机器翻译中表现出色。

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

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

相关文章

【LabVIEW】事件结构的用法

本篇文章记录我学习LabVIEW的事件结构用法&#xff0c;希望我的分享对你有所帮助&#xff01; 目录 一、案例说明 1、 LabVIEW实现“YAXBXC的计算” 2、添加事件结构 一、案例说明 在LabVIEW实现“YAXBXC的计算”的基础上&#xff0c;加上事件结构&#xff0c;实现单击一次按…

后端接收数组,集合类数据

文章目录 一. 请求行Path参数&#xff08;不建议&#xff09;二.数组接收&#xff08;不建议&#xff09;三.List集合接收&#xff08;建议&#xff09;四. GET请求既包含请求体又包含请求行 一. 请求行Path参数&#xff08;不建议&#xff09; DeleteMapping("/{ids}&quo…

分布式Redis(14)哈希槽

文章目录 一致性哈希算法理论普通哈希的问题一致性hash算法 Redis 使用哈希槽Redis Cluster集群 为什么Redis是使用哈希槽而不是一致性哈希呢&#xff1f;为什么Redis Cluster哈希槽数量是16384&#xff1f; 关键词&#xff1a;一致性 Hash&#xff0c;哈希槽&#xff0c; 带着…

iOS 巨魔神器,Geranium 天竺葵:6大功能,个个都解决痛点

嘿&#xff0c;这是黑猫。如果你装了巨魔&#xff0c;却只知道安装第三方APP&#xff0c;那就是暴殄天物。巨魔的价值不仅是应用侧载&#xff0c;还有强大的玩机工具生态——这也是我花费大量时间&#xff0c;去制作巨魔精选IPA合集的原因。 通过巨魔商店安装的APP&#xff0c…

SQL优化-MySQL Explain中出现Select tables optimized away

文章目录 前言相关解释总结 前言 今天在做SQL优化的时候&#xff0c;在使用explain执行SQL时&#xff0c;出现了以下情况&#xff1a; EXPLAIN SELECT m1.id from station m1 INNER JOIN site s ON m1.codes.stationcode where receivetime(SELECT MAX(m2.receivetime) FROM…

Python爱心射线(完整代码)

目录 系列目录 写在前面​ 完整代码 下载代码 代码分析 写在后面 系列目录 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3

springsecurity+jwt实现前后端分离认证授权

文章目录 1.简介2.快速入门3.认证3.1登录校验流程3.2原理初探3.3认证详流程详解3.4 分析UsernamePasswordAuthenticationFilter 4.案例实战4.1 思路分析4.2准备工作4.3实战1.数据库校验用户2.核心代码1.创建UserDetailsService实现类2.创建UserDetails实现类3.密码加密存储模式…

ClickHouse的安装配置+DBeaver远程连接

1、clickhouse的下载&#xff1a; 先去clickhouse官网进行下载&#xff0c;继续往下翻找文档&#xff0c;将DBeaver也下载下来 下载地址&#xff1a;https://packages.clickhouse.com/rpm/stable/ 下载这个四个rpm包 2、上传rmp文件到Linux中 自己创建的一个clickhouse-ins…

Linux文件IO(一)-open使用详解

在 Linux 系统中要操作一个文件&#xff0c;需要先打开该文件&#xff0c;得到文件描述符&#xff0c;然后再对文件进行相应的读写操作&#xff08;或其他操作&#xff09;&#xff0c;最后在关闭该文件&#xff1b;open 函数用于打开文件&#xff0c;当然除了打开已经存在的文…

优化算法(四)—蚁群算法(附MATLAB程序)

蚁群算法&#xff08;Ant Colony Optimization, ACO&#xff09;是一种模拟蚂蚁觅食行为的优化算法&#xff0c;由Marco Dorigo于1990年提出。它利用了蚂蚁在寻找食物的过程中通过释放信息素来相互影响的机制&#xff0c;以找到最优解或接近最优解。蚁群算法特别适用于解决组合…

【高级编程】网络编程 基于 TCPUDP 协议的 Socket 编程

文章目录 IP地址Socket基于 TCP 协议的 Socket 编程基于 UDP 协议的 Socket 编程 IP地址 IP地址&#xff08;Internet Protocol&#xff09;&#xff1a;唯一标识网络上的每一台计算机 IP地址的组成&#xff1a;32位&#xff0c;由4个8位二进制数组成 11000000.10101000.000…

C++ 赋值运算符重载

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 概念概述 赋值运算符重载的特点&#xff1a; 成员函数&#xff1a;赋值运算符重载必须…

IPv6(三)

文章目录 IPv6报文 IPv6报文 IPv6基本报头有8个字段&#xff0c;固定大小为40字节&#xff0c;&#xff0c;每个IPv6数据都必须包含报头&#xff0c;基本报头提供报文转发的基本信息&#xff0c;会被转发路径上面的所有路由器解析 IPv6报头长度为40字节Version&#xff1a;版本…

leetcode21. 合并两个有序链表

思路&#xff1a; 用一个新链表来表示合并后的有序链表&#xff0c; 每次比较两个链表&#xff0c;将较小的那个结点存储至新链表中 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNone): # self.val val # …

sheng的学习笔记-AI-归纳逻辑程序设计(ILP)

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 规则学习&#xff08;rule learning&#xff09;: sheng的学习笔记-AI-规则学习&#xff08;rule learning&#xff09;-CSDN博客 一阶规则学习&#xff1a; sheng的学习笔记-AI-FOIL(First-Order Inductive Learner)-CSD…

什么是 SSL 代理?

您可能已经对代理有所了解&#xff0c;例如移动代理、住宅代理和数据中心代理之间的区别。但是 SSL 代理到底是什么&#xff1f;它与其他类型的代理相比有何不同&#xff1f; 让我们分析一下&#xff0c;看看 SSL 代理有何特殊之处。 1.什么是 SSL/HTTPS 代理&#xff1f; SS…

《高等代数》分块矩阵(应用)

说明&#xff1a;此文章用于本人复习巩固&#xff0c;如果也能帮助到大家那就更加有意义了。 注&#xff1a;1&#xff09;利用分块矩阵的相关公式进行证明

[PTA]7-5 求组合数

[PTA]7-5 求组合数 输入格式: 输入在一行中给出两个正整数m和n&#xff08;m≤n&#xff09;&#xff0c;以空格分隔。 输出格式: 按照格式“result 组合数计算结果”输出。题目保证结果在double类型范围内。 输入样例: 2 7 输出样例: result 21 代码 #include<stdio…

【Linux进程控制】进程程序替换

目录 进程程序替换 替换函数 看现象 替换原理 多进程替换 exec*函数使用&#xff08;部分&#xff09;&#xff0c;并且认识函数参数的含义 1.execl 2.execv 3.execvp 4.execvpe execlp 和execlpe 替换函数总结 进程程序替换 替换函数 有六种以exec开头的函数&am…

unity将多层嵌套的结构体与json字符串相互转化

定义多个结构体&#xff0c;将结构体内容输入到最终的JObject中&#xff0c;然后将其转为字符串打印出来&#xff0c;即可。 代码内容如下&#xff1a; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using UnityEngine;public class Test : MonoBehaviour {private Ap…