论文贡献

  1. 提出了一种新的残差单元(移除了Pre-activation ResNet残差单元中的Relu函数)

  2. 设计了一种逐步增加所有单元的特征图维数的金字塔残差结构

Abstract

​ 近年来,深卷积神经网络(DCNNs)在图像分类中表现出了显著的性能。一般来说,深度神经网络结构是由大量卷积层构成的堆栈,它们通过池来沿空间维度执行下采样,以减少内存使用。同时,特征映射维数(即通道数)在下采样位置急剧增加,这对于确保有效性能至关重要,因为它增加了高级属性的多样性。这也适用于残差网络,并且与它们的性能密切相关。在本研究中,我们并没有在进行下采样的单元中大幅增加特征图的维数,而是逐步增加所有单元的特征图维数,以尽可能多地包含位置。这种设计与我们的新见解一起被深入讨论,证明是提高泛化能力的有效手段。此外,我们还提出了一种新的残差单元,利用这种新的网络结构可以进一步提高分类精度。在基准CIFAR-10、CIFAR-100和ImageNet数据集上的实验表明,与原始残差网络相比,我们的网络结构具有更好的泛化能力。

1.Introduction

​ 深卷积神经网络(DCNNs)的出现极大地促进了计算机视觉中复杂任务(13、23、2、3、19)的求解,并显著提高了性能。自从LeNet[16]提出将深度神经网络架构用于计算机视觉任务以来,高级架构AlexNet[13]被选为2012年ImageNet竞赛的获胜者[22],与传统方法相比有很大差距。随后,相继提出了ZF-net[35]、VGG[25]、GoogleNet[31]、残差[7、8]和初始残差网络[30],以展示网络体系结构的进步。特别是,残差网络(ResNets)[7,8]利用所提出的残差单元内的shortcut连接[29]的概念进行残差学习,使得训练更深层次的网络架构成为可能。较深的网络结构以其优越的性能而闻名,这些网络结构通常具有具有非线性的深度叠加卷积滤波器[25,31]。

​ 就特征图维数而言,传统的方式使用多个卷积核来增加输出特征图维数,通过增大卷积时的Stride或者使用池化的方式缩小特征图的大小,这是目前广泛采用的控制特征图大小的方法,因为随着特征图维数的增加,提取多种高层特征对于分类任务是非常有效的。AlexNet[13]和VGG[25]等体系结构利用这种增加特征映射维数的方法来构造它们的网络体系结构。最成功的深层神经网络ResNets[7,8],由He等人引入。[7] 也遵循此方法进行滤波器堆叠。

​ 根据Veit等人的研究。[33],ResNets被认为是相对较浅网络的集合。这些研究人员表明,从Resnet中删除单个残差单元,即仅保留一个shortcut连接,不会显著影响整体性能,证明删除残差单元等同于删除集成网络中的一些浅层网络。与此相反,在普通网络架构(如VGG网络[25])中删除单个层会导致额外的严重误差,从而损坏网络。

​ 然而,在ResNets的情况下,研究发现,在特征图维数增加一倍的降采样残差单元中,删除构建块仍然会显著增加分类误差。有趣的是,当使用随机深度[10]训练残差网络时,发现删除带有下采样块不会降低分类性能,如[33](论文地址:https://arxiv.org/pdf/1605.06431v2.pdf)中的图8所示。人们可能认为,这种现象与随机深度所带来的分类性能的全面提高有关。

​ 基于Veit等人对残差网络的整体解释。[33]和具有随机深度的结果[10],我们设计了另一种方法来处理与删除下采样单元相关的现象。 在该方法中,增加了各层特征地图的维数,将负荷集中在受下采样影响的残差单元的位置,使其均匀分布在所有单元上。结果表明,使用新的网络结构,删除具有下采样的单元并不会显著降低性能。在本文中,我们将这种网络结构称为深层“金字塔”网络和具有残差型网络结构的“金字塔”残差网络。 这反映了这样一个事实,即网络体系结构的形状可以比作金字塔的形状。也就是说,通道的数量作为层出现的深度的函数而逐渐增加,这类似于其形状从顶部向下逐渐加宽的金字塔结构。该结构与图1中的其他网络结构进行了比较。主要贡献总结如下:

​ 1.介绍了一种深层金字塔残差网络(PyramidNet)。 其关键思想是通过逐渐增加特征映射维数,而不是在下采样的每个残差单元上大幅增加特征映射维数。 此外,我们的网络架构是plain和ResNet网络的混合体,在增加特征映射维度时使用零填充的身份映射shortcut连接。

​ 2.还提出了一种新的残差单元,可以进一步提高基于ResNet的体系结构的性能(与目前最先进的网络体系结构相比)。

​ 本文的其余部分组织如下。第二节介绍了我们的金字塔网络,并介绍了一种可以进一步改进ResNet的新的残差单元。第三节通过几次讨论详细分析了我们的金字塔网络。第四节给出了实验结果,并与几种先进的深度网络结构进行了比较。 第五部分对全文进行了总结,并对下一步工作提出了建议。

2.Network Architecture

2.1 Feature Map Dimension Configuration

​ 在这一节中,我们将介绍金字塔网络的网络结构。金字塔网络与其他网络结构的主要区别在于,信道的维数逐渐增加,而不是保持维数直到出现具有下采样的残差单元。图1(d)显示了一个示意图,以便于理解我们的网络体系结构。

​ 大多数深度CNN架构[7、8、13、25、31、35]采用的方法是,当feature map的尺寸减小时,feature map的维度会大幅度增加,直到遇到向下采样的层时,feature map的尺寸才不会增加。对于CIFAR数据集[12]的原始ResNet,属于第n组的第k个残差单元的feature map维数Dk可以描述为:

其中 n (k)∈{1,2,3,4}表示 第k个残差单元所属残差块的索引。 属于同一组的残差单元具有相同的特征映射大小,第 n 组包含Nn个残差单元。 在第一组中,只有一个卷积层将 RGB 图像转换成多个特征映射。 对于第 n 组,当通过Nn个残差单元后,特征尺寸减半,维数增加一倍。 我们提出了一种增加特征映射维数的方法如下:

其中N表示所有残差单元的总数,定义为 。维数以 α / n 的阶跃因子增加,每组最终单元的输出维数为16 + (n-1) α/3,每组残差单元数相同。 我们的网络体系结构的细节如Table 1所示。

​ 上述公式(2)是基于增加维数的加法扩大阶跃因子。 然而,当然,基于乘法扩展(即乘以一个因子以几何方式增加信道维度的过程)提供了另一种创建金字塔式结构的可能性。 那么公式(2)可转换如下:

​ 加法和乘法金字塔网的主要区别在于,加法网络的特征映射维数呈线性递增,而乘法网络的特征映射维数呈几何递增
也就是说,输入端层的维数缓慢增加,输出端层的维数急剧增加。 这个过程类似于最初的深层网络体系结构,如 VGG [25]和 ResNet [7]。 下图展示了加法和乘法金字塔网络图。(a)是使用公式(2)的加法递增,(b)是使用公式(3)的乘法递增。本文第四部分,比较了加法金字塔网网络(公式2)和乘法金字塔网络(公式3)。

2.2 Building Block

​ 残差单元中的Building Block(卷积->BN->ReLu)是ResNet的核心结构。显然,为了最大限度地提高网络体系结构的性能,设计一个好的Building Block是必不可少的。如图6所示,这些层可以以不能的形式组合构成单个Building Block。我们发现图6 (d)所示的构建块是最有潜力价值的,因此我们将这个结构作为构建块包含在我们的金字塔中。下一节将继续讨论这个问题。

就shortcut而言,许多研究人员要么使用基于identity mapping(恒等映射),要么使用基于convolution-based projection(卷积的映射)。然而,随着金字塔网网络的特征映射维数在每个单元上的增加,我们只能考虑两种选择:零填充的恒等映射shortcut和1×1卷积的投影shortcut。但是,正如He等人[8]的工作中所提到的,1×1的卷积shortcut在残差单元过多的情况下效果较差,即,此shortcut不适合非常深入的网络架构。

3. Discussions

​ 在这一节中,我们将深入研究金字塔网络的结构,以及提出的新的残差单元。我们在这里所做的实验支持了这项研究,并证实从我们的网络架构中获得的见解可以进一步提高现有的基于Resnet的架构的性能。

3.1. Effect of PyramidNet

​ 根据 Veit 等人的工作[33] ,ResNets可以被看作是相对较浅的网络的集合,以下足以证明,删除ResNets 的残差单元中的单个Building Block会造成较小的分类损失,而从诸如VGG[25]这样的普通网络中删除层会严重降低分类率。然而,在原始的和激活前的ResNets [7,8]中,另一个值得注意的方面是,删除具有降采样的单元(并将特征维数增加一倍)仍然会大幅度降低性能[33]。同时,根据Veit等人[33]的实验,当使用随机深度[10]时,没有观察到这种现象,性能也得到了改善。我们的金字塔网络的目标是通过尝试逐步增加特征图的维数来解决这个问题,而不是在一个残差的单元上增加一倍,并平均分配增加特征图的负担。我们观察到我们的金字塔网确实解决了这一现象,同时提高了整体性能。我们进一步分析了我们的金字塔网的影响,通过比较它与预激活ResNet,与以下实验结果。首先,我们将金字塔网的训练和测试误差曲线与图3中预激活的ResNet[8]的训练和测试误差曲线进行比较。使用110层的标准预活化ResNet进行比较。PyramidNet,我们使用一个110层的深度的扩大因子α= 48;它的参数数量(1.7M)与激活前的ResNet相同,以便进行公平的比较。结果表明,我们的金字塔网具有优越的测试精度,从而证实其更大的泛化能力相比现有的深层网络。

​ 其次,我们通过删除单个单元后的性能评估来验证我们的金字塔的整体效果,类似于Veit等人的实验。结果如图4所示。正如Veit et al.[33]所提到的,与VGG[25]这样的plain网络相比,删除单个单元只会造成轻微的性能损失。然而,在预激活ResNet的情况下,删除下行采样的块往往会对分类精度产生较大的影响,而在我们的金字塔网络中则不会出现这种情况。此外,从预激活的ResNet和我们的PyramidNet中删除单个单元后,基线结果与结果的平均误差分别为0.72%和0.54%,结果表明,我们的金字塔网比原金字塔网的整体效应更强,泛化能力得到了提高。

3.2 Zero-padded Shortcut Connection

​ ResNets和pre-activation ResNets[7,8]研究了几种快捷方式,如identity-mapping(恒等映射)shortcut方式和projection shortcut方式。在[8]中的实验结果表明,与其他shortcut方式相比,恒等映射shortcut方式是更合适的选择。由于恒等映射没有参数,因此与其他类型的shortcut相比,它的过拟合可能性较低;这确保了改进的泛化能力此外,它可以根据身份映射纯粹地通过梯度,因此在训练阶段提供了更多的稳定性。

​ **在我们的金字塔网的情况下,恒等映射不能单独用于shortcut,因为特征映射的维数在各个残差单元之间是不同的。**因此,只有一个零填充的shortcut或projection shortcut方式可以用于所有残差单元。如在[8]中所讨论的,projection shortcut 捷径可能会阻碍信息传播并导致优化问题,特别是对于非常深的网络。另一方面,我们发现填充为零的shortcut方式不会导致过度拟合问题,因为不存在额外的参数,而且令人惊讶的是,与其他快捷方式相比,它显示了显著的泛化能力。

​ 我们现在检查零填充的恒等映射shortcut方式将属于第n组的第k个残差单元reshape成第l个特征图的向量
表示第k个残差单元的第l个残差函数,表示第k个残差单元预先定义的通道数。由式(4)可知,对于zero padded的 identity-mapping shortcut 方式使得包含了残差网络和plain网络的输出。因此,我们可以推测每一个zero padded的identity-mapping shortcut方式都可以看做一个混合的残差网络和plain网络,如图5所示。此外,我们的金字塔网络增加了每残差单元的通道维数,残差网络与palin网络的混合效应也显著增加。图4表明了金字塔网络的测试误差不像预激活ResNet的测试误差那样振荡的结论。最后,我们研究了几种类型的shortcut方式:(a)projection shortcut(1x1)与恒等映射结合;(b)使用零填充与projection shortcut相结合;(c)仅使用projection shortcut(1x1);(d)使用零填充的恒等映射,包含如表2中所示的零填充标识映射shortcut方式。


3.3 A New Building Block

​ 为了最大限度地提高网络的性能,很自然地会问这样一个问题:“我们能否通过以更有原则的方式改变构建块内部的堆叠元素来设计一个更好的构建块?”在关于ResNets[7]的原始论文中提出了第一种构建块类型,随后在关于 pre-activation ResNets[8]的论文中又提出了另一种构建块类型来回答这个问题。此外, pre-activation ResNets试图通过重新设计残差模块来解决[8]的逆向梯度流动问题;试验证明这是成功的。然而,虽然发现了 pre-activation前的残余单元,其性能得到了经验上的改善,但对可能的组合还没有进行进一步的研究,留下了改进的潜在空间。接下来,我们尝试从两个角度来回答这个问题,即考虑校正线性单元[20]和批量标准化[11]层。

3.3.1 ReLUs in a Building Block

​ 在残差单元的构建块中包含ReLUs[20]是非线性所必需的。然而,我们根据经验发现,性能可能会随着ReLUs的位置和数量而变化。这可以与原始的ResNets[7]进行讨论,结果表明,随着网络的深入,性能会提高;然而,如果深度超过1000层,仍然会发生过拟合,其结果不如浅网格生成的结果准确。
​ 首先,我们注意到在添加剩余单元之后使用ReLUs会对性能产生负面影响:

而ReLUs似乎有过滤非负性元素的功能。Gross和Wilber[5]发现,在每次使用shortcut连接添加ReLUs之后,简单地从原始ResNet[7]中删除ReLUs会导致性能的小改进。这可以理解为,ReLUs在加法后向后续剩余单元提供非负的输入,因此shortcut连接始终是非负的,卷积层在加法前负责负输出;这可能会降低在[8]中分析的网络体系结构的整体能力。He等人提出的预激活ResNets也克服了这个问题,预激活的残余单元将BN层和ReLUs置于卷积层之前(而不是之后):

添加后删除ReLUs以创建标识路径。因此,即使在深度超过1000层的情况下,总体性能也有了很大的提高,而没有过度拟合。此外,Shen等人[24]提出了加权残差网络结构,该结构将ReLU定位在残差单元内(而不是在添加后定位ReLU)来创建一个映射路径,并证明该结构即使在超过1000层的深度也不会过度拟合。

​ 其次,我们发现在每个残差单元的块中使用大量的ReLU函数可能会对性能产生负面影响。删除每个残差单元模块中第一个ReLu函数,如图6所示(b)和(d),发现提高性能与块如图6所示(a)和©,通过实验,我们发现,删除第一个ReLU堆栈是更可取的,其他ReLU应该保留,确保非线性。删除图6 (a)中的第二个ReLU后,block变为BN-ReLU-Conv-BN-Conv,可以看出,在这些block中,卷积层依次定位,没有ReLUs来削弱它们之间的表示权。但是当我们移除第一个ReLU时,block变成了BN-Conv-BN-ReLU-Conv,此时两个卷积层被第二个ReLU隔开,从而保证了非线性。表3中的结果证实,删除第一个ReLU如图6中(b)和(d)所示结构可以提高性能。因此,如果使用适当数量的ReLU来保证特征空间流形的非线性,则可以去掉剩余的relu来提高网络性能。

3.3.2 BN Layers in a Building Block

​ BN层的主要作用是对激活进行归一化,以达到快速收敛和提高性能的目的。表3中所提供的四种结构的实验结果表明,BN层可以最大限度地提高单个残差单元的性能。BN层对如下方程进行仿射变换:

γ和β学习地图每激活特性。我们实验发现了γ和β可以趋近于0。这意味着,如果学会了γ和β都接近0,那么相应的激活被认为是不会有用的。加权的ResNets[24],其中可学习的权值出现在其构建块的末端,也同样被学习以确定相应的剩余单元是否有用。因此,每个剩余单元末尾的BN层是一个广义的版本,包括[24],以便能够决定每个剩余单元是否有帮助。因此,获得的自由度涉及γ和β BN层可以改善网络体系结构的能力。表3中的结果支持这样的结论,即在每个构建块的末尾添加BN层 (如图6中的类型(c)和 (d) ) 可以提高性能。注意,前面提到的删除第一个ReLU的网络也得到了改进,在最后一个卷积层之后添加了BN层。此外,表3中的结果表明,无论是金字塔网络还是一种新的构建块,都显著提高了性能。

4. Experimental Results

​ 我们使用具有代表性的基准数据集 CIFAR-10和 CIFAR100[12]来评估和比较我们的算法和现有算法[7,8,18,24,34]的性能。 Cifar-10和 CIFAR-100都包含32个32像素的彩色图像,由50,000个训练图像和10,000个测试图像组成。 但是对于 CIFAR-10,它包括10个类,而 CIFAR-100包括100个类。 我们的实验采用了标准的数据增量、水平翻转和4像素的平移,遵循了通常的做法[18]。 金字塔网的结果是基于所提出的残留单位: 在最后的卷积层之后放置一个 BN 层,如图6(d)所示去除第一个 ReLU。 我们的代码是基于 Torch 开源深度学习框架[1]构建的。

4.1 Training Settings

​ 我们的金字塔网是通过使用 CIFAR-10和 CIFAR-100数据集,利用 Nesterov 动量的随机梯度下降反向传播[15]训练的。 Cifar-10的初始学习速率设置为0.1,CIFAR-100的初始学习速率设置为0.5,在150和225个时刻衰减了0.1倍。 过滤器参数由“ msra”[6]初始化。 我们使用0.0001的重量衰减,0的阻尼,momentum:0.9和batch size :128

4.2 Performance Evaluation

​ 在我们的工作中,我们主要使用top-1错误率来评估我们的网络架构。 使用基本和金字塔瓶颈残差单元的附加金字塔网络。表4提供了我们的错误率和最先进的模型。 实验结果表明,我们的网络具有较好的泛化能力,在加法和乘法金字塔7方面进行了比较。 当参数数量较少时,加法和乘法的金字塔网表现出相似的性能,因为这两种网络结构没有明显的结构差异。 随着参数数量的增加,它们开始在特征映射维度配置方面显示更明显的差异。 由于特征映射维数在加法金字塔网的情况下线性增加,与图2所示的乘法金字塔网相比,输入端层的特征映射维数往往更大,输出端层的特征映射维数往往更小。

​ 先前的工作[7,25]通常为下采样模块设置特征映射维数的乘性缩放,通过增加输出层的特征映射维数,使分类器具有更大的自由度。 然而,对于我们的金字塔网络,图7中的结果意味着增加输入端层的模型容量将导致比使用传统的特征映射维度乘法缩放方法更好的性能改进。

​ 我们还注意到,虽然使用正则化方法,如dropout[28]或随机深度[10]可以进一步提高我们的模型的性能,我们没有涉及这些方法,以确保与其他模型的公平比较。

4.3 ImageNet

​ 1,000级别的 ImageNet 数据集[22]用于 ILSVRC 包含超过100万个训练图像和50,000个验证图像。 为了进一步提高性能,我们使用带有金字塔瓶颈剩余单元的附加金字塔网,删除第一个 ReLU 并在最后一层增加一个 BN 层,如第3.3节所述,如图6(d)所示。
​ 我们对模型进行了120个时期的训练,批量大小为128,初始学习速率设置为0.05,除以60、90和105个时期的10。 我们使用与 CIFAR 数据集相同的权重衰减、动量和初始化设置。 我们训练我们的模型使用一个标准的数据增强与规模抖动和宽高比建议在 Szegedy 等人[31]。 表5显示了我们的金字塔网在 ImageNet 数据集中与现有模型的比较结果。 实验结果表明,我们使用α =300金字塔网具有20.5% 的 top-1错误率,比 pre-activation ResNet-200 [8]具有相似的参数数目,但输出特征维数比我们的模型高1.2% 。 我们还注意到,适当的正则化方法的增加可以进一步提高性能。
​ 为了与 Inception-ResNet [30]进行比较,后者使用的是299x299个尺寸的试验作物,我们在320x320个作物上测试我们的模型,出于与 He 等人的工作相同的原因[8]。 使用α = 300的金字塔网显示了19.6% 的 top-1错误率,这超过了 pre-activation ResNet [8]和 inception-ResNet-v2[30]模型。

5. Conclusion

​ 本文所描述的新型深度网络结构的主要思想是逐步增加特征图的维数,从而与ResNets的概念一起构建所谓的金字塔网。我们还开发了一种新的残差单元,其中包括一个新的使用零填补shortcut连接方式building block 残差单元。这种设计大大提高了泛化能力。在使用CIFAR-10、CIFAR-100和ImageNet1k数据集的测试中,我们的金字塔网胜过所有以前的先进深度网络架构。此外,本文的见解可以被任何网络体系结构所利用,从而提高它们的能力以获得更好的性能。在未来的工作中,我们将以更有原则的方式开发优化参数的方法,例如使用适当的成本函数来优化feature map维数,从而深入了解残差网络的性质。

【论文】Deep Pyramidal Residual Networks(译)相关推荐

  1. 论文笔记 | Wide Residual Networks

    Authors Sergey Zagoruyko Nikos Komodakis Sergey Zagoruyko Abstract 网络不断向更深发展,但是有时候为了得到少量的accuracy的增加 ...

  2. 论文笔记——Dilated Residual Networks(DRN)

    论文下载: https://arxiv.org/pdf/1705.09914.pdf 论文代码: http://vladlen.info/publications/dilated-residual-n ...

  3. 《Enhanced Deep Residual Networks for Single Image Super-Resolution》论文阅读之EDSR

    导读 韩国首尔大学的研究团队提出用于图像超分辨率任务的新方法,分别是增强深度超分辨率网络 EDSR 和一种新的多尺度深度超分辨率 MDSR,在减小模型大小的同时实现了比当前其他方法更好的性能,分别赢得 ...

  4. Identity Mappings in Deep Residual Networks

    论文地址:Identity Mappings in Deep Residual Networks 译文地址:http://blog.csdn.net/wspba/article/details/607 ...

  5. PaddlePaddle飞桨论文复现营——3D Residual Networks for Action Recognition学习笔记

    PaddlePaddle飞桨论文复现营--3D Residual Networks for Action Recognition学习笔记 1 背景知识 1.1 C3D C3D是一种3D卷积提取视频特征 ...

  6. 【论文阅读】Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks

    [论文阅读]Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks 虽然这是一篇17年ICCV的论文,但是这篇 ...

  7. 论文研究2:Combining Residual Networks with LSTMs for Lipreading

    论文研究2:Combining Residual Networks with LSTMs for Lipreading 文章指南 本翻译是应对作者论文研究1中,对唇部特征进行特征训练而用到的参考资料, ...

  8. 【论文笔记】Spatiotemporal Residual Networks for Video Action Recognition

    目录 摘要 1 介绍 3. 技术方法 3.1 Two-Stream residual 网络 3.2跨时间的卷积剩余连接 3.3建议结构 (Proposed architecture) 参考文献 参考 ...

  9. 经典DL论文研读(part4)--ImageNet Classification with Deep Convolutional Neural Networks

    学习笔记,仅供参考,有错必纠 文章目录 ImageNet Classification with Deep Convolutional Neural Networks 摘要 Introduction ...

  10. 深度模型压缩论文(01)- Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks

    文章目录 1.摘要和介绍 1.1摘要部分 2.背景和方法 2.1 背景 2.2 贡献 2.3 方法 3.实验和结果 3.1 实验 3.2 结果 4.总结和展望 4.1 总结 4.2 展望 本系列是在阅 ...

最新文章

  1. italic与oblique的区别
  2. 万维网报务器与浏览器各有什么功能,浏览器是如何获得服务器上的信息的,第3章因特网的应用.ppt...
  3. python中typeerror怎么解决_Python 3中套接字编程中遇到TypeError: 'str' does not support the buffer interface的解决办法...
  4. TensorFlow(六)with语句
  5. sqlplus 主键 设置_浅谈MyBatis-Plus学习之Oracle的主键Sequence设置
  6. 自己实现的数值到大写人民币的实现
  7. 深入剖析Android音频(四)AudioTrack
  8. 扩展linux swap分区大小,扩展Linux系统swap分区的大小
  9. MATLAB命令总结
  10. 华硕笔记本bios设置u盘启动
  11. 【无标题】如何做APP客户端数据埋点
  12. URL重定向(跳转)漏洞
  13. 【https】利用keytool进行证书配置
  14. ssm基于微信小程序的新生自助报到系统+ssm+uinapp+Mysql+计算机毕业设计
  15. 常用的计算机硬件软件英语,计算机英语常用词汇.ppt
  16. 序列化和反序列化的详解
  17. linux PWM驱动屏幕亮度及pwm子系统框架(Linux驱动开发篇)
  18. jQuery-----选择器
  19. 【代码审计】buu_[GWCTF 2019]枯燥的抽奖
  20. 博彦科技[前端开发面试题]

热门文章

  1. dah计算机原理,卢伟计算机原理themicrocomputerprinciplech3.pptx
  2. 用moment将时间戳格式化为周几 几月几日
  3. web网站测试点整理
  4. Python之——网站访问流量统计
  5. 回忆2012-入坑OpenStreetMap10年纪
  6. 注意:这些跳槽理由会被HR调查!
  7. 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
  8. 2016年11月份各省市报考时间与报名链接 软考 系统集成项目管理工程师
  9. Crime HDU - 4623(状压DP,不同进制转换)
  10. matplotlib科研绘图---Times New Roman字体设置