本文转载自微软研究院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交流群

扫码备注拉你入群。

微软亚研院 CVPR 2021 9篇视觉研究前沿进展相关推荐

  1. 微软亚研院:如何看待计算机视觉未来的走向?

    本文分享自百度开发者中心微软亚研院:如何看待计算机视觉未来的走向? 先说一个现象:在深度学习的驱动下,计算机已经在多个图像分类任务中取得了超越人类的优异表现.但面对一些不寻常的图像,以"深度 ...

  2. 传微软亚研院停招国防七子+北邮实习生,18所「实体清单」高校也在劫难逃?...

      转载于 新智元   编辑:桃子 时光 snailnj [新智元导读]听说微软亚洲研究院要停招国防七子及北邮学生了?根据北邮人论坛上讨论,事实却是如此.那么,究竟为何? 一觉醒来,着实大睁眼. 网传 ...

  3. 微软亚研院CV大佬代季峰跳槽商汤为哪般?

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 近日,知乎上一篇离开关于MSRA(微软亚洲研究院)和MSRA CV未来发展的帖子讨论热度颇高,这个帖子以MSRA CV执行研究主任 ...

  4. 微软亚研院创研论坛CVPR2020分享会 圆桌会议 内容小记

    微软亚研院创研论坛CVPR2020分享会 圆桌会议 内容小记 今天观看了微软亚研院举办的 创研论坛 CVPR2020 论文分享会,分享会邀请了计算机视觉领域多个子领域的大佬们分享已发表的CVPR202 ...

  5. 无需Grouping,中科大和微软亚研院提出Group-Free的三维物体检测方法,性能远超之前最好方法。...

    ©PaperWeekly 原创 · 作者|刘泽 学校|微软亚洲研究院实习生 研究方向|计算机视觉与深度学习 无需 Grouping,中科大和微软亚研院提出 Group-Free 的三维物体检测方法,性 ...

  6. 微软亚研提出VL-BERT:通用的视觉-语言预训练模型

    机器之心发布 作者:Weijie Su.Xizhou Zhu.Yue Cao.Bin Li.Lewei Lu.Furu Wei.Jifeng Dai 来自中科大.微软亚研院的研究者们提出了一种新型的通 ...

  7. 微软亚研院:CV领域2019年重点论文推荐

    点击我爱计算机视觉标星,更快获取CVML新技术 微软亚洲研究院是国内顶级CV研究机构,众多CV黑科技的诞生地,2020年始,亚研院盘点了2019年CV领域重点论文,大部分附有开源代码,希望对大家有帮助 ...

  8. 微软亚研院提出用于语义分割的结构化知识蒸馏 | CVPR 2019

    作者 | CV君 来源 | 我爱计算机视觉 今天跟大家分享一篇关于语义分割的论文,刚刚上传到arXiv的CVPR 2019接收论文<Structured Knowledge Distillati ...

  9. CVPR 2019 | 微软亚研院提出用于语义分割的结构化知识蒸馏

    点击我爱计算机视觉标星,更快获取CVML新技术 今天跟大家分享一篇关于语义分割的论文,刚刚上传到arXiv的CVPR 2019接收论文<Structured Knowledge Distilla ...

最新文章

  1. 用户配置,用户组管理,用户管理
  2. oracle 连续5分钟_3-1!10分钟3球杀入前四,连续5个客场大逆转,名字叫曼联
  3. 计算机考博哪个学校好考,管理学博士哪个学校好考
  4. php文件上传到虚拟主机,php源码上传到虚拟主机(php源码上传到服务器)
  5. python对列表的删除,挺有意思的东西
  6. 今日上新:两个图像领域的现金奖励实时竞赛
  7. 《数学之美》读书笔记和知识点总结(一)
  8. imu相机标定_解放双手——相机与IMU外参的在线标定
  9. DedeCMS5.5 调用当前内容页TAG标记的办法
  10. GNS3 添加思科交换机
  11. 《真·三国无双ADVANCE》攻略
  12. 雷电模拟器激活面具magisk教程
  13. QWebView到QWebEngineView
  14. How to Install Nvidia Kernel Module Cuda and Pyrit in Kali Linux
  15. java FFMPEG调取usb摄像头,截取视频,添加文字和时间水印
  16. python开源自动化测试平台_8款开源自动化测试框架
  17. Mysql 1044错误代码:Access denied for user ''@'localhost'的解决方案
  18. 天龙八部哪个服务器里面人数最多的,天龙八部怀旧服:不删档各大门派人数出来了!你猜哪个门派人多?...
  19. nmn到底怎么样,nmn男性三高临床应用价值分享
  20. 在matlab中find是什么意思,Matlab中find函数的使用说明

热门文章

  1. TensorFlow第五步:返回起点、深挖坑,解刨一个麻雀。
  2. Delphi格式化函数Format FormatDateTime和FormatFloat
  3. 批处理作业调度问题 ——回溯法详解
  4. Oracle PL/SQL基础知识
  5. 特征点提取算法 - 01 - 特征的定义基础
  6. linux 驱动日志,Linux上的自由空间驱动的日志轮换?
  7. java能看懂代码不会写_为什么很多学习Java的人能看懂代码,但就是不会写!
  8. java正则 转义_java – 正则表达式和转义和未转义的分隔符
  9. python编程从入门到实践pdf_Python编程入门研读笔记(二)
  10. java反射源码_java反射技术详解附源码