欢迎关注我的公众号 [极智视界],获取我的更多笔记分享

  大家好,我是极智视界,本文解读一下 单级特征检测网络 YOLOF

  本文回顾了 one-stage 检测器的特征金字塔网络 (FPN),指出 FPN 的成功在于对目标检测中的优化问题采取了divide-and-conquer 的解决方案,而不是多尺度特征融合。从优化的角度出发,作者引入了一种替代方法来解决这个问题,即 只利用单级特征进行检测,而不是采用复杂的特征金字塔。基于简单高效的解决方案,提出了YOLOF (You Only Look One-level Feature)。在作者的方法中,提出了两个关键组件:膨胀编码器和均匀匹配,并带来了相当大的改进。在 COCO 基准上进行了大量实验,证明了该模型的有效性。YOLOF 与它的特征金字塔对应的 RetinaNet 取得了相当的结果,同时速度快2.5倍。在没有 transformer 层的情况下,YOLOF 可以以单级特征形式少 7 倍训练周期 而与DETR性能相当。在输入图片 608x608 大小的情况下,YOLOF 在 2080Ti 上达到 60fps 的速度,并能达到 44.3 mAP,比 YOLOv4 快 13%。

  论文地址:http://arxiv.org/abs/2103.09460

  代码地址:https://github.com/megvii-model/YOLOF

文章目录

  • 1. 简介
  • 2. 相关工作
  • 3. MiMo编码器的成本分析
  • 4. 方法
    • 4.1 Limited Scale Range
    • 4.2 Imbalance Problem on Positive Anchors
    • 4.3 YOLOF
  • 5. 实验
    • 5.1 Comparison with previous works
    • 5.2 Ablation Experiments
    • 5.3 Error Analysis
  • 6. 总结
  • 7. 参考

1. 简介

  在最先进的 one-stage 检测器和 two-stage 检测器中,特征金字塔成为了必不可少的组成部分。目前最流行的构建特征金字塔的方法是特征金字塔网络 (FPN),它主要带来两个好处:

  (1) 多尺度特征融合:融合多个低分辨率和高分辨率特征输入,获得更好的表示;

  (2) divide-and-conquer:根据目标的规模在不同的层次上检测目标;

  FPN 的一个普遍观点是,它的成功依赖于多层特征的融合,并由此引发了一系列手工设计 或 通过神经网络架构搜索 (NAS) 算法搜索 复杂融合架构的研究 。然而,这个信念忽略了 divide-and-conquer 在 FPN 中的作用。

  本文研究了 FPN 在 one-stage 检测器中的两个优点。通过将多尺度特征融合和 divide-and-conquer 功能与RetinaNet 解耦设计实验。详细地说,作者认为 FPN 是一个多入多出(MiMo)编码器,它从 backbone 中编码多尺度特征,并为解码器(检测头)提供特征表示。在图1中对多入多出(MiMo)、单入多出(SiMo)、多入单出(MiSo)和单入单出(SiSo)编码器进行了有控制的比较。

  令人惊讶的是,只有一个输入特征 C5 且不进行特征融合的 SiMo 编码器可以达到与 MiMo 编码器(即FPN)相当的性能,性能差距小于 1 mAP。相比之下,MiSo 和 SiSo 编码器的性能急剧下降 (>= 12mAP)。这些现象说明了两个现实:

  (1) C5 特征具有足够的上下文来检测不同尺度的目标,这使得 SiMo 编码器能够实现可比的结果;

  (2) 多尺度特征融合优势远不如 divide-and-conquer 优势重要,因此多尺度特征融合可能不是 FPN 最显著的优势,ExFuse 在语义分割方面也证明了这一点。再深入一点,divide-and-conqueris 与目标检测中的优化问题有关。它将复杂的检测问题按目标尺度划分为多个子问题,便于优化过程。

  以上分析表明,FPN 成功的关键因素是解决了目标检测的优化问题。divide-and-conquer 方案是个好办法。但它带来了内存负担,减慢了检测器的速度,并使检测器的结构在像 RetinaNet 这样的 one-stage 检测器中变得复杂。考虑到 C5 特征对于检测具有足够的上下文信息,作者展示了一种简单的方法来解决优化问题。

  作者提出了 YOLOF,它只使用一个 C5 特征 (下采样率为32) 进行检测。为了弥补 SiSo 编码器和 MiMo 编码器之间的性能差距,首先合理设计了编码器结构,以提取不同尺度上目标的多尺度上下文,弥补了多层次特征的不足;然后采用均匀匹配机制来解决单一特征中稀疏 anchors 引起的 positive anchors 不平衡问题。

  没有 bells 和 whistles,YOLOF 实现了与它的特征金字塔对应的 RetinaNet 相似的结果,但要快 2.5 倍。在单级特征的方式下,YOLOF 对标最近提出的 DETR 的性能,同时收敛更加快(7倍)。采用 608x608 的图像大小和其他技术,YOLOF 在 2080Ti 上可以达到 60fps 的速度,精度达到 44.3 mAP,比 YOLOv4 快 13%。简而言之,本文的贡献如下:

  (1) 作者表明,FPN 最显著的好处是密集目标检测下的 divide-and-conquer 解决优化问题的方法,而不是多尺度特征融合;

  (2) 作者提出了 YOLOF,这是一种不使用 FPN 的简单而有效的 baseline。在 YOLOF 中,作者提出了两个关键组件,即扩展编码器和均匀匹配,弥合了 SiSo 编码器和 MiMo 编码器之间的性能差距;

  (3) 对 COCO benchmark 的大量实验表明了各个组件的重要性。此外,作者还与 RetinaNet、DETR、YOLOv4 进行了比较。本文提出的模型可以在 GPU 上以更快的速度实现类似的结果。

2. 相关工作

Multiple-level feature detectors 利用多特征进行目标检测是一种传统的方法。构建多特征的典型方法可以分为 图像金字塔法 和 特征金字塔法。在前深度学习时代,基于图像金字塔的检测器占主导地位,如DPM。在基于CNN的检测器中,图像金字塔方法也获得了一些研究者的好评,因为它可以获得更加高的开箱性能。然而,图像金字塔并不是获得多重特征的唯一方法;在 CNN 模型中利用特征金字塔的能力是更加有效和自然的。SSD 首先利用多尺度特征,对不同尺度的目标在每个尺度上进行目标检测。FPN 遵循 SSD 和 UNet,结合浅层特征和深层特征构建语义丰富的特征金字塔。在此之后,有几个工作 follow FPN,关注如何获得更加好的表示。FPN 称为现代检测器的重要组成部分,并占据主导地位。它也适用于流行的 one-stage 检测器,如 RetinaNet、FCOS 及其变体。另一种提取特征金字塔的方法是多分支和膨胀卷积。与上述方法不同的是,作者的方法是单级特征检测器。

Single-level feature detectors 早期的 R-CNN 系列和 R-FCN 只提取单个特征上的 ROI 特征,其性能落后于对应的多个特征的方法。在 one-stage 检测器中,YOLO 和 YOLOv2 只使用 backbone 的最后输出特征,它们可以非常快,但同时检测性能也有所下降。CornerNet 和CenterNet 遵循了这种方式,并使用一个下采样率为 4 的单级特征来检测所有目标,获得了具有竞争力的结果。使用高分辨率的特征图进行检测会带来巨大的内存成本,并且不利于部署。最近,DETR 引入了 transformer 检测,并展现了它只使用单一的 C5 特征就可以实现最先进的结果。而由于完全 anchor-free 机制和 transformer 学习阶段,DETR 需要较长的训练时间才能收敛。冗长的训练调度,对于进一步改进是很麻烦的。与这些工作不同的是,作者研究了多层检测的工作机制,从优化的角度,作者为广泛的 FPN 提供了另一种解决方案。此外,YOLOF 的收敛速度更快,表现良好;因此,YOLOF 可以作为快速、准确的检测器的简单 baseline。

3. MiMo编码器的成本分析

  如第 1 节所示,FPN 在密集目标检测方面的成功是由于它解决了优化问题。而多级特征范式不可避免地会使检测器变得复杂,将会带来内存负担并降低检测器的速度。在本节中,作者对 MiMo 编码器的成本进行了定量研究。

  作者设计了 ResNet-50 的 RetinaNet 实验。详细地说,将检测任务的 pipeline 格式化为三个关键部分的组合:backbone、encoder、decoder,如图2所示。

  从这个角度出发,作者展示了图3中每个组件的 FLOPs。

  与SiSo 编码器相比,MiMo 编码器给编码器和解码器带来了巨大的内存负担 (134G vs 6G)。此外,使用 MiMo 编码器的检测器比使用 SiSo 编码器的检测器慢很多 (13FPS vs 34FPS)。速度慢是由于使用 MiMo 编码器在检测器的高分辨率 feature maps 上检测目标,例如 C3 特征 (下采样率为8)。鉴于 MiMo 编码器的上述缺点,作者的目标是找到一种替代方法来解决优化问题,同时又能保持检测器的简单、准确和快速。

4. 方法

  出于上述目的以及发现 C5 特征具有足够的上下文来检测大量的目标,作者试图在本节中用简单的 SiSo 编码器取代复杂的 MiMo 编码器。但是这种替换不是小事,根据图3的结果,当应用 SiSo 编码器时,性能会大幅度下降。鉴于这种情况,作者仔细分析了阻碍 SiSo 编码器获得与 MiMo 编码器相当性能的障碍。作者发现有两个问题导致 SiSo 编码器性能下降,第一个问题是 C5 特征接受域匹配的尺度范围有限,这影响了跨尺度目标的检测性能;第二个问题是单层特征中稀疏 anchors 所引起的 positive anchors 不平衡问题。接下来,作者将对这两个问题进行详细的讨论并给出解决方案。

4.1 Limited Scale Range

  识别不同尺度的目标是目标检测的一个基本挑战。应对这一挑战的一个可行的解决方案是利用多级特征。在带有 MiM o或 SiMo 编码器的检测器中,它们构建具有不同接收域 (P3-P7) 的多层特征,并在接收域与其尺度匹配的水平上检测目标。然而,单级特征配置改变了这一切,在 SiSo 编码器中只有一个输出特征,它的接收域是一个常量。

  如图4 (a) 所示,C5 特征的感受野只能覆盖有限的尺度范围,如果目标的尺度与感受野不匹配,就会导致感知效果不佳。为了实现使用 SiSo 编码器检测所有目标,必须找到一种方法来生成具有各种接受域的输出特征 以 弥补多层特征的缺失。

  作者开始通过标准叠加和膨胀卷积来扩大 C5 特征的感受野。虽然覆盖的尺度范围有一定程度的扩大,但由于扩大的方式是对所有原始覆盖的尺度乘以一个大于1的因子,仍然不能覆盖所有的目标尺度。作者在图4(b) 中说明了这种情况,与图4(a)相比,整个尺度范围扩大到了更加大的尺度,然后将原始尺度范围和放大后的尺度范围通过添加相应的特征进行组合,得到了一个包含了所有目标尺度的多个接受域的输出特征,如图4©。通过对中间 3x3 卷积层进行扩张构造残差块,可以很容易地实现上述运算。

Dilated Encoder 基于以上设计,作者在图5中提出了 SiSo 编码器,命名为 Dilated Encoder。它包含两个主要组件:投影模块 和 残差模块。投影层首先应用一个 1x1 卷积来降低通道维度,然后添加一个 3x3 卷积来细化语义上下文,这与 FPN 中相同。在此之后,作者在 3x3 卷积中叠加 4 个膨胀率不同的膨胀残差块,生成具有多个接收域的输出特征,覆盖所有目标尺度。

Discussion 膨胀卷积是目标检测中常用的扩大特征接受域的策略。如第2节所述,TridentNet 使用膨胀卷积来生成多尺度特征。它通过多分支结构和权重共享机制处理目标检测中的尺度变化问题,这不同于我们的单级特征设置,此外膨胀编码器一个接一个地堆叠膨胀残差块,而不需要权重共享。虽然 DetNet 也先后应用了膨胀残差块,但其目的是保持特征的空间分辨率,并在 backbone 的输出中保留更多的细节,而作者的目的是在 backbone 中生成具有多个接收域的特征。膨胀编码器的设计使我们能够在单级特征上能够检测所有目标,而不是在TridentNet 和 DetNet 等多级特征上做检测。

4.2 Imbalance Problem on Positive Anchors

  Positive anchors 的定义对于目标检测的优化问题至关重要。在基于 anchor 的检测器中,确定 positive anchors 的策略主要是通过测量 anchors 和 ground-truth boxes 之间的 IoU。在 RetinaNet 中,如果 anchor 和ground-truth boxes 的最大 IoU 大于阈值 0.5,那么这个 anchor 将会被设置为 positive,这样的方式称之为Max-IoU 匹配。

  在 MiMo 编码器中,anchor 以密集铺设的方式在多个层次上预先定义,ground-truth boxes 根据其尺度生成特征层次上的 positive anchors。在 divide-and-conquer 机制下,Max-IoU 匹配使每个尺度中的 ground-truth boxes 能够产生足够数量的 positive anchors。然而当作者采用 SiSo 编码器时,与 MiMo 编码器相比,anchor 的数量大幅减少,从 100k 减少到 5k,导致 anchors 稀疏。在应用 Max-IoU 匹配时,稀疏 anchor 会给检测器带来匹配问题,如图6所示。在自然状态下,大的 ground-truch boxes 相比小的 ground-truth boxes 能够诱导更加多的 positive anchors,这导致了 positive anchors 的不平衡问题。这种不平衡使得检测器在训练的时候更加倾向于大的 ground-truth 而忽略小的。

Uniform Matching 为了解决 positive anchors 不平衡的问题,作者提出了均匀匹配策略:采用距离最近的 k 个 anchor 作为每个 ground-truth 的 positive anchors,保证了所有 ground-truth boxes 无论大小都能均匀匹配相同数量的 positive anchors,如图6所示。正样本的平衡能够确保所有的 ground-truth boxes 参与训练并平等地做出贡献。此外,参考 Max-IoU 匹配,在均匀匹配中设置 IoU 阈值,忽略大 IoU(>0.7) 的 negative anchors 和小 IoU(<0.15) 的 positive anchors。

Discussion: relation to other matching methods 在匹配过程中应用 topk 并不是什么新鲜事。ATSS 首先在 L 特征层上为每个 ground-truth boxes 选择 topk anchors,然后通过动态 IoU 阈值在 kxL 个候选对象中采样 positive anchors。然而,ATSS 侧重于自适应定义 positives 和 negatives,而作者的均匀匹配侧重于实现具有稀疏 anchors 的正样本。虽然以前的一些方法在正样本上达到了平衡,但它们的匹配过程并不是针对这种不平衡问题所设计的。例如,YOLO 和 YOLOv2 将 ground-truth boxes 与最佳匹配单元或 anchor 进行匹配;DETR 采用匈牙利算法进行匹配。这些匹配方法可以视为是 top1 匹配,这是均匀匹配的一个特殊情况。更重要的是,均匀匹配和学习匹配方法的区别在于:学习匹配方法如 FreeAnchor 和 PAA,根据学习状态自适应地将 anchors 分为正和负,而均匀匹配是固定的,不随训练而进化。采用均匀匹配的方法,解决了 SiSo 设计中 positive anchors 不平衡的问题。图6和表5e中的结果对比表明了 SiSo 编码器中的正样本平衡的重要性。

4.3 YOLOF

  在以上解决方案的基础上,作者提出了一个具有单级特征的快速、直接的框架,称为 YOLOF。将 YOLOF 格式化为三个部分:backbone、编码器和解码器。YOLOF 的示意图如图9所示。在本节中,将简要介绍 YOLOF 的主要成分。

Backbone 在所有的模型中,简单采用 ResNet 和 ResNeXt 系列作为 backbone。所有的模型都在ImageNet 上进行了预训练。backbone 的输出是 C5 特征图,有 2048 个通道,下采样率为 32。为了与其他检测器进行公平的比较,默认情况下 backbone 中的所有 bn 层都被冻结。

Encoder 对于编码器(图5),首先遵循 FPN,在 backbone 之后添加两个投影层 (一个 1x1 和一个 3x3 卷积),产生一个具有 512 个通道的特征映射。然后为了使编码器的输出特征能够覆盖各个尺度上的所有目标,作者添加了残差块,残差块由三个连续的卷积组成:首先使用 1x1 卷积进行通道缩减,缩减率为 4,然后使用 3x3 卷积进行扩张,扩大接收域,最后使用 1x1 卷积恢复通道数。

Decoder 对于解码器,采用了 RetinaNet 的设计,它由两个并行的任务专用头组成:分类头和 回归头。作者只添加了两个较小的修改,第一个是在 DETR 中遵循 FFN 的设计,使两个头部的卷积层数不同,回归头上有 4 个卷积,然后跟着 bn 层和 ReLU 层,而分类头上只有 2 个;第二个是遵循自动分配,并为回归头上的每个anchor 添加一个隐式的目标预测 (没有直接监督)。所有预测的最终分类得分都是通过将分类输出和相应的隐式目标存在可能性进行相乘来生成的。

Other Details 如前一节所述,YOLOF 中预定义的 anchors 是稀疏的,降低了 anchors 和 ground-truth boxes 之间的匹配质量。作者在图像上添加一个随机偏移算子来规避这个问题。该算子在图像的左、右、上、下四个方向上随机移动最多 32 个像素点,目的是在图像中为目标注入噪声,增加 ground-truth 和高质量 anchors 匹配的概率。此外,作者发现在使用单级特征时,限制 anchors 中心偏移也有助于最终的分类,此外作者增加了所有 anchors 的中心偏移应该小于32个像素的限制。

5. 实验

  作者在 MSCOCO 基准上评估 YOLOF,并与 RetinaNet 和 DETR 进行比较。对每个部件提供详细的消融实验量化和分析。最后为了给进一步研究单级检测器提供参考,作者进行了误差分析,并指出了 YOLOF 与 DETR 相比较的不足之处,具体情况如下。

Implementation Details YOLOF 在 8 个 GPU 上使用同步 SGD 进行训练,每个 mini-batch 总共有 64 张图片 (每个 GPU 8 张图片)。所有模型的训练初始学习率为 0.12。此外,参考 DETR,作者为 backbone 设置了一个较小的学习率,这个学习率是基础学习率的 1/3。为了稳定一开始的训练,将 warmup 迭代次数从 500 次增加到了 1500 次。对于训练调度,当增加 batchsize 时,YOLOF 中的 ‘1x’ 调度设置总共是 22.5k 次迭代,在第 15k 和 20k 次迭代中将基础学习率降低了10,其他调度按照 Detectron2 的原则进行调整。对于模型推理,采用阈值为 0.6 的 NMS 对结果进行后处理。对于其他超参数,都遵循 RetinaNet 的设置。

5.1 Comparison with previous works

Comparison with RetinaNet 为了进行公平的对于,作者使用广义 IoU 来处理 box 损失,添加隐式目标预测,并在头部应用组归一化层 (由于每个 GPU 只有两个图像,且 BN 和 SyncBN 在 RetinaNet 中的效果都比较差,所以在头部中使用 GN 而不是 BN),从而使 RetinaNet 与 YOLOF 对齐,结果如表1所示。

Comparison with DETR DETR 是最近提出的一种检测器,它将 transformer 引入到目标检测中。它在COCO 基准上取得了惊人的结果,并首次证明了仅采用单一的 C5 特征,就可以取得和 多级特征检测器 (Faster R-CNN w/ FPN) 相当的结果。这让人们觉得在单级特征检测器中只有用 transformer 才能捕获全局依赖关系。然而作者证明了采用局部卷积的传统网络也可以达到这一目标。作者在表2中比较了 DETR全局层 和 YOLOF局部卷积,结果表明 YOLOF 和 DETR 的性能相当。

Comparison with YOLOv4 YOLOv4 是一种速度和精度俱佳的多级特征检测器,它结合了许多技巧来达到最先进的效果。为了将 YOLOF 和 YOLOv4 进行比较,采用了 YOLOv4 的数据增强方法,采用 three-phase 训练pipeline,相应修改训练设置,并在 backbone 的最后一级增加膨胀算子 (如表3中的 YOLOF-DC5)。

5.2 Ablation Experiments

  作者进行了多次消融实验来分析 YOLOF,首先对这两个提出的组件进行全面分析,在此基础上,进行了消融实验,结果如表4和表5所示。

5.3 Error Analysis

  在本节中,作者加入了对 YOLOF 的误差分析,为未来单层特征检测器的研究提供了思路。采用最新的工具TIDE 来比较 YOLOF 和 DETR。如图7所示,与 YOLOF 相比,DETR 在定位上的误差更大,这可能与其回归机制有关。DETR 以 anchor-free 的方式回归目标,并在图像中进行全局位置预测,这给定位带来了困难。相比之下,YOLOF 依赖于预定义的 anchor,在预测中,它比 DETR 的漏检误差更高。

6. 总结

  在本文工作中,作者确定 FPN 的成功是由于它针对密集目标检测的 divide-and-conquer 方法来解决优化问题。考虑到 FPN 使网络结构更加复杂,且增加了内存负担,降低了检测器的速度,作者提出了一种简单但高效的方法 YOLOF,不用 FPN 来针对性地解决优化问题,并通过与 RetinaNet 和 DETR 进行比较来证明其有效性。作者希望 YOLOF 可以作为一个坚实的 baseline,并在未来研究中为单级特征检测器的设计提供见解。

7. 参考

  [1] You Only Look One-level Feature.

  好了,以上解读了 单级特征检测网络 YOLOF。希望我的分享能对你的学习有一点帮助。

 【极智视界】

《极智Paper | 单级特征检测网络 YOLOF》

搜索关注我的微信公众号【极智视界】,获取我的更多经验分享,让我们用极致+极客的心态来迎接AI !

极智Paper | 单级特征检测网络 YOLOF相关推荐

  1. 极智Paper | YOLOv7 更高 更快 更强

      欢迎关注我的公众号 [极智视界],获取我的更多笔记分享   大家好,我是极智视界,本文解读一下 更高.更快.更强的 YOLOv7:Trainable bag-of-freebies sets ne ...

  2. 极智Paper | YOLOS 通过目标检测重新思考Vision Transformer

      欢迎关注我的公众号 [极智视界],获取我的更多笔记分享   大家好,我是极智视界,本文解读一下 YOLOS 通过目标检测重新思考Vision Transformer.   Transformer ...

  3. PVNet: 像素级投票网络估计6DoF位姿

    泡泡图灵智库,带你精读机器人顶级会议文章 标题:PVNet:Pixel-wise Voting Network for 6DoF Pose Estimation 作者:Sida Peng,Yuan L ...

  4. 极智AI | 一文看懂昇腾达芬奇架构计算单元

        本文详细解释了昇腾达芬奇架构中计算单元的架构与计算原理. 文章目录 1.达芬奇架构概览 2.矩阵计算单元 2.1 矩阵相乘 2.2 矩阵计算单元的计算方式 2.3 向量计算单元的计算方式 2. ...

  5. 极智AI | 谈谈几种量化策略:MinMax、KLD、ADMM、EQ

      欢迎关注我的公众号 [极智视界],获取我的更多笔记分享   O_o   >_<   o_O   O_o   ~_~   o_O   本文主要聊一下深度学习模型量化相关策略.   模型小 ...

  6. 【自动驾驶-3D目标检测】3DSSD:基于点的3D单级目标检测器

    3DSSD:基于点的3D单级目标检测器2020^{2020}2020 摘要 目前,基于体素的3D单级检测器已经有很多种,而基于点的单级方法仍处于探索阶段.在本文中,我们首先提出了一种轻量级且有效的基于 ...

  7. 双十一发货超2000万件,极智嘉(Geek+)柔性方案从容应对购物狂欢节

    双十一狂欢节过后,各大企业.品牌捷报频传,相关行业也迎来一年一度业务高峰.我国智慧物流领域TOP级企业.全球AMR引领者极智嘉(Geek+)于11月12日正式宣布,旗下极智嘉RaaS智能仓在数十万平的 ...

  8. 教程 | 单级式目标检测方法概述:YOLO与SSD

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 目标检测是计算机视觉领域的基本研究问题之一,当前最常用的技术是卷积 ...

  9. 全球首款搭载鸿蒙操作系统的设备是什么,全球首款搭载鸿蒙操作系统:舒华展示极智2代豪华商用跑步机...

    随着人们生活节奏的加快,亚健康似乎成为了大家需要解决的头等大事,而健身房也就成为平时工作之余最常去的地方.在健身房中,最受关注的应该就是跑步机了,通过在跑步机上挥汗如雨,从而实现减脂,给自己一个轻松的 ...

最新文章

  1. 四种类型的数据分析模式
  2. 1000内同时被3,5,7整除的数
  3. linux下安装配置使用memcache,memcached,libevent(后有ubuntu的memcache安装)
  4. 低差异序列:范德科皮特序列(Van der Corput sequence)
  5. MongoDB作为windows服务来安装-2
  6. RMI non-JRMP server at remote endpoint
  7. SVN 签出源码 Struts Spring Hibernate
  8. 机器学习中的不平衡分类方法(part1)--绪论
  9. java中方法的参数传递机制
  10. win8 软件字体乱码
  11. 怎么知道Win10的电脑是否满足Win11的硬件要求
  12. 已经不需要司机的Waymo无人车,何时才能摆脱后座待命的工程师?
  13. spring aop如何在切面类中获取切入点相关方法的参数、方法名、返回值、异常等信息
  14. 西湖大学张岳老师:图神经网络在自然语言处理中的应用
  15. php POST,HTTP_RAW_POST_DATA, and php://input
  16. Nobook虚拟实验室完爆各种传统实验室
  17. Learning the Model Update for Siamese Trackers论文解读
  18. java中 成员变量和属性的区别
  19. 根据不同时区来计算当前时间
  20. 智能家居十大必备功能 乐享真正智能生活

热门文章

  1. c++第四天(补充引用的定义)
  2. 蓝牙外设配对时输入密码的三种状态说明
  3. MATLAB中出现NAN
  4. OSChina 周四乱弹 —— 剁手过双十一
  5. 【Java】- JDK是什么?
  6. java如何连接rfid_Java + Uno + RFID:java中的调用方法读取rfid
  7. Flex工具下载链接
  8. Android横屏竖屏切换的问题
  9. Ubuntu 18.04.2 LTS更换国内快速更新源的正确姿势
  10. Docker实战笔记