GaitMask:基于掩码的步态识别模型

paper题目:GaitMask: Mask-based Model for Gait Recognition

paper是北京交通大学发表在BMVC 2021的工作

paper地址:链接

Abstract

步态识别是一项重要的生物识别技术,它通过使用步行姿势来识别一个人。最近,大多数步态识别方法要么将人类步态作为一个整体来生成全局特征表示(GFR),要么将人类步态等效地划分为多个局部区域以建立局部特征表示(LFR)。然而,我们观察到 LFR 或 GFR 并不能充分代表人类步态,因为 LFR 只关注每个局部区域的详细信息,而 GFR 更关注全局上下文信息。另一方面,局部区域的划分方式是固定的,只关注几个特定区域的局部信息。受此观察的启发,我们提出了一种新的基于掩码的网络,名为 GaitMask,用于步态识别。 GaitMask 基于 Maskbased Local Augmentation (MLA) 构建,用于学习更全面的特征表示。 MLA是一个双分支结构,由一个作为backbone的GFR提取模块和一个作为分支的基于掩码的LFR提取模块组成。具体来说,基于掩码的 LFR 提取由一对互补掩码组成,其中一个掩码随机丢弃输入特征图的一个区域,另一个仅保留该区域。互补掩码可用于生成更全面的 LFR,并增强backbone特征表示的鲁棒性。对两个流行数据集的实验表明,我们的方法实现了最先进的结果。具体来说,所提出的方法显著提高了复杂环境中的性能。

1 Introduction

与人脸、指纹和虹膜等传统生物特征识别技术不同,步态识别技术可以在远距离条件下使用,不需要目标之间的合作。因此,它被广泛应用于监控系统和身份认证。然而,步态识别的性能受到许多复杂因素的影响,包括视角、携带和速度等。因此,步态识别仍然是一项具有挑战性的任务。

最近,研究人员提出了不同的基于深度学习的方法来生成判别性特征表示,这些方法大致可分为两类。一种是全局特征表示(GFR),它将人类步态作为一个整体进行特征提取。另一种是局部特征表示(LFR),它从多个局部区域提取步态特征。

然而,我们观察到LFR忽略了不同局部区域的相关性,而GFR没有充分利用细节信息。此外,如图1(b)所示,局部区域以自上而下、大小相等的方式进行划分,其仅关注少数特定局部区域的信息。

图1:原始步态图像、不同分区的局部步态图像和基于掩码的步态图像的可视化。

为了解决上述问题,本文提出了一种基于掩码的LFR提取器来产生更全面的LFR。具体地说,基于掩码的LFR提取器是包括一对互补掩码的双分支结构。如图1(c)所示,一个掩码随机丢弃步态序列的局部区域,而另一个掩码仅保留该区域。在训练阶段,通过使用互补模板,该提取器随机生成一对互补特征映射,用于从任意局部区域提取局部步态特征。与其他只能利用少数特定区域信息的局部划分模式相比,该抽取器充分利用了来自不同局部区域的信息来训练网络。因此,在测试阶段,该提取器可以产生更全面的LFR。在基于掩码的LFR提取器的基础上,我们提出了一种新的特征提取模块,称为基于掩码的局部增强模块(MLA),以生成更全面的特征表示。MLA包括一个GFR提取器和一个基于掩码的LFR提取器。GFR提取器用作backbone,从整个特征映射生成GFR,而基于掩码的LFR提取器生成LFR,以增强backbone的特征表示。

我们的方法的主要贡献可以总结如下:

  • 我们提出了一种新的LFR提取器,它可以通过使用一对互补掩码来产生更全面的LFR。与传统的只从几个固定的局部区域提取特征的分割不同,所提出的LFR提取器有效地利用了来自不同局部区域的步态信息。

  • 基于所提出的基于掩码的LFR提取器,我们开发了一种新的基于掩码的局部增强,由backbone和分支组成,以生成更具判别性的特征表示。Backbone关注全局上下文信息,而分支更关注步态序列的详细信息。

  • 在两个基准数据集上的实验结果表明,该方法达到了最新水平(SOTA)。具体来说,我们的方法在背包和穿大衣的携带条件下分别比其他方法高出1.7%和5.5%。

2 Related Work

目前,大多数基于深度学习的步态识别方法都是以步态序列的轮廓作为输入,利用二维或三维卷积神经网络(CNN)提取步态特征。这些方法大致可以分为两类,即基于模板的方法和基于序列的方法。

基于模板的方法要么将步态序列的时间信息聚合为步态能量图像(GEI),以提取步态特征,要么提取每个步态图像的特征,然后集成时间信息。例如,Shiraga等人[16]提出了一个名为GEINet的基于模板的网络,以从GEI生成特征表示。具体来说,他们首先通过使用均值函数来聚合步态序列的所有时间信息来生成GEI,然后使用2D CNN提取步态特征。然而,GEI的生成过程会导致大量信息的丢失。为了更好地利用步态序列的信息,一些研究人员[3,5,27]首先使用2D CNN提取每个步态图像的步态特征,然后聚合步态序列的时间信息。例如,Chao等人[3]提出了一个名为GaitSet的新网络来生成判别性特征表示。Gaitset首先提取每个步态图像的步态特征,然后使用max函数聚合时间信息。然而,它们不能充分利用步态序列的时间信息。为了更好地利用这些信息,一些研究人员[5,27]在空间特征提取后对时间关系进行建模。例如,Fan等人[5]提出了一种微动捕捉模块(MCM)来模拟短程时间相关性。Zhang等人[27]使用长-短期记忆(LSTM)单元来模拟时间关系。

基于序列的方法通常以步态序列为单位,利用3D CNN提取时空步态特征。例如,Wolf等人[20]开发了一个3D CNN,从固定长度的步态片段生成时空步态表示。Thapar等人[19]首先将步态序列划分为多个固定长度的步态片段,然后使用3D CNN提取每个片段的步态特征。最后,他们使用LSTM模块学习不同步态片段的时间关系。然而,这些工作是不灵活的,因为他们需要一个固定长度的步态剪辑作为输入来训练他们的网络。为了充分利用3D CNN中的时间信息,Lin等人[12]提出了一种帧池化操作来自适应地聚合整个步态序列的时间信息,该操作充分利用了整个步态序列的时间信息。

3 Proposed Method

在本节首先概述GaitMask方法的框架。然后,介绍了所提出的基于掩码的局部增强(MLA)。最后,我们给出了训练和测试阶段的实现细节。

3.1 Overview


我们的GaitMask方法的概述如图2所示。整个步态识别方法是通过3D卷积建立的,类似于[12]。给定步态序列,我们首先使用3D卷积来提取浅层特征。然后,使用时间卷积来聚合特征图的局部时间信息。接下来,提出了多个MLA模块来学习更全面的步态特征。最后,我们引入时间池化和广义平均池(GeM)来生成特征表示。在训练阶段,我们使用单独的三元组损失来训练提出的网络。

图2:提出的GaitMask概览。

3.2 Mask-based Local Augmentation


如图3所示,MLA包括两个分支:GFR提取和基于掩码的LFR提取。GFR提取直接从输入特征图中提取步态特征,而基于掩码的LFR提取首先生成一对互补的步态特征图,然后从中提取局部步态特征。假设MLA的输入特征图为Xin∈RCin×Tin×Hin ×WinX_{i n} \in \mathbb{R}^{C_{i n} \times T_{i n} \times H_{\text {in }} \times W_{i n}}Xin​∈RCin​×Tin​×Hin ​×Win​,其中Cin C_{\text {in }}Cin ​是通道数,TinT_{i n}Tin​是特征图的长度(时间维度),(Hin,Win)\left(H_{i n}, W_{i n}\right)(Hin​,Win​)是每帧的图像大小。GFR提取可定义为
Yg=c3×3×3(Xin)Y_{g}=c^{3 \times 3 \times 3}\left(X_{i n}\right) Yg​=c3×3×3(Xin​)
其中,c3×3×3c^{3 \times 3 \times 3}c3×3×3表示核大小为3的3D卷积。Yg∈RCou×Tin×Hin×WinY_{g} \in \mathbb{R}^{C_{o u} \times T_{i n} \times H_{i n} \times W_{i n}}Yg​∈RCou​×Tin​×Hin​×Win​是GFR提取的输出。

图3:提出的基于掩码的局部增强概述。基于掩码的局部增强包括两个分支:GFR提取和基于掩码的LFR提取。在GFR和LFR提取之后,我们提出了两种不同的操作来融合这两种特征表示,称为MLA-A和MLA-B。MLA-A表示逐元素相加,而MLA-B表示水平级联两个特征图。在训练阶段,基于掩码的LFR提取的输入是一对互补的基于掩码的特征图。在测试阶段,基于掩码的LFR提取的输入是原始特征图。

另一方面,基于掩码的LFR提取首先生成两个互补掩码M0∈RHin×WinM_{0} \in \mathbb{R}^{H_{i n} \times W_{i n}}M0​∈RHin​×Win​和M1∈RHin×WinM_{1} \in \mathbb{R}^{H_{i n} \times W_{i n}}M1​∈RHin​×Win​,其中M0M_{0}M0​和M1M_{1}M1​的元素分别为0和1。然后,我们随机丢弃掩码M1M_{1}M1​的一个连续的水平区域。同时,我们在掩码M0M_{0}M0​中保留了相应的区域。具体来说,假设M0={hi0∣i=1,2,…,Hin }M_{0}=\left\{h_{i}^{0} \mid i=1,2, \ldots, H_{\text {in }}\right\}M0​={hi0​∣i=1,2,…,Hin ​},其中hi0∈R1×Winh_{i}^{0} \in \mathbb{R}^{1 \times W_{i n}}hi0​∈R1×Win​是特征图M0M_{0}M0​的第iii列。
M1={hj1∣j=1,2,…,Hin }M_{1}=\left\{h_{j}^{1} \mid j=1,2, \ldots, H_{\text {in }}\right\}M1​={hj1​∣j=1,2,…,Hin ​},其中hj1∈R1×Win h_{j}^{1} \in \mathbb{R}^{1 \times W_{\text {in }}}hj1​∈R1×Win ​是特征图M1M_{1}M1​的第jjj列。我们首先随机选择一个区间(k,k+⌊d×Hin⌋)\left(k, k+\left\lfloor d \times H_{i n}\right\rfloor\right)(k,k+⌊d×Hin​⌋),其中ddd表示丢弃率。然后,将掩码M0M_{0}M0​中的{hk0,…,hk+⌊d×Hin ⌋0}\left\{h_{k}^{0}, \ldots, h_{k+\left\lfloor d \times H_{\text {in }}\right\rfloor}^{0}\right\}{hk0​,…,hk+⌊d×Hin ​⌋0​}的值设置为1,作为新的掩码M0′∈RHin ×Win M_{0}^{\prime} \in \mathbb{R}^{H_{\text {in }} \times W_{\text {in }}}M0′​∈RHin ​×Win ​,而 {hk1,…,hk+⌊d×Hin ⌋1}\left\{h_{k}^{1}, \ldots, h_{k+\left\lfloor d \times H_{\text {in }}\right\rfloor}^{1}\right\}{hk1​,…,hk+⌊d×Hin ​⌋1​}的值设置为0,作为新的掩码M1′∈RHin×WinM_{1}^{\prime} \in \mathbb{R}^{H_{i n} \times W_{i n}}M1′​∈RHin​×Win​。基于掩码的 LFR 提取可以表示为:
Ym=c3×3×3(∑k=1Cin∑q=1Tin(Xin⊗M0′))+c3×3×3(∑k=1Cin∑q=1Tin(Xin⊗M1′)),Y_{m}=c^{3 \times 3 \times 3}\left(\sum_{k=1}^{C_{i n}} \sum_{q=1}^{T_{i n}}\left(X_{i n} \otimes M_{0}^{\prime}\right)\right)+c^{3 \times 3 \times 3}\left(\sum_{k=1}^{C_{i n}} \sum_{q=1}^{T_{i n}}\left(X_{i n} \otimes M_{1}^{\prime}\right)\right), Ym​=c3×3×3(k=1∑Cin​​q=1∑Tin​​(Xin​⊗M0′​))+c3×3×3(k=1∑Cin​​q=1∑Tin​​(Xin​⊗M1′​)),
其中⊗\otimes⊗表示图像维度中的元素乘积。 Ym∈RCou×Tin ×Hin ×Win Y_{m} \in \mathbb{R}^{C_{o u} \times T_{\text {in }} \times H_{\text {in }} \times W_{\text {in }}}Ym​∈RCou​×Tin ​×Hin ​×Win ​是基于掩码的 LFR 提取的输出。

本文提出了两种方法来组合两次提取的输出。一种是逐元素加法(MLA-A),可以表示为
YMLA−A=Yg+Ym,Y_{M L A-A}=Y_{g}+Y_{m}, YMLA−A​=Yg​+Ym​,
其中YMLA−A∈RCou×Tin ×Hin ×Win Y_{M L A-A} \in \mathbb{R}^{C_{o u} \times T_{\text {in }} \times H_{\text {in }} \times W_{\text {in }}}YMLA−A​∈RCou​×Tin ​×Hin ​×Win ​是组合特征图。另一种是在水平轴上级联特征图,可以表示为
YMLA−B=concat {YgYm},Y_{M L A-B}=\text { concat }\left\{\begin{array}{c} Y_{g} \\ Y_{m} \end{array}\right\}, YMLA−B​= concat {Yg​Ym​​},
其中 concat 表示水平轴上的级联操作。 YMLA−B∈RCou×Tin ×(2∗Hin )×Win Y_{M L A-B} \in \mathbb{R}^{C_{o u} \times T_{\text {in }} \times\left(2 * H_{\text {in }}\right) \times W_{\text {in }}}YMLA−B​∈RCou​×Tin ​×(2∗Hin ​)×Win ​是组合特征图。

3.3 Feature Mapping

在特征提取之后,我们引入时间池化和空间池化来生成特征表示。时间池化旨在聚合步态序列的所有时间信息。假设Xfm∈RCfin×Tfin×Hfin×WfinX_{f m} \in \mathbb{R}^{C_{f i n} \times T_{f i n} \times H_{f i n} \times W_{f i n}}Xfm​∈RCfin​×Tfin​×Hfin​×Wfin​是最后一个 MLA 模块的输出,其中CfinC_{f i n}Cfin​是通道数,TfinT_{f i n}Tfin​是特征图的长度(时间维度),(Hfin,Wfin)\left(H_{f i n}, W_{f i n}\right)(Hfin​,Wfin​)是每一帧的图像大小。时间池化可以定义为
Ytp=FMaxTfin×1×1(Xfm)Y_{t p}=F_{M a x}^{T_{f i n} \times 1 \times 1}\left(X_{f m}\right) Ytp​=FMaxTfin​×1×1​(Xfm​)
其中FMax⁡Tfin×1×1(⋅)F_{\operatorname{Max}}^{T_{f i n} \times 1 \times 1}(\cdot)FMaxTfin​×1×1​(⋅)表示最大池化操作。 Ytp∈RCfin×1×Hfin×WfinY_{t p} \in \mathbb{R}^{C_{f i n} \times 1 \times H_{f i n} \times W_{f i n}}Ytp​∈RCfin​×1×Hfin​×Wfin​是时间池化的输出。

空间池化首先将特征图YtpY_{t p}Ytp​划分为多个水平条,然后使用广义平均池化(GeM)在垂直轴上自适应地聚合每个条带的信息。最后,使用多个单独的全连接层来进一步整合每个条带的通道信息。空间池化可以表示为
Ysp=Fsfc((FAvg1×1×Wfin((Ytp)p))1p),Y_{s p}=F_{s f c}\left(\left(F_{A v g}^{1 \times 1 \times W_{f i n}}\left(\left(Y_{t p}\right)^{p}\right)\right)^{\frac{1}{p}}\right), Ysp​=Fsfc​((FAvg1×1×Wfin​​((Ytp​)p))p1​),
其中FAvg 1×1×Wfin(⋅)F_{\text {Avg }}^{1 \times 1 \times W_{f i n}}(\cdot)FAvg 1×1×Wfin​​(⋅)表示平均池化操作。 FsfcF_{s f c}Fsfc​表示多个独立的全连接(FC)层。它的大小为Hfin ×Cfin ×Cfou H_{f \text { in }} \times C_{\text {fin }} \times C_{\text {fou }}Hf in ​×Cfin ​×Cfou ​,其中HfinH_{f i n}Hfin​是 FC 层数,CfinC_{f i n}Cfin​和CfouC_{f o u}Cfou​分别是每个 FC 层的输入和输出维度。 Ytp∈Y_{t p} \inYtp​∈ RCfou ×1×Hfin ×1\mathbb{R}^{C_{\text {fou }} \times 1 \times H_{\text {fin }} \times 1}RCfou ​×1×Hfin ​×1是空间池化的输出。

3.4 Training Details and Test


训练。在训练阶段,首先随机裁剪一个步态剪辑作为网络的输入。然后,将生成特征表示YtpY_{t p}Ytp​。最后,单独的三元组损失用于独立计算每个条带的损失。三元组损失可以定义为:
Ltriplet =Max⁡(D(Ytpα,Ytpβ)−D(Ytpα,Ytpγ)+margin⁡,0)L_{\text {triplet }}=\operatorname{Max}\left(D\left(Y_{t p}^{\alpha}, Y_{t p}^{\beta}\right)-D\left(Y_{t p}^{\alpha}, Y_{t p}^{\gamma}\right)+\operatorname{margin}, 0\right) Ltriplet ​=Max(D(Ytpα​,Ytpβ​)−D(Ytpα​,Ytpγ​)+margin,0)
其中α\alphaα和β\betaβ是来自同一类的样本,而γ\gammaγ代表来自另一类的样本。 D(di,dj)D_{\left(d_{i}, d_{j}\right)}D(di​,dj​)​是样本did_{i}di​和djd_{j}dj​之间的欧几里得距离。margin是三元组损失的边际。为了更好地训练所提出的网络,我们采用 Batch ALL (BA) 策略作为采样策略。具体来说,每批次的样本数设置为P×KP \times KP×K,其中PPP是目标 ID 的数量,KKK是每个目标 ID 的样本数。由于内存大小和计算复杂度的限制,输入步态剪辑的长度设置为TTT帧。

测试。在测试阶段,网络不需要考虑内存大小的限制。因此,整个步态序列可以输入到所提出的 GaitMask 中,以生成特征表示Ytp∈RCfou ×1×Hfin ×1Y_{t p} \in \mathbb{R}^{C_{\text {fou }} \times 1 \times H_{\text {fin }} \times 1}Ytp​∈RCfou ​×1×Hfin ​×1。然后,我们将特征表示YtpY_{t p}Ytp​展平为维度为Cfou×HfinC_{f o u} \times H_{f i n}Cfou​×Hfin​的特征向量。为了评估我们方法的性能,采用gallery-probe 模式来计算 Rank-1 精度。

Result

参考文献

[3] Hanqing Chao, Yiwei He, Junping Zhang, and Jianfeng Feng. Gaitset: Regarding gait as a set for cross-view gait recognition. In AAAI, volume 33, pages 8126–8133, 2019.

[5] Chao Fan, Y unjie Peng, Chunshui Cao, Xu Liu, Saihui Hou, Jiannan Chi, Y ongzhen Huang, Qing Li, and Zhiqiang He. Gaitpart: Temporal part-based model for gait recognition. In CVPR, pages 14225–14233, 2020.

[12] Beibei Lin, Shunli Zhang, and Feng Bao. Gait recognition with multiple-temporalscale 3d convolutional neural network. In ACM MM, pages 3054–3062, 2020.

[16] Kohei Shiraga, Y asushi Makihara, Daigo Muramatsu, Tomio Echigo, and Y asushi Y agi. Geinet: View-invariant gait recognition using a convolutional neural network. In ICB, pages 1–8. IEEE, 2016.

[19] Daksh Thapar, Gaurav Jaswal, Aditya Nigam, and Chetan Arora. Gait metric learning siamese network exploiting dual of spatio-temporal 3d-cnn intra and lstm based inter gait-cycle-segment features. Pattern Recognition Letters, 125:646–653, 2019.

[20] Thomas Wolf, Mohammadreza Babaee, and Gerhard Rigoll. Multi-view gait recognition using 3d convolutional neural networks. In ICIP, pages 4165–4169. IEEE, 2016.

[27] Y uqi Zhang, Y ongzhen Huang, Shiqi Y u, and Liang Wang. Cross-view gait recognition by discriminative feature learning. IEEE TIP, 29:1001–1015, 2019.

(BMVC-2021)GaitMask:基于掩码的步态识别模型相关推荐

  1. (CVPR-2020)GaitPart:基于时间部分的步态识别模型(一)

    文章目录 GaitPart:基于时间部分的步态识别模型 Abstract 1. Introduction 2. Related Work 3. Proposed Method 3.1. Pipelin ...

  2. 基于TensorFlow训练花朵识别模型的源码和Demo

    基于TensorFlow训练花朵识别模型的源码和Demo 转发来源: https://blog.csdn.net/Anymake_ren/article/details/80550684 下面就通过对 ...

  3. 基于opencv-ANN的水果识别模型训练

    机器视觉---ANN 目录 机器视觉---ANN 前言 一.简化训练样本 二.生成训练数据 1.读取样本 2.读取标签 三.训练模型 1.转换数据集 2.创建模型 3.设置参数 4.训练模型 5.测试 ...

  4. 【步态识别】LagrangeGait基于拉格朗日《Lagrange Motion Analysis and View Embeddings for Improved Gait Recognition》

    目录 1. 论文&代码源 2. 论文亮点 3. 模型结构 3.1 建模思路 3.2 建立拉格朗日方程 3.3 网络结构 3.3.1 运动分支(Motion Branch) 3.3.2 视图嵌入 ...

  5. 《智能步态识别门禁系统》,基于深度学习的多人步态识别系统

    本文章仅仅提供一种自认为比较科学的方式去实现多人步态识别,如果对多人步态识别感兴趣,却又不知道如何实现的话,这篇文章将会有莫大的帮助.以下方法作者皆实验过是可行的方案.(训练集124人,准确率96%, ...

  6. (ICIP-2021)手臂摆动在视频步态识别中具有判别性,可用于运动员重识别

    手臂摆动在视频步态识别中具有判别性,可用于运动员重识别 paper题目:THE ARM-SWING IS DISCRIMINATIVE IN VIDEO GAIT RECOGNITION FOR AT ...

  7. 【深度学习】步态识别-论文阅读:(T-PAMI-2021)综述:Deep Gait Recognition

    论文详情: 期刊:T-PAMI-2021 地址:参考笔记 1.Abstract 本文综述了到2021年1月底在步态识别方面的最新进展,以 全面概述了深度学习步态识别的突破和最近的发展,涵盖了广泛的主题 ...

  8. (ECCV-2022)GaitEdge:超越普通的端到端步态识别,提高实用性

    GaitEdge:超越普通的端到端步态识别,提高实用性 paper题目:GaitEdge: Beyond Plain End-to-end Gait Recognition for Better Pr ...

  9. 【深度学习】步态识别-论文笔记:(ICCV-2021)用于步态识别的3D局部卷积神经网络

    这里写目录标题 论文详情 概述 达摩院视频讲解笔记 挑战 提出3D local CNN 3D local block 数据集 论文 摘要 1 介绍 2 主要贡献 3 方法 3.1 Formulatio ...

  10. 深度步态识别综述(一)

    文章目录 Deep Gait Recognition: A Survey Abstract INTRODUCTION REVIEW METHODOLOGY TEST PROTOCOLS AND DAT ...

最新文章

  1. 昨日,GitHub宣布收购npm,微软或成最大赢家!
  2. vCenter功能基本介绍
  3. 程序基础:数据结构(郝斌讲解)(4)
  4. Windows Server 2008十大新功能
  5. golang浮点型及使用细节
  6. 简明Python教程学习笔记_4_数据结构
  7. 支持Dubbo生态发展,阿里巴巴启动新的开源项目 Nacos
  8. 王思聪吃热狗的c语言小程序,王思聪吃热狗火了,开发各种恶搞小程序!王校长:我不要面子的啊...
  9. 【HDU4691】Front compression(求给定两个子串/后缀的最长公共前缀---后缀数组+st表+一点思维)
  10. python怎么用input输入列表_Python - 根据列表内容验证用户输入的最佳方法是什么?...
  11. Java并发包源码学习系列:AQS共享式与独占式获取与释放资源的区别
  12. windows7下硬盘安装linux
  13. s3cmd配置bucket生命周期
  14. c语言父子线程交替打印,多线程面试题之【三线程按顺序交替打印ABC的方法】...
  15. 循环类测验(下)7-10 不变初心数 (15 分)
  16. rasp 系统_RASP 完爆 WAF 的5大理由!
  17. 机器学习(1)——周志华
  18. 【Linux】内核驱动篇九--设备模型
  19. LDdecay计算和做图
  20. C#图片截取压缩(百分比压缩/大小压缩)实现代码

热门文章

  1. 肿么查找联想笔记本的序列号
  2. 右键添加cmd命令快捷键,右键cmd快捷键丢失
  3. ddm模型公式_股利增长模型计算公式
  4. 2019计算机保研经验记录:南开软院、武大、信工所、南大软院、哈工深
  5. 【计算机视觉】exe视频转mp4、采集视频中图片记录、删除ABC看图王等软件
  6. python工具箱系列(三)
  7. 微信小程序 下拉刷新 性能优化 参考饿了么小程序首页列表加载
  8. 对数周期天线hfss建模_07 HFSS软件二次开发在对数周期天线设计中的应用
  9. Oracle 11g详细安装介绍plsql下载和安装介绍
  10. 如何将苹果手机投屏到电脑上