使用CNN过滤器学习FRAME模型以进行知识可视化

卷积神经网络(ConvNet或CNN)已被证明在许多任务中非常成功 就像计算机视觉领域的人一样 在此概念文件中,我们研究了可分辨CNN的生成视角。尤其是,我们建议使用CNN在卷积层预先学习的高表达滤波器来学习生成FRAME(滤波器,随机场和最大熵)模型。 我们证明了该学习算法可以在自然场景中生成逼真的丰富对象和纹理图案。我们解释说,每个学习的模型在该模型采用的过滤器层之上的一层对应一个新的CNN单元。 我们进一步证明这是可能的使用生成的CNN模型(专家模型的产物)来学习CNN单元的新层,以及 该学习算法允许使用具有二进制潜变量的EM解释。

1 引言

卷积神经网络(ConvNet或CNN)(Krizhevsky,Sutskever和Hin-ton,2012; LeCun等人,1998)在ImageNet数据集(Deng等人,2009)上取得的突破是一个分水岭事件。它已经改变了计算机视觉和语音识别以及相关行业的领域。尽管CNN已被证明是强大的判别机器,但研究人员最近对CNN的生成前景越来越感兴趣。一个有趣的例子是Google深梦(http://deepdreamgenerator.com/)的最新作品。尽管它没有破坏任何性能记录,但它通过生成有趣的生动图像来捕捉人们的想象力。
在此概念文件中,我们通过基于CNN特征定义生成模型并通过从模型生成图像来学习这些模型,从而更正式地探索CNN的生成视角。我们采用Google梦dream以求的隐喻,通过生成图像让生成模型梦dream以求。但是,与Google深dream的梦想不同,我们通过使梦想成真,从真实的图像中学习模型。

具体而言,我们建议使用CNN在卷积层上预先学习的高度非线性滤波器来学习FRAME(滤波器,随机场和最大熵)模型(Zhu,Wu和Mumford,1997; Xie等,2015a)。 -ers。 FRAME模型是一个随机字段模型,用于定义图像空间上的概率分布。从可以从模型定义的概率分布生成图像的意义上说,该模型是生成性的。概率分布是最大的熵分布,它再现了观察图像中滤波器响应的统计特性。由于具有最大的熵,所以该分布是最随机的分布,与观察到的过滤器响应的统计特性相匹配,因此从该分布采样的图像可以被视为典型图像,它们共享对象的统计特性。投放图片。

文学中有FRAME模型的两个版本。原始版本是为建模纹理图案而开发的固定模型(Zhu,Wu和Mumford,1997)。最新版本是一种非平稳扩展,其设计用于表示对象模式(Xie等人,2015a)。可以通过从给定词典中选择过滤器的子集来简化FRAME模型的两个版本。

FRAME模型中使用的滤波器是不同比例的定向Gabor滤波器和细长Gabor滤波器,以及大小不同的各向同性高斯(DoG)滤波器。这些是线性滤波器,可捕获简单的局部图像特征,例如边缘和斑点。随着CNN在各种卷积层上学习到的更具表现力的非线性滤波器的出现,自然希望用CNN滤波器替换原始FRAME模型中的线性滤波器,以期希望学习更多表现力的模型。

我们使用Langevin动力学从模型定义的概率分布中采样。这种动力学最初是由Zhu和Mumford(1998)应用于FRAME模型的,其动力学的梯度下降部分被解释为吉布斯反应和扩散方程(GRADE)。当应用于带有CNN滤波器的FRAME模型时,动力学可以看作是模型的递归生成形式,其中反应和扩散分别由正负权重的CNN滤波器控制。

将CNN过滤器合并到FRAME模型中不是临时的功利利用。实际上,它是FRAME模型与CNN模型之间的无缝网格划分。原始的FRAME模型具有一个能量函数,该函数由一层线性滤波和一层逐点非线性变换组成。遵循深度学习理念自然会添加线性耳滤和非线性变换的替代层,以拥有直接对应于CNN的深度FRAME模型。更重要的是,使用CNN过滤器的学习FRAME模型对应于FRAME模型所使用的CNN过滤器层正上方的层上的新CNN单元。特别地,非平稳FRAME在对象出现的特定位置成为单个CNN节点,而静止FRAME成为特殊类型的卷积单元。因此,可以将学习到的FRAME模型视为CNN单元的生成版本。

除了学习单个CNN单元外,我们还可以从未对齐的图像中学习多个卷积单元的新层,以便每个卷积单元代表一种类型的局部模式。我们称结果模型为CNN生成模型。它是专家模型的产物(Hinton,2002),其中每个专家都对局部模式的激活和失活进行混合建模。可以将整流后的线性单位作为该混合模型的能量函数的近似值来证明。学习算法允​​许对EM算法(Dempster,Laird和Rubin,1977年)进行解释,并采用硬决策E步来检测由卷积单元建模的局部模式。

本文的主要目的是建立生成的FRAME模型与判别性CNN之间的概念对应关系,从而为CNN提供正式的生成视角。非常需要这种观点,因为它可能最终导致以生成方式进行CNN的无监督学习,而无需图像标记。

2 过去的工作

最近,有许多关于可视化CNN节点的有趣论文,例如反卷积网络(Zeiler和Fergus,2014年),分数最大化(Simonyan,Vedaldi和Zisserman,2015年)以及Google深入梦想的最新巧妙作品(http ://deepdreamgenerator.com/)和绘画风格(Gatys,Ecker和Bethge,2015年)。我们的工作与以前的方法不同之处在于,我们从训练图像中学习了严格定义的生成模型,并且学习到的模型对应于新的CNN单位。这项工作是有关生成CNN的最新工作的延续(Dai,Lu和Wu,2015年)。

最近也有关于基于监督图像生成的生成模型的论文(Dosovitskiy,Sprin-genberg和Brox,2015),可变自动编码器(Hin-ton等,1995; Kingma和Welling,2014; Rezende,Mo) -hamed和Wierstra,2014; Mnih和Gregor,2014; Kulka-rni等人,2015; Gregor等人,2015),以及对抗性网络(Denton等人,2015)。这些论文中的每一篇都学习了用于图像生成的自上而下的多层模型,但是自上而下的生成模型的参数与自下而上的识别模型的参数完全分开。我们的工作旨在基于自下而上的识别模型所学到的知识来学习生成模型,即图像生成模型和图像识别模型共享相同的权重参数集。

3 基于线性滤波器的FRAME模型

本节回顾了基于线性滤波器的FRAME模型的背景。假设我是在正方形(或矩形)域D上定义的图像。假设{Fk,k = 1,…,K}是一组线性滤波器,例如不同比例的细长Gabor滤波器和定向Gabor滤波器, 以及不同大小的高斯(DoG)滤波器的各向同性差异。 令Fk * I为过滤后的图像或特征图,[Fk * I](x)为位置x(x为二维坐标)下的过滤响应。 线性滤波器Fk可以写为二维函数Fk(x),因此[Fk ∗ I](y)= Fk(x)I(y + x),这是平移不变的线性运算。

用于纹理图案的原始FRAME模型(Zhu,Wu和Mumford,1997年)是平稳或空间均匀的马尔可夫随机场或吉布斯分布,其形式如下:

其中λk()是要从训练图像估计的非线性函数,λ=(λk(),k = 1,…,K),Z(λ)是归一化常数以使p(I;λ )积分到1。在Zhu,Wu和Mumford(1997)的原始论文中,每个λk()
被离散化并估计为阶跃函数,即λk(r)= b = 1 wk,bhb(r),其中b∈{1,…,B}索引等距离散化仓,hb( 如果r在bin b中,则r)= 1,否则为0,即=(hb(),b = 1,…,B)是1-h()
热指标向量,而h([Fk ∗ I](x))是滤波器映射Fk ∗ I的边缘直方图。 空间合并的边缘直方图是模型(1)的充分统计量。

模型(1)是固定的,因为函数λk()不依赖于位置x。 该固定模型用于模拟纹理过滤。 在模型(1)中,能量函数U(I;λ)= -xλk([Fk ∗ I](x))涉及一层通过{Fk}的线性滤波,然后是一层通过{ λk()}。 递归地重复此模式(同时还添加本地最大池和子采样)将产生CNN的生成版本。

对象模式的非平稳或空间不均匀的FRAME模型(Xie et al。,2015a)具有以下形式:
函数λk,x()取决于位置x,而λ=(λk,x(),∀k,x)。 Z(λ)再次是归一化常数。 该模型是非平稳的,因为λk,x()取决于位置x。 估计λk,x()作为每个x的阶跃函数是不切实际的,因此将λk,x()参数化为一个参数函数
其中h()是预先指定的整流函数,而w =(wk,x,∀k,x)是要估计的未知参数。 在谢等人的论文中。 (2015a),他们使用h(r)= | r | 进行全波整流。 人们还可以使用整流线性单位h(r)= max(0,r)(Krizhevsky,Sutskever和Hinton,2012)进行半波整流,这可以看作是精心设计的二槽离散化。 q(I)是参考分布,例如高斯白噪声模型
| D | 计算图像域D中的像素数。

在原始FRAME模型(1)中,q(I)被假定为统一度量。在模型(2)中,我们还可以将q(I),尤其是1 || I || 2项吸收到能量函数中,以便再次相对于均匀度量定义模型,如原始FRAME模型(1)。我们在这里使q(I)为例,因为我们将指定参数σ2而不是学习它,并使用q(I)作为背景的空模型。在模型(2)和(3)中,可以考虑(wk,x,,x,k)在由h()校正的第一层滤波器{Fk}之上的第二层线性滤波器。

模型(1)和(2)都可以简化。通过使用滤波器追踪程序选择少量滤波器Fk可以简化模型(1)(Zhu,Wu,and Mumford,1997)。可以通过选择少量的滤波器Fk和位置x来稀疏模型(2),以便只有少量的wk,x非零。稀疏化可以通过共享的匹配追踪方法(Xie等人,2015a)或生成增强方法(Xie等人,2015b)来实现。

4 基于CNN过滤器的FRAME模型

代替使用线性滤波器,我们可以在预学习的CNN的各个卷积层使用滤波器。 假设在预先学习的CNN的某个卷积层上有一组滤波器{Fk,k = 1,…,K}(例如K = 512)。 对于在正方形图像域D上定义的图像I,令Fk ∗ I为滤波器Fk的特征图,令[Fk ∗ I](x)为I对Fk在位置x处的滤波响应(再次x为a 二维坐标)。 我们假设[Fk ∗ I](x)是应用整流线性变换h(r)= max(0,r)之后获得的响应。 然后,非平稳FRAME模型变为
其中q(I)再次是高斯白噪声模型(4),而w =(wk,x,∀k,x)是要从训练数据中学习的未知参数。 Z(w)是归一化常数。 模型(5)与线性滤波器具有与模型(2)相同的形式,除了模型(2)中的整流函数h()已被h(r)吸收到模型(5)中的CNN文件管理器{Fk}中 = max(0,r)。 我们将使用模型(5)生成对象模式。

固定FRAME模型的形式如下:

它与模型(5)几乎相同,除了wk在x上相同。 w =(wk,∀k)。 我们将使用模型(6)生成纹理图案。

同样,模型(5)和(6)可以稀疏化,既可以通过正向选择(例如过滤器追踪)(Zhu,Wu和Mum-ford,1997年),也可以通过生成性提升(Xie等人,2015b)或通过向后选择 消除。

5 学习和采样算法

对象模型的基本学习算法从来自同一对象类别的一组对齐的训练图像{Im,m = 1,…,M}估计未知参数w,其中M是训练的总数 图片。 在基本学习算法中,可以通过最大化对数似然函数来估计权重参数w
其中p(I; w)由(5)定义。 L(w)是一个凹函数。 L(w)的一阶导数是
其中Ew表示对p(I; w)的期望。 该期望可以通过蒙特卡洛积分来近似。 L(w)的二阶导数是([Fk ∗ I](x),∀k,x)的方差-协方差矩阵。 w可以通过随机梯度上升算法来计算(Younes,1999):
对于每个k∈{1,…,K}和x∈D,其中γ是学习率,{I〜m}是使用MCMC从p(I; w(t))采样的合成图像 。 M是从p(I; w(t))采样的独立平行马尔可夫链的总数。 可以将学习率γ与观测到的{[Fk ∗ Im](x),variancem}的方差成反比,也可以将其与迭代t成反比,如在随机近似中。

为了从p(I; w)进行采样,我们采用Langevin动力学。 编写能量函数
其中U(I,w)= U(I,w)/∂I。 该梯度可以通过反向传播来计算。 在(11)中,是一个小步长,Zτ〜N(0,1),独立于τ,其中粗体字体1是标识矩阵,即Zτ是高斯白噪声图像,其像素值遵循 N(0,1)独立。 在这里,我们用τ表示Langevin采样过程的时间步长,因为t用于学习过程的时间步长。 Langevin采样过程是学习过程中的一个内在循环。 在学习过程中每两个连续的w更新之间,我们从学习算法的先前迭代生成的图像开始运行有限次数的Langevin动力学迭代,该迭代在学习算法中称为“热启动”。 文学。 Zhu和Mumford(1998)也采用了Langevin方程,他们将相应的梯度下降算法称为Gibbs反应和扩散方程(GRADE)。
算法1详细介绍了学习和采样算法。算法1体现了“通过合成进行分析”的原理,即,我们从当前模型生成合成图像,然后根据合成图像和观察到的图像之间的差异来更新模型参数。如果我们将合成图像视为当前模型的“梦想”(遵循Google深度梦想的隐喻),那么学习算法就是使梦想成真。
从MCMC的角度来看,算法1运行非平稳并行马尔可夫链,该链是从Gibbs分布中以变化的能量态势进行采样的,例如在模拟退火或回火中。这可以帮助链避免陷入局部模式。我们还可以通过在每次学习迭代中从白噪声图像初始化Langevin动力学并使动力学有足够的时间来放松,从而使用“冷启动”方案。
为了学习静态FRAME(6),通常M = 1,即我们观察到一个纹理图像,并更新参数
对于每个k∈{1,…,K},在位置x∈D上存在一个空间池。再次通过Langevin动力学完成采样。 平稳模型(6)的学习和采样算法仅涉及算法1的细微修改。

6 CNN生成单位

在过滤器{Fk,k = 1,…,K}的卷积层之上,我们可以构建另一层过滤器{Fj,j = 1,…,J}(其中F为粗体,并且 由j)索引,因此
其中,h()是整流函数,例如整流后的线性耳单元h(r)= max(0,r),偏置项bj与-log Z(w)有关。 为简单起见,我们忽略了本地最大池化和子采样的层。

模型(5)对应于{Fj}中特定位置y(例如,原点y = 0)处的单个过滤器,我们假设该对象出现。 权重(w(j))可以通过使用算法1拟合模型(5)来学习,这使我们能够以生成方式添加CNN节点。

(5)中的对象模型p(I; w)与背景模型q(I)的对数似然比为log(p(I; w)/ q(I))= x wk,x [Fk ∗ I](x)-log Z(w)。它可以用作检测物体相对于背景的分数。如果分数低于阈值,则不会检测到任何对象,并且分数会校正为0。(13)中Fj中的校正线性单位h()会说明以下事实:在任何位置y处,都会出现对象或不。更正式地讲,考虑混合模型p(I)=αp(I; w)+(1-α)q(I),其中α是激活对象的频率,而1-α是返回的频率-地面。 log(p(I)/ q(I))= log(1 + exp(I)(x)-log Z(w)+ log(α/(1-α))+ log(1-α)我们可以用硬最大函数max(0,r)近似软最大函数log(1 + er)。因此我们可以将偏差项标识为b = log(α/(1-α))-log Z(w) ,并且线性整流单元模拟对象图案的“开”和“关”的混合。

模型(5)用于对对象对齐且来自同一类别的图像进行建模。对于可能包含多个局部模式的非对齐图像,我们可以将模型(5)扩展为具有多个过滤器的卷积版本


其中{Fj}由(13)定义。 该模型是专家模型的产物(Hinton,2002年),其中每个[Fj * I](x)都是关于位置x处j型局部模式的激活或灭活的混合物的专家。 我们将模型(14)与(13)称为生成CNN模型。 该模型也可以视为And-Or模型的密集版本(Zhu和Mumford,2006),其中每个专家的二进制开关对应于一个Or节点,乘积对应于一个And节点。

平稳模型(6)对应于生成CNN模型(14)与(13)的特例,其中只有一个j,并且[F ∗ I](x)= k = 1 wk [Fk ∗ I] (x),这是(13)的特例,无需更正。它是一个单例滤波器,在同一位置结合了较低层的滤波器响应。

更重要的是,由于CNN的递归性质,如果通过将每个Fk的权重和偏差参数乘以wk来将固定模型(6)的权重参数wk吸收到滤波器Fk中,则固定模型将成为生成的CNN模型(14),不同之处在于将顶层过滤器{Fj}替换为较低层过滤器{Fk}。固定模型(6)的学习是生成CNN模型(14)的学习的简化版本,其中每个滤波器Fk只有一个乘法参数wk。固定模型(6)的学习比非固定模型(5)的学习更不受监督,并且更能指示CNN特征的表达,因为前者不需要对齐。

假设我们从(13)的CNN模型(14)观察到{Im,m = 1,…,M}。令L(w)= log p(Im; w)是对数似然,其中p(I; w)是图像I在位置y上j型局部模式的二进制开/关检测器,因为对于h( r)= max(0,r),如果r≤0,则h(r)= 0,如果r> 0,则h(r)=1。梯度(15)允许EM(Dempster,Laird, (Rubin,and Rubin,1977)。这是在涉及潜在变量的无监督学习算法中的典型解释。具体来说,δj,y()检测由Fj建模的类型j的局部模式。此步骤可以被认为是硬决策E步骤。利用检测到的局部模式,然后以与(9)中类似的方式更新Fj的参数,可以将其视为M步。也就是说,我们仅从检测到模式j的图像块中学习Fj。 Hong等人使用了这种方案。 (2014年)学习活动基础模型的密码本(Wu等人,2010年)。

具有(13)的模型(14)定义了一种递归方案,其中较高层过滤器{Fj}的学习基于较低层过滤器{Fk}。我们可以使用这种递归方案从头开始构建各层。我们可以从原始图像的基础层开始,然后学习第一层滤镜。然后,基于第一层过滤器,我们学习第二层过滤器,依此类推。


其中∂[Fj ∗ I](x)/∂w涉及多层二进制检测器。 生成的算法还需要用于Langevin采样的局部导数∂[Fj ∗ I](x)/∂I,可以将其视为由多层二元开关驱动的递归生成模型。 ∂[Fj ∗ I](x)/∂w和and [Fj ∗ I](x)/∂I都可以通过反向传播获得。 参见Hinton等。 (2006); Ngiam等。 (2011)沿这个方向的早期工作。 有关CNN的生成梯度,另请参见Dai,Lu和Wu(2015)。

在逐层建立模型之后,我们可以继续同时细化所有层的参数。实际上,模型(14)中的参数w可以更广泛地解释为定义所有滤波器层的多层连接权重。对数似然的梯度为
其中Ψi是顶层完全连接层的第i个特征,N是此层的特征总数(例如N = 4096),Wi是参数W =(Wi,∀i)。 仍然可以将Ψi视为其过滤器映射为1×1的过滤器。假设有许多图像类别,并且假设我们为每个图像类别学习了模型(18),且具有类别特定的W。 还要假设我们获得了每个类别的优先频率。 贝叶斯规则的简单练习然后为我们给出了类别给定图像的后验概率的soft-max分类规则,这是判别性CNN。

7 图像生成实验

在我们的实验中,我们使用VGG滤波器(Simonyan和Zis-serman,2015),并使用MatConvNet的Matlab代码(Vedaldi和Lenc,2014)。

实验1:生成对象模式。我们从对准物体的图像中学习非平稳FRAME模型(5)。这些图像是从互联网上收集的。对于每个类别,训练图像的数量大约为10。我们使用16条平行链用于Langevin采样。参数的每两个连续更新之间的Langevin迭代次数为L =100。图1显示了一些使用来自VGG第三卷积层的滤波器进行的实验。对于每个实验,第一行显示4幅训练图像,第二行显示4幅由算法1生成的合成图像。

实验2:生成纹理图案。我们从纹理图像中学习固定的FRAME模型(6)。图2显示了一些实验。每个实验都显示在一行中,其中第一个图像是训练图像,而其他两个图像则是通过学习算法生成的。

实验3:生成混合模式。我们从混合类别的图像中学习模型(5)和(6),并生成混合模式。无花果3和4显示几个示例。

实验4:从未对齐的图像中学习新的滤镜层。我们通过(13)学习生成的CNN模型(14)。图5显示了3个实验。在每一行中,第一个图像是训练图像,接下来的两个图像由学习的模型生成。在第一个风光实验中,我们基于第3个卷积层的预训练VGG滤波器,在第4个卷积层(无局部最大池)学习了10个滤波器。每个要学习的Conv4过滤器的大小为11×11×256。在向日葵和白鹭实验中,我们学习了20个大小为7×7×256的过滤器(具有局部最大池)。显然,这些学习过的过滤器会捕获局部模式,然后无缝地对其进行重新随机排列。图6显示了一个实验,在该实验中,我们从一组小的未对齐图像训练中学习了一层滤镜。第一行显示训练图像的3个示例,第二行显示生成的图像。我们使用与向日葵实验相同的参数设置。这些实验表明,可以从非对齐图像中学习生成的CNN模型(14)。

8 结论

在本文中,我们学习了基于预训练的CNN滤波器的FRAME模型。 可以不依赖于预训练的CNN过滤器从头开始逐层地学习多层FRAME模型或生成的CNN模型(14)。 该学习将是模型(14)的递归,并且可以在没有图像标签的情况下不受监督。

Learning FRAME Models Using CNN Filters for Knowledge Visualization相关推荐

  1. 活体检测论文研读三:Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision

    Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision 论文简介 一.指出先前的深度学习方法将人脸反欺 ...

  2. 你有哪些 Deep learning(RNN、CNN)调参的经验?

    来自 | 知乎-hzwer,北京大学 https://www.zhihu.com/question/41631631/answer/859040970 编辑 | 机器学习算法与自然语言处理,Dataw ...

  3. [人脸活体检测] 论文: Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision

    Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision 论文简介 与人脸生理相关的rppG信号被研究者 ...

  4. 速看!deep learning(rnn、cnn)调参的经验

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|视觉算法 话说三人行,必有我师焉.有哪些deep lea ...

  5. Learning Deep Models for Face Anti-Spoofing_ Binary or Auxiliary Supervision

    Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision 标签(空格分隔): anti-spoofing ...

  6. 人群密度估计--Learning to Count with CNN Boosting

    Learning to Count with CNN Boosting ECCV2016 本文使用CNN来进行人群密度估计,主要有两个改进地方:layered boosting and selecti ...

  7. Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

    本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之 ...

  8. [转]Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

    Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN 原文地址:http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位 ...

  9. Check-N-Run: a Checkpointing System for Training Deep Learning Recommendation Models | NSDI‘ 22

    分布式机器学习论文分享 | Check-N-Run: a Checkpointing System for Training Deep Learning Recommendation Models | ...

最新文章

  1. 切换apache的prefork和worker模式
  2. orcale 非非等于_oracle 不等于1怎么查?
  3. Java注解(1)-注解基础
  4. Android USB Host与HID通讯
  5. golang key map 所有_Map的底层实现 为什么遍历Map总是乱序的
  6. Python json模块 - Python零基础入门教程
  7. h5键盘把页面顶走了_微信h5开发的坑
  8. Ubuntu之更新CMake的版本
  9. Eclipse里面导工程的时候报错faceted project problem
  10. phpstorm 10 注册码
  11. HTTP协议-HTTP权威指南
  12. 虚拟钢琴音源插件-GSi Genuine Sounds Vol.I Piano Edition v1.0.2 CE-win
  13. win7计算机资源管理器卡住,win7系统资源管理器出现卡死现象的解决方法
  14. NLP入门(十)使用LSTM进行文本情感分析
  15. Word 安全模式可以启动,正常模式不能启动
  16. 电脑文件夹怎么批量重命名
  17. springtask Cron表达式与fixedDelay的区别
  18. 揭秘喜马拉雅黑科技——网页播放器(创建自己的单页应用)
  19. CAD手机看图软件中如何根据已知坐标点绘制线段?
  20. 【历史上的今天】9 月 2 日:互联网的“诞生日”;三星逐步跌落神坛;世界上第一个ATM自动取款机

热门文章

  1. python计算极限,Python的极限是什么?
  2. Qtcreator常用的快捷键
  3. 代码随想录算法训练营第二天|LeetCode977.有序数组的平方、LeetCode209.长度最小的子数组、LeetCode59.螺旋矩阵II。
  4. 单片机c语言编程编码器数值,基于单片机的光电编码器测速报告详解.doc
  5. C语言家族成员关系系统,家族成员信息管理系统
  6. 计算机考试时电脑死机影响成绩,计算机等级考试电脑出错 考试误时200考生受影响...
  7. About email
  8. 数控系统ftp服务器,数控系统的网络支持技术( 上)
  9. MATLAB批量求图片均值、相对标准差、平均梯度、信息熵的代码
  10. RBA认证是什么?EICC改名后RBA有什么区别?