动机
  1. 随着近年来自然语言处理和图像语言任务的预训练技术的成功,一些视频语言预训练工作逐渐被开发出来,以改进视频文本相关的下游任务。
  2. 多模态视频语言任务的研究和应用都具有重要的意义。
  3. 近年来,针对多模态任务提出了许多视觉语言预训练模型。以往的模型大多只对模型进行理解任务上的预训练,这导致了生成任务的预训练与finetune不一致。与这些作品不同的是,作者专注于针对视频和文本预训练做统一表示。
  4. 作者通过一个编码器-解码器范例,对理解任务和生成任务进行了预训练。
  5. 虽然并发工作VideoAsMT具有与作者类似的编码器-解码器,但对于只有一个单一统一框架的下游任务来说并不灵活。作者提出了一种灵活的学习视频和语言联合表征和适应下游多模态任务的方法,该模型包含两个独立的编码器,而不是一个统一的编码器-解码器。
方法
简介

在本工作中,作者首先提出使用在教学视频中视频和有声语音识别(ASR)transcripts来预训练一个统一的视频语言模型来学习视频和语言的联合表示。然后,作者在五个典型的多模态任务上微调了这个模型,包括理解和生成目标。图1展示了作者的预训练和微调流程。以多模态视频captioning为例。该模型输入视频和ASR transcripts并预测captioning句子。

作者提出了一个统一的视频和语言预训练模型UNIVL,用于多模态的识别和生成。作者的UniVL模型采用Transformer作为主干,有四个组件,包括两个单模态编码器、一个交叉编码器和一个解码器。具体来说,作者首先通过两个单模态编码器分别对文本和视觉进行编码。如一个视频-文本联合目标在这两个编码器上执行,其目的是在融合它们之前学习每个模态的更好的表示。这样一种双流设计对于检索任务来说是很自然的,因为它可以扩展到非常大的数据集。所提出的表示可以被索引,并且在视频数量上具有线性复杂度。然后采用基于Transformer的编码器-解码器模型,通过四个任务:条件masked语言模型(CMLM用于语言损坏)、条件masked帧模型(CMFM用于视频损坏)、视频-文本对齐和语言重建。在此基础上,作者设计了两种预训练策略,包括分阶段预训练策略(StagedP)和增强视频表示策略(EnhanceDV)来促进UniVL的预训练。StagedP在作者的设置中有两个部分。在第一阶段,作者只通过视频-文本联合目标对文本编码器和视频编码器进行预训练。然后在第二阶段的整个目标下对所有模块进行预训练。此外,作者在文本上采用了一个完整的masked策略EnhancedV来增强视频的再现性。

架构

该问题定义为:给定输入视频和相应的ASR transcripts对,采用自监督的方法预训练一个学习视频和文本联合表示的模型,并对下游任务进行微调。

如图3所示,UniVL作为编码器-解码器架构。UniVL的主要结构包括四个组件:两个单模态编码器、一个交叉编码器和一个解码器。该模型对许多文本和视频下游任务具有灵活性。该模型首先利用各种特征提取器提取输入文本标记和视频帧序列的表示。然后,文本编码器采用BERT模型嵌入文本,视频编码器利用Transformer编码器嵌入视频帧。接下来,作者使用了一个基于Transformer的交叉编码器来实现文本和视频之间的交互。最后使用Transformer解码器对输入文本进行重构。

模型

具体来说,模型包括以下几部分:

  1. 预训练。

作者总结了三种预训练范式,以覆盖先前的视觉-文本预训练模型,考虑到不同的编码器架构,如图2所示。Unicoder-VL、VL-BERT,UNITER、VLP、VideoBERT、ActBERT和VideoAsMT属于图2(a)中的共享类型,其中文本和视觉序列被组合作为一个共享Transformer编码器的输入。ViLBERT和LXMERT是图2(b)所示的交叉型。CBT和HERO是图2©所示联合型。交叉型和联合型体系结构有两个流输入,区别是跨两种模态的交互。与共享类型中的单流输入相比,双流输入可以适应每个模态的不同处理需求,并在不同的表示深度下交互。此外,与交叉式结构相比,联合式结构具有一个跨模态编码器,以实现两个流之间的充分交互。作者采用联合式结构作为编码器。

作者开发了两种预训练策略来有效地训练UniVL模型。

1)StageDP:一个阶段一个阶段的预训练。UniVL可以从文本编码器模块中预训练好的BERT-Base uncased模型中获益。自然的想法是训练一个对等视频编码器作为BERT-Base。作者采用两个阶段的训练方式。在第一阶段,作者只预服务于文本BERT和视频Transformer,以利用视频-文本联合损失(公式(5))来学习权重。接下来,作者降低学习率,继续按照所有五个目标对UniVL进行进一步的预训练。一个好处是加快预训练的速度,另一个好处是使预训练的进度在重量上更加平滑。

2)EnhancedV:增强的视频表示。为了进一步增强视频的表现力,作者采用了一种masked模态策略,使视频在没有文本输入的情况下生成transcripts。特别地,作者以15%的可能性mask整个文本token。也就是说,有15%的文字-视频对与整个文本token在每个小批量中被masked,并且模型利用视频信息去完整生成。这样的策略对于模型学习更好的视频表示是一个更具挑战性的任务。

作者首先对视频和语言进行预处理,然后再输入到UNIVL。对于输入文本,作者遵循BERT中的预处理方法,将所有单词按WordPieces进行tokenize化,得到token序列t={ti|i∈[1,n]},其中ti是第i个token,n是token序列的长度。对于每个视频片段,作者采样一个帧序列v={vj|j∈[1,m]},并采用它们来提取特征,其中vj是第j组视频帧,m是帧序列的组长。

  1. 单模态编码器。

    作者分别对文本和视频进行编码。这种双流设计具有两个优点:模块重用和面向检索。模块重用是指文本模块可以从现有的基于文本的预训练模型(如BERT)中受益。以检索为导向,双流设计由于其对数据集的可扩展性,对检索任务来说是很自然的。提取的表示可以被索引,相似度的计算在视频的数量上具有线性复杂度。作者采用BERT-Base uncased模型,在输入token序列t后生成文本表示T∈Rn×d。T=BERT(T) (1),其中d是文本表示的隐藏大小。对于视频帧序列v,作者采用现成的图像特征提取器,例如S3D来生成视频特征Fv。利用一个Transformer编码器嵌入视频的上下文信息,V=Transformer(Fv) (2),V的维数为Rm×d

  2. 交叉编码器。

    文本编码器和视频编码器主要是针对个体形态的。为了使文本和视频能够充分交互,作者设计了一个以文本和视频的模态特征为输入的交叉编码器。具体地说,作者首先将文本编码T和视频编码V结合起来,得到编码M∈R(n+m)×d。然后,Transformer编码器将编码M作为输入,生成关注的编码M∈R(n+m)×d,M=Transformer([T; V]) (3),其中[; ]表示组合操作。要注意的是,组合是随着序列的维度而不是隐藏大小的维度一起操作的。一个原因是文本长度n和视频剪辑长度m总是不同的。另一个原因是文本和视频之间的语义不是绝对对齐的。人们很可能在视频中在执行一个事件之后或之前描述一个事件。

  3. 解码器。

    作者通过附加一个解码器,使预训练好的模型具有从生成任务中学习并从中受益的能力,该解码器通常是一个单向的循环/注意模型来逐个生成token。这种解码器模态被证明在基于文本的预训练任务中有用,例如,T5和BART。需要注意的是,解码器在不同阶段具有不同的目标。在预训练期间,由于没有可用的文本标签,解码器学习重建输入文本(例如,transcripts)。当微调时,解码器用于生成结果,例如视频caption,其中输入transcripts和视频,并输出caption。输入是文本和视频的关注编码M。利用Transformer从M中得到D∈Rl×d的解码特征,D=Transformer(M) (4),其中l是解码器长度。

  4. 作者有五个预训练目标:1)视频-文本联合;2)条件masked语言模型(CMLM)(针对文本损坏);3)条件masked帧模型(CMFM)(针对视频损坏);4)视频-文本对齐;5)语言重建。

    1)视频-文本联合。作为文本编码器,BERT-Base uncased模型是一个鲁棒的文本表示提取器。因此,作者利用视频-文本联合目标来提高视频编码器的性能。这似乎是一种取回定向操作,即对齐文本和视频之间的表示空间。考虑到叙述视频中文本与视频剪辑之间的不对齐性,作者采用MIL-NCE对T和V的MIL-NCE作为联合目标。

    其中Pv,t是一组正视频-transcripts对。例如{(v, t),(v, t-1),(v, t+1)},其中t-1和t+1是在时间上与t最近的两个transcripts。负对Nv,t在固定v(或t)之后从batch B中其他实例获取负transcripts(或视频剪辑)。^^v、^v和^^^t、^^t分别通过在V和T上的均值池化生成。θ为可训练参数。

    2)CMLM。继BERT之后,作者还在视频输入和已知token的情况下,用句子中的特殊token [mask]随机mask 15%的Tokens,并重新生成mask后的token。此损失函数定义在M中文本部分的特征矩阵上:

    其中t¬m表示围绕masked token tm的上下文token,θ是可训练参数。

    3)CMFM。同样,作者还提出了一个masked帧模型来预测给定上下文帧的正确帧和针对语义约束的输入文本。然而,原始RGB帧的重建比较困难。作者采用对比学习的方法,最大化masked输出特征与原始特征之间的互信息(Mutual information,MI)。这个损失函数是NCE。作者用零随机mask 15%的向量(也是15%的帧)。目的是与负干扰因素相比较,确定正确的帧。损失定义为:

    其中v¬m指周围的帧,但不包括vm,fvmR1是一个fvmv∈Fv的线性输出,Fv是视频特征的实值向量,mvm∈M(v),并且M(v)是M中视频部分的特征矩阵,作者取同一批中的其他帧作为定义为N(vm)的负例。

    4)视频-文本对齐。作者使用对应于特殊token [CLS]的融合表示来预测视频-文本对齐的分数,这类似于BERT句子对分类任务。作者采用NCE损失来学习区分正向和负向的视频-文本对。为了增强这种能力,作者不仅随机抽样负例,还从同一视频中重新抽样视频片段。原因是同一视频内部的帧比不同视频的帧更相似。此损失函数定义如下,

    其中s(·)表示两个线性层,它们之间有一个Tanh 激活函数,该函数是在M的第一个隐藏状态下执行的。作者将同一批量B中的其他视频片段作为负例N(v)。

    5)语言重建

    为了重建输入语句以赋予预训练模型生成能力,作者采用了一种具有重建目标的自回归解码器,其损失函数为,

    需要注意的是,在预训练时,t是真实文本^^^t的masked版本。如BART所示,预训练解码器使生成任务受益。

    作者通过一种加权损失联合优化作者的模型:

实验

作者首先在大规模数据集上对模型进行预训练。作者从Howto100M数据集下载带有ASR transcripts的视频。在对不可用的进行过滤后,作者得到1.2M的视频,用于对作者的模型进行预训练。平均每个视频的时长为6.5分钟,有110个剪辑-文本对。

然后,作者使用五个数据集对作者的预训练模型进行了五个不同的下游任务的微调,包括基于文本的视频检索、多模态视频captioning、动作分割、动作步骤定位和多模态情感分析。

数据集
  1. Youcook2。

    Youcook2包含2,000个烹饪视频,涉及89种食谱,并配有14K视频剪辑。总时长为176小时(平均为5.26分钟)。每个视频剪辑都有一个captioning句子标注。作者评估了基于文本的视频检索和多模态视频captioning任务在该数据集上的应用。对于基于文本的视频检索任务,作者遵循中相同的实验设置,使用captions作为输入文本查询来查找相应的视频片段。对于视频captioning任务,作者使用与中相同的设置。作者对数据进行过滤,确保预训练和评估数据之间没有重叠。作者总共有1261个训练视频和439个测试视频,即9,776个训练剪辑-文本对和3,369个测试剪辑-文本对。

  2. MSR-VTT。

    MSR-VTT是用于视频检索任务的开放领域数据集。它有开放的领域视频剪辑,每个剪辑有20个人工标注的captioning句子。基于JSSFusion,作者从10K视频中随机抽取了1000个视频片段作为测试数据,以评估作者的模型在基于文本的视频检索任务中的性能。

  3. COIN。

    COIN是用来评估动作分割任务,包含180个不同的任务和11,827个视频。每段视频采用3.91个步骤分割段被标记。该数据集总共包含476小时的视频,有46,354个标注片段。

  4. CrossTask。CrossTask是对动作步骤定位任务进行评估。包含83个不同的任务和4.7k视频。对于每个任务,都提供了带有手动描述的一个有序步骤列表。

  5. CMU-MOSI。Multimodal Opinion Sentiment和Emotion Intensity是在线视频中句子级的情感分析和情感识别。CMU-MOSI包含2,199个opinion视频剪辑,每个剪辑都用[-3,+3]范围内的真实值的情感强度标注进行标注。作者评估了作者的模型在多模态情感分析中的性能。

实验细节

对于文本编码,作者使用了带有30,000个token词汇表的WordPiece嵌入来输入BERT模型。作者利用BERT-base模型的12层Transformer块。每个区块有12个注意头,隐藏大小为768。

对于视频编码,首先使用2020年Miech等人预训练好的S3D模型从视频片段中提取三维特征。基本的视觉特征可以显著影响作者初步实验的结果。三维特征提取器的fps为16,维数为1024。然后采用6层Transformer编码器获取三维特征的序列信息。每个区块有12个注意头,隐藏大小为768。

模型使用剪辑-文本对。文本的最大输入token为32个,视频特征的最大数目为48个。对于短句和剪辑,作者将上下文tokens和帧连接起来。对于交叉编码器和解码器,作者采用2层Transformer编码器作为编码器,采用3层Transformer解码器作为解码器,具有12个头和768个隐藏大小。对于推理阶段的生成任务,作者使用了大小为5的beam search。如前所述,生成的序列是预训练阶段的真实输入transcripts。它的目标是顺序地从masked的transcripts和视频特征中学习完整的信息。

作者在8个NVIDIA Tesla V100 GPU上预训练自己的模型。存在两组超参数,它考虑了阶段到阶段的预训练策略。

在第一阶段,批量大小设置为600个,模型训练50个epoch,训练了1.5天。在第二阶段,将批量设置为48个,并对模型进行50个epoch的训练,训练了12天。作者使用Adam优化器,第一阶段的初始学习率为1e-3,第二阶段的初始学习率为1e-4,并采用带有预热策略的线性衰减学习率调度。

实验结果
  1. 基于文本的视频检索。基于文本的视频检索被定义为在给定输入文本查询的情况下检索相关的视频/剪辑。如图3((retrieval block(检索块))所示,模型分别通过文本编码器和视频编码器对输入的文本查询和候选视频片段进行编码。然后用两种不同的方法计算匹配分数:一种是UniVL(FT-Joint),它通过点积来计算分数,如公式(6)所示。并在微调阶段使用Ljoint作为损失;另一种是UniVL(FT-Align),它将编码输入到单编码器和交叉编码器,得到统一的表示,并通过等式(12)中的s(·)预测在第一个token“[CLS]”上的匹配分数。在微调阶段,损失是LAlign。作者使用Adam优化器,其初始学习率为3e-5,一个批处理大小为32的视频-caption对,初始学习率为5e-5,对于MSR-VTT,批处理大小为128的视频-caption对作为超参数进行5个epoch的微调。

    作者在Youcook2和MSR-VTT数据集上对基于文本的视频检索任务的预训练模型进行了微调。评估指标为Re-Call@n(R@N)和Median R。表1和表2分别列出了所有基线和作者的模型在Youcook2和MSR-VTT上的检索结果。作者可以看到作者的模型在很大程度上超过了所有基线,达到了最好的性能。

    作者提出了几种有或无预训练的基线方法。作者的模型在所有指标上都优于在同一数据集上预训练好的Howto100M和VideoAsMT模型。此外,实验结果表明,通过预训练可以获得较大的性能增益。

    作者还注意到UniVL(FT-Align)比UniVL(FT-Joint)性能更好,这说明交叉编码器产生的融合表示更好。然而,UniVL(FT-Joint)的推理速度比Youcook2快50倍和MSR-VTT的推理速度比UniVL(FT-Align)快10倍。因此,在实际应用中,它是一个性能和效率之间的权衡。

  2. 多模态视频captioning。多模态视频captioning旨在生成一系列描述性句子。如图3(caption block)所示,该模型分别通过视频编码器和文本编码器对输入的视频帧以及片段内部的transcripts进行编码,然后将编码反馈到交叉编码器得到统一表示,最后由解码器生成token序列。在微调阶段,作者使用解码器作为损失。超参数是3e-5的初始学习率,32个样本的批量大小,并且微调5个epoch。

    表3列出了YouCook2上所有基线和作者模型的captions结果。本生成任务采用使用pen-source工具的语料库级生成评价度量,包括BLEU(BLEU-3,B-3;BLEU-4,B-4)、METEOR(M)、ROUGE-L(R-L)和CIDEr。作者将作者的预训练模型与几种基线方法进行比较。根据输入内容为纯视频或视频+文字的设置,对这些方法进行了分类。即使只考虑视频作为输入,作者的预训练模型也达到了最先进的结果,并优于现有的预训练模型。

  3. 动作分割。作者使用COIN数据集对动作分割任务的预训练模型进行了微调,即为给定视频的每一帧预测一个预定义的标签。如图3(action tasks block(动作任务块))所示,模型通过视频编码器对输入视频帧进行编码,然后在输出编码后使用线性分类器进行帧token。由于数据集中没有文本描述,作者不使用文本编码器。评估指标是帧精度(FA)。超参数是3e-5的初始学习率,32个样本的批量大小和5个周期的微调。结果如表4所示。UniVL以超过14%的性能优于基线。这表明,即使没有语言描述,经过预训练的UniVL实际上也学习了一个很好的视觉表征。

  4. 动作步骤定位。作者对交叉询问数据集上的动作步骤定位进行了评估。如图3(action tasks block)所示,模型分别通过文本编码器和视频编码器对步骤描述(动作)和视频剪辑进行编码。然后通过类似于检索任务的点积计算相关性分数。为了公平地比较,作者不对CrossTask数据集进行微调。作者通过报告定位任务的平均召回(CTR)度量来执行评估协议。结果如表5所示。作者的结果甚至优于监督基线,这表明作者的UniVL模型能够学习更好的文本-视频联合表示。

  5. 多模态情感分析。作者在CMU-MOSI数据集上对多模态情感分析进行了评价,其目的是根据说话人的言语和非言语行为表现来识别说话人的情感。作者使用视频和相应的transcripts来完成这项任务。如图3(多模态分类块)所示,模型分别通过视频编码器和文本编码器对输入视频帧以及剪辑内部的transcripts进行编码。然后将编码输入交叉编码器得到统一的表示,最后在第一个token [CLS]上用一个线性预测情感得分。超参数的初始学习率为1e-5,批量大小为32,微调3个epoch。结果如表6所示。评估指标是二进制精度(BA)、F1评分、平均绝对误差(MAE)和皮尔逊相关系数(Corr)。与使用视频、transcripts本和音频输入的基线相比,作者用视频和语言训练的模型在没有音频信息的情况下仍然取得了最好的结果。

消融研究

通过对基于文本的视频检索和多模态视频captioning任务的消融研究,作者分析了模型设计在预训练目标和策略上的有效性。作者还讨论了各种视觉特征的有效性。

表7显示了每个目标或策略在检索任务上的有效性。结果在Youcook2和MSR-VTT数据集上进行了报道。同时,表8显示了每个目标或策略在标题任务上的有效性。对于检索任务,作者采用了UniVL(FT-Joint)微调策略来研究目标:联合损失、对齐损失和解码器损失,其中StagedP和EnhancedV策略得到了较好的改进。从结果可以看出,交叉编码器和解码器模块可以促进视频和文本的联合表示。对于caption任务,作者发现解码器模型显示了很大的优势,在BLUE-4度量上获得了3个点以上的增益。另一个发现是,联合损失虽然在检索任务中表现良好,但对生成任务的影响却较小。过分强调粗粒度匹配会影响生成任务处的细粒度描述。

作者比较了在Howto100M上预训练好的S3D视频特征和在带标签的ImageNet和Kinetics上预训练好的ResNet-152和ResNeXt-101。ResNet-152(RS152)和RESNEXT-101(RX101)分别用于从视频片段中提取2D和3D特征,类似于2019年Miech等人的工作。

如表9和表10所示,视觉特征在作者的预训练模型和下游任务中都很重要。在未来从原视频中进行端到端的训练是值得研究的,而不是提取的固定视频特征。然而,时间开销和内存开销是巨大的。本文提出了两种可能的训练方法:设计一种轻量级的训练方案,例如对视频的关键帧进行训练;利用一种小的特征尺寸。

贡献
  1. 作者提出了一个在大规模教学视频数据集上训练的多模态视频语言预训练模型。对于视频语言理解和生成任务,它都是一个灵活的模型。

  2. 预训练包括视频-文本联合、条件masked语言模型、条件masked帧模型、视频-文本对齐和语言重建五个目标。提出了两种使这些目标协调工作的前期训练策略。

  3. 作者在基于文本的视频检索、多模态视频caption、动作分割、动作步骤定位和多模态情感分析等五种典型的多模态视频语言任务中对作者的预训练模型进行了微调。通过大量的实验验证了该模型对下游任务的有效性,并取得了较好的效果。

小结

作者提出了UNIVL:一个用于多模态理解和生成的统一的视频和语言预训练模型。它由四部分组成,包括两个单模态编码器、一个交叉编码器和一个带Transformer主干的解码器。UniVL设计有四个模块和五个目标,用于视频语言理解和生成任务。它是一个灵活的多模式下游任务模型,兼顾了效率和效果。作者进一步提出了两种预训练策略:逐步预训练(StagedP)和增强视频表示(EnhancedV),以使UniVL的训练过程更加有效。预训练是在一个大小可达100M的教学视频数据集上进行的。实验结果表明,UniVL能够学习到较强的视频文本表示,并在5个下游任务上取得了较好的结果。

UniVL: A Unifified Video and Language Pre-Training Model for Multimodal Understanding and Generation相关推荐

  1. 【论文模型讲解】VideoBERT: A Joint Model for Video and Language Representation Learning

    文章目录 前言 0 摘要 1 Introduction 2 相关工作 3 模型 3.1 BERT 3.2 VideoBERT 4 实验与分析 4.1 数据集 4.2 视频和语言预处理 4.3 模型预训 ...

  2. 详细介绍ERNIE 3.0: Large-scale Knowledge Enhanced Pre-training for Language Understanding and Generation

    系列阅读: 详细介绍百度ERNIE1.0:Enhanced Representation through Knowledge Integration 详细介绍百度ERNIE 2.0:A Continu ...

  3. Leveraging Large Language Models for Robot 3D Scene Understanding

    利用LLMS进行场景理解的工作 代码:https://github.com/MIT-SPARK/llm_scene_understanding leveraging language for clas ...

  4. NeurIPS 2022|UIUC联合哥伦比亚大学提出VidIL模型,通吃小样本视觉语言任务

    原文链接:https://www.techbeat.net/article-info?id=4205 作者:seven_ 近来,视觉语言模型(video-language models)已经成为多模态 ...

  5. NLP预训练模型综述

    文章目录 文章 介绍 背景 2.1语言表示学习 非上下文词嵌 2.2 神经上下文编码器 2.2.1 序列模型s 2.2.2 非序列模型 2.2.3 分析 2.3 为什么预训练? 2.4 NLP的PTM ...

  6. 多模态预训练模型简述

    1.介绍 让机器能以人类智能相似的方式作出反应一直是人工智能研究人员的目标.为了让机器能听会说.能看会认.能理解会思考, 研究者提出一系列相关任务,如人脸识别.语音合成.阅读理解等来训练及评价机器在某 ...

  7. 学术派 | 爱奇艺深度语义表示学习的探索与实践

    导读 基于学术界和工业界经验,爱奇艺设计和探索出了一套适用于多种业务场景的深度语义表示学习框架.在推荐.搜索.直播等多个业务中的召回.排序.去重.多样性.语义匹配.聚类等场景上线,提高视频推荐的丰富性 ...

  8. NLP算法面试必备!史上最全!PTMs:NLP预训练模型的全面总结

    预训练模型(Pre-trained Models,PTMs)的出现将NLP带入了一个全新时代.2020年3月18日,邱锡鹏老师发表了关于NLP预训练模型的综述<Pre-trained Model ...

  9. PTMs:NLP预训练模型的全面总结

    PTMs:NLP预训练模型的全面总结 转自:https://zhuanlan.zhihu.com/p/115014536 预训练模型(Pre-trained Models,PTMs) 的出现将NLP带 ...

最新文章

  1. 李开复:职场人35岁以后,真诚比面子重要,均衡比魄力重要!
  2. SCN试验之二 checkpoin scn 与数据库scn的关系
  3. 双12来了!揭秘秒杀剁手背后的云数据库PolarDB!
  4. java 数组 内存_图解Java数组的内存分配
  5. ubuntu 11.10下载和编译Android源码
  6. python 编程环境 微信_微信开发之新浪SAE上配置WeRoBot微信机器人,python,Mac环境...
  7. AI 崛起?科技公司却偷偷用人类做机器人的工作!
  8. 什么是Java中的原子操作( atomic operations)
  9. 父组件直接触发子组件中的函数
  10. 管理感情:工作犯错了,不要狡辩,不要把错误推到别人身上
  11. Atitit.index manager api design 索引管理api设计
  12. 深度摄像头linux环境下,嵌入式Linux环境下USB摄像头应用程序设计.pdf
  13. 云MAS - MT-提交状态码
  14. 技术使用总结-旷视人脸识别-(APP中H5接入)
  15. 快讯:预装Ubuntu 11.10小电脑南非开卖
  16. 使用Dnsmasq搭建本地dns服务器上网
  17. Android Launcher3简介
  18. 什么是进修编程言语之前
  19. c语言常量2l是什么,2017年计算机二级c语言题库
  20. 有意思的微软对联软件

热门文章

  1. MRP(物料需求计划) 的运作机制
  2. 美团校招-2023.3.18.10点-第四题-商店-困难
  3. Java+Jsp+Mysql实现简单在线图书推荐系统 个性化图书推荐系 java实现基于用户的协同过滤推荐算法 源代码下载 算法实现 Spring+Struts+Hibernate(SSH)开发框架
  4. 抖音seo账号矩阵排名seo优化系统搭建部署
  5. 说明书丨ReliaTech艾美捷大鼠羧肽酶-B
  6. ACM论文投稿时如何删除页眉和reference信息
  7. linux 获得磁盘 寻道时间,Linux入门篇 —— Linux 磁盘管理之磁盘理论篇 | 七日打卡...
  8. Apple Final Cut Pro X 10.5 视频编辑软件 下载 百度网盘
  9. HCIP笔记(18)
  10. 2021年云原生技术趋势