摘要: 关于计算机视觉你知道的可能有些少!
计算机视觉是人工智能(AI)中的热门研究课题,它已经存在多年。然而,计算机视觉仍然是人工智能面临的最大挑战之一。在本文中,咱们将探讨使用深度神经网络来解决计算机视觉的一些基本挑战。特别是,咱们将研究神经网络压缩,细粒度图像分类,纹理合成,图像搜索和对象跟踪等应用。算法
尽管深度神经网络具备使人难以置信的性能,但它们对计算能力和存储的需求对其在实际应用中的部署提出了重大挑战。研究代表,神经网络中使用的参数可能很是多余。所以,在提升精度的同时还须要投入大量的工做来下降了网络的复杂性。数据库
低秩近似用于接近原始权重矩阵。例如,SVD可用于得到矩阵的最佳低秩近似,或者Toeplitz矩阵可与Krylov分析结合使用以近似的原始矩阵。编程
1.1:修剪缓存
一旦训练完成,一些不相关的神经元链接(能够在损失算法中加权值平衡和稀疏约束)或者将全部这些链接过滤掉,而后执行几轮微调。在实际应用中,修剪神经元链接的级别将使结果稀疏,难以缓存,而且难以从存储器访问。有时,咱们须要特别设计一个合做运营数据库。安全
相比之下,过滤级修剪能够直接在已经存在的操做数据库上运行,过滤级修剪的关键是肯定如何平衡过滤器的重要性。例如,咱们可使用卷积结果的稀疏性、滤波器对损失算法的影响或者卷积对下一层结果的影响进行平衡。网络
1.2:量化并发
咱们能够将权重值分红组,而后使用组中的中值来替换原始权重,并经过霍夫曼编码运行它。可是,若是咱们只考虑权重自己,则能够减小量化过程的偏差误差。随后,分类操做的偏差误差将显着增长。所以,量化CNN的优化目标是重构以最小化偏差误差。此外,咱们可使用哈希编码并投影相同的哈希权重(hash bucket weights)来共享相同的值。性能
1.3:减小数据值的范围优化
在默认状况下,数据由单精度浮点组成,占32位。研究人员发现,使用半精度浮点(16位)对性能的影响几乎为零。谷歌的TPU使用8位整数来表示数据,这种状况是值的范围是两个或三个值(0/1或-1/0/1)。仅使用位进行操做可使咱们快速完成各类计算,可是训练两个或三个价值网络是一个相当重要的问题。编码
传统方法是使用两个或三个值做为前馈过程并在更新过程当中传递实数。此外,研究人员认为两个值的表达能力是有限的,所以可使用额外的浮点缩放二进制卷积结果来改善网络表示。
1.4:简化的结构设计
研究人员一直致力于建立简化的网络结构,例如:
知识蒸馏(Knowledge distillation)训练小网络接近普遍的网络。可是,目前还不清楚如何正确地接近庞大的网络。
1.5:硬件-软件协议设计
经常使用硬件:
与(普通)图像分类相比,细粒度图像分类在肯定图像类别时须要更高的精度。例如,咱们可能须要肯定目标鸟的确切种类、汽车的品牌和型号、飞机的型号。一般,这些类之间的差别很小。例如,波音737-300和波音737-400之间惟一明显不一样的区别就是窗户的数量。所以,细粒度图像分类比标准图像分类更具挑战性。
细粒度图像分类的经典方法是首先在图像上定义不一样的位置,例如,鸟的头部、脚部或翅膀。而后咱们必须从这些位置提取特征,最后,组合这些特征并使用它们来完成分类。这种方法具备很是高的准确性,但它须要大量的数据集和手动标记位置信息。细粒度分类的一个主要趋势是没有额外监督信息的训练,而不是仅使用图像笔记,该方法由双线性CNN方法表示。
2.1:双线性(Bilinear)CNN
首先计算卷积描述符的外积,以找出不一样维度之间的相互关系。由于不一样描述符的维度对应于卷积特征的不一样通道,而且不一样的通道提取不一样的语义特征,因此使用双线性操做容许咱们捕获输入图像上的不一样语义元素之间的关系。
2.2:流线型双线性汇合(Streamlined Bilinear Confluence)
双线性汇合的结果是很是高维的,这须要大量的计算和存储资源,也明显增长了下一个彻底链接层上的参数数量。后续研究旨在制定简化双线性汇合的战略,其结果包括如下内容:
图像描述是生成图像的一个或两个句子描述的过程。这是一项涉及计算机视觉和天然语言处理的跨学科任务。
3.1:编码器-解码器网络
设计图像字幕网络背后的基本思想基于天然语言处理领域中机器翻译的概念。在具备图像CNN编码网络的机器翻译器中替换源语言编码网络并提取图像的特征以后,咱们可使用解码器网络做为目标语言来建立文本描述。
3.2:Show Attend and Tell
注意力机制是机器翻译器用来捕获远程依赖关系的标准技术,也能够用于图像字幕。在解码器网络中,除了预测下一个单词以外,在每一个时刻,咱们还须要输出二维注意力图像并将其用于深度卷积特征的加权收敛。使用注意力机制的另外一个好处是网络能够被可视化,这样咱们就能够轻松地看到网络在生成每一个单词时所看到的图像部分。
3.3:Adaptive Attention(自适应注意力机制)
先前的注意力机制将为每一个预测的单词产生二维注意图像(图像(a))。可是,对于一些中止词,咱们不须要使用图像中的线索。相反,某些单词能够根据上下文生成,彻底独立于图像自己。这项工做在LSTM上进行了扩展,并产生了“视觉哨兵”机制,该机制肯定是否应根据上下文或图像信息(图像(b))预测当前单词。
此外,与先前在根据隐藏层的状态计算注意图像的先前方法不一样,该方法根据隐藏层的当前状态执行计算。
给定图像和与该图像相关的问题,视觉问答旨在从选择的候选答案中回答该问题。从本质上讲,这是一个分类任务,有时它使用递归神经网络解码来产生文本答案。视觉问答也是一项涉及视觉和天然语言处理的跨学科任务。
4.1:基本思想过程
问题概念是使用CNN从图像中提取特征,RNN从文本问题中提取文本特征,而后组合视觉和文本特征,最后使用彻底链接后进行分类。这项任务的关键是弄清楚如何链接这两种类型的功能。直接组合这些特征的方法将它们转换为矢量,或者经过添加或乘以元素来添加或生成视觉和文本矢量。
注意使用注意力机制的图像字幕系统可提升视觉问答的性能。注意力机制包括视觉注意(“我在哪里看”)和文本注意力(“我在看哪一个词?”)HieCoAtten能够同时或依次建立视觉和文本注意力。DAN在同一空间内投射视觉和文本注意力的结果; 而后它同时产生视觉和文本注意力的下一步。
4.2:双线性整合
该方法使用视觉特征向量和文本特征向量的外积来捕获每一个维度上这些状态的特征之间的关系。为了不明确地计算双线性汇合的高维度结果,咱们能够将在细粒度识别中发现的流线型双线性汇合背后的思想应用于视觉问题回答。例如,MFB使用低速率近似背后的概念以及视觉和文本注意机制。
下文提供了许多可视化方法,以帮助理解卷积和神经网络。
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功能并建立所需的图像。
选择图像和不正确的分类。而后,系统计算该分类对图像的偏导数,而后对图像应用梯度上升优化。实验代表,在使用小的,几乎察觉不到的变化以后,咱们可使网络以高可信度对模型实现不正确的类。
在实际应用中,对抗性示例在金融和安全领域很是有用。研究人员发现,这是由于图像空间的维度很是高。即便有大量的训练数据,咱们也只能覆盖该空间的一小部分。若是输入图像从该不一样空间稍微变化,那么网络将难以作出合理的决定。
本文做者:【方向】
本文为云栖社区原创内容,未经容许不得转载。