GCA-Net : Utilizing Gated Context Attention for Improving Image Forgery Localization and Detection(利用门控上下文注意改进图像伪造定位和检测)
发布于CVPR 2022

摘要

对被操纵像素的取证分析需要从图像中识别各种隐藏的和微妙的特征。传统的图像识别模型通常无法完成这一任务,因为它们偏向于并且更关注占主导地位的局部和空间特征。本文提出了一种新的门控上下文注意力网络(GCA-Net),它利用非局部注意力结合门控机制来捕获更精细的图像差异,从而更好地识别伪造区域。该框架在解码过程的各个阶段使用高维嵌入从粗糙特征映射中过滤和聚合相关上下文。这提高了网络对全局差异的理解,减少了假阳性的定位。我们对标准图像取证基准的评估表明,GCA-Net可以与最先进的网络竞争,并比其平均提高4.7%的AUC。其他消融研究也证明了该方法对特征的鲁棒性和对假阳性预测的弹性。

引言

图像操作是使用不同的编辑技术修改图像内容的行为。这类操作的例子包括,内容删除、换脸、属性更改等。有三种主要类型的手工图像伪造技术:拼接,复制-移动和修复。这些操作场景大多包括将源图像中的一些像素复制并粘贴到目标图像上,如图1所示。取证算法在判断图像真伪方面起着重要作用。在当今的社交媒体时代,进一步研究开发更好的检测机制至关重要,因为任何假新闻都可能迅速传播,并被用来煽动恐慌和宣传。

近年来,人们提出了许多图像伪造定位与检测(IFLD)的方法。近年来,能够学习内在特征的深度CNN架构的使用已经得到普及。然而,与传统的图像分类不同,伪造检测涉及从图像中识别隐藏的操纵痕迹,而不是明显的空间内容。利用各种顺序框架的现有作品由于篡改伪影的微妙性而遭受特征衰减。虽然一些方法试图通过递归池来利用特征层次,但它们大多数都绑定到局部邻域。

现有的操纵定位网络中,大多数为了生成定位图,对每个像素进行像素级二值分类。因此,图像级别的分类取决于已识别像素的百分比。这种简化导致了两个显著的缺点:

  1. 由于这些方法将每个像素视为一个单独的数据点,因此它们未能利用重要的区域特征,例如可以帮助辨别区域差异的噪声边界和对象伪影
  2. 尽管真实的图像不包含操纵痕迹,使用该过程训练的方法在试图定位未篡改的图像时显示错误的预测;如图2所示(假阳)。

为了解决现有网络的不足,我们提出了门控上下文注意网络(GCA-Net),该网络由一个改进的特征编码器和一个密集连接的注意解码器组成。图像处理不仅改变了图像的可见内容,而且还改变了潜在的信号和噪声特征。因此,为了利用这些多模态特征,我们将EfficientNet与改进的错误级别分析(ELA)模块和其他隐写分析层结合起来,以识别压缩和噪声伪影。然而,由于每一幅图像都包含一些固有的噪声模式,为了使操作的局部化,我们必须将局部噪声差与全局图像指纹相关联。虽然之前的研究试图利用这些信号特征,但他们对全局相似性的忽视导致了产生噪声的假阳性

我们提出的GCA-Net使用了一种新颖的门控上下文注意机制,它执行两种不同的计算。

  • 聚合了多个跨层特征嵌入,并应用全局上下文注意机制来识别局部和全局表示之间的差异。这提高了网络对不同像素区域之间长期依赖关系的理解。其次,利用注意门过滤底层上下文特征,消除冗余空间和对象数据;通过只传播必要的取证特征,我们能够最小化衰减和改进边界特征的识别。
  • Unet++密集的网络结构有利于中间层之间的信息交换,减少了特征损耗,提高了收敛性。该设计也提高了网络对后处理属性的鲁棒性。

我们对流行的CASIA、NIST和IMD基准的评估显示,在资源受限的情况下,其性能可与现有的SOTA方法相比较。GCA-Net的性能比现有的几种方法高出4% - 6%,连续产生更好的定位和更少的误报。

主要贡献

  1. 本文提出了GCA-Net,它包含一个新的门控上下文注意模块,能够有效地对长距离依赖关系建模,并改进操作定位所需的全局上下文表示。
  2. 我们证实了全局背景和非局部性在检测图像伪造中的影响,促进了该领域的未来研究。
  3. 我们说明了训练策略对减少假阳性和提高图像级预测的影响。
  4. 我们证明了我们的方法在图像操纵检测和定位的标准数据集上优于最先进的性能。

相关工作

根据伪造的类型,可以在图像中找到不同的线索和伪像,以确定其是否真实。这些包括压缩噪声、PRNU传感器信息、相机模型信息、局部噪声特征等。早期的取证方法使用算法来检测这些噪声和信号属性,使用精心设计的滤波器。

其中,在RGB-N中使用的SRM滤波器在从图像识别隐藏噪声模式方面表现出成功。还提出了用于独立伪造物检测和定位的许多神经网络。使用RCNN、区域建议模块和边界框识别的对象检测网络已被证明对操作定位有效。因此,也使用了像Unet和DeepLab这样的分割网络。此外,约束层的使用也显示出在改善输入表示和最小化主导空间特征的影响方面的有效性。ManTraNet 使用简单的VGG网络和Z池方法定位异常特征。SPAN对这项工作进行了扩展,通过局部自我注意块和分层金字塔传播对空间相关性进行了进一步建模。然而,这两种网络都没有利用全局背景和多尺度特征的相关性。在最近的工作中,提出了PSCC-Net,其试图使用信道相关性来解决这些问题。他们表明,多尺度注意力可以用来提高对操纵的察觉。

虽然自注意最初是为语言建模而引入的,但这项开创性的工作已被证明可以改善跨多个领域的长期特征表示。一些工作已经利用注意力的变化进行伪造检测。视觉任务主要使用两种类型的注意机制:通道注意和空间注意。使用非局部块的空间注意力,也称为点积注意力,可以被认为是非线性相关的通用框架。然而,该方法具有二次复杂性,因为针对每个像素对计算注意图。在[8]中引入了改进的上下文关注,其通过简化上下文建模框架来代替二次运算。在我们的工作中,我们使用这个全球背景框架与门控注意机制相结合,同时探索空间和特征通道的差异。注意力门控先前已被用于各种任务,包括图学习、语言处理、医学图像分割等。我们引入用于伪造检测的门控,以便在放大和解码阶段期间增强和过滤粗糙级特征。这导致通过仅经由网络传播必要的取证信号来改进信息共享。

提出的方法

介绍

如图3所示,GCA-Net是一个多分支密集编解码器网络。该模型由三部分组成:特征编码器、密集解码器以及用于分类和定位的两个头部。输入图像首先通过一系列生成多域语义特征的内容抑制层。虽然独立的CNN层能够从图像中提取特征,但是它们是局部化的,并且偏向于主要的空间特征,而不是操纵痕迹。因此,除了[54]中的约束层之外,我们还使用错误水平分析(ELA)模块来提取信号噪声和压缩伪像。注意力解码器使用编码的主干特征和中间层输出来产生最终的定位图。每个解码器块由GCA层和其后的用于特征累积和放大的一系列卷积层组成。另外,编码器特征还通过全连接层以生成图像级概率得分。同时的分类和定位利用多任务学习方法以获得更好的特征表示。这在减少假阳性和提高推广性方面发挥了重要作用。关于ELA的实现以及每一层对网络性能的影响的其他细节可以在附录A1中找到。

GCA-Net的体系结构。输入图像首先通过类似于[21,54]的特征抑制层,其提取多模态压缩和噪声水平特征。然后通过由5个阶段X0,0 → X4,0组成的EfficientNet编码器作为backbone进行传播。密集解码器Xi,j的每个节点包含门控上下文注意块,该块接收第i层特征F1 =[Xi,0,…,Xi,j − 1]用蓝色实线和虚线箭头表示,第(i +1)层的选通特征Fg用橙色箭头表示。由于解码器的自下而上架构,从第零层X0,1 → 4获取输出,并使用深度监督生成最终定位图。我们使用单独的分类和定位损失进行多任务学习和优化。

密集特征解码器

对于解码器分支,我们使用密集Unet ++架构,该架构利用多尺度自底向上架构进行特征传播。我们将解码器的上层表示为粗糙层,并且基于其特征映射的选择性将下层表示为精细层。层间的跳跃连接允许多模态语义特征的流动,从而改善梯度流动并最小化特征损失。此外,由于解码器以多个尺度对中间层进行采样,因此其改进了全局上下文表示

输入I ∈ R3×H×W的特征在5个中间尺度H/k × W/k上采样,其中k ∈ {2,4,8,16,32}。图3中的每个灰色圆圈表示为Xi,j的解码器节点,其中i索引编码器的顺序下采样层,而j索引在第i层处沿着跳过路径的解码器块。任意节点处的输出yi,j被计算为,

其中C(·)是一系列卷积运算,之后是ReLU激活,Θ(·)是GCA层,Ω(·)是非局部上下文块,U(·)表示上采样层,[·]表示级联层。

自下而上的体系结构确保在每个节点处累积来自所有较低尺度的特征。例如,X3,1由X4,0和X3,0加强。类似地,最终节点X 0,4的计算聚集来自所有先前层和节点X4,0直到X 0,3的特征。因此,每个节点可以确定哪些特征最相关地被更精细的低级特征加强,并且将其传播到更高的分支。与标准的编码器-解码器网络相比,这种多尺度融合使得能够更容易地识别基本属性,而不依赖于单个先前输出

门控上下文注意机制(GCA)

注意机制是用来调节学习特征的相对重要性。图4所示的GCA操作分为两个主要阶段:1)全局上下文池化(Global Context Pooling)和2)注意力门控(Attention Gating)。

由于深度卷积堆栈具有局部性,因此容易混淆全局像素之间的关系。非局部块利用注意力权重和聚集其他点的信息来增强查询位置的特性来解决这一问题。全局上下文建模是一种改进的注意框架,用于识别特征映射之间的长期依赖关系。在第一阶段,我们通过连接当前关卡的特征来计算全局上下文。例如,为了计算节点X0,3的上下文,我们对[X0,0,X0,1,X0,2]进行聚合,将其表示为Fl或层特征。这些粗特征图包含比随后的细层更多的全局信息。由于操作特征的识别是基于检测一组像素与其周围环境之间的变化,使用这些全局上下文可以让模型识别变化区域之间的差异


上下文块Ω有三个步骤:1)注意汇聚,2)特征变换,3)特征融合。对于池化步骤,我们取Fl∈RCl×H×W,并对其进行1 × 1的卷积,将通道简化为Cl× 1 × 1。通过加权平均对所有位置的特征进行分组,得到全局上下文向量。这类似于SE层的全局平均池化。然后将池化的vector通过一个带有因子r的瓶颈块,以捕获通道方面的依赖关系。这是变换的步骤。折合和膨胀类似于SE块的激励操作。最后,融合步骤使用广播元素加法将上下文特征聚合到每个输入位置的特征。

第二阶段是注意力门控,用于粗级特征的过滤。注意门控(AG)识别显著图像区域和剪枝特征响应,只保留相关的激活。结果,来自无关背景区域和空间背景的信号逐渐被抑制。AG生成系数矩阵Ag∈[0,1],与输入相乘,改变活化的规模。每个AG学习集中在下游特征强化的目标结构的子集。编码器的粗图代表全局关系,而下游层识别更精细的鉴别特征。选通使用这些精细的嵌入来消除粗特征内的不相关和噪声响应的歧义。在每个解码器节点Xi,j处,门控特征Fg是由节点Xi+1,j−1传播的上采样特征,用橙色突出显示。为了通过加性注意得到门控系数,我们首先将上下文特征Ω(Fl)∈RCl×H×W和门控特征Fg∈RCg×H×W变换为中间向量Fint∈RCint×H×W。然后使用非线性变换层Wζ = ReLU(Conv(·))重新采样该向量。由此产生最终的注意矩阵Ag = Wζ(Ω(Fl)⊕FG)∈R1×H×W。最后,将注意矩阵与输入特征堆栈Fl相乘,生成ϑ∈RCl×H×W为GCA输出。所得到的门控特征通过一系列卷积和激活层C(·)发送,激活层C(·)在特定节点上执行解码操作。在这一阶段之后,可以添加额外的空间和通道注意层,以进一步调节学习特征。

实验

数据集

在四种类型的数据上训练我们的模型,拼接、复制-移动、修复和真实图像;收集自Dresden,MSCOCO合成数据集,Defacto,和IMD-Real数据集。对于预培训和精细培训的评估,我们使用四个标准数据集:CASIAv2、NIST16、COVERAGE和IMD-2020,训练/测试分离。总的来说,我们使用约170k图像进行训练,它们的类分布大致相同。这与使用50万~ 1M以上图像的现有SOTA方法(SPAN、MantraNet、PSCC-Net)相比明显减少(训练数据集更小)。由于资源和可访问性的限制,我们没有使用更大的数据集。我们的大部分计算是在Nvidia 1080 Ti GPU上进行的。然而,尽管训练集更小,我们的模型在多个实验中优于这些方法。

损失函数

使用交叉熵损失函数来训练定位网络,BCE对于具有大量数据和平衡数据集的分类问题很有效,因为它对所有预测的权重相等。

损失函数使所有预测的预测值和GT之间的距离最小化。例如,如果一个假像素的预测概率是0.7,BCE将试图使其更接近1,以最小化损失。因此,对于不平衡的数据集,预测倾向于特定的类别。因为我们使用的是一个小而不平衡的数据集,所以我们选择使用Dice和Focal loss的组合。我们用下面的公式计算Dice损失

对于维数都为1 × H × W的预测掩模P和ground-truth G,分子计算区域的交点,分母测量并集。dice损失使预测区域和真实区域之间的距离最小化。它可以改进对整个区域的预测,而不是计算每个像素的损失。这对降低误报率至关重要。由于BCE试图独立地最小化每个像素的损失,网络总是对一定数量的像素产生不正确的预测

尽管Dice损失改善了假阳性和区域重叠,但其不适用于小的伪造区域。这是因为随着区域变得非常小,|G|变小了。所以如果这个模型什么都不能预测,也就是说,如果|P|→ 0,则|P ∩ G|→ 0,总损耗减小。因此,在这些情况下,单独的dice损失是无效的。为了克服这个问题,我们结合了focal损失和dice损失。focal损失是对BCE损失的改进,增加了一个温度参数,以解释过度自信的预测**。focal损失计算如下,

温度γ控制每个预测的权重。当使用γ〉0时,弱预测的权重更大。因此,网络集中于将0.3的预测改进为1,而不是试图改进0.7的预测。由于我们试图正确地分类假像素,较大的预测值P会导致较小的(1 − P)γ,从而减少整体损失。因此,网络会尝试更准确地对较弱的预测进行分类。综合以上所有因素,最终损失函数变为,

LCLS = LBCE是编码器预测的分类损失。通过结合分类损失,网络可以同时优化编码器和解码器。每个损失数都可以独立调整。
在表1中,我们报告了CASIAv2验证集上损失函数的不同配置的结果。为了量化定位性能,我们使用之前工作之后的像素级AUC和Dice评分,即:像素F1分数。

消融研究

在CASIAv2验证集上进行以下实验,并且报告像素级AUC和F1评分。

  • 块设计:对于长范围上下文建模的选择,我们比较了其他现有框架-Non-local (NL)块、简化Non-local (SNL)块、SE块和全局上下文块,它们被放置在每个解码器节点之前。表2(a)显示所有上下文框架都实现了比基线更好的性能。NL和SNL块非常相似,而具有相对较少参数的GCA块产生最佳性能。
  • 瓶颈设计:瓶颈部分中各组分的影响如表2(b)所示。w/o比采用单次1 × 1卷积作为变换,具有较高的参数,性能最好。尽管r16+ReLU的参数较少,但它们更难优化。因此,层范数(LN)用于简化优化,导致类似于w/o比的性能。
  • 瓶颈比率:瓶颈是用来减少冗余参数和提供一个参数和性能之间的权衡。瓶颈比r控制压缩的特性。表2 ©表明,网络的性能改善持续的比率降低。我们使用一个瓶颈比r = 4,有一个良好的平衡性能和参数。
  • 组织块位置:我们确定GCA块的放置是否对性能有影响。各种放置位置如附录A2所示。如表2(e)所示,这对性能的影响很小。通过在每个节点之前放置注意块可以获得最佳结果。关于骨干选择和培训细节的其他消融实验见附录A3。

比较与评价

我们将GCA-Net与现有SOTA架构进行了预训练和微调评估比较。根据训练集的最佳验证评分选择预训练模型。对于微调评估,我们使用RGB-N中评估过程后生成的不可见测试分裂。在表3、4中,我们将GCA-Net与现有方法进行了比较。

  • 预训练和微调比较均表明,GCA-Net在CASIAv2和IMD-2020数据集上优于所有其他方法,在NIST和COVERAGE数据集上具有可比性。在CASIA和IMD上,我们看到比PSCC-Net分别提高了5.4%和4.46%。GCA-Net在NIST 16上的AUC为95.3,仅落后于PSCC-Net 4%。然而,我们在F1得分方面超过了NIST-16上的每一个网络。这是因为我们对损失函数进行了微调
  • 像素级F1分数测量预测和gt的区域重叠。因为我们优化了网络dice损失时,其区域识别效果优于现有模型。我们的覆盖率排名第三,仅次于SPAN和PSCC-Net。COVERAGE包括复制区域偏移非常小的样本,然后进行对比度校正和边缘模糊。我们的训练数据完 全由公开可用的数据集组成,没有这种扰动,导致训练-测试分布的差异。这种限制可以通过在合成复制移动数据上进行训练并辅以对抗性实例来克服。定位的定性例子如图5所示。在补充部分中提供了对照MantraNet比较真实和伪造图像的定位的附加示例。

检测性能

为了分析图像级检测性能,我们使用F1分数比较了预训练的GCA-Net和SOTA架构。我们使用的检测数据集包含从CASIAv 2获取的511张伪造图像和749张真实的图像。如表5所示,GCA-Net的表现明显优于所有其他模型。这是因为它配备了一个专门的分类头,专门接受过识别伪造内容图像的训练。相比之下,现有方法通过对在定位结果中发现的操纵像素的数目进行计数来识别图像类别。

假阳性评价

我们提出的方法的主要贡献之一是减少定位中的假阳性。为了评估相对于其他网络的改进程度,我们计算真实图像和处理图像的FPR或假阳性率。FPR量化样本中被错误识别的数据的比例。在我们的例子中,当一个应该是真实的像素(即0)被分类为假的(即1)时,就会出现假阳性预测。FPR测量了在图像FPR中对整个像素集做出的不正确预测的比例。

然而,由于错误预测的数量相对于图像中的像素总数来说相对较小,因此这个值可能会变得非常小,并且很难解释。因此,我们使用−log(FPR)作为我们的评价指标。增加的值表示更好的性能和更低的误报。

表6是对来自CASIAv2和IMD2020测试集的真实和篡改图像的假阳性−log(FPR)进行比较。数值越高表示误报越少。实验分别对真实图像和篡改图像进行了实验,并对两组数据集进行了结合实验。

为了进行评估,我们使用从CASIAv2和IMD2020数据集中独立拍摄的200张真实图像和100张篡改图像创建了一个测试集。我们对GCA-Net使用了预先训练的模型,对ManTraNet使用了公开可用的实现。如表6所示,GCA-Net始终显示出更好的性能。对于CASIA和IMD的真实图像,GCA-Net的评分几乎是其他方法的两倍。此外,由于度量的对数性质,相当小的差异表示显著的现实世界的改善。补充部分提供了可信预测的其他定性样本。

鲁棒性分析

我们检验了我们提出的方法在各种攻击/后处理下的性能,以进一步验证其有效性和鲁棒性。为此,我们使用PSCC-Net中的失真设置从NIST16测试集降级图像。这些包括核大小为k的高斯模糊、质量因子q的JPEG压缩和使用标准差σ的加性高斯噪声。报告的度量是使用预先训练的GCA-Net计算出来的。在图6中,我们可以看到,对于各种后处理攻击,我们的模型优于现有的方法。

局限

在我们的实验中,我们发现当操作区域比真实像素大时,GCA-Net可能会失败。图7(a)包含了一个NIST16的样本,整个白色区域被操纵。虽然GCA-Net能够检测出真实区域和伪造区域之间的差异,但它对预测的可信度并不高。它突出显示了中心部分,表示该区域与周围的像素不同。对于第二个示例,我们测试了类似于Mantra-net的网络,以检查手动协助的适用性。图7(b)中初始图像尺寸为1024 × 1520,锻造区域较小。使用整个图像进行测试时,网络无法定位该区域。在此之后,我们裁剪了锻造位置周围的图像,并再次测试裁剪后的图像。这一次,网络能够识别出被操纵的区域。这表明GCA-Net可以用作计算机辅助工具。

总结

在本文中,我们介绍了一种新的门控上下文注意网络(GCA-Net)用于检测和定位图像伪造。我们提出的网络使用一个封闭的注意块来利用全局上下文特征和区域属性来定位被操纵的像素。提出的注意框架改进了远程依赖关系建模,减少了隐藏取证特征的衰减。本文阐述了现有方法存在的问题,以及如何通过更好的特征表示和训练策略来解决这些问题。正如我们的结果所证明的那样,GCA-Net在多个基准数据集上比现有的SOTA架构表现更好,最高可达6%,而且误报率显著降低。在未来,我们将进一步改进处理大分辨率图像的方法,并努力减少其局限性。我们还将探讨该模型在检测基于深度学习的深度伪造和其他语义分割任务中的可行性。

【论文笔记】GCA-Net : Utilizing Gated Context Attention for Improving Image Forgery Localization and Detec相关推荐

  1. 【论文笔记】DR-TANet: Dynamic Receptive Temporal Attention Network for Street Scene Change Detection

    论文 论文题目:DR-TANet: Dynamic Receptive Temporal Attention Network for Street Scene Change Detection 收录: ...

  2. 论文笔记(十二):Particle Filter Networks: End-to-End Probabilistic Localization From Visual Observations

    Particle Filter Networks: End-to-End Probabilistic Localization From Visual Observations 文章概括 摘要 1. ...

  3. 论文笔记 EMNLP 2021|Modeling Document-Level Context for Event Detection via Important Context Selection

    文章目录 1 简介 1.1 创新 2 方法 2.1 预测模型 2.2 上下文选择 2.3 训练 3 实验 1 简介 论文题目:Modeling Document-Level Context for E ...

  4. 论文笔记:WWW 2019 Heterogeneous Graph Attention Network

    1.前言 论文链接:https://arxiv.org/pdf/1903.07293v1.pdf github:https://github.com/Jhy1993/HAN 图神经网络作为一种基于深度 ...

  5. 论文笔记:EGAT: Edge Aggregated Graph Attention Networks and Transfer Learning

    文章目录 论文概况 摘要 1 介绍 2 方法 2.1 特征表示 2.1.1 蛋白质的图表示 2.1.3 边特征表示 2.2 EGAT的结构 2.2.2 边缘聚合图关注层 2.2.3 预测概率 2.2. ...

  6. 论文笔记:Dual Contrastive Loss and Attention for GANs

    目录 一.Dual Contrastive Loss and Attention for GANs 是什么? 1.损失函数 2.网络结构 3.总结 二.这项工作主要做了什么? 1.双重对比损失 2.生 ...

  7. 论文笔记:EGAT: Edge Aggregated Graph Attention Networks and Transfer Learning Improve Protein-Protein In

    文章目录 一.摘要 二.方法 (一).蛋白质图的表示 (二).节点级特征表示 (三).边级特征表示 (四). EGAT结构的主要特点 (五).边缘聚合图关注层 (六).在计算注意力分数时使用边缘特征 ...

  8. 论文笔记:联邦学习——Federated Learning: Strategies for Improving Communication Efficiency

    Federated Learning: Strategies for Improving Communication Efficiency 文章目录 Federated Learning: Strat ...

  9. 【论文笔记】Exploring Temporal Coherence for More General Video Face Forgery Detection

    * Exploring Temporal Coherence for More General Video Face Forgery Detection 题目:探索更一般的视频人脸伪造检测的时间相干性 ...

最新文章

  1. [20180818]校内模拟赛
  2. Websniff -aspx网页嗅探工具及使用说明
  3. Mysql 日期、字符串、时间戳互转
  4. cd-rom门锁定什么意思_CD-ROM的完整形式是什么?
  5. 2018.12.11——全局变量与局部变量
  6. 大工18春计算机文化基础在线测试1,大工18春《计算机文化基础》在线测试1(满分答案)...
  7. 揭秘 TI-ONE 大型赛事支撑能力是如何练就的
  8. ftp://hxtech.com
  9. php全词查询,php 关键词查询的实现方法
  10. 电脑自动关机什么原因?
  11. Internet Download Manager互联网下载管理器(简称IDM)无广告弹窗,速度起飞,你值得拥有
  12. 从CCNA到CCNP笔记宝典(第一版)发布了
  13. 深度装机大师一键重装_做好电脑重装系统前后的这些注意事项,让你从此摆脱装机忧愁!...
  14. html中怎样把背景图片置顶,HTML5中背景图片如何设置
  15. Hive 取非 Group by 字段数据的方法
  16. 物联网:断点续传策略及流程图
  17. 一网打尽win10 Google Chrome浏览器打开后默认 桔梗 页面
  18. Java例:计算某年某月有多少天
  19. 张勋说:钢渣处理和综合利用的原因及效益分析
  20. lsmod ‘used by‘ 的值是 -1

热门文章

  1. 20级爪哇程序设计新生赛(一)题解
  2. java计算机毕业设计中学网站设计与实现演示录像2020源码+mysql数据库+系统+部署+lw文档
  3. 记一下自行安装RabbitMQ的步骤
  4. 如何学习别人的代码(代码量较大时)
  5. 【nodejs】脚手架从零开始搭建JBD
  6. 魅族手机不能连接mac pro的eclipse
  7. 学生管理系统之简化学生版(练习版)
  8. 发字的楷书写法图片_秋季学期三年级书法教学计划范本
  9. 基于AIE的贵州省FVC提取
  10. Apache POI将HTML转换成Word