机器学习中的图像字幕生成2025年3月17日 | 阅读 12 分钟 自然语言处理与计算机视觉的融合,在图像字幕生成领域取得了显著进展。图像字幕生成是指为图像生成准确而富有表现力的文字描述的过程。通过利用机器学习技术,已开发出能够提供丰富且上下文相关的字幕的图像字幕系统。这提高了视觉内容的访问性和理解能力。 自动为图像生成书面描述的做法被称为图像字幕生成。图像字幕生成超越了传统的图像识别算法,后者仅为图像生成标签或标记。相反,它生成类似人类的描述,捕捉图像的联系、内容和上下文。为了实现这一目标,需要将用于文本生成的自然语言处理模型与用于图像解释的计算机视觉模型相结合。 图像字幕的应用图像字幕在各个领域都有众多实际应用。
代码 现在我们将尝试创建一个模型来生成图像字幕。 导入库预处理图像数据输出 ![]() ![]() 准备文本数据使用以下函数使解释更清晰
我们的目标是获得一个尽可能有限且富有表现力的词汇表。减少词汇量将导致更快的训练和更小的模型。为了了解我们数据集词汇表的范围,我们可以将清理后的描述转换为一个集合并打印其大小。集合没有重复值,并且经过高度优化。它有一个基于哈希表的实现。因此,我们得到一个简短而富有表现力的词汇表。 输出 ![]() 加载数据输出 ![]() 在将描述性语言输入模型或与模型的预测进行比较之前,必须通过编码将其转换为数字。要开始编码数据,必须建立从单词到不同整数值的稳定映射。Keras 提供的 Tokenizer 类能够使用导入的描述数据来获取此映射。 下面定义了 create_tokenizer() 和 to_lines() 函数,它们将描述字典转换为字符串列表,并根据加载的照片描述文本拟合分词器。 输出 ![]() 现在可以对文本进行编码了。我们将把每个描述分解成单词。模型将接收一个单词和一个图像,然后生成下一个单词。然后,模型将接收描述的前两个单词以及图像来生成下一个单词。模型将以这种方式进行训练。 定义模型整个模型分为 3 部分
Sequence Processor 模型将输入序列馈送到一个 Embedding 层,该层使用掩码来忽略填充值。输入序列的预定义长度为 34 个单词。接下来是一个具有 256 个记忆单元的 LSTM 层。 两个输入模型都会生成一个 256 个元素的向量。此外,两个输入模型都使用了 50% 的 dropout 正则化。由于此模型配置学习速度快,目标是减少训练数据集的过拟合。 使用额外的操作,Decoder 模型组合了来自两个输入模型的向量。然后,将其传递到一个具有 256 个神经元的 Dense 层,最后传递到一个最终输出 Dense 层,该层使用 softmax 在整个输出词汇表上预测序列中的下一个单词。 输出 ![]() ![]() 评估模型让我们来看看模型的准确性。 输出 ![]() 生成新描述现在我们将为图像生成新的描述。 输出 ![]() 输出 ![]() "startseq 穿着红色衬衫的男人正站在岩石上 endseq" |
我们请求您订阅我们的新闻通讯以获取最新更新。