论文阅读 FCOS: Fully Convolutional One-Stage Object Detection

文章目录

    • FCOS: Fully Convolutional One-Stage Object Detection
      • Abstract
      • 1. Introduction
      • 2. Related Work
      • 3. Our Approach
        • 3.1. Fully Convolutional One-Stage Object Detector
        • 3.2. Multi-level Prediction with FPN for FCOS
        • 3.3. Center-ness for FCOS
      • 4. Experiments
        • 4.1. Ablation Study && 4.2. Comparison with State-of-the-art Detectors
      • 5. Extensions on Region Proposal Networks
      • 6. Conclusion

FCOS: Fully Convolutional One-Stage Object Detection

Abstract

我们提出了一种全卷积单阶段目标检测器(FCOS),以per-pixel 预测的方式解决目标检测问题,类似于语义分割。几乎所有最先进的目标检测器,如RetinaNet、SSD、YOLOv3和Faster R-CNN,都依赖于预定义的锚框(anchor boxes)。相比之下,我们提出的FCOS检测器是无锚框的,也无需提出建议区域(proposals)。通过消除预定义的锚框集,FCOS完全避免了与锚框相关的复杂计算,比如训练过程中的overlapping计算。更重要的是,我们还避免了所有与锚框相关的超参数,这些超参数通常对最终的检测性能非常敏感。只需要后处理的非极大值抑制(NMS),在使用ResNeXt-64x4d-101进行 single-model 和 single-scale 测试时,FCOS取得了44.7%的平均精度(AP),超越了之前的单阶段检测器,并具有更简单的优势。我们希望所提出的FCOS框架可以作为许多其他实例级任务的简单而强大的替代方案。

1. Introduction

目标检测是计算机视觉中一项基础且具有挑战性的任务,它要求算法为图像中 instance of interest 预测一个带有类别标签的边界框。所有当前主流的检测器,如Faster R-CNN、SSD和YOLOv2、v3 ,都依赖于一组预定义的锚框,长期以来人们一直认为锚框的使用是检测器成功的关键。尽管它们取得了巨大的成功,但值得注意的是,基于锚框的检测器存在一些缺点:1)检测性能对于锚框的大小、长宽比和数量非常敏感。例如,在RetinaNet 中,改变这些超参数会在COCO基准测试集上将性能影响多达4%的平均精度(AP)。因此,这些超参数需要在基于锚框的检测器中进行精心调整。2)即使经过精心设计,由于锚框的尺度和长宽比被固定,检测器在处理具有大尺寸变化的物体候选时也会遇到困难,尤其是对于小物体而言。预定义的锚框还削弱了检测器的泛化能力,因为在需要在具有不同物体尺寸或长宽比的新检测任务上重新设计这些锚框。3)为了实现高召回率,基于锚框的检测器需要在输入图像上密集地放置锚框(例如,在图像的较短一侧为800的情况下,特征金字塔网络(FPN)中需要超过180,000个锚框)。在训练过程中,这些锚框中的大部分都被标记为负样本。过多的负样本数量加剧了训练中正负样本之间的不平衡。4)锚框还涉及复杂的计算,例如计算与ground-truth 边界框之间的交并比(IoU)分数。

最近,全卷积网络(FCN)在dense prediction 任务中取得了巨大的成功,如语义分割、深度估计、关键点检测和计数。作为高级视觉任务之一,目标检测可能是唯一一个不太适用于全卷积像素级预测框架的任务,主要是由于使用了锚框。一个自然的问题是:我们能否以像素级预测方式解决目标检测问题,类似于用于语义分割的FCN呢?这样,这些基本的视觉任务就可以在(几乎)一个单一的框架中统一起来。我们展示了答案是肯定的。此外,我们首次证明,更简单的基于FCN的检测器甚至比基于锚框的同类检测器表现更好。

在文献中,一些工作尝试利用基于FCN的框架进行目标检测,例如DenseBox 。具体而言,这些基于FCN的框架在特征图的每个空间位置上直接预测一个4D向量和一个类别标签。如图1(左)所示,4D向量描述了边界框四个边与该位置之间的相对偏移。这些框架类似于用于语义分割的FCN,不同之处在于每个位置需要回归一个4D连续向量。然而,为了处理具有不同大小的边界框,DenseBox会将训练图像裁剪并调整为固定比例。因此,DenseBox必须在图像金字塔上执行检测,这与FCN只执行一次所有卷积的理念相悖。此外,更重要的是,这些方法主要用于特殊领域的目标检测,如场景文本检测或人脸检测,因为人们认为这些方法在应用于具有高度重叠边界框的通用目标检测时效果不佳。如图1(右)所示,高度重叠的边界框导致了难以解决的歧义问题:在重叠区域的像素上,不清楚应该回归到哪个边界框。
在这里插入图片描述
在接下来的内容中,我们将更详细地探讨这个问题,并展示通过使用特征金字塔网络(FPN),这种ambiguity 可以在很大程度上被消除。因此,我们的方法已经可以获得与传统基于锚框的检测器相当的检测准确性。此外,我们观察到我们的方法可能会在远离目标对象中心的位置产生许多低质量的预测边界框。为了抑制这些低质量的检测结果,我们引入了一个新的“center-ness”分支(仅有一层)来预测像素到其对应边界框中心的偏移,如公式(3)中所定义。然后,该分数用于降低低质量的检测边界框权重,并在非极大值抑制(NMS)中合并检测结果。这个简单但有效的center-ness 分支使得基于FCN的检测器在完全相同的训练和测试设置下优于基于锚框的同类检测器。

这种新的检测框架具有以下优势:

  • 现在,Detection 与许多其他FCN可解决的任务(如语义分割)统一在一起,使得可以更轻松地从这些任务中重新利用思想。

  • Detection 变得无需提出建议区域和锚框,从而大大减少了设计参数的数量。design parameters 通常需要启发式调整,并且需要许多技巧才能实现良好的性能。因此,我们的新检测框架使得检测器,尤其是其训练过程,变得更加简单。

  • 通过消除锚框,我们的新检测器完全避免了与锚框相关的复杂计算,如训练过程中的IOU计算和锚框与ground-truth 边界框之间的匹配,从而导致训练和测试速度更快,训练内存占用也比基于锚框的检测器更少。

  • 在不添加复杂的元素的情况下,我们在单阶段检测器中实现了最先进的结果。我们还展示了所提出的FCOS可以用作两阶段检测器中的Region Proposal Networks(RPNs),并且可以显著优于基于锚框的RPN同类检测器。

  • 所提出的检测器可以立即进行 minimal modification 以解决其他视觉任务,包括实例分割和关键点检测。我们相信,这种新方法可以成为许多实例级预测问题的新基准。

2. Related Work

略过

3. Our Approach

在本节中,我们首先以per-pixel 预测的方式重新阐述目标检测。接下来,我们展示了如何利用multi-level prediction 来提高召回率,并解决由于重叠边界框而产生的ambiguity 问题。最后,我们介绍了我们提出的“centerness”分支,该分支有助于抑制低质量的检测边界框,并显著提高整体性能。

3.1. Fully Convolutional One-Stage Object Detector

对于一个主干CNN的第i层,其特征图为Fi ∈ RH×W×C,s表示从初始层到第i层的总步长。输入图像的ground-truth 边界框定义为{Bi},其中Bi = (x(i)0, y(i)0, x(i)1,y(i)1, c(i)) ∈R4 × {1, 2 … C}。这里的(x(i)0, y(i)0) 和 ( x(i)1,y(i)1) 分别表示边界框左上角和右下角的坐标,c(i) 是边界框内物体所属的类别。C是类别数量,对于MS-COCO数据集,C为80。

对于特征图Fi上的每个位置(x, y),我们可以将其映射回输入图像,即
在这里插入图片描述
它位于位置(x, y)的感受野中心附近。与基于锚框的检测器不同,后者将输入图像上的location视为(多个)锚框的中心,并借助这些锚框作为参考来回归目标边界框,我们直接在该位置回归目标边界框。换句话说,我们的检测器将位置直接视为训练样本,而不是锚框,这与用于语义分割的FCN相同。

具体而言,如果位置(x, y)位于任何ground-truth边界框内,我们将其视为正样本,并且该位置的类别标签c为ground-truth 边界框的类别标签。否则,它是负样本,且c = 0(表示背景类)。除了分类标签外,我们还有一个4D实值向量 t = (l, t, r, b),作为该位置的 regression targets 。这里的 l, t, r, b 分别表示位置到边界框四个边的距离,如图1(左)所示。如果一个location 位于多个边界框内,我们将其视为ambiguous sample。我们简单地选择面积最小的边界框作为其回归目标。在接下来的部分中,我们将展示通过多级预测,ambiguous sample的数量可以显著减少,从而几乎不会影响检测性能。正式地说,如果位置(x, y)与边界框Bi相关联,该位置的训练回归目标可以表示为:
在这里插入图片描述
值得注意的是,FCOS可以利用尽可能多的前景样本来训练回归器。这与基于锚框的检测器不同,后者只考虑与 ground-truth 边界框具有足够高IOU的锚框作为正样本。我们认为这可能是FCOS优于基于锚框的同类检测器的原因之一。

Network Outputs 对应于训练目标,我们网络的最终层预测一个80维的分类标签向量p和一个4维的边界框坐标向量t = (l, t, r, b)。我们不是训练一个multi-class 分类器,而是训练了C个二元分类器。在主干网络的特征图之后,我们分别为分类和回归分支添加了四个卷积层。此外,由于回归目标始终是正数,我们在回归分支顶部使用exp(x)将任意实数映射到(0,∞)区间内。值得注意的是,FCOS的网络输出变量比流行的基于锚点的检测器少了9倍。

Loss Function 我们定义训练损失函数如下:

在这里插入图片描述
其中,Lcls是的(Focal Loss),而Lreg是类似于UnitBox 中的IOU损失(Intersection over Union)。Npos表示正样本的数量,而本文中λ的值为1,是用于平衡Lreg的权重。求和是在所有特征图Fi的位置上计算的。1{ci > 0}是一个指示函数,如果ci > 0,则为1,否则为0。

Inference FCOS的推断过程很简单。给定输入图像,我们通过网络进行前向传播,对于特征图Fi上的每个位置,得到分类分数 px,y和回归预测 tx,y。我们选择具有px,y > 0.05的位置作为正样本,并通过方程(1)来获取预测的边界框。

3.2. Multi-level Prediction with FPN for FCOS

这里我们展示了如何通过使用多级FPN 的多级预测来解决所提出的FCOS的两个可能问题。1) 在卷积神经网络中,最终特征图的大stride(例如,16倍)可能会导致相对较低的最佳可能召回率(BPR)。对于基于锚点的检测器,由于大步长而导致的低召回率可以在一定程度上通过降低正锚点框所需的IOU分数来补偿。对于FCOS,乍一看可能会认为BPR可能远低于基于锚点的检测器,因为由于大步长,最终特征图上的某些位置根本无法编码对象,从而无法召回对象。在这里,我们经验证明,即使具有大步长,基于FCN的FCOS仍然能够产生很好的BPR,甚至可以比锚点基准检测器RetinaNet 在官方实现Detectron中表现得更好(参见表格1)。因此,BPR实际上不是FCOS的问题。此外,通过多级FPN预测,BPR可以进一步提高,以达到基于锚点的RetinaNet可以实现的最佳BPR。2) ground-truth 框之间的重叠可能导致难以处理的歧义,即重叠位置应该回归到哪个边界框?这种歧义会导致基于FCN的检测器性能下降。在这项工作中,我们展示了通过多级预测可以很大程度上解决这种歧义,基于FCN的检测器可以获得与基于锚点的检测器相当甚至更好的性能。

我们在不同级别的特征图上检测不同尺寸的物体。具体来说,我们使用了五个级别的特征图,分别定义为{P3,P4,P5,P6,P7}。P3、P4和P5是由主干CNN的特征图C3、C4和C5产生的,后面跟着一个带有自顶向下连接的1×1卷积层,如图2所示。P6和P7分别通过在P5和P6上应用步长为2的卷积层来生成。因此,特征级别P3、P4、P5、P6和P7的步长分别为8、16、32、64和128。
在这里插入图片描述

与基于锚点的检测器不同,其将不同尺寸的锚框分配给不同的特征级别,我们直接限制了每个级别的边界框回归范围。具体来说,我们首先为所有特征级别上的每个位置计算回归目标l、t、r和b。然后,如果一个位置满足max(l, t, r, b) > mi 或max(l, t, r, b) < mi−1,它将被设置为负样本,因此不需要再回归边界框。这里mi是特征级别i需要回归的最大距离。在这项工作中,m2、m3、m4、m5、m6和 m7分别设置为0、64、128、256、512和∞。

由于不同尺寸的物体被分配到不同的特征级别,大多数重叠发生在具有相当不同尺寸的物体之间。如果一个位置,即使使用了多级预测,仍然分配给多个ground-truth框,我们只需选择面积最小的ground-truth框作为其目标。正如我们的实验证明的那样,多级预测可以在很大程度上减轻上述的歧义问题,并将基于FCN的检测器提升到与基于锚点的检测器相同的水平。

最后,我们在不同的特征级别之间共享检测头部,这不仅使得检测器参数更高效,还提高了检测性能。然而,我们观察到不同的特征级别需要回归不同尺寸范围的目标(例如,P3的尺寸范围为,而P4的尺寸范围为),因此在不同的特征级别上使用相同的检测头部是不合理的。因此,我们不再使用标准的exp(x),而是使用带有可训练标量si的exp(six),以自动调整指数函数的基数,适用于特征级别Pi,这略微改善了检测性能。

3.3. Center-ness for FCOS

在使用多级预测之后,FCOS与基于锚点的检测器之间仍然存在性能差距。我们观察到,这是由于许多预测的边界框质量较低,这些边界框是由远离物体中心的位置产生的。

在这里插入图片描述

为了在不引入任何超参数的情况下抑制这些低质量的检测边界框,我们提出了一个简单而有效的策略。具体来说,我们在与分类分支并行的情况下添加了一个单层分支(如图2所示),用于预测位置的“center-ness”。中心性描述了location 到该位置负责的物体中心的标准化距离,如图3所示。给定位置的回归目标l、t、r和b,中心性目标定义如下:
在这里插入图片描述

我们在这里使用 sqrt 来减缓centerness的衰减。中心性的取值范围从0到1,因此使用二元交叉熵(BCE)损失进行训练。损失添加到损失函数Eq.(2)中。在测试时,最终的得分(用于对检测到的边界框进行排名)是通过将预测的中心性与相应的分类分数相乘来计算的。因此,中心性可以降低远离物体中心的边界框的分数权重。结果是,通过最终的非最大抑制(NMS)过程,很有可能这些低质量的边界框会被滤除,从而显著提高检测性能。

中心性的另一种替代方法是仅使用 ground-truth 边界框的中心部分作为正样本,但代价是引入一个额外的超参数。在我们提交后,已经证明了这两种方法的组合可以实现更好的性能。实验结果可以在表格3中找到。

4. Experiments

我们的实验是在大规模检测基准数据集COCO上进行的。我们使用COCO的trainval35k划分(115K张图像)进行训练,使用minival划分(5K张图像)作为验证集进行我们的消融研究。我们将主要结果报告在测试开发集(20K张图像)上,通过将我们的检测结果上传到评估服务器进行评估。

Training Details:除非特别说明,我们使用ResNet-50 作为我们的主干网络,并使用与RetinaNet 相同的超参数。具体而言,我们的网络使用随机梯度下降(SGD)进行训练,进行90K次迭代,初始学习率为0.01,每批处理16张图像。学习率在第60K和80K次迭代时分别降低10倍。权重衰减和动量分别设置为0.0001和0.9。我们的主干网络使用在ImageNet 上预训练的权重进行初始化。除非特别说明,输入图像被调整大小,使其较短的一边为800,较长的一边小于或等于1333。

Inference Details:我们首先将输入图像传递给网络,获取预测的带有预测类别的边界框。除非特别说明,以下后处理与RetinaNet 完全相同,我们直接使用RetinaNet的后处理超参数。我们使用与训练中相同尺寸的输入图像。我们假设如果仔细调整超参数,我们的检测器的性能可能会进一步提高。

4.1. Ablation Study && 4.2. Comparison with State-of-the-art Detectors

略过

5. Extensions on Region Proposal Networks

到目前为止,我们已经展示了在单级检测器中,我们的FCOS甚至可以比基于锚点的对应方法获得更好的性能。直观地说,FCOS应该也能够在两级检测器Faster R-CNN中用FPN 替代区域建议网络(RPNs)中的锚点框。在这里,我们通过实验来证实这一点。

与使用FPN 的RPN相比,我们使用FCOS中的方法替换了锚点框。此外,我们将GN添加到FPN头部的层中,这可以使训练更加稳定。除此之外,其他设置与官方代码中使用FPN的RPN完全相同。如表6所示,即使不使用提出的中心性分支,我们的FCOS已经显著提高了AR100和AR1k。在使用了提出的中心性分支后,FCOS将AR100和AR1k进一步分别提升至52.8%和60.3%,相对于使用FPN的RPN,AR100的相对改进为18%,AR1k的绝对改进为3.4%。
在这里插入图片描述

6. Conclusion

We have proposed an anchor-free and proposal-free onestage detector FCOS. As shown in experiments, FCOS
compares favourably against the popular anchor-based onestage detectors, including RetinaNet, YOLO and SSD,
but with much less design complexity. FCOS completely avoids all computation and hyper-parameters related to anchor boxes and solves the object detection in a per-pixel prediction fashion, similar to other dense prediction tasks such as semantic segmentation. FCOS also achieves state-of-theart performance among one-stage detectors. We also show that FCOS can be used as RPNs in the two-stage detector Faster R-CNN and outperforms the its RPNs by a large margin. Given its effectiveness and efficiency, we hope that FCOS can serve as a strong and simple alternative of current mainstream anchor-based detectors. We also believe that FCOS can be extended to solve many other instancelevel recognition tasks.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/113131.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter和Postman那个工具更适合做接口测试?

软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中&#xff0c;有高手&#xff0c;自然也会有小白&#xff0c;但有一点我们无法否认&#xff0c;就是每一个高手都是从小白开始的&#xff0c;所以今天我们就来谈谈一大部分人在做的接口测试&#xff0c;小白变高手…

【单片机】有人 WH-LTE-7S1 4G cat1 模块,HTTPD模式,字符串传输,文件传输。GPRS模块连接服务器教程。

文章目录 1、配置模块为HTTPD模式 POST字符串传输2、配置模块为HTTPD模式 GET请求3、 上一篇文章&#xff1a;https://qq742971636.blog.csdn.net/article/details/132571592 在上一篇文章里&#xff0c;已经通过TCP 长链接进行服务器与Cat1 GPRS 模块进行双向通信。已经能够满…

(一)SpringBoot 整合WebSocket 前端 uniapp 访问

第一次使用WebSocket&#xff0c;所以最需要一个及其简单的例子&#xff0c;跑通之后&#xff0c;增加自己对该技术的理解。&#xff08;技术基础介绍就免掉了&#xff0c;后面再补&#xff09; 案例逻辑&#xff1a;目前只有一个用户&#xff0c;而且是一个用户给服务器发送数…

Python 画多个子图函数 subplot

子图函数 subplot 若要 pyplot 一次生成多个图形&#xff0c;一般要用到subplot函数&#xff0c;另外还有一个subplots函数。两个函数比较接近但略有区别&#xff0c;限于篇幅&#xff0c;我们只介绍 subplot函数&#xff0c;它的基本语法如下&#xff1a; ax plt.subplot(n…

搬家快递服务小程序的便利性

在当今快节奏的生活中&#xff0c;搬家可能是很多人都需要面对的问题。无论是新房子还是新办公室&#xff0c;都需要高效、便捷的搬家服务。本文将介绍如何使用第三方小程序制作平台&#xff0c;如乔拓云平台&#xff0c;开发一款高效便捷的搬家服务小程序。 1. 注册登录第三方…

模拟实现应用层协议

模拟实现应用层协议 文章目录 模拟实现应用层协议应用层再谈协议 序列化和反序列化 网络版计算器自定义协议利用Json进行序列化和反序列化json库的安装条件编译 应用层 应用层&#xff08;Application layer&#xff09;是OSI模型的第七层。应用层直接和应用程序接口并提供常见…

AI:05 - 基于深度学习的道路交通信号灯的检测与识别

随着人工智能的快速发展,基于深度学习的视觉算法在道路交通领域中起到了重要作用。本文将探讨如何利用深度学习技术实现道路交通信号灯的检测与识别,通过多处代码实例展示技术深度。 道路交通信号灯是指示交通参与者行驶和停止的重要信号。准确地检测和识别交通信号灯对于智…

06.sqlite3学习——DQL(数据查询)(全)

目录 SQLite——DQL&#xff08;数据查询&#xff09; 数据集 select语句 条件查询 比较 确定范围 确定集合 like 查询记录 查询不重复的记录 排序和限制 排序 限制 聚合 聚合函数 语法 SQLite Group By详解 语法 实例 SQLite Having 子句 语法 实例 多…

Linux通信--构建进程通信System-V 消息队列|信号量

文章目录 目录 一、消息队列 二、信号量 1.互斥 2.信号量 一、消息队列 消息队列提供了从一个进程向另一个进程发送数据块的方法每个数据块都被认为是有一个类型&#xff0c;接收者进程接收的数据块可以有不同的类型值IPC资源必须删除&#xff0c;不会随进程自动清楚&#…

webrtc-m79-msvc编译H264

0 写在前面 本文主要参考&#xff1a;webrtc 4577版本vs编译_tusong86的博客-CSDN博客 4577也就是m93&#xff0c;由于源码版本的不同&#xff0c;可能存在一定的出入&#xff0c;可根据实际情况进行修改&#xff1b; 感谢作者的付出&#xff1b; 1 编译参数 powershell运…

【git】Idea撤回本地分支、或远程分支提交记录的各种实际场景操作步骤

文章目录 idea撤回本地分支、远程分支场景操作集合场景1&#xff1a;要撤回最后一次本地分支的提交实现效果&#xff1a;操作步骤&#xff1a; 场景2&#xff1a;要撤回最后一次远程分支的提交有撤销记录的&#xff1a;实现效果&#xff1a;操作步骤&#xff1a; 无撤销记录的&…

数据分析基础-数据可视化学习笔记03-可视化的符号与表示-图形符号学

概念 图型符号学&#xff08;Cartographic Symbolization&#xff09;是地图学领域中的一个重要概念&#xff0c;涉及到如何使用不同的符号、颜色、图案和标记来在地图上表示地理信息和数据。图型符号学旨在传达地理信息&#xff0c;使得地图能够清晰、有效地传达各种空间数据…

微信小程序scroll-view隐藏滚动条参数不生效问题

如题&#xff0c;先来看看问题是怎么出现的。 先看文档如何隐藏滚动条&#xff1a; 再根据文档实现wxml文件&#xff1a; <scroll-view show-scrollbar"{{false}}" enhanced><view wx:for"{{1000}}">11111</view> </scroll-view>…

pytorch异常——RuntimeError:Given groups=1, weight of size..., expected of...

文章目录 省流异常报错异常截图异常代码原因解释修正代码执行结果 省流 nn.Conv2d 需要的输入张量格式为 (batch_size, channels, height, width)&#xff0c;但您的示例输入张量 x 是 (batch_size, height, width, channels)。因此&#xff0c;需要对输入张量进行转置。 注意…

探索未知世界:桌面端3D GIS引领地理信息新时代

近年来&#xff0c;桌面端的三维地理信息系统&#xff08;3D GIS&#xff09;在地理信息领域迎来了显著的发展&#xff0c;为我们带来了更深入、更丰富的地理空间认知和数据分析体验。从城市规划到环境保护&#xff0c;从资源管理到应急响应&#xff0c;桌面端的3D GIS正逐渐成…

day 30 动态GDP柱状图绘制

列表.sort(key选择排序依据的函数&#xff0c;reverseTrue|False) 参数key:要求传入一个函数&#xff0c;表示将列表的每一个元素传入函数当中&#xff0c;返回排序的依据&#xff0c; 参数reverse,是否反转排序结果&#xff0c;True降序&#xff0c;False升序 my_list [[&…

【爬虫小知识】如何利用爬虫爬网页——python爬虫

前言 网络时代的到来&#xff0c;给我们提供了海量的信息资源&#xff0c;但是&#xff0c;想要获取这些信息&#xff0c;手动一个一个网页进行查找&#xff0c;无疑是一项繁琐且效率低下的工作。这时&#xff0c;爬虫技术的出现&#xff0c;为我们提供了一种高效的方式去获取…

Android JNI系列详解之生成指定CPU的库文件

一、前提 这次主要了解Android的cpu架构类型&#xff0c;以及在使用CMake工具的时候&#xff0c;如何指定生成哪种类型的库文件。 如上图所示&#xff0c;是我们之前使用CMake工具默认生成的四种cpu架构的动态库文件&#xff1a;arm64-v8a、armeabi-v7a、x86、x86_64&#xff0…

【附安装包】MyEclipse2019安装教程

软件下载 软件&#xff1a;MyEclipse版本&#xff1a;2019语言&#xff1a;简体中文大小&#xff1a;1.86G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.5GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨下载链接&#xff1a;https://pan.baidu.co…

系统架构师---系统规划

目录 前言&#xff1a; 项目的提出与选择 项目立项的目标和动机 进行基础研究并获取技术 进行应用研发并获得产品 提供技术服务 信息技术产品的使用者 项目的选择和确定 选择有核心价值的产品、项目或可开发方向 评估项目风险、收益和代价 评估项目的多种实施方式 平…