用于精确对象检测和语义分割的丰富特征层次翻译

这是学渣第一次正式发布博客,算是在学习卷积神经网络和图像识别的之路上的笔记。本人翻译的这篇为R-CNN论文,可能是自己学习能力不足,翻译出来的文章依然有些看不懂,可能是基础不好或者英语能力不行。虽然这篇论文已经有很多人翻译过,且翻译的比我好,但是为了锻炼自己的英语翻译和论文学习能力,这也是第一篇我翻译的外文文献。有不足的地方请指出,以后会继续努力。
原文标题为:Rich feature hierarchies for accurate object detection and semantic segmentation
原文链接:链接: https://pan.baidu.com/s/1sAEZ0M41SWIFpqP6XNCi9Q 提取码: qbsg
正文如下

用于精确对象检测和语义分割的丰富特征层次

摘要

在权威的PASCAL VOC数据集测试上,目标检测效果在近几年已到达平稳效果。达到最好效果的方法是典型地将多种低等级的图片特征和高等级的语义内容结合起来的复杂的总系统。在这篇论文中,我们提出了一个简单可扩展的检测算法,与之前的VOC2012最好的结果相比,Map达到了53.3%,能提高mAP(平均精度均值)30%多。我们的方法结合了两个关键的观点:(1)一个可以应用大型CNNs的自下而上的候选区域来定位和分割目标。(2)当已标签的训练数据缺乏时,对辅助任务监督预训练,再区域特异性微调,产生了明显的性能提升。因为我们结合了候选区域和CNNs,我们称我们的方法为R-CNN:具有CNN特征的区域。

1.引言

特征很重要。在过去的十年里,各种视觉识别任务的进步是基于SIFT和HOG的使用。但是如果我们看权威视觉识别任务的效果,PASCAL VOC对象检测,逐渐公认在2010到2012年间进展已变慢,通过建立一整套系统和微小变化成功的方法来获得小改进。

SIFT和HOG是块方向的直方图,一个我们能大致联系在V1(在在灵长类动物视觉通道的第一皮层区域)中的复杂元素的代表。但我们也知道识别会发生在不同的下游阶段,这暗示计算特征会有层次化和多阶段的处理,这些过程对于视觉识别更为有用。

Fukushima的neocognitron,一种受生物启发具有层次和平移不变的模型来模式识别,是这方面较早的尝试。然而,神经认知机缺少一种监督训练算法。建立在Rumelhart等eCun等提出的一种扩展即神经认知机,即通过反向传播的随机梯度下降法对训练卷积神经网络非常有效。

CNNs在1990年代被广泛使用,但由于支持向量机的发展而退出舞台。2012年,Krizhevsky等在ImageNet大规模视觉识别挑战种取得了相当高的图像分类准确率而重新燃起了对CNNs的兴趣。他们的成功来源于在1200000的已标记的图片中训练了一个大型CNNs并且对LeCUN的CNN进行了一些改造(比如ReLU和Dropout Regularization)。

ImageNet结果的意义在ILSVRC 2012研讨会上大力讨论。中心问题可以归纳如下:在ImageNet上的CNN分类结果多少程度地能推广到在PASCAL VOC挑战上目标检测结果上。

我们通过填补图像分类和目标检测之间的空白来回答这个问题。这篇论文是第一篇说明CNN与基于简单HOG-like特征建立地系统相比,可以显著提高PASCAL VOC上地目标检测性能。为了达到这个结果,我们关注了两个问题:用一个深度网络定位目标和在少数量的标记检测数据集上训练一个大型模型。

不像图像分类,检测需要在一张图片中定位(可能许多)物体。一种方法是把框位置作为一个回归问题。然而,与我们同时完成的Szegedy等人的工作,表示这个方案可能在实践种表现不好(他们报告了在2007VOC上Map达到了30.5%,相比于用我们的方法达到了58.5%)。另一个可选择的方法是构建滑动窗口检测器。CNNs已经使用这个方法至少20年了,通常在限制物体分类上,如人脸和行人。为了保持高空间分辨率,这些CNNs通常只有2个卷积和池化层。我们也考虑采用滑动窗口方法。然而,具有五层卷积层的单元在输入的图像中有很大的感受野(195195像素)和步长(3232像素),通过滑动窗口模式的精确定位成为开放的技术挑战,提高了我们的网络。

另外,我们通过识别使用区域样式解决了CNN定位问题,并在目标检测和语义分割方面都成功。在测试阶段,我们的方法造成了大约2000个输入图像的独立类别的候选区域,从每个区域中使用CNN提取了固定长度的特征向量,然后用类别特定的线性SVM分类每个区域。我们使用了一种简单的技术(图像仿射变换)来计算每个候选区域固定大小的CNN输入,无论区域的形状如何。图1呈现了我们方法的概述,强调了我们的一些结果。因为我们的系统用CNN结合候选区域,我们将这个方法命为:R-CNN,具有CNN特征的区域。
在这里插入图片描述图1:目标检测系统概览 我们的系统(1)输入图片(2)提取大约2000个自下而上的候选区域(3)使用大型卷积神经网络计算每个候选区域的特征(4)使用特定类别的线性SVM来划分每个区域。R-CNN在PASCAL VOC 2010上达到了53.7%的Map。通过对比,使用相同候选区域,但方法为空间金字塔和视觉词袋的Map为35.1%。主流的可变部分模型的结果为33.4%。

检测中第二个面临的挑战是标记数据的缺乏和数量目前不足以训练大型CNN。这个问题的常规解决方法是使用无监督预训练,然后有监督微调。这篇论文的第二个主要贡献是在数据缺乏时,在大型辅助数据集(ILSVRC)上监督预训练,学习大型CNN是很有效果的模型。在我们的实验中,检测微调能提高Map8个百分点。微调之后,我们的系统在2010VOC上map值为54%,而高度调整,基于HOG的DPM为33%。Donahue等人同时期的工作表示Krizhevsky的CNN可以用来(没有微调)作为一个黑盒特征提取器,在包括场景分类、细粒度子分类和适应域等的许多识别任务中有很好的效果。

我们的系统也很高效。唯一的特定类别计算是相当小的矩阵向量乘积和贪婪非极大值抑制。这个计算特性来自所有类别共享的特征,比之前使用的区域特征少了两个数量级的维度。

明白我们方法的失败模式对于进一步提高是很重要的。我们用Hoiem的检测分析工具得出了结果。作为这个分析的直接结果,我们证明了一种简单的边框回归方法能有效减少主要的误差模式——定位错误。

在发展技术细节之前,我们指出由于R-CNN在区域上运行,它扩展到语义分割上是很自然的。只要经过小的修改,我们也能在PASCAL VOC分割任务上达到VOC2011测试集47.9%的平均分割准确率竞赛的结果。

2.R-CNN目标检测

我们的目标检测系统包含三个模块。第一个产生类别无关的候选区域。这些提议定义了我们检测器的候选检测集。第二个模块是从每个区域中提取固定长度的特征向量的大型卷积神经网络。第三个模块是特定类别的新型SVM集。在这一节,我们展现每一个模块的设计思想,描述它们测试时使用情况,参数如何训练的细节和在PASCAL VOC2010-12的结果。

2.1 模块设计

候选区域。最近各种论文提供了生成无类别候选区域方法。例如:物体性,选择性搜索,类别无关物体候选,约束参数最小化(CMPC),多尺度联合分组和Ciresan等人通过在规则空间方块上使用CNN发现有丝分裂细胞,这是候选区域的特殊情况。由于R-CNN对于特别的候选区域方法是不可知的,我们使用选择性搜索来方便与之前的检测工作对照比较。

特征提取。我们使用Krizhevsky创建的CNNcaffe框架从每个候选区域中提取4096个维度的特征向量。特征通过减去像素平均值的分辨率的RGB图像通过五个卷积层和两个全连接层向前传播来计算。

为了计算候选区域的特征,我们必须首先将区域中的图像数据转变为与CNN兼容的格式(它的结构需要输入为固定227*227大小)。有许多任意形状区域的转变方法,我们选择最简单的。不管候选区域的大小或者宽高比如,我们将密集边框里的所有像素转变为所需要的大小。在转变之前,我们扩张了紧边框使得在转变后的尺寸实际上有p像素的转变的图像内容围绕在原始边框。图2显示了一个转化训练区域的随机抽样。增加的材料讨论了转变的的可选择性。
在这里插入图片描述
图2:来自VOC2007训练的转变训练样本

2.2 测试时的检测

在测试阶段,我们在测试图像上使用选择性搜索来提取大约2000个候选区域(我们在所有实验中使用选择性搜索的“快速模式”)。我们转变了每个区域,通过CNN前向传播来获得所需要层的特征。然后对于每一个类别,我们对使用SVM训练类别提取出来的特征向量评分。对给出所有图像中已评分的区域,我们使用贪婪非极大值抑制(对于每个无关分类),如果其与得分较高的区域的重叠部分(IoU)高于学习的阈值,则拒绝这个区域。

运行时分析。两个特性使检测效率高。首先,所有CNN参数在所有类别中共享。第二,CNN计算得到的特征向量与其他普通的方法(比如视觉词袋编码的空间金字塔)相比是低维的。比如,UVA检测系统中使用的特征比我们的(360k比4k维度)两个数量级。

这种共享的结果是所有类别计算候选区域和特征(GPU上13s每图片或者CPU上53s每图片)的时间是分摊的。唯一的特定类别的计算是特征和SVM权重和非极大值抑制之间的点积。实际上,图片上所有的点积被整合为单个矩阵和矩阵间的乘积。特征矩阵通常为20004096,SVM权重矩阵为4096N,N代表类别数目。
这个分析说明R-CNN可以不用求助例如哈希等估算技术来测量上千个物体分类。即使有100000种类别,矩阵乘法运算结果在现代多核CPU上运行也只要10s.高效率不仅体现在使用候选区域和共享特征的结果上。UVA系统由于它高维度的特征,当需要134GB内存存储100K线性预测器时,与我们只有1.5GB的低维度特征相比,低了两个数量级。

Dean等人在最近的可扩展的检测中使用DPMs和哈希的工作与R-CNN相比也是有趣的。他们报道,在介绍10000种错误分类中,在VOC2007上每5分钟一张图片运行的Map值大约为16%。通过我们的方法,10000个检测器可以在CPU上运行一分钟,因为没有近似值,Map值会停留在59%(3.2部分)。

2.3 训练

监督预训练。我们在有图像级注释(没有边框标记)的大型辅助数据集(ILSVRC2012)上有区别地预训练CNN。预训练使用开源地Caffe CNN库来运行。简而言之,我们的CNN几乎与Krizhevsky等人的表现符合,并获得了比ILSVRC2012数据集高2.2百分点的top-1误差率。这个差别主要来自训练过程的简化。
特定域的微调。为了使CNN使用于新的检测任务和领域(转换VOC窗口),我们继续使用VOC的转变候选区域进行随机梯度下降算法来训练CNN参数。除了用随机初始化的(N + 1)路分类层(其中N是类别数,加1为背景)替换CNN的ImageNet特有的1000路分类层,CNN架构不变。我们将所有候选区域与检测框真值IoU ≥0.5的区域作为正样本,其余的作为负样本。我们以学习率为0.001(1/10的初始预训练率)开始SGD,这样可以不破坏初始进行微调来取得进步。在每个SGD迭代中,我们一致抽取32个正窗口(在所有类别中)和96个负样本来构建218大小的小批量。我们抽样时偏向于正样本,因为它们于负样本相比较为少。
目标类别分类器。检测车可考虑训练一个二分类器。紧紧围绕汽车周围的图像区域应该是正样本。相似的,没有汽车的部分为负样本。如何标记一部分与汽车重叠的区域不怎么清楚。我们用IOU重叠阈值解决了这个问题,低于这个阈值的区域为负样本。通过在验证集上基于{0,0.1,…,0.5}的网格搜索得到的阈值为0.3。我们发现仔细选择这个阈值是很重要的。选择阈值为0.5,map减少5点。正样本在每个类别的真值边框中定义的很简单。

一旦提取了特征和应用了训练的标签,我们对每个类别进行线性SVM最优化。由于训练数据太大内存不足,我们采用标准难分样本挖掘方法。难分样本挖掘可以快速收敛,实际上,所有图像一次通过后,map就停止增长。

在附加材料中,我们讨论了在对SVM训练中微调,正负样本定义不同。我们也讨论了为什么训练检测分类器是必须的,而不是简单的在已微调的CNN中的最后一层简单地使用输出。

2.4 PASCAL VOC2010-12上的结果

在PASCAL VOC上的最好的实验上,我们验证了VOC2007数据集(3.2部分)所有设计和超参数。在VOC2010-12数据集最后的结果中,我们微调了VOC2012训练上的CNN,优化了VOC2012训练集上的SVM检测。我们把特使结果提交给评估服务器。对于两种主要算法变体(带有和不带有检测框回归)的每一种,都只提交一次。

表1展示了在VOC2010上的完整结果。我们的方法与四种优秀的方法相比,包括SegDPM(DPM检测器和语义分割系统的输出相结合,使用另外的inter检测器内容和图像分类器重打分)。最恰当的对比是与Uijlings等人的UVA系统。因为我们的系统使用相同的候选区域算法。为了分类区域,他们的方法建立了四级空间金字塔,并用密集采集的SIFT(扩展对立SIFT和RGB-SIFT的描述器),每个向量4000词codebook算法的量子化。通过柱形图交集SVM核来分类。与他们的多特征非线性SVM核方法相比,我们的map从35.1%涨到53.7%,获得了巨大进展,同时也快了很多。我们的方法在VOC2011/12测试上达到了相似的结果(53.3%map)。

表1:VOC2010数据集的平均检测百分比。R-CNN与UVA、Regionlets相比最合适,因为所有的方法使用选择性搜索候选区域。边框回归在3.4节描述。在发表时,SegDPM是在PASCAL VOC 选手积分榜上最佳者。DPM和SegDPM使用的是不是其他方法使用的内容重积分。

3 可视化,消融和错误方式

3.1可视化学习的特征

第一层过滤器可直接可视化且容易理解。他们榨取定向的边缘和对立的颜色。理解接下来的层更有挑战。Zelier和Fergus展示了一种视觉上吸引的解卷积方法。我们提出了一个简单(和互补)的非参数方法,直接展示了网络学习的内容。

这个方法在网络中挑选了一个特别的单元(特征),如果是它自己的目标检测器则可使用。我们计算了在大量留存候选区域(大约一千万)的单元激活,将区域从最高到最低的激活值排列,执行非极大值抑制,然后显示最高得分的区域。我们的方法让选择的单元通过精确显示哪个输入激活来“让它自己说话”。我们为了能看到不同的视觉方法避免平均,明白单元计算的不变性。

我们能见到来自池化层第五层的单元,这是网络第五层和最后一层卷积层的最大池化输出。池化层的特征图是6 × 6 × 256 = 9216维度。忽视边界的影响,每一个池化层单元在227×227的原始输入中有195×195的感受野。一个中央的池化单元有几乎全局的视野,在边缘旁边则有小的缩短的视野。

图3的每一行显示了我们在VOC2007训练集上CNN微调的池化单元的前16个激活。256个功能独特的单元中有6个可见(附录中包含的更多)。选择的这些单元显示了网络学习的有代表性的样本。在第二行,我们看到了在狗脸和点列上刺激的单元。第三行对应的单元式红色的二进制大对象检测器。还有适合人脸和类似内容三角构架的窗口的检测器。网络好像学习了将少量调整类别特征和形状、纹理、颜色、材料属性分散代表的表现。后面的全连接层有能力将这些富有特征组成大量结构。
在这里插入图片描述
图3:六个池化单元的前几个区域。感受野和激活值用白色绘制。一些单元与内容对齐,如第一行的人和第四行的文本。其它单元捕捉到了纹理和材料特性,如第2行的点阵列和第6行的镜面反射。

3.2消融学习

没有微调的逐层性能分析。为了了解对检测性能哪一层比较重要,我们分析了近三年在VOC2007数据集上每个CNN的结果。3.1节简单地描述了池化层。最后两层在下面总结。

第六层全连接第五池化层。为了计算特征,它与第五池化层特征图(重组为9216维度的向量)的4096×9216权重向量相乘,然后添加偏置向量。这个中间的向量式分量半波整流(x ← max(0, x))。

第七层全连接层是网络的最后一层。这是通过计算全连接层第六层的特征乘4096 × 4096权重矩阵的结果来实现的,并类似地添加了偏置向量和应用半波整流。

我们先来看在PASCAL上CNN没有微调的结果,所有CNN参数只在ILSVRC上预训练。逐层(表2的1-3行)地分析性能可知fc7的特征总体比fc6的特征要差。这意味着29%,或者168000000的CNN的参数可以移除而不降低map值。更令人惊讶的是fc7和fc6的都移除能产生相当不错的结果,即使第五层池化层的特征值计算只使用了6%的CNN参数。CNN大部分代表的能力来自它的卷积层,而不是来自更大全连接层。这个发现说明了计算密集特征图的潜在用途,从HOG的意义上来说,只有CNN卷积层来使用任意大小的图像。这个表现能增强有滑动窗口检测器的实验效果,包括在池化层特征上的DPM。
在这里插入图片描述
表2:VOC2007数据集的检测平均精确度。1-3行显示了没有微调的R-CNN性能。4-6行显示了在ILSVRC2012上的CNN预训练和在VOC2007训练集上微调的结果。第7行包含了一个简单的边框回归方案,减少了定位误差(3.4节)。8-10行显示了作为强力集贤的DPM方法。当接下来的两个使用不同特征学习方法补充或代替HOG,第一个只能HOG使用。

微调的逐层性能分析。我们现在看在VOC2007训练集上CNN微调参数后的结果。进步是很明显的(表格2第4-6行):微调使map值增加了8个百分点变为54.2%。微调提高的程度比fc6、fc7和pool5还有大,这说明从ImageNet学习的特征是总体的,大多数的进步是从在它们之上学习特定域非线性分类器所获得的。
与最近的特征学习方法相比。相对地,几乎没有特征学习方法在PASCAL VOC检测上舱室。我们看了两个建立在可变部件模型中的方法。也包括标准基于HOG的DPM结果作为参考。

作为第一个DPM特征学习方法,DPM ST使用“草图标记”概率直方图扩大了HOG特征。直观地,草图标记通过图片块中心的轮廓紧密分布。草图标记在每个像素上通过随机森林计算,经过训练将35×35像素块分类成150个草图标记或背景。
第二个方法,DPM HSC,使用稀疏码(HSC)代替直方图。为了计算HSC,每个像素通过100个7 × 7像素(灰度级)原子的字典求解稀疏码激活。激活的结果可以在三个方面(全部和两个半波)上调整,空间上池化,l2单元正常化,然后功率变换。

所有R-CNN的变体都强力的胜过了三个DPM基线(表2第8-10行),其中有两个使用特征学习。与最近的值使用HOG特征的DPM版本相比,我们的map高了20多百分点:54.2%比33.7%,相对提高61%。HOG和草图标记的结合比单单只有HOG的map值提高了2.5点,而HSC比HOG提高了4个百分点(当和它们私有的DPM本质上比较——都使用了非公有DPM的是西安,在开源版本上运行不佳)。这些方法分别达到了map值29.1%和34.3%。

3.3检测错误分析

为了展现我们方法的错误方式,我们应用了来自Hoiem等人优秀的检测分析工具,明白了如何微调改变它们,与DPM比较来知道我们错误类型。一个完整分析工具的总结超过了这篇论文的范围。我们鼓励读者去翻阅去理解一些很好的细节(比如正常化的AP)。由于分析最能在关联图中体现,我们在图4和5中说明中进行了讨论。
在这里插入图片描述
图4:最多的假阳性类型分布。每个图展示了FP类型的演示分布,更多的FP按照降序排序。每个FP分成1-4种类型:Loc(定位差,一种IOU与在0.1到0.5之间或重复的正确分类重叠的检测);Sim-与相似类别混淆;Oth-不相似目标分类的混淆;BG-背景上激励的一种FP。与DPM相比,我们的错误定位的错误结果显著增加,而不是背景或其他物体分类的混淆,这说明CNN的特征比HOG更有判别力。Loc可能是由于我们自底向上使用候选区域和从整个图像分类CNN预训练中学习到的位置不变性。第三列显示了我们简单的边框回归方法修正了许多定位错误。
在这里插入图片描述
图5:对目标特征的敏感度。每个图显示了从最高到最低的执行子集六个不同物体特征(闭塞,截短,边框区域,纵横比,视点,局部可视性)的平均正常化AP。我们展示了我们的方法(R-CNN)有和没有微调和边框回归以及DPM voc-release5的图。总的来说,微调没有减少敏感度(最大和最小的不同),但是大体上提高了几乎所有特征最高和最低的执行子集。这说明微调确实不只是简单地提高纵横比和边框区域地最低执行子集的性能,这基于我们转变网络输入的可能的设想。相反,微调提高了所有特征,包括闭塞,截短,视点,局部可视性的鲁棒性。

3.4 边框回归

基于错误分析,我们用一个简单的方法减少定位误差。受DPM中边框回归的启发,我们训练了一个线性回归模型来预测新的在pool5特征上选择性搜索候选区域的检测器窗口。所有的细节在附录中给出。表1,2和图4展示了这个简单的方法修正了大量错误定位检测,map增强了3到4点。

4语义分割

区域分类是语义分割的标准技术,允许我们在PASCAL VOC分割挑战中简单地运用R-CNN。为了促进与最近领先的语义分割系统相比,我们使用他们开源框架工作。O2P使用CPMC产生每张图片150个候选区域,对于每个类别,使用支持向量回归。他们方法的高性能源于CPMC区域的质量和强大的二阶逻辑多特征类型的池化(增强了SIFT和LBP的变体)。我们也说明Farabe等人最近证明的在许多密集场景标记数据集(不包括PASCAL)使用作为多刻度每像素分类器的好结果。

我们使用并扩展PASCAL分割训练集到包括Hariharan等人的有用的额外注释。设计讨论和超参数在VOC2011验证集上交叉验证。最后只需要一次评估测试结果。

分割的CNN特征。我们评价了CPMC区域上计算特征的三种方案,所有都是从转变围绕227×227区域的矩形窗口开始。第一个方案忽视了区域的形状,直接在转变得窗口上计算CNN特征,和我们为检测时做的一样。然而,这些特征忽略了非矩形区域。当有非常小的重叠时,两个区域可能会有相似的边框。因此,第二个方案计算量只有在区域的前景掩饰下计算CNN特征。我们用平均输入代替背景,所以在减去平均值后背景区域为0。第三个方案简单地连接全部和前景特征;我们的实验验证了他们的互补性。
在这里插入图片描述
表3:VOC2011验证集上的平均分割准确率。第一列展示O2P,2-7在ILSVRC2012上使用我们的CNN预训练。
VOC2011上的结果。表3展示了与O2p相比的在VOC2011验证集的总结。在每个特征计算方案中,fc6层通常比fc7更好,接下来的讨论是关于fc6特征的。Fg方案略胜与full,这说明隐藏的区域形状提供了更强的信号,与我们的直觉相符。然而,full+fg到达了47.9%的平均准确率,通过4.2%范围我们最好的结果(略优于O2P),这说明全部特征提供的内容比fg特征更能提供有用的信息。很明显,在单核上,在我们full+fg特征上训练20次SVR花了一个小时,而在O2P特征上的训练需要10个小时以上。

表4我们展现了在VOC2011测试集上的结果,与我们最好性能的方法相比,fc6 (full+fg)不利于两个强力的基线。我们的方法在21个类别中有11个达到了最高的分割准确率,最高的整体准确率为47.9%,跨类别平均(但是可能与任何合理的误差范围内的O2P结果有关。微调仍然可以使效果达到更好。
在这里插入图片描述
表4:VOC2011测试上的分割准确率。我们与两个强力的基线相比:R&P和O2P方法。没有任何微调,我们的CNN达到了最佳的分割性能,比R&P好,与O2P大体上差不多。

5结论

近几年,物体检测性能已经停止。最好的性能系统是复杂的整体,将多个低级图像特征和物体检测场景识别的高级语境结合。这篇论文展示了一个简单可升级的目标检测算法,与在PASCAL VOC2012上之前最好的结果相比,相对地增长了30%。

我通过两方面达到这样的性能。第一在自底向上的候选区域中为了定位和分范式割物体使用大型卷积神经网络。第二,当标记的训练数据稀少时使用范式。我们展示了监督下的预训练网络是非常高效的,数据稀少时微调目标检测任务的网络。我们推测监督预训练/特定域微调对于大量的数据缺乏的视觉问题是很有效的。

总结下来,我们通过结合计算机视觉和深度学习(自底向上的候选区域和卷积神经网络)达到这些结果是很有意义的。而不是敌对的科学研究路线,这两个是自然的和不可避免的伙伴。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值