摘要:

利用一般的深卷积神经网络(DCNN)设计了一种细粒度的图像分类器。我们从以下两个方面提高了DCNN模型的细粒度图像分类精度。首先,为了更好地建模包含在给定训练数据集中的细粒度图像类的h级分层标签结构,我们引入h完全连接(Fc)层来代替给定DCNN模型的顶层fc层,并用级联Softmax损失对其进行训练。
其次,我们提出了一种新的损失函数,即广义大边界损失(GLM)损失,使给定的DCNN模型能够显式地探索细粒度图像类的层次标签结构和相似规律。GLM损失不仅减少了DCNN模型学习特征的类间相似度和类内方差,而且使属于同一粗类的子类在特征空间中比属于不同粗类的子类更加相似。此外,所提出的细粒度图像分类框架是独立的,适用于任何DCNN结构。利用三个基准数据集(StanfordCar、细粒度视觉分类飞机和CUB-200-2011)对几种常用的DCNN模型(AlexNet、Google LeNet和VGG)进行了综合实验评估,验证了该方法的有效性。

关键词:级联Softmax损失,深卷积神经网络(DCNN),细粒度图像分类,广义大边界(GLM)损失,分层标签结构。

1.引言:

细粒度图像分类的目的是识别某些基类的子类,如不同模型的CARS[1]-[5]、鸟类的种类[5]-[9]、飞机的变体[10]、[11]等。它具有广泛的应用,如视频监控车辆模型识别、细粒度图像内容标注、垂直搜索等。细粒度图像分类面临的挑战主要来自两个方面:类间相似性和类内方差[12]-[16]。
一方面,不同细粒度类之间的视觉差异可能非常小且微妙。另一方面,由于位置、视点、姿势、照明条件等的不同,属于同一细粒度类的实例可能具有明显的不同外观。例如,图中所示的“加利福尼亚海鸥”。1(A)在视觉上与图中的“环嘴鸥”非常相似。1(B),它们之间唯一显著的区别在于它们喙上的图案。同时,由于姿态、视点和光照条件的不同,不同图像中的“加利福尼亚海鸥”(如“环嘴鸥”)呈现出明显的不同外观。


对于细粒度的图像分类任务,文献[17]-[20]中提出了许多基于部分的分类方法。
这些方法首先检测目标对象的不同部分,然后对局部部分的外观进行建模,以增加类间的识别率,同时减小类内的差异。例如,对于细粒度的鸟类分类,张等。[18]建议学习头部、喙和身体等零件的外观模型,并强制执行它们之间的几何约束。然而,基于零件的方法依赖于精确的零件检测,这是另一个具有挑战性的问题,在存在遮挡和较大视点/姿态变化的情况下可能会失败。此外,部件的检测器通常以有监督的方式进行训练,这需要足够多的训练样本。显然,与指定细粒度的图像标签相比,标注对象部分更具挑战性,也更昂贵。

最近的许多研究工作[4],[21]-[25]利用新的损失函数训练的深度卷积神经网络(DCNN),如对比损失[26],[27],三重损失[23]等,来学习能够最小化类内方差,同时最大化类间距离的特征。然而,当构成给定训练集的样本对或样本三胞胎时,对比和三胞胎损失都会受到数据扩展的影响。此外,据报告,构成训练样本对或三对样本的方式会对DCNN模型的性能精度产生几个百分点的重大影响[23]、[28]。因此,使用这种损失可能会导致模型收敛较慢、计算成本较高、训练复杂性增加和不确定性。

有研究工作提出了新的损失函数或专门的CNN结构,以利用不同细粒度类别之间的标签关系[4]、[5]、[28]、[29]或探讨输入图像不同部分之间的相关性[11]。这些方法在细粒度图像分类的各种基准数据集上都达到了最新的分类精度。
在本文中,我们开发了一个细粒度的图像分类器使用一个通用的DCNN。我们试图从以下两个方面提高DCNN模型的细粒度图像分类精度。首先,为了更好地对细粒度图像类的h级层次标签结构进行建模,我们将给定的DCNN模型的顶完全连接(FC)层替换为h FC层,每个层对应于分层标签结构的相应层次。h fc层中的每一层都是到其下层和功能输出层的fc,并使用来自相应标签层次结构的标签的Softmax丢失进行训练。本文将用于训练h FC层的h Softmax损耗称为级联Softmax损耗。
其次,我们提出了一种新的损失函数,即广义大边界损失(GLM),它明确地研究了细粒度图像类的层次标签结构和相似规律。更具体地说,对于每个给定的细粒度类c,我们将剩余的细粒度类分为两个组SP©和nSP©,这两个组分别由与c共享和不共享相同粗粒度(父)类的细粒度类组成。Glm损失明确地规定:(1)c与sp©中最近的细粒度类之间的距离比c的类内方差大一个预定义的边界;(2)c与其最近的细粒度类©之间的距离大于c与其最远细粒度之间的距离(p<0.05);(2)c与其最近的细粒度类©之间的距离大于c©与其最远细粒度之间的距离。-SP©中的粒度类.

本文的主要贡献如下。
(1)引入h-fc层来代替给定DCNN模型的顶层fc层,并用级联的Softmax损失对其进行训练,以更好地模拟细粒度图像类的h-Level层次标签结构。

(2)提出了GLM损失,使给定的DCNN模型能更好地揭示细粒度图像类的层次标签结构和相似规律。

(3)针对细粒度图像分类任务,利用三个基准数据集对几种通用的DCNN模型进行了综合实验评价,验证了该框架的有效性。

本文的其余部分安排如下。
第二节回顾了相关工作。第三节描述了方法,包括分层标签结构、DCNN修改和级联Softmax损失、GLM损失以及我们框架的优化。第四节介绍了实验评价,第五节是本文的结论。

2.相关的工作

提高细粒度图像分类精度的方法大致可分为以下三类:1)基于手工特征的方法;2)基于局部特征的方法;3)基于度量学习的方法。本节回顾每个类别的代表性作品。

A 基于手工特征的方法

Krause等人。[1]提出了利用空间金字塔匹配[30]和局部性约束线性编码[31]相结合的方法来获得细粒度图像分类的特征表示。林等人。[11]实现了一种Fisher向量(FV)尺度不变特征变换(SIFT)方法,该方法首先从输入图像中提取SIFT特征[32],然后利用SIFT特征学习高斯混合模型得到输入图像的FV,最后训练一对一线性支持向量机对细粒度图像进行分类。

B Part-Based Methods

细粒度图像分类的一个关键挑战是识别相似细粒度类的图像之间的细微外观差异。许多基于部分的方法已经被提出,通过定位和表示有区别的对象部分来捕捉细微的差异。
在变形零件模型的基础上,Zhang等人提出了可变形零件模型。[33]提出了一种可变形部件描述符,一种姿态规格化描述符,以便于细粒度图像分类任务的进行。柴等人。[34]提出了一种共生分割和局部定位模型对具有细微差别的图像进行分类。Krause等人。[35]提出使用“局部化学习特征集合”来检测重要的目标部件并表示它们的外观。Branson等人。[17]提出了一种用于细粒度图像分类的位姿归一化DCNN。
张某等人。[18]利用R-CNN框架[36],提出了一种零件识别模型(PR-CNN)。上述方法的主要缺点是在训练过程中需要零件的注释,这比图像标签的收集成本要高得多。
以一种无监督的方式探索目标零件信息,Lin等人提出了一种新的方法。[11]提出了一种双线性结构(称为双线性-CNN),该结构使用两个独立的DCNN特征提取器,其输出在所产生的特征映射的每个位置利用外积相乘,并汇集在一起以获得一个图像描述符。到目前为止,双线性-CNN已经在几个用于细粒度图像分类的基准数据集上达到了最新的分类精度。然而,两个并行的DCNN的使用显著增加了记忆假设和该方法的培训和测试成本。

C 基于度量学习方法

此类别中的方法尝试学习特征度量,以便将来自同一类的图像拉近,而将来自不同类的图像在所学习的特征空间中彼此推开。人们提出了许多损失函数来改进CNN的度量学习性能。为了列举一些例子,对比损失[26]、[27]要求来自不同类别的两个图像样本之间的距离要比来自同一类别的两个样本之间的距离大一个预定义的范围。三胞胎的损失[23]构成了训练过程中训练集中的大量三胞胎。每个三元组包含一个锚点样本A、一个正样本P和一个负样本N,其中A和P来自同一类别,而A和N来自两个不同的类别。它规定A和N之间的距离必须比A和P之间的距离大一个预定义的边距。在使用对比损失或三重损失训练CNN时,它们面临着数据扩展剧烈、收敛速度慢和不稳定的问题,如第一节所述。

为了解决这些问题,温等人。[28]提出了中心损失,即同时学习每个类的一个中心,并惩罚学习到的特征向量与其对应的类中心之间的距离。然而,中心损失只考虑了类内紧性,而没有考虑不同类别之间的可分性。这可能会导致不同的类中心变得更接近,并可能阻碍DCNN模型学习真正的鉴别特征。史等人。[29],[37]提出了最小-最大损失,明确规定了DCNN模型学习的特征向量具有最小类间距离和最大类间距离。
周和林[5]提出通过二部图标签(BGL)来挖掘不同细粒度类之间的标签关系。但是,BGL只能处理两级层次标签结构,不能推广到多级标签结构。张某等人。[4]提出了分层标签结构的广义三重损失(GTL)。然而,GTL损耗仍然存在着上述三重态损耗问题。
本质上,对比损失、三重损失和GTL损失都是点对点度量学习损失,而不考虑训练集的总体分布。相反,所提出的GLM损失可以看作是一种集对集的度量学习损失。

3.方法论

A 层次标签结构

在用于细粒度图像分类的典型基准数据集中,类标签根据其语义分组为树结构。图2。2描述了StanfordCAR数据集[1]的两级标签结构,其中叶节点和根节点分别对应于细粒度标签和粗类标签。细粒度类别标签表示某些汽车制造商(例如,Audi S4轿车2012、BMW M5轿车2010、BMW X6 SUV 2012等)的特定型号,这些型号根据其车身类型(例如轿车、SUV等)分组为粗类别标签。

具有分层标签结构的图像数据集可以按如下方式进行数学定义。用T={xi,Ci}ni=1表示训练样本集,其中xi表示第i个样本图像,n表示训练样本总数。每个样本图像XI与类标签的层次结构Ci={cji}hj=1相关联,其中cji∈{1,2,…,C(J)}是它的第j级类标签,C(J)是j级中的类的数量,h是层次标签集中的级别数。
假设细粒度类标签是第一级类标签,即c1i是示例XI的细粒度类标签,C(1)是细粒度类的数量。对于图像xi,我们用xi表示dcnn倒数第二层的输出1,并将xi看作网络提取的xi的特征向量。

提出的细粒度图像分类框架主要由以下两个部分组成:1)修改给定DCNN的网络结构,并用级联的Softmax损失对其进行训练;2)扩展GLM损失。
第II-B-II-D节详细介绍了这两个组成部分。

B DCNN改进和级联softmax 损失

对于具有h级类别标签的细粒度图像分类问题,我们对给定的DCNN模型进行了改进,将其顶层替换为h fc层,并利用级联的Softmax损失函数对其进行训练。为了简化解释,并且在不丢失一般性的情况下,我们描述了使用AlexNet[38]对具有两个级别的类别标签的图像数据集进行分类的方法。DCNN对其它细粒度图像分类问题的修正可以通过类比得到。

最初的AlexNet由五个卷积(Conv)层(Conv)(Conv)和三个FC层(fc6-8)组成,fc7和fc8分别作为特征输出层和顶层fc层。
对于具有两个级别类别标签的图像,我们将fc8替换为fc8‘和fc9,并将fc9与fc7和fc8’完全连接。我们将从fc7到fc9的连接称为跳过连接(参见图7。3)。fc8‘和fc9的神经元数目分别设置为C(1)和C(2)。
给定输入图像xi,fc8‘和fc9输出所有叶细粒度类标签c1 i∈{1,2,…,C(1)}的概率分数p(c1 i|xi i)和所有粗粒度类标签c 2 i∈{1,2,2,.,C(2)}分别表示XI.

我们引入跳过连接(fc7→fc9)来提供粗级分类层(Fc9),以访问所有细粒度类c1 i∈{1,2,…的学习特征(fc7的输出)和预测的概率分数p(c1 i|xi i)。C(1)}(fc8‘的输出)用于输入图像X i.。
直观地说,使用这两类信息进行粗粒度分类将优于仅使用细粒度分类结果,因为前者同时探索了训练样本的语义(即学习的特征)和层次标签结构。另一方面,在迭代训练过程中,将fc9的预测误差反推到fc8‘、fc7和网络的下层,从而逐步提高fc8’的预测精度。



值得注意的是。3只是所提出的框架的一个例子,该框架使用AlexNet作为两层分层标签结构。该框架可以推广到多级递阶标签结构,并且独立于任何DCNN结构。图2。4说明了AlexNet对三级标签结构的修改。为了简单起见,我们省略了图中fc7之前的图层。4。与最初的AlexNet相比,我们将fc8替换为fc8‘、fc9和fc10。
fc9是fc到fc7和fc8‘,fc10是fc到fc7、fc8’和fc9。fc8‘、fc9和fc10的输出维数分别等于底层的细粒度类的数量和第2层和第3层的粗粒度类的数量。

C 广义大幅度损失

D 最优化

4.实验评估
A 整体设置

为了揭示提出的细粒度图像分类方法的有效性和通用性,我们使用三种不同网络复杂性的DCNN对三个具有层次标签结构的图像数据集,即StanfordCar[1]、FGVC-Aircraft[10]和CUB-200-2011[6]进行了综合实验评价。例如,AlexNet[38]、Google LeNet[41]和VGG[42]。AlexNet包含5个Conv和3个FC层,Google LeNet包含22个conv和1个FC层,而VGG包含16个conv和3个FC层。所有三个DCNN模型都是使用ImageNet数据集[43]进行预训练的。2所有的实验都是在Caffe平台[44]上进行的。对于这些超参数,包括落差比、动量和权重衰减,我们严格遵循原始网络设置。

该方法由两个新的部分组成:1)利用级联Softmax损耗训练跳接连接的DCNN修改;2)GLM损耗。为了揭示每个组件对性能提高的贡献,我们对每个给定的网络和数据集实现了以下六种变体。

1)XXX-SM:使用标准Softmax损耗和细粒度类别标签对原始XXX网络进行培训。

2)XXX-SM-GLM:使用标准的Softmax损失与细粒度类标签和GLM损失对原始XXX网络进行训练。

3)XXX-CSM:利用级联软最大损耗对无跳接的XXX网络进行训练。
4)XXX-CSM-GLM:利用级联的Softmax损耗和提出的GLM损耗对改进的XXX网络进行训练。

5)XXX-SC-CSM:利用级联软最大损耗训练具有跳过连接的改进XXX网络。

6)XXX-OUR:使用级联Softmax和GLM损耗训练具有跳过连接的改进型XXX网络。

为简单起见,我们将GLM损失中的所有边距α1、α2、α3设置为1。为了获得λ的最优参数值,我们在验证集上对其进行了调优。具体地说,从StanfordCAR数据集[1]中,我们首先随机选择1000个训练图像形成验证集。然后,我们利用剩余的训练图像来训练改进的alexnet(即alexnet-SM-glm),并使用验证集来调整超参数λ。在验证集上确定超参数λ之后(λ=0.8),我们修复它并将其用于所有三个DCNN模型(AlexNet、Google LeNet和VGG)和三个图像数据集(StanfordCar、FGVC-Aircraft和CUB200-2011数据集)。所有三个图像数据集都包含每个目标对象的地面真实边界框。为了与以前的研究保持一致,我们还在两个实验设置下对所提出的方法进行了评价。在第一个设置中,我们在不使用地面真实边界框(简称BBOX)注释的情况下对每个未裁剪样本进行训练和测试,而在第二个设置中,我们使用从分配给每个样本的地面真实边界框中裁剪的图像块来训练和测试该方法。




B 数据集

1)斯坦福大学汽车数据集[1]:它包含196个车辆类别的16185个图像,并分为8144个训练图像和8041个测试图像,其中每个类大致分为50-50个类别。
数据集由两层类标签组成,其中底层包含196个细粒度类,表示特定汽车制造商的特定模型,如奥迪S4轿车2012、宝马X6 SUV 2012等,而顶层包含9个表示车身类型的粗糙类,如轿车、SUV、Coupe等。此数据集中的一些示例图像如图所示。6.。
2)FGVC-飞机数据集[10]:它包含各种飞机的10000幅图像,分为三层标签结构。这三个层次从下到上分别由100架飞机变体(如波音737-700、波音737-900)、70个系列(如波音737、波音747)和30个制造商(如波音和空中客车)组成。每个飞行器变体(细粒度图像类)包含100个图像。我们采用6667/3333图像的标准训练/测试数据分割。来自FGVC-Aircraft数据集的示例图像如图所示。7.。
3)CUB-20012011年数据集[6]:该数据集包含11788幅图像,200种鸟类,分为三级标签结构,底层有200种,第二层有40个科,第三层有13个目。我们采用5994/5794图像的标准训练/测试数据分割。此数据集中的示例图像如图所示。8.

表I-III分别显示了在斯坦福CAR、FGVC-Aircraft和CUB-200-2011测试集上比较的所有方法的最高分类精度。
在表一至表三中,我们列入了第二节所述的有代表性的方法,并使用了与第二节相同的缩略语来报告其实验结果。
此外,我们还比较了第二节中提到的GLM损耗与对比损耗[27]、三重态损耗[23]、中心损耗[28]和最小-最大损耗[29]。
在表I-III中,“XXX-SM-对比”、“XXX-SM-Triplet”、“XXX-SM-Center Loss”和“XXX-SM-min-max”对应于使用Softmax+对比损耗、Softmax+三态损耗、Softmax+中心损耗进行培训的XXX网络,Softmax+min-max损耗。值得注意的是,在有关对比损失、三重损失、中心损失和最小-最大损失的原始文献中,没有关于这三个图像数据集的分类精度的报告。这四种方法的结果都是基于我们自己的实现产生的。

C 实验评价结果

从表I-III可以看出,“VGG-OUR”方法优于除双线性-CNN[D,D][11]之外的所有其他方法,而“双线性-CNN[D,D]-OUR”方法在所有三个基准测试集上都达到了最佳的分类精度。
双线性CNN[D,D]使用两个并行的VGG网,而我们的VGG网只使用一个VGG网。双线性CNN[D,D]采用两个并行的VGG网,与我们的VGG网相比,记忆假设、训练和测试次数显著增加。值得注意的是,我们的方法通过修改最后一个FC层并使用CSM+GLM损失函数来改进给定的DCNN的层次类标签结构,而双线性-CNN[D,D][11]使用两个独立的VGG特征提取器及其输出特征的外积来研究输入图像不同部分之间的相关性。因此,可以将这两种方法结合起来,进一步提高性能精度。我们已经将我们提出的方法应用于双线性CNN[D,D],并将实验结果分别包含在表I-III中。
在表I-III中,“双线性-CNN[D,D][11]”是指原始文件[11]中报告的实验结果,“双线性-CNN[D,D]”是指我们自己的实验结果,“双线性-CNN[D,D]”指的是我们自己的实验结果。D]-我们的“是指我们的方法与双线性CNN[D,D]相结合的实验结果。
可以看出,我们的方法可以进一步提高国家先进的双线性-CNN[D,D]高达1.4个百分点。



D λ敏感性的研究

我们对超参数λ进行了敏感性研究,以考察网络性能是否随着λ的变化而发生很大的变化。为了节省时间和计算资源,我们只使用AlexNet和StanfordCAR数据集进行此研究。具体地说,我们将λ设置为从预定义范围中选择的值,使用斯坦福汽车训练集上的这些参数值对AlexNet进行训练,然后报告斯坦福汽车测试集上的TOP-1分类精度。


我们在斯坦福大学的汽车数据集上运行alexnet-SM-glm,其λ从0.2到1.4不等,步长为0.2。表四显示了最高的1级分类精度。从表IV中可以看出,通过改变λ的值,性能并没有太大的变化。

5 结论

为了提高细粒度图像的分类精度,提出了一种新的基于DCNN的分类框架。我们从以下两个方面提高了DCNN模型的细粒度图像分类精度。首先,我们引入h-fc层来代替给定的DCNN模型的顶层fc层,并用级联的Softmax损失对其进行训练,以更好地模拟细粒度图像类的h-level层次标签结构。其次,我们提出了GLM损失,使给定的DCNN模型显式地探索了细粒度图像类的层次标签结构和相似规律。提出的细粒度图像分类框架是独立于DCNN结构的。针对细粒度图像分类任务,利用三个基准数据对几种常用的DCNN模型进行了综合实验评价,验证了该方法的有效性。

使用级联Softmax和广义大幅度损失训练的改进DCNN进行细粒度图像分类相关推荐

  1. 基于级联FFT的广义互相关算法在声源定位中的应用

    杨韬 余文辉 曹申 2020-09-30 Wednesday 00摘要   针对2020年第十五届全国大学生智能车竞赛信标组关于声音信标的识别,需要采集声音信号和FM信号,通过声音信号和FM信号互相关 ...

  2. fft 相位谱_基于级联FFT的广义互相关算法在声源定位中的应用

    杨韬 余文辉 曹申 2020-09-30 Wednesday 针对2020年第十五届全国大学生智能车竞赛信标组关于声音信标的识别,需要采集声音信号和FM信号,通过声音信号和FM信号互相关进行距离检测和 ...

  3. 图像分类_03分类器及损失:线性分类+ SVM损失+Softmax 分类+交叉熵损失

    2.3.1 线性分类 2.3.1.1 线性分类解释 上图图中的权重计算结果结果并不好,权重会给我们的猫图像分配⼀个⾮常低的猫分数.得出的结果偏向于狗. 如果可视化分类,我们为了⽅便,将⼀个图⽚理解成⼀ ...

  4. XLNet:广义自回归预训练语言模型 2019 NIPS

    论文链接:https://arxiv.org/pdf/1906.08237v1.pdf 代码链接:https://github.com/zihangdai/xlnet 导读 今天学习的是谷歌大脑的同学 ...

  5. 神经网络适用于分类问题的最后一层-Softmax和交叉熵损失介绍及梯度推导

    前言 传统机器学习中两大经典任务就是回归与分类.分类在深度学习中也很常见,令我印象最深的是图像分类.当然,在NLP中,分类也无处不在.从RNN与其变体,到Transformer.Bert等预训练模型, ...

  6. softmax与交叉熵损失

    softmax基本形式 softmax是一个将实数域上取值的N维向量转化为[0,1]范围内的函数,常用用于分类问题中,接在神经网络最后一层,将输出值映射到概率区间上,其基本形式如下所示 pi=eai∑ ...

  7. 迁移学习实战 | 快速训练残差网络 ResNet-101,完成图像分类与预测,精度高达 98%!...

    作者 | AI 菌 出品 | CSDN博客 头图 | CSDN付费下载自视觉中国 前言 笔者在实现ResNet的过程中,由于电脑性能原因,不得不选择层数较少的ResNet-18进行训练.但是很快发现, ...

  8. Windows下Caffe的学习与应用(三)——使用OpenCV3调用自己训练好的Caffe模型进行图像分类

    前言 前面的博文中,我试了如何使用caffe训练得到想要的模型与其如何使用别人成熟的模型微调优化自己训练的模型,那么得到训练好的模型之后如何在自己的项目中呢,我这里使用opencv的DNN模块调用ca ...

  9. 将帐户从Quickbooks迁移到Xero

    As I mentioned in my last post, last year we moved the business accounts for edgeofmyseat.com from Q ...

最新文章

  1. CC2541对AT24CXX系列存储器的支持
  2. pickle序列化存在安全隐患
  3. 服务器优化:Tomcat、JVM性能调优笔记
  4. 在只需要一个指定正确的参数的情况下如何防止传入其他干扰的参数
  5. 为什么会存在TIME_WAIT socket-详细分析No buffer space available
  6. 打印有向图的强连通分量-----kosaraju算法(最简单的实现)
  7. SPSS 多重共线性问题【SPSS 039期】
  8. html按钮功能的实现原理,触摸按键原理是什么 触摸按键原理介绍【图文详解】...
  9. Python中国象棋源代码及素材
  10. Python+旧衣物捐赠系统 毕业设计-附源码290942
  11. 单片机大型试验——“老鼠穿墙吃蛋糕”小游戏
  12. 赢在互联网的起跑线上
  13. list移除元素时报错
  14. 跨境电商生态大会在深举办 连连支付母公司发布新平台“LianLian Link”
  15. 2.12 真实数据的噪声平滑处理
  16. 如何在java中创建变长数组
  17. SHT11和SHT21传感器
  18. 派拓网络:这个“云安全市场”不一般
  19. 人工智能数学课高等数学线性微积分数学教程笔记(3. 线性代数基础)
  20. 四.AD域中添加用户

热门文章

  1. FFmpeg yasm/nasm not found or too old. Use --disable-yasm for a crippledbuild
  2. 操作系统-处理机调度详解(调度层次及FCFS、SPF、RR等算法)
  3. python制作课程表_怎么使用循环做出一个课程表?
  4. 使用 JS 循环解决经典数学问题!
  5. 苹果ppt_如何选择一款趁手的PPT软件 | 一千零一夜PPT系列
  6. EAS融资租赁系统(财务业务一体化)
  7. 为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量
  8. k8s(五):核心技术-Service
  9. MySQL: 垂直分片
  10. 程序员应知必会的思维模型之 18 林纳斯定律 (Linus‘s Law)