首页 > 编程知识 正文

tensorflow能做什么(tensorflow2.0)

时间:2023-05-04 17:11:55 阅读:102893 作者:3142

Wxdl编译和排列

由qubit |微信官方账号QbitAI制作

看图说话是我们人类从幼儿园就掌握的技能。经过机器多年的学习,我们终于可以对图像进行最简单的描述了。

O'reilly出版社和TensorFlow团队联合发布教程,详细介绍了如何基于谷歌的Show and Tell模型,用Flickr30k数据集训练图像描述生成器。模型的创建、训练和测试都基于TensorFlow。

如果你一时想不起奥莱利是什么,量子位愿意帮你记住:

好了,看教程:

00-1010安装TensorFlow;

安装pandas、opencv2和Jupyter库;

下载闪烁30k数据集的图像嵌入和图像描述

在教程对应的GitHub代码介绍(https://github.com/mlberkeley/oreilly-captions)中,有库、图像嵌入、图像描述的下载链接。

00-1010 delta图像描述生成模型网络图。

网络输入马的图像,通过深度卷积神经网络Deep CNN和语言生成模型RNN(循环神经网络)进行学习和训练,最终得到字幕生成网络的模型。

这是我们将要训练的网络结构示意图。深度卷积神经网络将每个输入图像编码成4,096维向量,并使用循环神经网络的语言生成模型来解码该向量并生成输入图像的描述。

准备工作

图像分类是一项经典的计算机视觉任务,可以使用许多强大的经典分类模型。分类模型是通过将图像中存在的形状和物体的相关视觉信息拼接在一起来识别图像中的物体。

机器学习模型可以应用于计算机视觉任务,如目标检测和图像分割。不仅需要识别图像中的信息,还需要学习和解释呈现的2D空间结构,并融合这两种信息来确定物体在图像中的位置信息。要实现字幕生成,需要解决以下两个问题:

1.基于现有的成功的图像分类模型,如何从图像中获取重要信息?

2.我们的模型是如何在理解图像的基础上通过整合信息实现字幕生成的?

图像描述生成模型

我们可以使用现有的模型来帮助提取图像信息。迁移允许我们使用现有的神经网络来训练不同的任务,并通过数据格式转换将这些网络应用于我们的数据。

在我们的实验中,vgg-16图像分类模型的输入图像格式为224224像素,最终生成一个4096维的特征向量,连接到多层全连接网络进行图像分类。

我们可以使用vgg-16网络模型的特征提取层来改进我们的字幕生成网络。在这项工作中,我们抽象了vgg-16网络的特征提取层和预先计算的4096维特征,从而省去了图像的预训练步骤,加快了全局网络的训练过程。

加载VGG网络特征和实现图像标注功能的代码比较简单:

Get _ data (annotation _ path,feature _ path) :

图像描述生成是图像分类的扩展

现在,我们已经在图像上标记了多个对象标签,我们需要让模型学会将表示标签解码成一个可以理解的标题。

由于文本的连续性,我们使用RNN和LSTM网络训练网络的功能,在给定前一个单词后,预测一系列描述图像的句子。

由于长短期记忆模型(LSTM)单元,该模型可以更好地从字幕词序列中提取关键信息,选择性地记住一些内容,忘记一些无用的信息。TensorFlow提供了一个封装函数,用于生成具有给定输入和确定输出维度的LSTM网络层。

为了将单词转换成适合LSTM网络输入的固定长度表示序列,我们使用嵌入层来学习如何将单词映射到256维特征,即单词嵌入操作。单词嵌入有助于以向量的形式表达我们的单词,所以相似的单词向量表示对应的句子语义相似。

在VGG-16网络构造的图像分类器中,卷积层提取的4,096维向量表示图像将被softmax层分类。由于LSTM单元支持256维文本特征作为输入,我们需要将图像表示格式转换为用于描述序列的表示格式。因此,我们增加了一个嵌入层,可以将4,096维的图像特征映射到另一个256维文本特征的向量空间。

00-1010下图显示了图片对话模型的原理:

在此图中,{s0,s1,sN}代表我们试图预测的描述性词语,而{wes0,wes1,wesn-1}是每个单词的单词嵌入向量。输出{p1,p2,LSTM的,pN}是模型基于原始单词序列为下一个单词生成的概率分布。该模型的训练目标是最大化每个词的对数概率的和指标。

经过DEF _ model (self) :

运用迁移学习

的训练,我们得到了一个可以根据现有的图片和标题列表使用的模型

词给出下一个单词出现的概率。 那么我们该如何用这个网络来产生新的字幕?

最简单的方法是根据输入图像并迭代输出下一个最可能的单词,来构建单个标题。

def build_generator(self, maxlen, batchsize=1):

在许多情况下,这种方法是比较有效的。但是通过贪心算法来选取最可能的单词序列,我们可能不会得到一句连贯通顺的字幕序列。

为避免这种情况,一个解决办法是使用一种叫做“集束搜索(Beam Search)”的算法。该算法迭代地使用k个长度为t的最佳句子集合来生成长度为t+1的候选句子,并且能够自动找到最优的k值。这个算法在易于处理推理计算的同时,也在探索生成更合适的标题长度。在下面的示例中,在搜索每个垂直时间步长的粗体字路径中,此算法能够列出一系列k=2的最佳候选句子。

局限性和讨论

神经网络实现的图像描述生成器,为学习从图像映射到自然语言图像描述提供了一个有用的框架。通过对大量图像和对应标题的集合进行训练,该模型能够从视觉特征中捕获相关的语义信息。

然而,使用静态图像时,字幕生成器将专注于提取对图像分类有用的图像特征,而不一定是对字幕生成有用的特征。为了提高每个特征中所包含相关任务信息的数量,我们可以将图像嵌入模型,即用于编码特征的VGG-16网络,来作为字幕生成模型进行训练,使网络在反向传播过程中对图像编码器进行微调,以更好地实现字幕生成的功能。

此外,如果我们真正仔细研读生成的字幕序列,我们会注意到都是比较普通而且变化不大的句子。拿如下的图像作为例子:

△ 一只长颈鹿站在树的旁边

此图片的对应生成字幕是“长颈鹿站在树旁边”。但是如果我们观察其他图片,我们可能会注意到,对于任何带有长颈鹿照片,它可能都会生成标题“一只长颈鹿站在树的旁边”,因为在训练集中,带有长颈鹿的图像样本经常出现在树林附近。

后续工作

首先,如果你想改进这里字幕生成的模型,可以看看谷歌的开源项目Show and Tell network,是利用MS COCO数据集和一个三层图像嵌入模型进行训练生成的预测网络。

目前最先进的图像字幕模型引入了视觉注意机制,其允许模型关注图像中特定的区域并且生成字幕时选择性地关注特定类别的信息。

此外,如果您对这种最先进的字幕生成功能实现感兴趣,请查看Yoshua Bengio的论文:Show, Attend, and Tell: Neural Image Caption Generation with Visual Attention。

量子位整理了文中相关各种资源的链接,在量子位公众号对话界面回复“图像描述生成”,我们会把这些链接发给你。

另外,量子位新建了一个机器学习入门群,欢迎加小助手的微信:qbitbot,注明“加入门群”并介绍一下你自己,如果符合要求,我们会拉你入群。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。