热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微软亚研院CVPR20219篇视觉研究前沿进展

本文转载自微软研究院AI头条。编者按:作为世界顶级的AI会议,CVPR一直引领着计算机视觉与模式识别技术领域的学术与工业潮流。今年的CVPR于6月19日

本文转载自微软研究院AI头条。

编者按:作为世界顶级的 AI 会议,CVPR 一直引领着计算机视觉与模式识别技术领域的学术与工业潮流。今年的 CVPR 于6月19日至25日在线上举办。在此,为大家精选了9篇微软亚洲研究院被 CVPR 2021 收录的论文,一览计算机视觉领域的前沿研究。

用于三维重建的深度隐式移动最小二乘函数

论文地址:https://arxiv.org/pdf/2103.12266.pdf

代码地址:https://github.com/Andy97/DeepMLS

三维重建是计算机视觉和深度学习的重要任务。到目前为止,三维重建按照其表达方式仍然主要分为两大类:一类是显式表达,以点云为代表(也有生成网格和体素),由神经网络直接回归生成三维空间中的几何元素;另一类是隐式表达(如 OccNet, NeRF),神经网络只是建模三维物体的空间占用,需要后续的渲染或表面提取获得显式三维形状。两类方法各有优缺点:点云灵活直观、生成方便,但是无法表达高质量的几何形状;隐函数可以捕捉丰富的细节,但是隐式到显式的转换计算代价高昂。

为此,微软亚洲研究院的研究员们提出了一种兼具点云和隐函数表达优点的混合框架 IMLSNet,用于进行高质量、可泛化的三维重建。框架基于隐式移动最小二乘函数,其近似表达了点集定义的空间中三维形状的符号距离函数,既具有隐函数光滑连续的质量,又具有点集表达的局部性和低计算复杂度,符合三维重建任务的要求。

为了生成混合点云和隐函数的表达,研究员们设计了相适应的网络结构和学习方法。首先,为了生成变长的点集,采用了“脚手架+点集”的两步方法:第一步,生成一个空间自适应的八叉树结构作为构建点集的脚手架;第二步,在脚手架的叶子节点中生成定义隐式移动最小二乘曲面的点集(如图1所示)。

图1:方法概念示意图。左图:IMLSNet 通过神经网络解码生成了一个八叉树的脚手架,在八叉树的叶子节点进一步生成点集,通过隐式移动最小二乘函数定义隐式曲面。右图:点集和点集定义的高质量三维曲面。

其次,为了训练“脚手架+点集”的生成网络,研究员们设计了完备的损失函数,用来监督八叉树结构、隐函数表达的符号距离场、点集的均匀分布和规则性等。综合以上设计,IMLSNet 模型取得了比最先进的隐函数表达学习方法更高的重建质量和更好的泛化能力(如图2所示)。

图2:在未知类别物体上的结果比较。在这些训练集合以外的物体类别上,IMLSNet 的结果质量高于对比方法,展示了良好的泛化能力。

LIRR:学习不变表征和风险

论文地址:https://arxiv.org/pdf/2010.04647.pdf

代码地址:https://github.com/Luodian/Learning-Invariant-Representations-and-Risks

传统的机器学习算法的成功极大程度上依赖于训练数据和测试数据来源于相同的分布,但此假设在现实情况下通常并不成立。为了解决这个问题,大量现有的无监督域迁移算法(unsupervised domain adaptation, UDA)关注于学习域间一致的特征,即域不变表征(domain-invariant representations),以及减小分类器在源域的误差。

然而,最近的一些工作说明了这种方法无法保证在标签分布迁移(label distribution shift)的情况下仍然有较好的分类效果。换句话说,UDA 无法解决某些情况下的源域误差,但是通常可以在真实的环境中借助于人工标注获得一部分的可标注数据,通过借用这部分的可标注数据可帮助解决域迁移的问题,这种情景被称为半监督域迁移(semi-supervised domain adaptation, Semi-DA)。

面向 Semi-DA 场景,微软亚洲研究院的研究员们提出了针对分类(classification)以及回归(regression)问题的泛化误差上界。泛化误差上界的提出,揭示了解决源域的误差应该考虑在特征空间同时拉近两个域的边缘分布和条件分布。受此启发,研究员们提出了 Learning Invariant Representations and Risks算法,简称 LIRR。

LIRR 算法可同时对齐源域以及目标域在特征空间的分布,促进了特征层面的一致性,即实现了不变表征(invariant representations),以及减小域不变预测器(domain-invariant predictor)和域感知预测器 (domain-aware predictor)的预测误差,从而使得当依赖于合适的特征时,训练得到的域不变预测器的预测是条件无关的,即实现不变风险(invariant risks)。

图3:当模型关注于特征层面的对齐时,由于源最优分类器和目标域最优分类器的不一致性,可能仍然存在被误分类的样本(如被标注红色边缘的样本所示)。LIRR 的目标是同时学习一致性特征以及域不变预测器和域感知预测器的一致性预测误差,因此可以解决上述的误分类情况。

LightTrack:超轻量化目标跟踪网络结构搜索

论文地址:https://arxiv.org/abs/2104.14545

代码地址:https://github.com/researchmm/LightTrack

随着深度神经网络的不断发展,目标跟踪(Object Tracking)模型的精度得到大幅提升,但是与此同时,模型复杂度也变得越来越大。为了获得“轻量化”的神经网络,使得模型能在受限资源条件下实时运行,微软亚洲研究院的研究员们提出了一种基于网络结构搜索的轻量化模型设计新方法。该方法搜索出的轻量化网络结构 LightTrack 取得了与当前主流跟踪算法性能相当的准确率,但是其参数量与计算量却比已有方法减小数十倍。

目前,主流的目标跟踪模型由两部分构成:基于 ImageNet 预训练的、用于特征提取的骨干网络,和用于目标定位的预测头部。这两部分共同决定了跟踪器的性能,因此研究员们将它们看作一个整体,在目标跟踪数据集上联合搜索最适合跟踪任务的“骨干网络-预测头部”结构。此外,由于骨干网络需要在 ImageNet 上进行预训练,而对所有可能的骨干网络结构分别独立做 ImageNet 预训练在计算量上是无法承受的,所以研究员们将所有可能的结构统一为一个超网,全部子网络共享超网参数,并通过对超网进行预训练来达到对所有子结构做预训练的效果。搜索过程可以用以下公式描述:

而为了减小模型的计算量和参数量,LightTrack 的骨干网络和预测头部分别采用了“逆向残差单元”(Inverted Residual Blocks)和“深度可分离卷积” (Depth-wise Separable Convolutions)作为核心模块。对于逆向残差单元,设置其卷积核大小有{3, 5, 7}三种选择,通道倍增率有{4, 6}两种选择;而对于深度可分离卷积,设置其卷积核大小有{3, 5}两种选择,通道数有{128, 192, 256}三种选择。与此同时,研究员们还通过加入短路连接(shortcut connection)允许预测头部具有可变的深度。除此之外,关于“骨干网络产生的多层特征中,哪一层最适合目标跟踪任务”这一问题,目前尚未有明确结论。在论文中,研究员们也将所要选取的层作为了一个可搜索的变量,进一步增加了超网结构的多样性。

表1:LightTrack 的搜索空间

LightTrack 的搜索流程包括三步:(1)主干网络超网预训练,(2)目标跟踪超网训练,(3)利用进化算法从目标跟踪超网中搜索最优的子结构。

图4:LightTrack 的搜索流程

当 LightTrack 与其他性能先进的跟踪算法在 VOT2019 数据集上的精度、计算量、参数量进行综合比较时,从图5中可以看出,相比于之前性能最先进的 Ocean 算法,LightTrack 在取得与之比肩的性能的同时,仅用了其1/13的参数和1/38的计算量。

图5:VOT 2019 数据集上的精度、计算量、参数量综合比较

研究员们还在多种资源有限的硬件平台上比较了 LightTrack 和其他性能先进的方法的运行速度,如图6所示,LightTrack 的速度要比 Ocean 快5倍到17倍。

图6:在多种资源有限的平台上的运行速度比较

M3P:多语言多模态预训练模型

论文地址:https://arxiv.org/abs/2006.02635

代码地址:https://github.com/microsoft/M3P

近年来,预训练技术已经在自然语言处理、计算机视觉等诸多领域中取得了新的突破。预训练模型也开始扩展到了多语言场景和多模态场景。然而,在缺乏大规模数据的多语言多模态场景上,直接使用传统预训练技术进行预训练是十分困难的。多语言场景下的预训练语言模型由于只接受仅包含语言信息的单模态数据训练,难以直接处理视觉的信息;而多模态场景下的预训练模型由于只接受英文语料,在非英语的多语言场景下很难被应用。即便通过机器翻译系统对数据进行扩充,低语言覆盖度与高资源消耗也难以被接受。模型训练时缺乏显式的视觉与非英语语言的对齐信息,使得非英语的语言与视觉信息的关系学习很难进行。

为了解决这两个挑战,微软亚洲研究院的研究员们提出了 M3P,这是首个统一的多语言多模态预训练模型。与此同时,研究员们还提出了多模态语码切换训练(MCT),一种有效的增强多语言迁移能力的训练方式。

M3P 使用了类似 BERT 的自注意力 Transformer 结构,通过多任务学习可以让预训练阶段同时优化多个目标。具体地,研究员们设定了两个训练目标——多语言训练和多模态语码切换训练(MCT)。多语言训练使用了只包含文本的多语言语料训练,而多模态语码切换训练则使用了仅用英文的文本-图像对和通过语码切换生成的多语言文本-图像对训练。

图7:M3P的模型概览

实验表明,M3P 在 MSCOCO 和 Multi30K 的多语言文本图像检索任务的非英语测试集上取得了新的 SOTA 结果,并在英语测试集上取得了与前人可比的结果。实验还表明多模态语码切换训练(MCT)可以极大的增强模型在低数据场景上的表现。

表2:多语言文本图像检索任务结果

像素级别自监督方法PixPro 

论文地址:https://arxiv.org/abs/2011.10043

代码地址:https://github.com/zdaxie/PixPro

基于对比学习的自监督表示学习过去一年在 ImageNet 线性评估上的性能不断提升,但在物体检测和语义分割上并未有太大改进。同时,实例级别对比学习本身对于密集预测下游任务也并非最优选择。

因此,微软亚洲研究院提出了像素级别对比学习的 PixContrast 方法和挖掘像素级别一致性的 PixPro 方法,大幅提升了自监督方法在检测和分割下游任务上的性能。PixPro 使用了 ResNet-50,在 Pascal VOC(C4),COCO (FPN/C4)和 Cityscapes 上分别取得了60.2 AP,41.4/40.5 mAP和77.2 mIoU的结果,分别比之前的最优方法提升了2.6 AP,0.8/1.0 mAP和1.0 mIoU。

图8:MoCo 后一年内自监督预训练方法在 ImageNet-1K 线性评估上提升了15.6个点

图9:MoCo 后一年内自监督预训练方法在 Pascal VOC 物体检测任务上提升了1.7个点,PixPro 一次带来额外2.6个点的提升

ImageNet 线性评估准确率在过去一年内从60.6上升到了76.2,提升幅度达到了15.6,但 Pascal VOC 物体检测的性能只从55.9 AP上升到了57.6 AP,提升幅度仅有1.7 AP。这一现象首先反映了线性评估并不能完全揭示网络对检测、分割等密集预测下游任务的迁移能力,其次是过去一年主流的实例级别对比学习方法未必适合迁移到检测、分割这类要求密集预测的下游任务上。

为此,PixContrast 把实例级别对比学习任务推广到了像素级别,PixPro 则进一步引入了空间平滑性,通过设计像素到传播一致性任务来大幅提升自监督预训练模型的迁移性能。

图10:从实例级别(Instance-level)对比学习到像素级别(Pixel-level)对比学习

图11:像素级别对比学习(Pixel-level Contrastive Learning)和像素级别一致性学习(PixPro)

图12:PixPro 网络结构

图13:将带有 FPN 结构的 FCOS 与 PixPro 相结合,让 PixPro 有利于实现与下游检测任务更一致的自监督预训练

研究员们将 PixPro 和当前最先进的方法进行了比较实验,如表3所示,PixPro 在物体检测和分割的下游任务上远好于此前的图像级别方法。

表3:系统级别结果比较

如表4所示,PixPro 还能使得更多的下游任务网络(例如 head)得到预训练,以及和图像级别的预训练形成互补。

表4:PixPro 结合下游任务网络以及实例级别对比学习结果

如表5所示,PixPro 对于半监督物体检测也有所帮助。

表5:PixPro 半监督训练结果

ProDA:新型无监督域自适应(UDA)技术

论文地址:https://arxiv.org/abs/2101.10979

代码地址:https://github.com/microsoft/ProDA

在过去几年,深度学习在各种实际任务上都取得了巨大的成功。然而,深度学习往往需要从大量有标注的数据中学习足够的知识才能在实际任务中发挥作用。而对数据的收集和标注是需要大量精力和成本的,如果对每个新的任务或新的场景都去标注数据,将耗费巨大的人力和时间成本。

幸运的是无监督域自适应(UDA)技术,使得我们可以在新的任务或场景中使用已有的、相似的任务或场景的有标注数据来做训练,并能在目标域上有不错的表现,以减少标注成本。而微软亚洲研究院提出的 ProDA 方法就是一种新型的 UDA 技术,可以把之前最好的 UDA 技术的性能再次提高50%以上。

ProDA 沿用了自训练的策略,利用原型(prototype)自身的鲁棒特性和特征以及不同原型的距离信息,来对伪标签错误的部分进行修正,提高伪标签的准确率,从而为没有标注的目标域数据提供一些较高准确率的伪标签,让训练好的模型对目标域有一个很好的表现。同时为了满足原型能用于修正伪标签的紧致特征空间的假设,研究员们还借鉴无监督表征学习领域的对比学习策略,通过使用不同的数据增强来对特征空间进行扰动,并要求输出对不同的扰动保持一致,以保证目标域能学习到一个紧致的特征空间。

ProDA 在 UDA 领域取得了非常好的效果。在 GTA5 到 Cityscapes 的数据集上,完全不使用任何 Cityscapes 的标注信息,ProDA 在 Deeplabv2 取得了57.5的 mIoU,比之前最好的 UDA 技术的自适应收益提高了52.6%。在 SYNTHIA 到 Cityscapes 的数据集上,ProDA 在 Deeplabv2 取得了55.5的 mIoU,比之前最好的 UDA 技术的自适应收益提高了58.5%。

图14:ProDA 与传统 self-training 在域自适应分割上的性能比较

SpareNet:结合全局上下文信息,让网络更好捕获结构信息 

论文链接:https://arxiv.org/abs/2103.02535

代码地址:https://github.com/microsoft/SpareNet

随着深度相机和雷达传感器的普及,点云越来越容易获取。然而受限于传感器的有限分辨率和物体之间的遮挡,原始的点云通常是稀疏和残缺的。将稀疏残缺的点云补全成完整的点云对三维场景的理解、编辑、可视化有着重要的意义。

然而,现存的点云补全网络存在一些问题:首先,提取点云的结构信息时,现有的方法没有根据点云的残缺特性设计特征提取器;其次,当前生成网络使用的网络结果没有生成局部细节的能力,对于复杂结构,往往生成噪声云团;最后,在训练网络时,没有衡量点云生成的感知质量的指标去监督训练。为了解决上述问题,微软亚洲亚洲研究院提出了 SpareNet,在指标上和视觉上都取得了当前最好的结果。

SpareNet 使用了 Channel Attentive EdgeConv,在提取局部特征时,结合了全局上下文的信息,使得网络可以更好地捕获结构信息。为了提高生成网络的能力,研究员们设计了 Style-based 的网络结构,使用 AdaIN 的模块将前一步提取的结构信息直接注入到生成网络的每一层中,大幅提升了生成网络的表达能力。最后,为了网络可以在更好的监督下训练,研究员们还使用了一个可微的渲染器,将点云投影到不同角度的深度图中,使用对抗训练去提高点云的感知质量。

SpareNet 在点云补全的若干基准(benchmark)上都取得了迄今为止的最佳效果。在 ShapeNet 上取得了0.645的 FPD 和1.862*10-3的 EMD,比之前最好的方法有明显提升。在 KITTI 数据集上,SpareNet 也表现出了极强的优势,取得了0.249的 Consistency 和0.368的 MMD。在指标优势之外,受益于基于深度图可微渲染器的判别网络,补全结果在视觉上的结果也明显优于之前的方法。

图15:基于可微分渲染器的点云补全方法 SpareNet 整体结构

SSAN:针对视频表征学习的可分离自注意力网络

论文地址:https://arxiv.org/abs/2105.13033

视频表征学习是视频理解相关任务的核心。跟图像数据相比,视频数据不仅具有空域的场景信息,而且具有时域的运动信息。这就要求学习网络要具有建立远距离相关性的能力,从而可以更好地理解物体和场景之间的语义关系,识别出相应的动作和事件。传统的卷积网络由于感受野(receptive field)的限制,缺乏全局相关性的建模能力。而自注意力(self-attention)机制因为具有远程建模的优点,近年来被尝试用于卷积网络对视频表征的学习中,并取得了不错的效果。然而,目前主流的 3D 自注意力模块同时考虑空域和时域的远程相关性,就会导致空域和时域的不同语义信息混杂在一起,降低学习效率。

为了解决这一问题,微软亚洲研究院提出了一种可分离的自注意力(separable self-attention)机制,可以对空域和时域信息分别进行特定的相关性计算。将其整合到 2D CNN 网络中,就可以建立一个高效的可分离自注意力网络(SSAN)。在设计的过程中,研究员们进一步发现,单纯的将空域和时域的自注意力分开并不能提高太多的效率,反而会因为额外参数的引入,而增加复杂度。

因为单纯分开空域和时域的自注意力学习,虽然可以针对不同的语义信息进行处理,但是忽略了时域方向的近程相关性。这样会导致在动作或者事件变化比较快的情况下,丢失关键信息。于是,综合考虑各方面的因素,最终研究员们设计了如图16所示的自注意力模块,并且建立了相应的自注意力网络。

图16:可分离自注意力模块。黄色代表空域注意力(SA),蓝色代表时域注意力(TA)

实验结果表明,SSAN 不仅在传统的视频分类任务上取得了优异的效果,而且在跨模态的视频-文本检索任务上取得了突破性的成绩。在视频分类数据集 Something-Something V1上(如表6),SSAN 在验证集和测试集都取得了最佳结果。对于视频检索任务,SSAN 提取的特征在 MSR-VTT 数据集上的表现比之前最好的方法提高了12%。

表6:Something-Something-V1 数据集上的视频分类结果比较

利用视觉跟踪任务设计自监督学习

论文地址:https://arxiv.org/pdf/2105.02545.pdf

代码地址:https://github.com/microsoft/CtP

许多认知科学的实验表明,人类在婴幼儿时期就具备了通过视线跟踪物体的本能,这种本能让婴儿逐步学会认识物体。那么,对于神经网络模型,是否也能够通过视觉跟踪学会更好的表征呢?

微软亚洲研究院的研究员们利用视觉跟踪任务设计了一种自监督学习的方法,用来预训练视频表征模型,如 C3D、R3D 等等。在给定输入视频和待跟踪物体在起始帧的位置后,模型能够输出待跟踪物体在所有帧的位置。另外,该自监督学习任务还能够让模型学习视频帧间的运动信息,这对于一些视频理解任务而言至关重要。

为了充分利用大规模的无标签数据,研究员们希望在没有人工标注的情况下,获取跟踪轨迹的真实值(ground-truth)来监督模型训练。为达这一目的,研究员们尝试了多种不同的途径,如:使用现有的目标跟踪器产生伪标签、利用跟踪的循环特性(正向跟踪之后,反向跟踪需要回到原点)、贴图片块产生合成数据等等。实验发现合成数据的方式效果最好,即:从视频中复制一小份图片块,将其按一定规律覆盖到视频帧上。尽管这种方法会破坏原本的视频数据分布,导致合成的视频看上去不自然,但是它获得的跟踪轨迹却非常准确。

研究员们将预训练过的视频表征模型迁移到一系列下游任务中,如动作识别、视频检索等等,该方法都取得了非常不错的性能。例如,在 UCF-101 动作识别数据集上,随机初始化的模型仅有67.0%的准确率,而预训练过的 R(2+1)D 模型能够达到88.4%的准确率,这与有监督学习的结果92.7%已经较为接近。在未来的工作中,研究员们希望进一步探索视频帧间运动信息在自监督学习中的应用。

表7:与其他视频表示方法比较的结果

END

注明:CVPR

CVPR交流群

扫码备注拉你入群。



推荐阅读
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • angular.element使用方法及总结
    2019独角兽企业重金招聘Python工程师标准在线查询:http:each.sinaapp.comangularapielement.html使用方法 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
author-avatar
方彦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有