胶囊网络之 Found a Reason for me? Weakly-supervised Grounded Visual Question Answering using Capsules论文笔记

  • 一、Abstract
  • 二、引言
  • 三、相关工作
    • 3.1 VQA 和视觉定位
    • 3.2 VQA 和 CLEVR 下的视觉推理
    • 3.3 胶囊网络
  • 四、方法
    • 4.1 问题构成
    • 4.2 输入的 Embedding
      • 4.2.1 问题 embedding
      • 4.2.2 图像 embedding
    • 4.3 问题查询生成器
    • 4.4 带有 soft masking 的胶囊
      • 4.4.1 视觉胶囊
      • 4.4.2 Soft masking
    • 4.5 输出模块
  • 五、实施细节
    • 5.1 MAC 网络的胶囊
    • 5.2 SNMN 网络的胶囊
    • 5.3 注意力图的产生
  • 六、数据集
  • 七、实验结果
    • 评估指标
    • 7.1 与 baseline 模型的比较
    • 7.2 消融分析
      • 7.2.1 卷积层 vs. 胶囊层
      • 7.2.2 硬 masking vs. 软 masking
      • 7.2.3 共享 masking vs. 稀疏 masking
      • 7.2.4 胶囊数量对性能的影响
    • 7.3 可视化结果
  • 八、结论
  • 补充材料
    • A、 补充的明细清单
    • B、序列查询生成器的结构
    • C、基于序列查询的胶囊 soft masking
    • D、可解释性的注意力图可视化
    • E、定性的结构分析
    • F、进一步的结果和分析

写在前面

  这是一篇其他文章里面的参考文献,感觉比较有新意。然后一搜,果然,CSDN 也有一篇 博文,但可惜是翻译后的文章,未能满足我的要求,最重要的是没有核心算法框架图与 LaTeX 公式,因此特地再开一篇博文。

  • 论文链接:Found a Reason for me? Weakly-supervised Grounded Visual Question Answering using Capsules;
  • 代码链接:Github,顺便提一嘴,代码采用 Tensorflow 框架;
  • 收录于:CVPR 2021。
  • 更新一:2021年4月15日,跑了一下源码,对本文EM算法和矩阵形状进行补充,高亮显示。

一、Abstract

  目前有很多采用基于预训练的目标检测器来解决 VQA 中的视觉定位问题,但需要 Bounding boxes 级别的标注。本文利用 VQA 任务来进行一种弱监督的视觉定位。具体来说,提出了一种基于查询的视觉胶囊模块,该模块选择出特定的胶囊特征,使得模型能够关注于与问题相关的区域。将本文提出的胶囊模块整合到用于 VQA 的 SNMN 和 MAC 网络中,在 CLEVR-Answer(自制的) 和 GQA 数据集上表现很好,同时在 VQA 任务上也表现优秀。

二、引言

  首先指出 VQA 的应用很多,但是不知道这些答案是否真的基于正确的视觉线索来回答问题,于是产生了视觉定位任务。如下图所示,模型不仅要给出文本化的答案,而且要指出依赖的哪些区域来给出答案的。通用的方法是采用与问题相关的注意力图来判断定位的区域。


  大多数的工作利用预训练的目标检测模型或者与问题相关的 bounding boxes 标注来解决视觉定位任务,本文关注的是基于 VQA 任务的弱监督视觉定位问题,VQA 任务和视觉定位任务都可以单独根据 VQA 的设定来监督。
  想要正确的定位,需要解决两个主要问题:找到与问题相关的视觉实例;建模这些实例之间的关系。因此,本文提出采用胶囊网络来拓展当前的 VQA 框架,解决该任务。因为胶囊网络层可以通过路径协议学习 部分-整体 之间关系,而这种学习能力可以解决 VQA 中弱监督视觉定位的问题。
  目前基于胶囊的方法一般都是在卷积特征之上添加额外的胶囊层,这些层可以利用目标类别监督( mask 掉除 GT 类别之外的胶囊)。但是在 VQA 中,并没有类别标注或者基于目标的监督信息提供,因此本文提出一种 “soft-mask” 机制选择那些与问题相关的胶囊。一旦无关的胶囊被 mask 掉,那么与问题相关的胶囊就可以传递给推理步骤,从而完成 VQA 任务。
  本文考虑两种视觉定位数据集,GQA 和自制的 CLEVR-Answers 数据集。注意,在训练过程中并不使用 GT boxes 训练,而只在评估时使用。所采用的 VQA 模型为 MAC 和 堆叠的 NMN (都是比较老的模型了)。

三、相关工作

3.1 VQA 和视觉定位

  目前的 VQA 模型依赖于目标特征来提高模型的精度,一些基于网格的特征也能够作为目标特征来训练 VQA 模型,但是这些方法并未评估其答案的定位是否准确。
  因此,一些少量的数据集,GQA、VCR、VQS、CLEVRER、TVQA+ 给出了所有目标的位置标注或者与问题相关的所有目标标注。这里面,GQA 特别关注于评估那些有/无目标检测下算法(如 MAC 和 BottomUP )的定位能力。因此,本文采用 GQA 数据集评估弱监督定位的胶囊增强型系统,评估指标是正确回答时的重叠面积与 IOU。

3.2 VQA 和 CLEVR 下的视觉推理

  CLEVR 数据集采用合成式的问题,是一种诊断类型的数据集,用来测试模型的推理能力,但很多工作在这个数据集上已经实现了近乎完美的精度,所以现在没多少人用了。取而代之的是本文为所有问题都提供 bounding boxes 的 CLEVR-Answers,能够无限制地评估模型的定位能力。

3.3 胶囊网络

  首先介绍下胶囊网络的引进,以及现有的改进:胶囊网络可以应用到分类和分割任务中。由于本文采用弱监督方式,因此需要对其修改:胶囊作为层结构插入到模型中,通过弱监督的 VQA 来学习。介于没有分类标签的监督,因此本文提出一种新颖的 “soft-masking” 操作,有选择性的学习与输入问题相关的胶囊并 mask 掉无关的胶囊。

四、方法

4.1 问题构成

  输入为图像 III 和问题 QQQ,输出为答案 a∈Aa\in AaA,其中 AAA 为答案词汇,BBB 表示答案对应的 Bounding box。

4.2 输入的 Embedding

4.2.1 问题 embedding

  由 lll 个单词组成的问题 {w1,w2,…,wl}∈Q{\{}{w_{1},w_{2},\dots,w_{l}}{\}}\in Q{w1,w2,,wl}QVVV 表示训练集中问题词的单词表,对应一个查找 embedding 矩阵 E∈R∣V∣×deE\in\mathbb{R}^{|V|\times{d}_{e}}ERV×de,即问题中的每一个词 wlw_{l}wl 都采用一个 ded_{e}de 维度的初始 embedding 向量来表示。ϕ(Q,[w1,w2,…,wl])\phi(Q,[w_{1},w_{2},\dots,w_{l}])ϕ(Q,[w1,w2,,wl]) 为句子编码器,ϕ\phiϕ 设为 BiLSTM,输出句子(问题 QQQ )级别的 embedding fs∈Rdqf_{s}\in\mathbb{R}^{{d}_{q}}fsRdq 和词( wlw_{l}wl )级别特征 fw∈Rdq,dq=2×df_{w}\in\mathbb{R}^{{d}_{q}},{{d}_{q}}=2\times dfwRdq,dq=2×dddd 是句子编码器的维度。词向量维度:300。

4.2.2 图像 embedding

  对于一幅图像 III,计算其特征图 X=ϕ(I)X=\phi(I)X=ϕ(I),其中 ϕ\phiϕ 为预训练的图像编码器,X∈RH×W×dfX\in\mathbb R^{H{\times}W{\times}d_{f}}XRH×W×df 表示从 III 中提取到的特征,dfd_{f}df 为特征维度。这里并未训练一个图像编码器,查看源码提供的特征,估计也是Faster R-CNN直接抽取数据集的7x7x2048维度特征。

4.3 问题查询生成器

  VQA 系统通常会迭代的选择那些有助于回答问题的词汇,这种将问题划分为子序列查询的方式称之为多跳或循环 推理。每一个推理步骤产生的子序列查询会收集与答案相关的图像信息。用 ρ\rhoρ 表示子序列生成器,输入为句子 embedding fsf_{s}fs 和 词 embedding fwf_{w}fw。每一个时间步 t(t=1,2,…,T)t\left(t=1,2,\dots,T\right)t(t=1,2,,T) 上的输出子序列查询 qtq_{t}qt 为:
qt=ρ(fs,fw),∀t∈{1,2,…,T}q_{t}=\rho\left(f_{s}, f_{w}\right), \forall t \in\{1,2, \ldots, T\}qt=ρ(fs,fw),t{1,2,,T}

4.4 带有 soft masking 的胶囊

  每一个胶囊是一个实体或者一个整体的部分特征表示,本文利用一组逻辑单元(称之为激活层)和一组 4×44\times44×4 的位姿矩阵(称之为位姿 pose )组成矩阵胶囊(在胶囊网络中,这就是基本概念),其中激活层旨在判断特定实体是否存在,位姿表示实体的属性信息。一个胶囊层有很多个胶囊,每一个胶囊都采用一种路径协议( routing-by-agreement )的算法在接下来的层中给相应的胶囊投票,从而建模 部分-整体 的信息。针对胶囊路径的排列,矩阵胶囊采用 EM−RoutingEM-RoutingEMRouting 算法。
EM−RoutingEM-RoutingEMRouting,循环3次:


参考:一、如何看待Capsule的第二篇论文Matrix Capsules with EM Routing?
   二、揭开迷雾,来一顿美味的Capsule盛宴
   三、再来一顿贺岁宴:从K-Means到Capsule
   四、三味Capsule:矩阵Capsule与EM路由

4.4.1 视觉胶囊

  对图像的 embedding 特征 XXX,采用一组线性卷积来获得主胶囊,主胶囊为 C1C_{1}C1 类型的胶囊,每一种都有 4×44\times44×4 的位姿矩阵(维度 RH×W×C1×4×4\mathbb{R}^{H\times{W}\times{C}_{1}\times{4}\times{4}}RH×W×C1×4×4源码 C1=32C_1=32C1=32 )和每个空间位置的激活层(维度 RH×W×C1×1\mathbb{R}^{H\times{W}\times{C}_{1}\times{1}}RH×W×C1×1 )。之后通过 EM−routingEM-routingEMrouting 算法在主胶囊的基础上获得每一个空间位置的更高维度的胶囊表示 C2C_{2}C2,每一种都有 4×44\times44×4 的位姿矩阵(维度 RH×W×C2×4×4\mathbb{R}^{H\times{W}\times{C}_{2}\times{4}\times{4}}RH×W×C2×4×4源码 C2=32C_2=32C2=32 )和每个空间位置的激活层(维度 RH×W×C2×1\mathbb{R}^{H\times{W}\times{C}_{2}\times{1}}RH×W×C2×1 )。

4.4.2 Soft masking

  原则上可以将激活层( RH×W×C2×1\mathbb{R}^{H\times{W}\times{C}_{2}\times{1}}RH×W×C2×1 ) 和位姿矩阵( RH×W×C2×4×4\mathbb{R}^{H\times{W}\times{C}_{2}\times{4}\times{4}}RH×W×C2×4×4 )用一个 shape 的张量 ( RH×W×C2×(4×4+1)\mathbb{R}^{H\times{W}\times{C}_{2}\times\left({4}\times{4}+1\right)}RH×W×C2×(4×4+1) )来表示,即标准卷积下的特征图,但由于此方式将胶囊姿态中的每个维度视作独立的特征,忽略了胶囊姿态中的所有维度都代表单个对象或实体的事实(割裂了部分-整体 之间的联系)。
  本文并未采用上述做法,而是基于问题来选择相应的胶囊。具体来说,对于每一步的推理,将一系列的 C2C_2C2 送入一个全连接层得到与所给子序列查询相关的 logits,表示为胶囊类型的相关度 mtlogits =η(qt)m_{t_{\text {logits }}}=\eta\left(q_{t}\right)mtlogits=η(qt),其中 logits \text {logits }logits 是推理步 ttt 的问题查询,η\etaη 是全连接层。之后利用 mtlogits m_{t_{\text {logits }}}mtlogits 产生 one-hot mask mt∈RC2m_{t}\in\mathbb{R}^{{C}_2}mtRC2mi=1m_i=1mi=1,当且仅当 i=argmax(mtlogits )i=argmax\left(m_{t_{\text {logits }}}\right)i=argmax(mtlogits)时)。得出的 mtm_{t}mt 用于 mask 视觉胶囊 VmctV_{m c_{t}}Vmct
Vmct=softmax⁡(η(qt))⊙Yc2V_{m c_{t}}=\operatorname{softmax}\left(\eta\left(q_{t}\right)\right) \odot Y_{c_{2}}Vmct=softmax(η(qt))Yc2
之后 VmctV_{m c_{t}}Vmct 用于推理操作,而这些操作由选择的模型( MAC 和 SNMN )所定义。

4.5 输出模块

  所有推理步骤聚合后的特征即为推理模块的输出特征,喂给输出模块,也就是输出答案分数的分类器。对于预测视觉目标的位置,本文采用推理模块产生的空间注意力图和后处理步骤得到目标的位置。

五、实施细节

  将胶囊整合到两个 VQA 模型中:SNMN、MAC。

5.1 MAC 网络的胶囊

  首先是 MAC 网络的介绍,MAC 是具有 TTT 个推理步骤的循环推理框架,每一推理步骤都会产生一个基于问题的控制信号(问题序列查询),使用这个信号可以读取图像特征(使用注意力)和写入记忆。经过 TTT 步之后最终的输出联合问题一起送入答案分类器。至于为啥用 MAC,是因为能够产生具有解释性的注意力图。
  为将胶囊整合到 MAC 中,做出下列改变:读模块负责关注空间图像特征和检索与序列查询相关的图像特征,读模块输入为之前的输出和当前的控制信号(在时间步 t\text{t}t 上基于问题的特征);在读模块内部,使用一个线性层将控制信号映射到特征维度 C2×(4×4+1)C_2\times\left(4\times{4}+1\right)C2×(4×4+1),此特征向量之后用于产生 soft mask 来获得仅与序列查询相关的胶囊。MAC 中所有的 mask 层共享权重。

5.2 SNMN 网络的胶囊

  SNMN 是一种基于注意力的 VQA 模型,有着 MAC 类似的推理步骤,同时产生可解释性的注意力图。首先,SNMN 在预训练的图像特征上训练卷积层,这些卷积层的输出之后送入推理模块并使用问题查询来执行推理操作,最终输出注意力图。为整合胶囊到 SNMN 中,将胶囊模块添加到图像特征的上层来获取 C2C_2C2 视觉胶囊。与之前标准的 SNMN 步骤不同的是,推理模块现在在胶囊上进行推理。对基于序列查询的 soft masking,采用全连接层,输入为问题查询 qt∈Rdq_t\in\mathbb{R}^{d}qtRd,输出维度是 C2×(4×4+1)C_2\times\left(4\times{4}+1\right)C2×(4×4+1) 的特征向量。然后该特征向量用于产生尺寸为 C2C_2C2 的胶囊 mask。SNMN 中的每一个推理模块均含有自己的 mask 层,除了 Scene,And,OrScene,And,OrScene,And,Or,因为这些推理模块没有使用上下文序列查询的参数。

5.3 注意力图的产生

  为了给更高注意力的区域赋予更大的权重,在背景区域引入一个不透明度参数 α\alphaα,而不透明度可以根据 α\alphaα 来放缩。本文将其设为 0.50.50.5 来获得更高注意力区域的双分类 mask,其内的每一个值表示检测物体存在与否。

六、数据集

  GQA 和 CLEVR. GQA 。

  • GQA:
    不同于 VQA 2.0 的 GQA 覆盖了更多的关系、空间和组合式问题。GQA 同时提供了与问题和答案相关的目标定位标签。使用的是作者提供的平衡版本;
  • 基于视觉定位的 CLEVR-Answers:
    作者将 CLEVR 数据集拓展到 CLEVR-Answers 上用于答案的视觉定位。901,000 个 bounding boxes,大约 700,000 对问题-答案对用于训练;193,000 个 bounding boxes,大约 150,000 对问题-答案对用于测试。注意:并未在训练中使用 bounding boxes,而是作为将来的研究;在训练集中分离出 1,000 个样本大概 10,000 个问题-答案对作做验证集。

七、实验结果

评估指标

  评估答案定位能力:精确度、召回率、F1 得分—— 重叠范围和 IOU。如果预测的 bounding box 和 GT 大于 0.5,即认为预测到的区域是正样本(用于精确度和召回率的计算)。由于两个 VQA 模型会在每一个推理步上产生注意力图,因此一些中间的注意力图上可能就会出现正确答案,而非最后一个推理步。这里计算 F1 得分是根据最佳的注意力图来的,换句话说,最后的注意力不一定就很好。

7.1 与 baseline 模型的比较

  视觉胶囊模块中 C1=C2=CC_1=C_2=CC1=C2=C,即 C1C_1C1C2C_2C2 层的胶囊个数相等。

  • CLEVR-Answers数据集:
    采用的图像特征是 ResNet-101 在 ImageNet 数据集上预训练的权重提取的 Conv4 层的 14×14×102414\times{14}\times{1024}14×14×1024 维的特征图。之后送入 MAC 或者 SNMN 模型的卷积层产生 14×14×51214\times{14}\times{512}14×14×512 维的特征。训练 25 个 epoch,原始的 MAC 采用 T=12T=12T=12,本文推荐 MAC-Caps 使用 T=4,6,12T=4,6,12T=4,6,12,下表是结果。

  • GQA数据集:

7.2 消融分析

7.2.1 卷积层 vs. 胶囊层

7.2.2 硬 masking vs. 软 masking

  同上表。

7.2.3 共享 masking vs. 稀疏 masking

  同上表。

7.2.4 胶囊数量对性能的影响

  同上表。

7.3 可视化结果

八、结论

  本文提出一种利用 VQA 任务进行弱监督视觉定位的方法,能够整合到现有的 VQA 模型中。为了提高胶囊模型的联合效率,提出了一种 soft masking 机制进一步提高性能。

补充材料

A、 补充的明细清单

B、序列查询生成器的结构

  序列查询生成器是 MAC 提出的循环模块,同样也在 SNMN 中使用。
u=W2([W1t(fs)+b1;qt−1])+b2u=W_{2}\left(\left[W_{1}^{t}\left(f_{s}\right)+b_{1} ; q_{t-1}\right]\right)+b_{2}u=W2([W1t(fs)+b1;qt1])+b2
其中,qt−1q_{t-1}qt1t−1t-1t1 步的输出,fsf_sfs 为问题特征的 embedding,W1tW_{1}^{t}W1t 的维度 d×dd\times{d}d×dW2W_{2}W2 的维度 d×2dd\times{2d}d×2d,之后在问题词 embedding fwf_wfw 上产生注意力权重:
aw=softmax⁡(W3(u⊙fw)+b3)a_{w}=\operatorname{softmax}\left(W_{3}\left(u \odot f_{w}\right)+b_{3}\right)aw=softmax(W3(ufw)+b3)
其中W3W_{3}W3 的维度 2d×d2d\times{d}2d×dawa_{w}aw 表示在所有问题词上的注意力得分。qtq_{t}qtlll 长度问题的 awa_{w}aw 加权求和:
qt=∑w=1law⋅fwq_{t}=\sum_{w=1}^{l} a_{w} \cdot f_{w}qt=w=1lawfw

C、基于序列查询的胶囊 soft masking

D、可解释性的注意力图可视化

E、定性的结构分析

  • GQA 数据集:

  • CLEVR-Answers 数据集:


F、进一步的结果和分析

  • 最好的推理 vs 最后一步的推理:

  • 关于问题类型的对比:

  • 与推理类型有关的比较:

  • 参数减少的影响:

  • 与定位有关的不透明度参数 α\alphaα 的影响

  • 胶囊能够建模背景:



写在后面
  忙活了一天,终于码完了,找个时间把代码跑一下。顺便提一下,Github 源码链接里面如果有文件下载不下来,可以在评论区留言,给出阿里网盘链接 ~

胶囊网络之 Found a Reason for me? Weakly-supervised Grounded Visual Question Answering using Capsules论文笔记相关推荐

  1. 胶囊网络为何如此热门?与卷积神经网络相比谁能更胜一筹?

    编译 | AI科技大本营 参与 |  孙士洁 编辑 |  明 明 [AI科技大本营按]胶囊网络是什么?胶囊网络怎么能克服卷积神经网络的缺点和不足?机器学习顾问AurélienGéron发表了自己的看法 ...

  2. Hinton再挖新坑:改进胶囊网络,融合Transformer神经场等研究

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 你还记 ...

  3. CAPSNET:具有自我注意路由的胶囊网络

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家 ...

  4. 多任务上实现SOTA,UBC、谷歌联合Hinton等提出3D点云的无监督胶囊网络

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨杜伟.小舟 来源丨机器之心 这是一种为 3D 点云提出的无监督胶囊架构,并且在 3D 点云重构. ...

  5. UBC、谷歌联合Hinton等提出3D点云的无监督胶囊网络,多任务上实现SOTA | AI日报...

    多任务上实现SOTA,UBC.谷歌联合Hinton等提出3D点云的无监督胶囊网络 理解对象是计算机视觉的核心问题之一.传统方法而言,理解对象任务可以依赖于大型带注释的数据集,而无监督方法已经消除了对标 ...

  6. Hinton 发表新作探索流体胶囊网络 | AI日报

    为了方便大家及时了解国内外AI领域的重要事件.科研进展.相关讨论等,我们智源社区推出了<AI日报>系列,以飨诸位. AAAI 2021放榜,共有1692篇论文被接收,录取率21% 昨日,人 ...

  7. Hinton:胶囊网络的专利是我的了!

    作者 | 陈大鑫 昨日,Reddit上有热心网友发现深度学习之父.图灵奖得主Hinton等人为胶囊(神经)网络申请了专利,该专利于2017年12月15日提交,于今年9月10日在网上发布,目前还未正式生 ...

  8. Hinton的胶囊网络不太行?CVPR Oral论文:不比卷积网络更「强」

    来源:机器学习研究组订阅 在一篇 CVPR 2021 Oral 论文中,来自慕尼黑大学.微软亚研的研究者对胶囊网络和卷积网络进行了全面的对比.一系列实验表明,一些被认为对胶囊网络(CapsNet)至关 ...

  9. 胶囊网络升级新版本,推特2000+赞,图灵奖得主Hinton都说好

    鱼羊 发自 凹非寺  量子位 报道 | 公众号 QbitAI 胶囊网络曾被认为是下一代深度学习的基石. 图灵奖得主Geoffrey Hinton在2017年提出了这种全新的深度学习方法,以期挑战CNN ...

  10. 【论文导读】浅谈胶囊网络与动态路由算法

    前言 "Dynamic Routing Between Capsules"是由Hinton等联合发表在NIPS会议上.提出了一个新的神经网络---胶囊网络与囊间的动态路由算法. 上 ...

最新文章

  1. 单片机中的ROM,RAM和FLASH的作用
  2. [20190130]删除tab$记录的恢复2.txt
  3. HTTP 请求头中的 Remote_Addr,X-Forwarded-For,X-Real-IP
  4. Spring Boot 中 @EnableXXX 注解的驱动逻辑探讨
  5. chrome 适配调试_终于明白怎么用Chrome开发适配各种移动端屏幕尺寸了
  6. java 反射的弊端_java反射机制的一些学习心得小结
  7. android开发按钮颜色,Android编程实现简单设置按钮颜色的方法
  8. c#和python同一主机直接udp_Python 第十一章:面向对象编程(上)!(系列发布)...
  9. Java课堂作业03
  10. python 错误类型及解释
  11. docker创建mysql实例_使用docker创建mysql实例
  12. 超全!Python 处理日期与时间的全面总结!
  13. quot;紫陀螺quot;网友感触转载系列之…
  14. Java中强、软、弱、虚引用
  15. sklearn基于轮廓系数来选择n_clusters
  16. 同步数据显示服务器异常,同步异常云端服务器异常
  17. 苹果手机里面彻底删除的照片如何找回来?
  18. Today今天便利店的梦想:准独角兽的雄心与挑战
  19. 前端框架Layui学习五:弹出层和数据表格
  20. 连线游戏Game of Lines

热门文章

  1. php 微信公共平台开发
  2. 三重视角看陈彤:一个网媒老兵的谢幕
  3. 深度Linux声卡驱动安装,Deepin Linux 的声卡驱动有点小问题
  4. java斗地主发牌教学,QQ游戏“斗地主”规则说明
  5. 如何在win7下安装XP系统?
  6. 计算机研究院分所烟台,综合新闻_中科院计算所烟台分所 烟台中科网络技术研究所...
  7. Rational Rose 2007安装及License Key Error问题的解决
  8. 菜鸟腾飞安全网之精通vmware虚拟机系列教程(12课全)听课笔记
  9. cdr2020永久序列号及试用过期解决
  10. 【EXCEL】去除多余行列