本文主要是介绍杂乱环境下的显著性物体: 将显著性物体检测推向新高度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编者按:本文是ECCV2018接收论文《 Salient Objects in Clutter: Bringing Salient Object Detection to the Foreground》中文翻译版,作者范登平,该文针对现有显著性物体检测的数据集存在的设计偏差,构建并发布了目前世界上最大的instance level的显著物体检测数据集。
查看、下载、评估请访问:https://mmcheng.net/socbenchmark/
(关注“我爱计算机视觉”公众号,一个有价值有深度的公众号~)
我们针对显著性物体检测(SOD)模型提出了一种综合评估方案。 我们的分析确定了现有SOD数据集存在着严重设计偏差—— 它们假设每个图像在低杂乱环境中包含至少一个明显突出的显著对象。 在现有数据集上进行评估时设计偏差会导致最先进的SOD模型展现出饱和的高性能。然而,当应用于现实世界的日常场景时,这些模型仍然远远不能令人满意。 根据我们对显著性数据集的分析,首先确定了一个全面和平衡的数据集应该满足的7个关键点。 然后,我们提出一个新的高质量数据集并更新了之前的显著性基准测试。 特别地,我们的SOC(杂乱环境下的显着对象)数据集包含了来自日常物体类别的显著和非显著物体的图像。 除了物体类别的标注之外,每个显著图像都伴随着能够反映现实世界场景中识别挑战性的相关属性。 最后,我们在数据集上对各种方法进行基于属性的性能评估。
Keywords:显著性物体检测 显著性基准测试 数据集 属性
1 简介
本文主要分析了显著性物体检测(SOD)的任务。 视觉显著性旨在模仿人类视觉系统选择视觉场景的某个子集的能力。 而SOD则侧重于检测场景中吸引最多注意力的物体,然后逐像素地提取物体的轮廓。 SOD的优点在于它在许多计算机视觉任务中均有广泛的应用,包括:视觉跟踪 [4],图像检索[14,16] ,计算机图形学[9] ,内容感知的图像裁剪[45]和弱监督语义分割[18,39,40]。
本文的工作主要受到两个观察的启发。 首先,现有的SOD数据集 [2,5,10,11,23,26,29,32,43,44]在数据收集过程或数据质量方面存在缺陷。 具体而言,大多数数据集假设图像包含至少一个显著物体,因此它们丢弃了不包含显著物体的图像。 我们将此称为 数据选择偏差。 此外,现有数据集主要包含具有单个物体的图像或处于低杂乱环境中的多个物体(通常是人)。 这些数据集不能充分反映现实世界中图像的复杂性,在现实世界中,场景通常包含多个杂乱的物体。 这样导致的结果便是在现有数据集上训练的表现最佳的模型几乎已经可以使性能达到饱和(例如,在大多数数据集上,F-measure> 0.9 )但它们在现实场景上的表现却无法令人满意(例如,Table 3中F-measure< 0.45 )。 这是因为在之前数据集上训练出来的模型更加偏向较为理想的场景,所以一旦它们应用于现实世界中的场景时,其有效性可能会受到极大削弱。 因此,为了解决此问题,有必要构建更接近实际条件的数据集。
其次,在现在的数据集上我们只能分析模型的整体性能,这些数据集都缺乏反映现实场景中所面临的挑战的各种属性。因此,引入这些属性有助于1)更深入地了解SOD问题,2)研究SOD模型的优缺点,3)对于不同的应用来说,从不同的角度客观地评价模型的性能,其评价结果可能是不同的。
考虑到上述两个问题,我们做了2个贡献。 我们的主要贡献是构建了一个新的高质量SOD数据集,将其命名为SOC(Salient Objects in Clutter)。 迄今为止,SOC是最大的实例级SOD数据集,它包含来自80多个常见类别的6,000张图像。 它与现有数据集的不同之处在于三个方面:1)显著物体具有类别注释,可用于诸如弱监督SOD任务之类的新型研究,2)包含非显著图像,使该数据集更接近真实世界场景,并且比现有数据集更具挑战性,3)显著物体具有反映真实世界中面临的特定情况的属性,例如运动造成的模糊,遮挡和杂乱的背景。 因此,我们的SOC数据集缩小了现有数据集与现实世界场景之间的差异,并提供了更合理的基准测试(见 Fig. 1)。
此外,我们针对几种最先进的卷积神经网络(CNN)模型进行了综合评估[8,15,17,23,24,28,31,36,38,48-51] 。 为了评估模型性能,我们引入了三个评估指标来度量检测结果的区域相似性、分割的像素精度以及结果的结构相似性。 此外,我们提供基于属性的性能评估。 这些属性允许我们更深入地理解模型并且进一步指出了 具有潜力的研究方向。 我们相信,该数据集和基准测试会对未来的SOD研究, 特别是对于面向应用的模型开发产生非常大的影响。 整个数据集和分析工具将免费向公众发布。
2 相关工作
在本节中,我们将简要讨论那些现有的、为SOD任务设计的数据集,尤其从标注类型、每个图像的显著物体数量、图像数量和图像质量等方面展开。 我们也将回顾基于卷积神经网络的SOD模型。
2.1 数据集
早期数据集要么局限于图像的数量,要么受限于显著物体的标注质量。 例如,数据集MSRA-A[29] 和MSRA-B[29] 中的显著物体基本是以标定框的形式进行标注。 ASD[1] 和MSRA10K[11] 在每张图像中大多只包含一个显著物体,而SED2[2] 数据集在单张图像中包含两个物体但仅包含100个图像。 为了提高数据集的质量,近年来研究人员开始收集具有相对复杂和杂乱背景具有多个物体的数据集。 这些数据集包括DUT-OMRON[44]、ECSSD[43]、Judd-A[5] 和PASCAL-S[26] 。 与之前的数据集相比,这些数据集在标注质量和图像数量方面得到了改进。 数据集HKU-IS[23],XPIE[41] 和DUTS[37] 通过收集具有多个显著物体的大量逐像素标注图像( Fig. 2 (b))来克服这些缺点。 然而,他们忽略了非显著物体,并且没有提供实例级(Fig. 2(c))的显著物体标注。 除此之外,[19]的研究人员收集了大约6k张简单的背景图像(大多数是纯纹理图像)来表示非显著的场景,但由于真实场景更复杂,因此该数据集不足以反映真实场景。 ILSO[22]数据集包含实例级显著对象标注,但其标注的边界仍较为粗糙,如Fig. 5(a)所示。
总而言之,现有数据集主要集中在具有简单背景的清晰显著物体的图像上。 考虑到现有数据集的上述局限性,需要一个包含具有非显著物体、“户外场景”的纹理以及具有属性的显著物体的更贴近真实场景的数据集以用于该领域的未来研究。 这样的数据集可以帮助研究者深入洞察SOD模型的弱点和优势。
2.2 模型
我们根据任务的数量来对最先进的SOD深度神经网络模型进行分类。
单任务模型的唯一目标是检测图像中的显著物体。 在LEGS[36] 中,局部信息和全局对比度分别由两个不同的深度卷积神经网络捕捉,然后将它们融合以生成显著图。 在文献[51]中,Zhao等人为SOD提出了一个多上下文深度学习框架(MC)。 Li等人[23](MDF)提出使用从深度卷积神经网络中提取多尺度特征来导出显著图。 Li等人[24] 提出了一个深度对比网络(DCL),它不仅考虑了像素信息,还将分割级别的引导融合到网络中。 Lee等人[15](ELD)考虑了从卷积神经网络中提取的高级特征和手工设计的特征。 Liu等人[28](DHS)设计了一个两阶段的网络,其中一个产生了一个粗略的缩减预测图,然后是另一个网络对预测图的细节进行细化并分层和逐步地对预测图进行上采样。 Long等人[30]提出了一种全卷积网络(FCN),该网络使密集像素预测问题的端到端训练变得可行。 RFCN[38]使用了一个重复的全卷积网络将粗糙的预测图作为显著性的先验信息,并以一种逐阶段的方式改进了最后生成的预测图。 DISC[8] 框架被提出用于细粒度图像的显著性计算。 利用两个堆叠的卷积神经网络来分别获得粗糙和细粒度的显著图。 IMC[48] 通过全卷积网络在不同层面上整合了显著性线索。 它是一种可以有效地利用学习到的语义线索和高阶区域统计数据来获得精确边缘的SOD模型。 最近,业内提出了一种具有短连接(DSS)的深层架构[17]。 Hou等人添加了从高级别特征到基于HED [42]架构的低级别特征的连接,并且该架构实现了良好的性能。 NLDF[31] 整合了局部和全局特征,并在标准交叉熵损失中增加了边界损失项以训练端到端网络。 AMU[49]是一个通用的聚合多级卷积特征的框架。 它将粗略的语义和详细的特征映射集成到多个分辨率中。 然后,它自适应地学习如何将每个分辨率的特征图和预测的显著图与组合特征图相结合。 UCF[50]被提出的目的是提高显著性检测的鲁棒性和准确性。 他们在特定的卷积层之后引入了重新形成的丢弃层,以构建一个不确定的内部特征单元集合。 此外,他们在有效的混合上采样方法之后提出了重新计算的丢弃层,以减少解码器网络中反卷积操作的棋盘伪像。
多任务模型目前包括三种方法,DS,WSS和MSR。 DS[25]模型建立了一个多任务的学习方案,该模型被用于探索显著性检测和语义图像分割之间的内在相关性,它们共享全卷积网络层中的信息以生成物体感知的有效特征。 最近,Wang等人[37]提出了一个名为WSS的模型,该模型开发了一种使用图像级标签进行显著性检测的弱监督学习方法。 首先,他们共同训练前景推理网络(FIN)和全卷积网络进行图像分类。 然后,他们使用前景推理网络迭代CRF来加强空间标签一致进而预测显著图。 MSR[22]与多尺度组合聚类和基于MAP的[47]子集优化框架相结合后被用于显著区域检测和显著物体轮廓检测,该模型使用三个已知的具有共享参数的VGG网络流和用于在不同尺度上融合结果的学习注意力模型,使得研究者能够获得良好的预测结果。
我们根据提出的SOC数据集对大量最先进的基于卷积神经网络的模型(见Table 1)进行了基准测试,发现了当前模型存在的问题并指出了未来的研究方向。
3 提出的数据集
在本节中,我们将介绍新的旨在详细反映真实世界场景的具有挑战性的SOC数据集。来自SOC的样例图像如Fig. 1所示。此外,关于SOC的类别和属性的统计分别如 Fig. 4和 Fig. 6所示。基于现有数据集的优点和缺点,我们确定了全面和平衡的数据集应该满足的七个关键方面。
1) 非显著物体的存在。几乎所有的现有SOD数据集都假设图像包含至少一个显著物体并丢弃了不包含显著物体的图像。但是,这种假设是导致数据选择偏差的过于理想化的设定。在真实场景的设定中,图像并不总是包含显著物体[6]。例如,一些无定形的背景图像,如天空,草和纹理根本不包含显着的物体 。非显著物体或背景“元素”可能占据整个场景,因此严重限制了显著物体的可能位置。Xia等人[41]通过判断什么是显著物体和什么不是显著物体,提出了先进的SOD模型,说明非显著物体对推理显著物体至关重要。这表明非显著物体应该和SOD中的显著物体受到同等重视。包含一定数量的非显著物体图像会使得数据集更接近真实场景,同时也使得SOD任务变得更具挑战性。因此,我们将“非显著物体”定义为“没有显著物体的图像或具有“元素”性质的图像。如[6,41]中所述,“元素”类别包括(a)密集分布的相似物体,(b)形状模糊,和(c)没有语义的区域,分别如Fig. 3 (a)- (c)所示。
基于非显著物体的定义,我们从DTD[21]数据集中收集了783个纹理图像。为了丰富多样性,从互联网和其他数据集中收集了2217幅图像,包括极光,天空,人群,商店和许多其他类型的真实场景[26,27,32,35]。 我们相信,纳入足够的非显著物体会为未来的研究工作开辟了一个有希望的方向。
2) 图像的数量和类别。相当数量的图像对于捕捉现实世界场景的多样性和丰富性至关重要。此外,大量的数据可以让SOD模型避免过拟合并增强泛化能力。为此,我们收集了来自80多个类别的6,000张图像,其中包含3,000张带有显著物体的图像和3,000张没有显著物体的图像。我们将数据集分为训练集,验证集和测试集,比例为6:2:2。为了确保公平性,测试集不会发布,而是通过我们的网站提供在线测试。Fig. 4(a)显示了每个类别的显著物体的数量。它表明“人”类别占很大比例,这是合理的,因为人们通常与其他对象一起出现在日常场景中。
3) 显著物体的全局/局部颜色对比。如[26]中所述,术语“显著”与前景和背景的全局/局部对比度有关。因此检查显著物体是否易于检测是非常重要的。对于每个物体,我们分别计算前景和背景的RGB颜色直方图。然后,利用距离来测量两个直方图之间的距离。全局和局部颜色对比度分布分别如Fig. 4(b)和(c)所示。与ILSO相比,我们的SOC中具有低全局颜色对比度和局部颜色对比度的物体占据更大的比例。
4) 显著物体的位置。中心偏差被认为是显著性检测数据集中影响最大的偏差之一[3,20,26]。Fig. 4(d)展示出了一组图像及其叠加图。可以看出,虽然显著的物体位于不同的位置,但是叠加图仍然表明这组图像是存在中心偏置的。以前的基准测试通常采用这种不准确的方式来分析显著物体的位置分布。为了避免这种误导现象,我们绘制了Fig. 4(e)中两个量和的统计情况,其中 和 分别表示物体中心和物体中最远(边缘)点离图像中心有多远。将和除以图像对角线长度的一半以进行归一化,使得。 从这些统计数据中,我们可以观察到数据集中的显著物体不受中心偏差的影响。
5) 显著物体的大小。每个显著物体实例的大小被定义为物体面积占图像总面积的比例 [26]。 如Fig. 4(g)所示,与仅有的实例级ILSO数据集[22]相比,SOC中的显著物体的大小的变化范围更广泛。此外,SOC中的中型物体具有更高的比例。
6) 高质量的显着对象标签。正如[17]中所注意到的,在ECSSD数据集(具有1,000个图像)上的训练允许模型获得比其他数据集(例如,MSRA10K,具有10,000个图像)获得更好的结果。这表明除了规模之外,数据集质量也是一个重要因素。为了获得大量高质量的图像,我们从MSCOCO数据集[27]中随机选择图像,这是一个大型的真实世界数据集,其中的物体用多边形标注(例如,粗略标注)。高质量标注在提高SOD模型的准确性方面也起着关键作用[1]。为此,我们使用逐像素的标注来重新标记数据集。类似于著名的SOD任务导向基准测试数据集[1,2,11,19,22,23,29,32,37,41,43],我们没有使用眼动仪设备。我们采取了多个步骤来提供高质量的注释。这些步骤包括两个阶段:(i)我们要求5个观众使用标定框标记他们认为在每个图像中较为显著的物体。(ii)保留大多数()观众在显著性上意见相同的物体(标定框的IOU)。在第一阶段之后,我们有3,000个用标定框标注的显著物体图像。在第二阶段,我们根据标定框的提示进一步手工标记显著物体的逐像素轮廓。请注意,我们有10名志愿者参与了整个步骤以交叉检查标注的质量。 最后,我们保留了3,000张具有高质量的实例级标记显著物体的图像。如Fig. 5(b,d)所示,我们的物体边界的标注是精确、清晰和平滑的。在标注过程中,我们还添加了一些未在MSCOCO数据集中标记的新类别(例如,计算机显示器,帽子,枕头)[27]
7) 具有属性的显着对象。在数据集中图像的属性信息有助于研究者客观评估模型在不同类型的参数上的性能。它还允许对模型失败情况的检查。为此,我们定义了一组属性来表示真实场景中面临的特定情况,例如运动模糊,遮挡和杂乱的背景(Table 2中总结)。请注意,因为这些属性不是独占的,所以一个图像可以使用多个属性进行标注,。
受[33]的启发,如Fig. 6左边所示,我们展现了数据集图片属性的分布情况。SO类型具有最大比例是因为精确的实例级(例如,Fig. 2中的网球拍)的标注。 因为现实世界的场景由不同视觉特色的材料组成,所以HO类型占很大比例。MB 类型在视频帧中比静态图像更常见,但有时也会出现在静态图像中。因此,MB类型在我们的数据集中占相对较小的比例。由于真实图像通常包含多个属性,为此我们在Fig. 6右侧根据出现的频率显示了属性之间的主要依赖关系。例如,包含许多异构物体的场景可能具有大量彼此阻挡并形成复杂空间结构的物体。因此,HO类型与OC类型,OV类型和SO 类型具有强依赖性。
4 基准测试模型
在本节中,我们在SOC数据集上呈现了16个SOD模型的评估结果。几乎所有基于卷积神经网络的具有代表性的SOD模型都进行了评估。但是,由于某些模型的代码不公开,因此我们对此类模型不予考虑。此外,大多数模型都没有针对非显著物体检测进行优化。因此,公平起见,我们只使用SOC数据集的测试集来评估SOD模型。我们在Sec. 4.1中描述了评估指标。 SOC数据集的整体模型性能见Sec. 4.2和Table 3中,而针对各个属性的性能评估结果(例如,光照变化属性上的性能表现)见Sec. 4.3和Table 4中。我们公开了评估脚本并且在网站上会提供在线评估测试。
4.1 评估指标
在强监督评估框架中,给定由SOD模型生成的预测图及真值掩膜,我们寄希望于评估指标告诉我们究竟是哪一种模型能够生成最佳结果。在这里,我们在SOC数据集上使用三种不同的评估指标来评估SOD模型。
逐像素精度 。区域相似性评估方法不考虑真负类的显著性分布。作为补补充,我们也计算和 之间的归一化([0,1])后的平均绝对误差(MAE),将其定义为:
其中W和H分别是图像的宽度和高度。
区域相似性 。为了测量两张图片的各区域相匹配的程度,我们使用 ,该方法定义如下:
结构相似性 。 Fan等人[13]提出的同时考虑区域和物体两个层次上的相似性来评估检测结果的结构相似性。因此,我们也使用来评估和 之间的结构相似性。需要特别注意的是我们对接下来整体性能表现的评估和分析是基于进行的。
4.2 指标统计
单任务:对于单任务模型,在整个SOC数据集上性能表现(Table 3中的)最佳的模型是NLDF[31],其次是RFCN[38]。MDF[23] 和AMU[49]使用边缘线索来提升显著图提取的准确度但却未能达到理想的目标。为了使用图像的局部区域信息,MC[51],MDF[23],ELD[15]和DISC[8]尝试使用超像素方法将图像分割成数个区域,然后从这些区域中提取特征,但这是较为复杂而耗时的。为了进一步提高性能,UCF[50],DSS[17],NLDF[31]和AMU[49]利用全卷积网络来改善SOD模型的性能(Table 4中的(Ssal))。其他一些方法诸如DCL[24]和IMC[48]则尝试将超像素与全卷积网络结合起来构建一个强大的模型。此外,RFCN [38]将包括边缘和超像素的两个相关线索组合到全卷积网络中进而在整个数据集上获得了良好的性能(, )。
多任务:与上述模型不同,MSR[22]使用三个密切相关的步骤去检测实例级显著物体:估计显著图,检测显著物体轮廓,以及识别显著物体的实例。它创建了一个多尺度显著性检测网络,可以实现最高性能()。其他两个多任务模型DS[25]和WSS[37]同时利用分割和分类结果生成显著图从而获得适度的性能提升。值得一提的是,尽管WSS是一种弱监督的多任务模型,但它仍然可以实现与其他全监督的单任务模型相当的性能。因此,基于弱监督和多任务的模型可能是未来的研究方向。
4.3 基于属性的评估
如Sec. 3和Table 2所示,我们为显著图像分配了属性。每个属性代表现实世界场景的显著性检测中存在的挑战性问题。这些属性允许我们识别具有主导性特征(例如,杂乱环境的存在)的图像集合,它们对于SOD模型的性能解释以及如何将SOD与面向应用的任务相关联是非常重要的。例如,sketch2photo应用[7]更喜欢在大物体上具有良好性能的模型,而这可以通过基于属性的性能评估方法来辨别。
结果 在Table 4中,我们显示了各种SOD模型在特定属性表征的数据集子集上的性能。由于篇幅限制,在以下部分中,我们仅选择一些代表性属性进行进一步分析。更多细节可以在补充材料中找到。
大物体(BO) 当物体与相机距离很近时,经常会出现大物体(BO)场景,因此在图片中可以清楚地看到微小的文字或图案。然而在这种情况下,倾向于关注局部信息的模型将被严重误导,导致较大的性能损失(例如,DSS[17]损失了28.9%的性能,MC [51]损失了20.8%的性能以及RFCN[38]损失了23.8%的性能)。然而,IMC[48]模型的性能表现略微上升了3.2%。在深入了解该模型的流程后,我们得出了一个合理的解释,即IMC使用粗略预测图来表达语义,并利用过度分割的图像来补充结构信息,从而在BO类型图像上获得了令人满意的结果。但是,过度分割的图像无法弥补缺失的细节,因此会导致此类模型在SO类型图像上的性能下降4.6%。
小物体(SO)对于所有SOD模型来说,识别SO类型都是一个较为困难的问题。在此类图像上所有模型都遇到了性能下降(例如,从DSS[17]的下降0.3%到LEGS[36]的下降5.6%),因为在卷积神经网络的下采样期间很容易忽视小物体。 DSS[17]是唯一一个在SO类型图像上性能仅有略微下降的模型,而它在BO类型图像上的性能损失最大(28.9%)。 MDF 使用多尺度超像素图像作为网络的输入,因此它能够很好地保留了小物体的细节。然而,由于超像素的大小有限,MDF[23]仍无法有效地感知全局语义,导致在BO类型图像上出现大的识别失败概率。
遮挡(OC)在遮挡场景中,物体被部分遮挡。因此,SOD模型需要捕获全局语义以弥补物体信息的不完整。为此,DS[25]和AMU[49]利用下采样过程中的多尺度特征生成融合显著图; UCF[50]提出了一种不确定的学习机制来学习不确定的卷积特征。所有这些方法都试图获得包含全局和局部特征的显著图。不出所料,这些方法在OC类型上取得了相当不错的效果。基于上述分析,我们还发现这三个模型在需要更多语义信息的场景上的性能表现非常好,如AC,OV和CL类型。
异构物体(HO)类型场景在现实生活中很常见。在HO类型的图像上不同模型的性能分别比其在总数据集上的平均性能有所提升,基本处于3.9 % 至9.7 %之间的波动上。 我们怀疑这是因为HO类型占总数据集的比例较大,客观上使SOD模型更适合这个属性。 这一结果在某种程度上证实了我们在Fig. 6中的统计数据。
5 讨论和结论
据我们所知,这项工作提出了目前最大尺度的针对基于卷积神经网络的显著性物体检测模型的性能评估方案。我们的分析指出了现有SOD数据集中存在的严重的数据选择偏差。这种设计偏差导致最先进的SOD算法在现有数据集上进行评估时几乎达到了几近饱和的高性能表现,但在应用于现实世界日常场景时仍然远远不能令人满意。基于我们的分析,我们首先确定了全面和平衡的数据集应该满足的7 个重要方面。我们首先构建了高质量的SOD数据集SOC。它包含来自日常生活的自然环境中的更接近真实环境的显著物体图像。SOC数据集将随着时间的推移而发展和增长,并将在多个方向上拓宽研究的可行性,例如,显著物体的感数[46],实例级显著性物体检测[22],基于弱监督的显着对象检测[37]等等。 然后,为了更深入地了解SOD问题,研究SOD算法的优缺点,并在不同的观点和要求下客观地评估模型性能,我们提出了一组属性(例如,外观变化)。最后,我们在SOC数据集上对现有SOD模型进行了基于属性的性能评估,评估的结果为未来的模型开发和模型比较开辟了充满希望的新方向。
致谢
本研究得到了国家自然科学基金(NO.61620106008,61572264),国家青年人才支持计划,天津市杰出青年学者自然科学基金(NO.17JCJQJC43700),华为创新研究计划的支持。
参考文献
参考文献较多,不再一一列出。
本文包含参考文献的完整版参见本文的pdf,在“我爱计算机视觉”微信公众号后台回复“soc”,即可收到下载地址。
点击阅读原文可以在www.52cv.net查看本文。
欢迎转发,让更多人看到。
更多精彩推荐:
视频语义显著实例分割数据集SESIV
Kaggle新上比赛:空客公司卫星图像船体分割
华科新开源文本识别算法:ASTER与DeepLesion数据集百度云下载
ImageNet2012数据集完整版百度云下载
快准狠!Intel论文揭示自家车牌识别算法:LPRNet
这篇关于杂乱环境下的显著性物体: 将显著性物体检测推向新高度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!