Transformer 实现图像标注

前言

图像标注是计算机视觉和自然语言处理领域交叉的一个热点研究方向。它的主要任务是将一张图像自动转化为自然语言的文字描述。本文主要介绍了使用 CNN 、Transformer 等技术实现图像标注的任务。相关技术有:

  • 自然语言处理 NLP

  • 计算机视觉 CV

  • 注意力机制 Attention And Self-Attention

  • 变形金刚 Transformer

  • 序列到序列模型 Seq2Seq

数据集和数据预处理

数据介绍

在本文中,我们使用的数据集是 Flickr8k ,它包含了 8000 张不同主题的图像,每张图像有 5 个不同的文本描述。

数据预处理

  • 图像尺寸调整:读取图像文件,并将其调整为统一的大小(例如,299x299像素)。这个统一的大小确保了输入图像的一致性。
  • 图像归一化:图像像素值被标准化为 0 到 1 之间的浮点数,以便在神经网络中处理。
  • 文本向量化:将文本分词,并将每个 token 转化为整数,整个文本也会转为 token 序列。我们限制了词汇表的大小为 10000 ,并设置了最大序列长度为 25 个词。
  • 构造数据:每个文本序列都以<start>标记开头,以<end>标记结尾,以便解码器模型知道何时开始和结束生成描述。我们将图像和文本描述配对,创建一个数据集。数据集中的每个样本包含一张图像和一个与之相关的文本序列。

结果展示

  • 图像数据:已经被调整为统一大小(299x299像素)和标准化的图像张量。 图像数据示例:

    <tf.Tensor: shape=(299, 299, 3), dtype=float32, numpy=array([[[0.43137255, 0.43529412, 0.44313726],
            [0.43137255, 0.43529412, 0.44313726],
            ...
            [0.43137255, 0.43529412, 0.44313726],
            [0.43137255, 0.43529412, 0.44313726]]], dtype=float32)>
    
    
  • 文本数据:已经被分词、标记化,并转化为整数序列。每个序列以<start><end>标记开头和结尾。 文本数据示例:

    <tf.Tensor: shape=(25,), dtype=int64, numpy=
    array([ 3,  2,  7,  8,  9, 10, 11,  5, 12, 13, 14, 15, 16, 17, 18, 19,  4,
            0,  0,  0,  0,  0,  0,  0,  0])>
    (在这个示例中,`3`表示`<start>`标签,`4`表示`<end>`标签,其余数字代表词汇表中的不同单词的索引。)
    
    

模型结构

使用图像特征提取器、编码器、解码器这三个组件,可以使得模型能够从输入图像中提取信息,将其编码为一种有意义的表示,然后解码为自然语言文本,从而实现了图像标注的任务。

图像特征提取器

图像特征提取器的任务是将输入的图像转化为一种有意义的特征表示,以便编码器能够理解和处理图像信息。在本文中,我们使用了一个预训练的 EfficientNetB0 作为图像特征提取器,这是一个轻量级但性能出色的 CNN 模型。

编码器

编码器的任务是将图像特征表示进一步转化为一种语义上丰富的表示,以供解码器使用。在本文中,我们使用了 Transformer 架构的编码器。Transformer 编码器的主要内容包括:

  • 自注意力机制
  • 多头注意力机制
  • 前馈神经网络层
  • Layer Normalization

编码器的输出将被传递给解码器,用于生成文本描述。

解码器

解码器的任务是接收编码器的输出,并逐步生成图像标注的文本描述。在本文中,我们同样使用了 Transformer 架构的解码器。 Transformer 解码器的主要内容和上面类似,不同之处这里需要使用各种掩码来进行注意力特征提取和转换,并且在中间的过程中要接收来自编码器的输出作为 key 和 value 。

解码器在推理的时候从 <start> 开始逐步生成词汇表中的单词,直到生成特殊的<end>标签,这样就得到了图像对应的文本描述。

模型的编译和训练

这里使用最常见的配置即可:

  • 优化器使用 Adam

  • 损失函数使用 SparseCategoricalCrossentropy

  • 观察指标使用 Loss 和 Acc

结果展示

在训练了 12 epoch 后检测到了观察指标无法精进所以停止了训练,验证集准确率 0.39 ,日志打印为:

 ...
 Epoch 12/200
96/96 [==============================] - 25s 260ms/step - 损失: 10.1508 - 准确率: 0.5445 - val_损失: 15.7716 - val_准确率: 0.3978

我们随机选择了三张图片进行了图像文本生成,下面看一下结果,虽然看起来准确率不高,但是对于文本的输出效果我还是比较满意的。

3209523192_05a4cef844.jpg

Image : Flicker8k_Dataset\3209523192_05a4cef844.jpg
Predicted Caption:  a man in a blue and red pants is skiing down a hill

3285993030_87b0f1d202.jpg

Image : Flicker8k_Dataset\3285993030_87b0f1d202.jpg
Predicted Caption:  a small dog runs through the sand

3394070357_cb2a3243fc.jpg

Image : Flicker8k_Dataset\3394070357_cb2a3243fc.jpg
Predicted Caption:  a dog is running through the water

挑战

  • 语义准确性:生成的描述应该准确传达图像的语义信息,确保生成的描述与图像内容一致,而不仅仅是表面的含糊其辞地特征。
  • 数据量:训练需要大规模的图像和文本数据,这在某些领域可能会受限。

那么,我们该如何学习大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值