我是程序员机器学习神经网络

用神经网络深入研究计算机视觉(第1部分)

2018-08-27  本文已影响10人  阿里云云栖号

摘要: 关于计算机视觉你知道的可能有些少!

计算机视觉是人工智能(AI)中的热门研究课题,它已经存在多年。然而,计算机视觉仍然是人工智能面临的最大挑战之一。在本文中,我们将探讨使用深度神经网络来解决计算机视觉的一些基本挑战。特别是,我们将研究神经网络压缩,细粒度图像分类,纹理合成,图像搜索和对象跟踪等应用。

1、神经网络压缩

尽管深度神经网络具有令人难以置信的性能,但它们对计算能力和存储的需求对其在实际应用中的部署提出了重大挑战。研究表明,神经网络中使用的参数可能非常多余。因此,在提高精度的同时还需要投入大量的工作来降低了网络的复杂性。

低秩近似用于接近原始权重矩阵。例如,SVD可用于获得矩阵的最佳低秩近似,或者Toeplitz矩阵可与Krylov分析结合使用以近似的原始矩阵。

1.1:修剪

一旦训练完成,一些不相关的神经元连接(可以在损失算法中加权值平衡和稀疏约束)或者将所有这些连接过滤掉,然后执行几轮微调。在实际应用中,修剪神经元连接的级别将使结果稀疏,难以缓存,并且难以从存储器访问。有时,我们需要特别设计一个合作运营数据库。

相比之下,过滤级修剪可以直接在已经存在的操作数据库上运行,过滤级修剪的关键是确定如何平衡过滤器的重要性。例如,我们可以使用卷积结果的稀疏性、滤波器对损失算法的影响或者卷积对下一层结果的影响进行平衡。

1.2:量化

我们可以将权重值分成组,然后使用组中的中值来替换原始权重,并通过霍夫曼编码运行它。但是,如果我们只考虑权重本身,则可以减少量化过程的误差偏差。随后,分类操作的误差偏差将显着增加。因此,量化CNN的优化目标是重构以最小化误差偏差。此外,我们可以使用哈希编码并投影相同的哈希权重(hash bucket weights)来共享相同的值。

1.3:减少数据值的范围

在默认情况下,数据由单精度浮点组成,占32位。研究人员发现,使用半精度浮点(16位)对性能的影响几乎为零。谷歌的TPU使用8位整数来表示数据,这种情况是值的范围是两个或三个值(0/1或-1/0/1)。仅使用位进行操作可以使我们快速完成各种计算,但是训练两个或三个价值网络是一个至关重要的问题。

传统方法是使用两个或三个值作为前馈过程并在更新过程中传递实数。此外,研究人员认为两个值的表达能力是有限的,因此可以使用额外的浮点缩放二进制卷积结果来改善网络表示。

1.4:简化的结构设计

研究人员一直致力于创建简化的网络结构,例如:

1. 1x1:这种设计理念已经在Inception和ResNet系列网络设计中得到了广泛应用;

2. 积;

3. 扩展卷积:只要值不变,使用扩展卷积就可以扩展感知域。

知识蒸馏(Knowledge distillation)训练小网络接近广泛的网络。但是,目前还不清楚如何正确地接近庞大的网络。

1.5:硬件-软件协议设计

常用硬件:

1. 常见硬件,如CPU(低延迟,复杂操作)和GPU(高吞吐量,适合并发,简单过程);

2. 专用硬件,包括ASIC(专用集成电路,例如Google的TPU)和FPGA(现场可编程门阵列,灵活但效率较低)。

2、细粒度图像分类

与(普通)图像分类相比,细粒度图像分类在确定图像类别时需要更高的精度。例如,我们可能需要确定目标鸟的确切种类、汽车的品牌和型号、飞机的型号。通常,这些类之间的差异很小。例如,波音737-300和波音737-400之间唯一明显不同的区别就是窗户的数量。因此,细粒度图像分类比标准图像分类更具挑战性。

细粒度图像分类的经典方法是首先在图像上定义不同的位置,例如,鸟的头部、脚部或翅膀。然后我们必须从这些位置提取特征,最后,组合这些特征并使用它们来完成分类。这种方法具有非常高的准确性,但它需要大量的数据集和手动标记位置信息。细粒度分类的一个主要趋势是没有额外监督信息的训练,而不是仅使用图像笔记,该方法由双线性CNN方法表示。

2.1:双线性(Bilinear)CNN

首先计算卷积描述符的外积,以找出不同维度之间的相互关系。因为不同描述符的维度对应于卷积特征的不同通道,并且不同的通道提取不同的语义特征,所以使用双线性操作允许我们捕获输入图像上的不同语义元素之间的关系。

2.2:流线型双线性汇合(Streamlined Bilinear Confluence)

双线性汇合的结果是非常高维的,这需要大量的计算和存储资源,也明显增加了下一个完全连接层上的参数数量。后续研究旨在制定简化双线性汇合的战略,其结果包括以下内容:

1. PCA维数减:在双线性汇合出现之前,我们会在深度描述符上使用PCA投影维数减少,但这会影响影响性能的每个维度。一个折中的方案是仅将PCA降维应用于一条线。

2. 近似核估:证明在双线性收敛之后使用线性SVM分类与在描述符上使用多项式核一样有价值。因为两个描述符的向外投影等于两个独立描述符的卷积投影,所以一些研究集中于使用随机矩阵来近似描述符投影。此外,通过近似核估计,我们可以捕获超过二阶信息(见下图)。

3. 低秩近似:使用来自全连接层的参数矩阵进行低秩近似使得不必明确地计算双线性汇合的结果。

3、图像描述

图像描述是生成图像的一个或两个句子描述的过程。这是一项涉及计算机视觉和自然语言处理的跨学科任务。

3.1:编码器-解码器网络

设计图像字幕网络背后的基本思想基于自然语言处理领域中机器翻译的概念。在具有图像CNN编码网络的机器翻译器中替换源语言编码网络并提取图像的特征之后,我们可以使用解码器网络作为目标语言来创建文本描述。

3.2:Show Attend and Tell

注意力机制是机器翻译器用来捕获远程依赖关系的标准技术,也可以用于图像字幕。在解码器网络中,除了预测下一个单词之外,在每个时刻,我们还需要输出二维注意力图像并将其用于深度卷积特征的加权收敛。使用注意力机制的另一个好处是网络可以被可视化,这样我们就可以轻松地看到网络在生成每个单词时所看到的图像部分。

3.3:Adaptive Attention(自适应注意力机制)

先前的注意力机制将为每个预测的单词产生二维注意图像(图像(a))。但是,对于一些停止词,我们不需要使用图像中的线索。相反,某些单词可以根据上下文生成,完全独立于图像本身。这项工作在LSTM上进行了扩展,并产生了“视觉哨兵”机制,该机制确定是否应根据上下文或图像信息(图像(b))预测当前单词。

此外,与先前在根据隐藏层的状态计算注意图像的先前方法不同,该方法根据隐藏层的当前状态执行计算。

4、视觉问答

给定图像和与该图像相关的问题,视觉问答旨在从选择的候选答案中回答该问题。从本质上讲,这是一个分类任务,有时它使用递归神经网络解码来产生文本答案。视觉问答也是一项涉及视觉和自然语言处理的跨学科任务。

4.1:基本思想过程

问题概念是使用CNN从图像中提取特征,RNN从文本问题中提取文本特征,然后组合视觉和文本特征,最后使用完全连接后进行分类。这项任务的关键是弄清楚如何连接这两种类型的功能。直接组合这些特征的方法将它们转换为矢量,或者通过添加或乘以元素来添加或生成视觉和文本矢量。

注意使用注意力机制的图像字幕系统可提高视觉问答的性能。注意力机制包括视觉注意(“我在哪里看”)和文本注意力(“我在看哪个词?”)HieCoAtten可以同时或依次创建视觉和文本注意力。DAN在同一空间内投射视觉和文本注意力的结果; 然后它同时产生视觉和文本注意力的下一步。

4.2:双线性整合

该方法使用视觉特征向量和文本特征向量的外积来捕获每个维度上这些状态的特征之间的关系。为了避免明确地计算双线性汇合的高维度结果,我们可以将在细粒度识别中发现的流线型双线性汇合背后的思想应用于视觉问题回答。例如,MFB使用低速率近似背后的概念以及视觉和文本注意机制。

5、神经网络可视化与神经网络理解

下文提供了许多可视化方法,以帮助理解卷积和神经网络。

5.1:直接可视化第一个过滤器

由于第一个卷积层上的滤镜在输入图像上滑动,我们可以直接在第一层上显示滤镜。我们可以看到第一层权重集中在特定方向的边缘和指定的颜色组合,这类似于视觉生物学机制。但是,由于高级过滤器不直接用于输入图像,因此直接可视化只能应用于第一层上的过滤器。

5.2:T-SNE

此方法在图像的fc7和pool5特征上使用低维嵌入。例如,将它们缩小到2维并允许它们在2维平面上绘制,具有类似语义信息的图像应该产生与t-SNE类似的结果。该方法与PCA之间的区别在于t-SNE是一种非线性减少方法,可以保留地点之间的距离。我们得到以下图像,该图像是将t-SNE应用于原始MNIST图像的结果。我们可以看到MNIST是一个相对简单的数据集,其中不同分类的图像之间的差异是显而易见的。

5.3:可视化中间层激活值

我们可以看到,即使ImageNet没有人脸类别,网络仍将学会区分这种语义信息并捕获未来的分类。

5.4:最大化响应图像区域

为了阻止这种情况,在中间层选择一个指定的神经元,然后将多个不同的图像输入网络,以找到导致神经元最大响应的图像区域。这允许我们观察神经元对应的语义特征,我们使用“图像区域”而不是“完整图像”的原因是中间层神经元的感受野受限并且不能覆盖整个图像。

5.5:梯度上升优化

该方法选择特定的神经元,然后计算该神经元对输入图像的反应产生的偏导数,然后使用梯度上升优化图像直到收敛。此外,我们需要一些标准化的项目来使生成的图像更接近自然模型。除了优化输入图像,我们还可以优化fc6功能并创建所需的图像。

6、对抗性的例子

选择图像和不正确的分类。然后,系统计算该分类对图像的偏导数,然后对图像应用梯度上升优化。实验表明,在使用小的,几乎察觉不到的变化之后,我们可以使网络以高可信度对模型实现不正确的类。

在实际应用中,对抗性示例在金融和安全领域非常有用。研究人员发现,这是因为图像空间的维度非常高。即使有大量的训练数据,我们也只能覆盖该空间的一小部分。如果输入图像从该不同空间稍微变化,那么网络将难以做出合理的决定。

本文作者:【方向】

阅读原文

本文为云栖社区原创内容,未经允许不得转载。

上一篇 下一篇

猜你喜欢

热点阅读