没有合适的资源?快使用搜索试试~ 我知道了~
16177将语言指导集成到基于视觉的深度度量学习中Karsten Roth1,Oriol Vinyals2,Zeynep Akata1,31图宾根大学,2DeepMind,3MPIforIntelligentSystems摘要深度度量学习(DML)提出学习将语义相似性编码为嵌入空间距离的度量空间。这些空间应该可以转移到培训班以外的班级。通常,DML方法任务网络来解决定义在二进制类分配上的对比排序任务。然而,这样的方法忽略了实际类之间更高层次的语义关系。这导致学习的嵌入空间编码不完整的语义上下文和错误表示类之间的语义关系,影响学习的度量空间的泛化能力。为了解决这个问题,我们提出了一个视觉相似性学习的利用专家和伪类名的语言广泛的实验和消融为我们提出的方法提供了强大的动力,并显示语言指导 为 DML 提 供 了 显 着 的 , 与 模 型 无 关 的 可 在github.com/ExplainableML/LanguageGuidance 上 获 得DML代码。1. 介绍深度网络的视觉相似性学习驱动了重要的应用,如图像检索[94,115],人脸验证[19,63],聚类[6]或对比监督[49]和无监督表示学习[13,39]。深度度量学习(DML)已被证明是一种有用且被广泛采用的框架,可通过学习(深度)度量表示/嵌入空间(其中预定义的距离度量,如欧氏距离或余弦距离,与两个样本的实际潜在语义相似性有很强的联系)来将视觉相似性置于上下文中[72,91]。在大多数视觉相似性任务中,除了训练分布和类之外的转移是至关重要的,这需要学习的表示空间来编码有意义的语义上下文,该语义上下文概括了训练期间看到的关系之外。然而,大多数DML方法引入了图1. 更好的语义视觉对齐的存储指导。我们利用语言上下文来更好地将学习到的度量空间与更高级别的语义关系对齐,并显着提高泛化性能。仅基于给定数据集中提供的类标签的训练范例,以定义网络要解决的排名任务。这对每个类都是一样的,嵌入空间中的类的排列完全来自于类标签生成的排名任务。在这样做时,不同类之间的高级语义连接(例如,跑车与皮卡车)不能被解释,即使语义上下文超出了可以从纯粹的区别性类别标签中得出的内容,促进了更强的泛化,特别是对新类别[ 60,66,88,123 ]。虽然语境化通过,例如,层次结构的定义[4,10,17,22]可以帮助细化类别标签,这种方法通常依赖于预定义的规则或专家知识。为了解决这个问题,我们建议利用现成的大规模预训练自然语言模型1的大型语料库,为类标签提供与任务无关的上下文化,并鼓励DML模型学习语义上更一致的视觉表示空间。使用基于语言的预训练对视觉相似性进行情境化早就应该了-对于基于视觉的DML,预训练(在ImageNet上)已经成为标准1S.a. Transformer语言模型[107]在各种应用程序中具有强大的零/少量泛化[8,23,64,83,84]提供,例如通过公共图书馆,如HuggingFace [113]。16178[19,66,72,75,91,92,94,95,115]因为它提供了一个强有力的和现成的起点。这个起点可以很好地转移到许多下游领域,并确保大多数DML方法底层的排名任务在最初得到更好的定义,从而提高训练和泛化性能(例如,[72、91])。这种Ima-geNet预训练是标准的,并且至关重要,即使对于未监督的DML[12,45,58,120],也可以在深度学习的其他领域中找到类似的,例如图像检测[35,36,40,59,62,85,87]。因此,没有理由限制DML只利用视觉预训练,而忽视语言上下文的潜在好处。为了结合预训练的语言模型来促进视觉相似性学习,我们因此提出了用于DML的语言指导(ELG)。给定自然语言类名,计算语言嵌入和相应的语言相似性,然后通过映射使用它们来重新排列和校正通过标准DML方法学习的视觉嵌入关系。然而,自然语言类名称需要专业知识。为了绕过这种额外的监督的需要,我们进一步提出了伪标签指导(PLG)。利用DML管道中普遍使用的ImageNet预训练,我们为样本和类定义了一个准唯一的自然语言ImageNet伪标签集合,基本上是将这些伪标记重新嵌入到预训练的语言模型中,可以访问粒度不太细但一般适用的伪标记相似性的集合,然后可以类似地用于语言指导,而泛化性能几乎没有变化。广泛的实验和消融支持我们提出的方法的有效性,并展示了显着的改进,以泛化性能的DML模型时,使用预训练的语言模型进行额外的视觉语义细化,同时设置一个新的国家的最先进的训练时间的开销可以忽略不计。2. 相关作品深度度量学习。由深度度量学习的进步驱动的视觉相似性学习已被证明对图像中的零拍摄应用至关重要[88,92,94,115]和视频检索[7,114],聚类[33,97,115,119]或人员重新识别[19,63],而且还用于依赖于对比训练的无监督和监督表示学习方法[13,39,69,104]。深度度量学习的研究可以分为各种概念方向,例如通过排名损失开发训练代理,例如。通过成对[37],三重[43],四重[14],高阶排名约束[73,96,110]或基于图形的重新加权[95,125],而且还使用对所结合的距离函数的正则化和约束[46,103]。然而,由于元组的使用引入了样本复杂度的指数增加类似的重点也被放在元组选择算法中,以提高训练速度和泛化能力,无论是基于样本距离[94,100,110,115],分层安排[33]还是适应训练过程[38,89]。元组复杂性也可以使用代理作为元组生成中的替代品来解决[20,50,71,82,102,125]。然而,虽然文献结果表明基于重新排序和元组选择的简单变化来提高泛化性能,但最近的工作反而强调了方法性能的更强饱和度[30,72,91],强调了公平和可比的训练和评估方案的重要性,固定骨干网络和管道参数选择。对于我们的实验评估,我们确保提供全面和公平的比较,以获得可转移的见解。幸运的是,最近的工作已经显示出对常见DML训练方法进行正交扩展的好处,这些方法具有较强的相对改进,例如通过辅助特征学习[26,66,67,88],人工数据生成[123],对抗和变分扩展[25,60],虚拟类上下文[55],解决DML在度量子空间[52,75,92,117]中,知识蒸馏和转移[15,51,90],距离正则化[70],互学习[76]或少数镜头适应[68]。我们对语言引导的深度度量学习的研究遵循这一思路,旨在通过使用密集的语言上下文来扩展学习度量空间的泛化能力,并在不需要额外的显式监督的情况下结合有益的语义。跨模态相似性学习我们提出的方法,通过使用隐式语言监督,与跨模态相似性学习中的相关工作联系在一起,其应用于跨模态检索和表示学习[11,16,28,42,44,47,74,78,105,116,122],其中联合训练也可以支持单一模态中的泛化能力,如[21,32、83]。在这项工作中,我们的重点主要放在语言上,作为指导视觉相似性学习的次要方式。虽然分层知识图(例如通过WordNet [31]或更具体的分类法)和颜色名称先验已经在表示学习任务[2,4,9,10,22,34,81,86,106]和单名词先验聚类[18]中使用,但我们建议利用大规模生成的语言表示之间的密集关系,零镜头语言模型[8,83,84]通过相对匹配重新排列细粒度的视觉相似性空间(不像例如[32]中用于图像分类的语言嵌入预测。在这样做的过程中,我们发现显着改善泛化性能的基准,同时cir- cumventing需要特定于任务的语义层次结构和规则。除此之外,我们还展示了如何在没有专家类信息的情况下应用我们的语言指导。16179◦X →S∈ X→⊂ǁ··ǁ··PB图2. 语言指导。我们通过嵌入(A)专家类名或(B)top-kImageNet伪标签来扩展视觉相似性学习的默认DML管道,这些伪标签不需要额外的专家监督,具有预训练的语言模型。这提供了语言相似性矩阵Slang,用于指导fφImageNet通过S lang和图像相似性S img,X之间基于蒸馏的匹配(Lmatch&Lpseudomatch)生成的细粒度视觉相似性空间的结构。3. 语言指导本节介绍了DML分类、带有专家类标签的语言指南(第3.2节)和无额外监督的语言指南(第3.3节)。对(x a,x p)或(x a,x n),其中y a=y p y n,具有锚x a,正x p和负x n,可以定义训练目标,例如[37][72]如:L=1Imax[γ,d(x,x)]3.1. 预赛PB(x1,x2)∈PBy1=y2第12页(一)深度度量学习(DML)在由深度度量参数化的图像xi上学习距离度量di(x1,x2)。特征提取模型φ:Φ(与在深度学习,参见例如[99])和到目标度量空间f的投影:ΦRd,其定义特征上的马氏(伪)距离[99]。虽然非端到端的可训练方法主要针对给定特征的参数化度量进行优化,但在DML中,两者都是联合训练的。这使我们能够从图像空间中学习投影,φ,跨越度量(或嵌入)空间上的相似性,使得在相似性上的预定距离度量d(1,2),通常是余弦或欧几里德距离d=1,与输入样本的真实语义相似性有密切联系。通常将单位超球归一化为:[19,66,91,110,115]对于regulariza-[91,109,111,115]。这种高维嵌入适合于与容易预定义的非参数度量一起使用的空间对于快速近似相似性搜索方法是有吸引力的[1,48,65]。在有监督的DML中,通常通过使用提供的类标签信息定义的排名任务来学习,引入基于对、三元组或高阶元组的对比目标举个例子-Iy1/=y2min[γn,d(x1,x2)]在minibatch中具有有效对B这样做可以更近地嵌入相同类别的样本(根据d(,)),同时将不同类别分开到边缘γp和γn。这可以很容易地扩展到通过选择高阶元组,元组采样算法[89,94,115]或代理表示[50,71,102]来合并更复杂的关系。3.2. 使用专家类名的语言指导然而,对仅使用类别标签定义的排名任务的依赖并不能解决类别之间的高级语义关系,即使这种非歧视性关系对于强大的下游泛化至关重要[60,66,88,123]。因此,我们建议利用语言语义来更好地对齐视觉表示空间,并以两种方式实现。本节将介绍E xpertL语言指南(ELG)方法(另见图1)。2 a),它使用专家类标签名称,而下一节涵盖P语言标签指南(PLG)。为了通过ELG将语言语义纳入视觉相似性学习,我们使用大型预训练语言模型CLIP [83],BERT[23]或RoBERTa [64],它们映射输入句子ci∈ C,对应于16180我∈ XB Y BCBΣ1我i、j我KJJi ∈[0,…k−1]/imagesx iground truth class label,到相应的语言嵌入空间中。 为了简洁起见,我们使用了lang:=lang(c i)。 给定图像B X<$X和标签Y的小批量,我们生成输入序列C对于自然语言模型使用一些引物,例如,Ci=“一张我的照片“2.让B朗 成为自然之路--空间是从跨越的,我们更进一步,也杠杆年龄的分类器头,以产生ImageNet伪标签。然后,我们在一个类中的所有图像上运行预训练的骨干和分类器头。对于每个样本,这允许我们产生对应于所有Im- ageNet类的softmax输出然后对每个类取平均值,图形生成的规范表示法从B关于Slang选择前k个ImageNet伪类名YIN,klangC我代表类(见图)。2(B)在小批量中的所有语言表示的对应的批量余弦相似性矩阵。类似地,令Simg是对应的视觉相似性矩阵。 然后我们定义语言蒸馏损失我也是。Simg,S lang=例如)。虽然伪类标签不像专家标签那样细粒度,但可以公平地假设在目标图像中识别的通用对象xi在大多数情况下与真实标签yi有某种关系(例如,跑车而不是阿斯顿马丁跑车)。运行|B|.img,Xσ。Simg,X我(二)然后,伪标记上的语言网络标记通过重复该过程|B|σ Si我日志 σ .Slang+γlang对于每个类的前k个ImageNet标签中的所有k个,然后实现细粒度的语言解析,作为KL-逐行图像和语言级别的相似性Simg、X和Slang,类似于con-top-kImageNet标签的集合,提供了更多唯一的语义描述。我我例如,[90,104]。这里然后,我们计算一个基于语言的相似性σ(x)=exp(xi)/λ|X|exp(x)表示一个r-o-wisesoftmax矩阵Spseudolang,i,尊重或-利用移位γlang来解决图像和语言相似性分布之间的分布匹配的保真度。最后,Slang不解析类内样本的相似性,除非Simg(对于xi=xj和yi=yj,我们有一个vei<因为类是相同的,所以Slang= 1)。为了确保我们在蒸馏过程中不会丢失组内分辨率,我们因此调整Simg:S=Ii、j伪标记的形成,即Spseudolang,1表示由生成的语言嵌入之间的相似矩阵,嵌入相应的最高匹配伪标记,我们发现这在实践中工作得最好(c.f. §4.4)。这些语言相似性嵌入到训练中,通过扩展Eq. 2至k=img1pseudolang,jimg,Xi、j[1+γ 郎 ]+I中国图片(3)L伪匹配=L匹配S,kSJ中文(简体)其屏蔽掉Simg的相应行条目,其中类与相应锚类相同(加上相应语言偏移γlang.这忽略了在没有样本特定的自然语言描述可用的情况下匹配数据集的类内相似性。请注意,在训练期间,反向传播仅通过Simg发生,因为Slang仅提供图像表示空间应对齐的语言目标。对于这项工作的其余部分,我们使用LELG=LDML+ω·L匹配(4)3.3. 无需额外监督的虽然ELG很好地结合了语言环境进行视觉相似性学习,但它需要专家的类别标记。例如,ImageNet预训练的骨干(用于每个DML管道)提供了一个合适的解决方案。虽然先前的工作仅依赖于预先训练的特征来提供支持的起点,2调整特殊字符以匹配预期的模型输入(例如,027.闪亮的Cowbird →闪亮的Cowbird。通过合并所有S个 伪 距(等式2),(五)。在这样做时,图像表示与多个类概念的语义对齐,这些类概念与底层图像密切相关。此外,与ELG(Eq. 2),我们现在还可以解决同一类图像之间的语义差异,因为可以在样本上提取伪标签-而不仅仅是类级别。这可以通过简单地利用未掩蔽的图像相似性Simg而不是其掩蔽的变体Simg,X来完成(参见等式10)。第2和第3段)。然而,在实践中,我们发现在评估基准方面没有任何改进(参见第10段)。§4.4)。对于这项工作的其余部分,我们使用带有“+PLG“的ImageNet伪标签标记语言指导4. 实验本节列出了实验细节(第4.1节,第A节中有其他细节),强调了语言指导的泛化优势(第4.2节),并通过实验激发和消除了第4.3-4.6节中提出的方法。4.1. 实验细节数据集。我们提供了对我们在主要DML基准上的工作16181的详细评估[25,46,60,66,72,90,91,95,16182L∈∈表1. 最先进的粗体:根据文献设置的最佳结果。 结果展示了具有竞争力和最先进的性能,几乎没有超参数调整。虽然主干和嵌入维度的分离提供了更公平的比较,但我们注意到一些独立提高性能的管道变化,在比较时应该考虑到:a:更好的优化器(RAadam [61]而不是Adam),b:更大的输入图像,c:SOP上更大的批量,d:骨干中池化操作的组合。BENCHMARKS→CUB200 [108] CARS196 [56] SOP [73]方法↓R@1R@2NMIR@1R@2NMIR@1R@10NMIResNet50,128 dim.保证金[115]63.674.469.079.686.569.172.786.290.7[92]第二十二话65.976.669.684.690.770.375.988.490.2[第88话]66.176.869.782.689.168.477.289.490.0港口及机场发展策略[89]67.378.069.983.589.768.876.589.089.9S2SD [90]68.9±0.3 79.0±0.3 72.1±0.487.6±0.2 92.7±0.2 72.3±0.280.2±0.2 91.5±0.1 90.9±0.1多重相似性+PLGS2SD+PLG67.8±0.271.1±0.178.2±0.280.6±0.270.1±0.173.0±0.286.0±0.389.1±0.291.4±0.193.8±0.272.4±0.273.1±0.377.9±0.180.6±0.189.9±0.291.8±0.290.2±0.290.9±0.1ResNet50,512 dim.EPSHN [118]64.975.3-82.789.3-78.390.7-标准软件[121]61.373.9-84.290.4-78.290.6-[66]第六十六话69.279.371.487.692.972.279.691.290.6[第124话]68.477.971.885.291.873.979.890.890.8IB-DML [95]a,b70.380.374.088.193.374.881.491.392.6多重相似性+PLGS2SD+PLG69.6±0.471.4±0.379.5±0.281.1±0.270.7±0.173.5±0.387.1±0.290.2±0.392.3±0.394.4±0.273.0±0.272.4±0.379.0±0.181.3±0.291.0±0.192.3±0.290.0±0.191.1±0.2Inception-BN,512 dim.[29]第二十九话65.577.069.085.691.272.775.187.590.8多相似性c[110]65.777.0-84.190.4-78.290.5-DR-MS [27]66.177.0-85.090.5----ProxyGML [125]66.677.669.885.591.872.478.090.690.2[50]第五十话68.479.2-86.891.6-79.190.8-多重相似性+PLGS2SD+PLG69.2±0.270.4±0.279.7±0.180.5±0.270.6±0.371.9±0.386.2±0.288.1±0.391.5±0.392.9±0.170.8±0.371.4±0.378.6±0.279.4±0.190.7±0.191.2±0.190.0±0.290.4±0.2[115,123]:CUB 200 -2011 [108](200鸟类分类,11,788图像),Cars196 [56](196个汽车类,16,185张图像)和斯坦福在线产品[73](12个超级组中的22,634个细粒度产品类,120,053张图像)。训练集和测试集在所有基准中都包含不同的类。实施详情。我们的实验使用PyTorch[77]根据以前的研究(例如,[66,72,82,90,91,110])和以下[72,91]的代码基。对于我们的语言主干,我们选择CLIP的语言部分[83](ViT-B/32)。然而,任何大的语言模型都可以用来替代,以获得显著的性能改进,如§4.3所示。对于我们的语言指导的缩放ω(见方程。4),我们发现ω[1,10]对我们在CARS196和CUB 200 -2011上的实验和ω[0. 1,1],以说明基本损失DML的大小。对于§4.2中的最新研究,我们发现这些参数值可以很好地转移到其他主干和嵌入性能[90,91]。基于随机验证子集上的性能,逐步LR调度最多执行两次(15%,参见例如[50、90])。通过超参数微调,泰伯。1显示了PLG扩展目标在主干和嵌入维度上的竞争性和最先进的性能3,表明语言语义对于视觉相似性学习非常有益,请注意,我们只使用PLG进行比较,因为ELG由于缺乏细粒度的专家类名(12个通用超类除外)而没有在SOP上提供任何有意义的好处。特别是对于低维表示空间(参见ResNet 50 - 128),可以看到对以前最先进的方法的显着改进。此外,语言指导提高了基本目标(多相似性[110]),以匹配更复杂的正则化方法,例如使用RL政策[89]或联合自我监督培训[66]。尺寸.补充中的其他细节。A.4.2. 语言指导我们已经根据主干架构和嵌入维度对文献进行了分解,这是两个主要的、与DML无关的泛化2我们注意到,我们的多相似性损失的实现如下[110]和[72]在性能上与[91]不同。3注:与基于召回的指标相比,NMI不太可靠,更容易出错,并且依赖于所使用的实现[72],这就是为什么与以前的文献相比,我们主要使用Recall@1和mAP@1000(根据召回率进行测量[72,91])。16183→→表2. 相对比较。我们遵循[91]4中提出的协议,没有学习率调度,以确保精确的可比性。结果表明,在语言指导下,学生的学习成绩有了显著的提高.(1)对于SOP,仅给出12个超标签对于11,318个训练类,每个类的样本很少。这限制了语言指导的益处。BENCHMARKS→CUB200CARS196 标准操作规程(SOP)APROACHES↓R@1R@1R@1多重相似性62.8±0.281.6±0.3 76.0±0.1+ELG+PLG Top-567.3±0.267.1±0.485.3±0.185.4±0.276.0±0.276.4±0.1保证金,β = 1。262.7±0.679.4±0.5 78.0±0.3+ELG+PLG Top-565.3±0.565.2±0.583.2±0.583.4±0.477.8±0.178.3±0.2多重相似度+S2SD67.7±0.386.5±0.1 77.7±0.2+ELG+PLG Top-568.9±0.469.0±0.488.2±0.288.4±0.377.8±0.178.0±0.1为了确保性能优势不仅仅源于特定的流水线选择[72,91],我们提供了额外的实验支持,遵循[91]中的协议,没有学习率调度。作为基线目标,我们选择基于距离的元组挖掘的Margin loss [115]和Multisimilarityloss [110],这是[91]和[72]中最强的基线目标之一。我们还将语言指导与[90]中提出的最先进的维度正则化一起应用,以展示即使对于已经高度正则化的目标也有好处。结果在选项卡中突出显示。对于所有基准数据集,均为2(有关Recall@1、NMI和mAP@1000的完整表格,请参见补充资料)。可以看出,对于强DML基线对象(多相似性[110]和边际损失[115],参见[91])以及最先进的正则化方法(如S2 SD [90]),CUB 200 -2011和CARS 196上的零激发泛化性能都有显著改善,部分改善超过4%,例如:CUB 200 -2011上的多重相似性,以及最先进的S2 SD(例如,86.第86章. 百分之五88. 4%)。 对于SOP,我们发现无论是相对还是最先进的比较(例如,七十六。百分之七十六。4%的相对变化)。 我们将其归因于SOP中更高的类与样本比率(超过11k个类,每个类只有很少的样本),导致不太具体,噪音更大的类对齐。然而,与伪标签指导不同,在伪标签指导中,性能可以可靠地提高,尽管只是轻微的,我们发现使用专家标签指导没有好处这是由于缺乏细粒度的专家类标签造成的-相反,只有12个非常粗糙和通用的超标签提供了超过11 k个类,每个类只有很少的样本。在PLG中,至少可以访问更高分辨率的1k ImageNet伪标签。表3. 模型指导质量。性能提高不考虑确切的语言模型,甚至使用大规模的预训练单词嵌入s.a. [57]第57话:然而,相比之下,可转移性较低的单词层次就显得不够了。BENCHMARKS→CUB200-2011 CARS196MODELS↓R@1mAP@1000R@1mAP@1000基线62.8±0.231.1±0.381.6±0.331.7±0.1+ CLIP-L [83]67.3±0.234.8±0.285.3±0.1 32.7±0.2(a)语言模型+ BERT [23]+ 罗伯塔-L [64]+ 改革者[54]+ GPT2 [84]66.9±0.367.3±0.266.7±0.167.0±0.333.5±0.233.9±0.333.1±0.133.7±0.184.9±0.185.1±0.285.5±0.284.8±0.432.3±0.132.4±0.232.0±0.232.4±0.1+ 前367.5±0.234.5±0.385.6±0.332.5±0.3(b)词嵌入+ 快速文本[5]+ GloVe [79]66.9±0.366.1±0.233.7±0.333.1±0.385.2±0.185.0±0.232.7±0.132.1±0.3(c)词汇层次+ WordNet [31]+ HierMatch [2]63.7±0.264.8±0.331.3±0.232.2±0.182.5±0.382.8±0.231.0±0.231.8±0.14.3. 不同语境的影响本节研究了不同语言背景对ELG视觉表征空间(见表3)质量的影响,涉及不同的大型语言模型体系结构(a)以及词嵌入(b),FastText[5]和GloVe [79]5)在大型文本语料库上训练结果显示,与仅视觉基线相比,一致且显著的改善(表1)。3,(a))对于不同的语言模型选择[23]第六十二章:你是谁?8%至66。9%的CUB 200召回@1)或改革者[54](62. 8%至66。7%),以及大规模预训练的词嵌入(例如,FastText [5],62. 8%至66。9%),具有很小的计算开销(壁时间为5%
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功