Amazon Kendra是一种由机器学习(ML)驱动的智能搜索服务。Amazon Kendra重新定义了网站和应用程序的搜索,使您的员工和客户可以轻松找到他们正在寻找的内容,即使这些内容分散在您的组织内的多个位置和内容存储库中。
Amazon Kendra支持多种文档格式,例如Microsoft Word、PDF和来自各种数据源的文本。在本文中,我们着重扩展Amazon Kendra中的文档支持,使图像可通过其显示内容进行搜索。图像通常可以使用关键字等补充元数据进行搜索。然而,为成千上万的图像添加详细元数据需要大量的人工工作。生成式人工智能(GenAI)可以帮助自动生成元数据。通过生成文本标题,GenAI标题预测为图像提供了描述性元数据。在文档摄取期间,Amazon Kendra索引可以使用生成的元数据进行丰富,以实现无需任何人工工作的图像搜索。
例如,在图像的文档摄取过程中,可以使用GenAI模型为以下图像生成文本描述“一只躺在地上的狗在一把雨伞下面”。
对象识别模型仍然可以检测到关键字,例如“狗”和“雨伞”,但GenAI模型通过识别狗躺在雨伞下面来更深入地了解图像所代表的内容。这有助于我们在图像搜索过程中构建更精细的搜索。文本描述作为元数据添加到Amazon Kendra搜索索引中,通过自动化的自定义文档丰富(CDE)。然后,搜索“狗”或“雨伞”等术语的用户将能够找到图像,如以下屏幕截图所示。
在本文中,我们展示了如何在Amazon Kendra中使用CDE,使用部署在Amazon SageMaker上的GenAI模型。我们使用简单的示例演示了CDE,并为您提供了一个逐步指南,让您在自己的AWS账户中体验CDE。它可以让用户快速轻松地找到所需的图像,无需手动标记或分类。此解决方案还可以根据不同应用和行业的需求进行定制和扩展。
使用GenAI进行图像描述
使用GenAI进行图像描述涉及使用机器学习算法生成图像的文本描述。这个过程也称为图像字幕,在计算机视觉和自然语言处理(NLP)的交叉点上运作。它在数据是多模态的领域具有应用,例如电子商务,数据包含以元数据形式的文本以及图像,或者在医疗保健领域,数据可能包含医生的笔记和诊断以及MRI或CT扫描等,只是举几个使用案例。
GenAI模型学习识别图像中的对象和特征,然后生成这些对象和特征的描述自然语言。最先进的模型使用编码器-解码器架构,其中图像信息被编码在神经网络的中间层,并解码为文本描述。可以将其视为两个不同的阶段:从图像中提取特征和生成文本字幕。在特征提取阶段(编码器)中,GenAI模型处理图像以提取相关的视觉特征,例如对象形状,颜色和纹理。在字幕生成阶段(解码器)中,模型根据提取的视觉特征生成图像的自然语言描述。
GenAI模型通常在大量数据上进行训练,使它们适用于各种任务而无需额外的训练。通过少量样本学习,还可以轻松适应自定义数据集和新领域。预训练方法允许使用最先进的语言和图像模型轻松训练多模态应用。这些预训练方法还允许您混合和匹配最适合您数据的视觉模型和语言模型。
生成的图像描述的质量取决于训练数据的质量和大小,GenAI模型的架构,以及特征提取和字幕生成算法的质量。尽管使用GenAI进行图像描述是一个活跃的研究领域,但在图像搜索,视觉叙事和为视觉障碍人士提供辅助功能等各种应用中,它都显示出非常好的结果。
使用案例
GenAI图像字幕在以下使用案例中非常有用:
- 电子商务 – 图像和文本同时出现的常见行业案例是零售。特别是电子商务以产品图像和文本描述作为大量数据存储。文本描述或元数据对于根据搜索查询向用户展示最佳产品非常重要。此外,随着电子商务网站从第三方供应商获取数据的趋势,产品描述通常不完整,需要大量的人工时间和巨大的开销来标记元数据列中的正确信息。基于GenAI的图像字幕对于自动化这一繁琐过程非常有用。可以使用在定制时尚数据(如时尚图像和描述时尚产品属性的文本)上微调模型,生成改进用户搜索体验的元数据。
- 市场营销 – 图像搜索的另一个用例是数字资产管理。市场营销公司存储大量需要集中、易于搜索和可扩展的数字数据,这需要数据目录的支持。具有信息性数据目录的集中式数据湖可以减少重复工作,并实现创意内容在团队之间的更广泛共享和一致性。对于广泛用于社交媒体内容生成或企业演示的图形设计平台,更快的搜索能够为用户提供更好的搜索体验,为用户提供所需的正确搜索结果,并允许用户使用自然语言查询进行搜索。
- 制造业 – 制造业存储了大量的图像数据,如构件、建筑物、硬件和设备的架构蓝图。通过对这些数据进行搜索,产品团队可以从已经存在的起点轻松重建设计,并消除大量的设计开销,从而加快设计生成的过程。
- 医疗保健 – 医生和医学研究人员可以对MRI和CT扫描、标本样本、皮疹和畸形等疾病图像以及医生的笔记、诊断和临床试验细节进行目录和搜索。
- 元宇宙或增强现实 – 广告产品旨在创造用户可以想象和共鸣的故事。借助AI技术工具和分析,构建不仅仅是一个故事,而是针对最终用户独特品味和感知定制的故事变得比以往更容易。这就是图像到文本模型可以改变游戏规则的地方。视觉叙事可以帮助创建角色,将它们调整到不同的风格,并为它们添加字幕。它还可以用于驱动元宇宙或增强现实以及包括视频游戏在内的沉浸式内容的刺激体验。图像搜索使开发人员、设计师和团队能够使用自然语言查询搜索其内容,从而保持不同团队之间内容的一致性。
- 为盲人和低视力者提供数字内容的可访问性 – 这主要通过辅助技术实现,如屏幕阅读器、允许触摸阅读和写作的盲文系统以及用于在互联网上导航网站和应用程序的特殊键盘。然而,图像需要以可作为语音进行传达的文本内容形式呈现。使用GenAI算法进行图像字幕是重新设计互联网并使其更具包容性的关键部分,使每个人都有机会访问、理解和与在线内容互动。
模型详细信息和自定义数据集的模型微调
在此解决方案中,我们利用了Hugging Face提供的vit-gpt2-image-captioning模型,该模型在Apache 2.0许可下提供,无需进行任何进一步的微调。Vit是图像数据的基础模型,GPT-2是语言的基础模型。两者的多模态组合提供了图像字幕的能力。Hugging Face托管了最先进的图像字幕模型,可以在AWS上轻松部署,并提供简单部署的推理端点。虽然我们可以直接使用这个预训练模型,但我们也可以根据特定领域的数据集、更多的数据类型(如视频或空间数据)和独特的用例来定制模型。有几个GenAI模型,其中一些模型在某些数据集上表现最佳,或者您的团队可能已经在使用视觉和语言模型。这个解决方案提供了选择最佳视觉和语言模型作为图像字幕模型的灵活性,只需简单替换我们使用的模型。
为了将模型定制到独特的行业应用中,通过Hugging Face在AWS上提供的开源模型提供了几种可能性。可以测试预训练模型适用于独特数据集,或者使用标记数据的样本对其进行训练和微调。新颖的研究方法还允许有效地组合任何视觉和语言模型,并在您的数据集上进行训练。然后,可以在SageMaker中部署此新训练的模型,用于此解决方案中的图像字幕。
定制图像搜索的一个例子是企业资源规划 (ERP)。在 ERP 中,从物流或供应链管理的不同阶段收集的图像数据可以包括税收收据、供应商订单、工资单等,需要自动分类为组织内不同团队的权限范围。另一个例子是使用医学扫描和医生诊断来预测新的医学图像进行自动分类。视觉模型从 MRI、CT 或 X 射线图像中提取特征,文本模型使用医学诊断进行图像标题。
解决方案概述
下图显示了使用 GenAI 和 Amazon Kendra 进行图像搜索的架构。
我们将图像从 Amazon Simple Storage Service (Amazon S3) 导入到 Amazon Kendra 中。在导入到 Amazon Kendra 期间,会调用托管在 SageMaker 上的 GenAI 模型来生成图像描述。此外,Amazon Textract 提取图像中可见的文本。图像描述和提取的文本将存储为元数据,并提供给 Amazon Kendra 搜索索引。导入后,可以通过 Amazon Kendra 搜索控制台、API 或 SDK 搜索图像。
我们在图像导入步骤中使用了 Amazon Kendra 中的 CDE 的高级操作来调用 GenAI 模型和 Amazon Textract。然而,CDE 可以用于更广泛的用例。使用 CDE,您可以在将文档导入 Amazon Kendra 时创建、修改或删除文档属性和内容。这意味着您可以根据需要操作和导入数据。这可以通过在导入期间调用预提取和后提取 AWS Lambda 函数来实现,从而允许数据丰富或修改。例如,我们在导入医学文本数据时可以使用 Amazon Medical Comprehend,将 ML 生成的见解添加到搜索元数据中。
您可以按照以下步骤使用我们的解决方案通过 Amazon Kendra 搜索图像:
- 将图像上传到像 S3 存储桶这样的图像存储库中。
- 然后,Amazon Kendra 对图像存储库进行索引,Amazon Kendra 是一个可用于搜索结构化和非结构化数据的搜索引擎。在索引期间,将调用 GenAI 模型以及 Amazon Textract 来生成图像元数据。您可以手动触发索引或预定义计划。
- 然后,您可以使用自然语言查询搜索图像,例如“查找红玫瑰的图像”或“显示公园中玩耍的狗的图片”,通过 Amazon Kendra 控制台、SDK 或 API。这些查询将由 Amazon Kendra 处理,使用机器学习算法理解查询背后的含义,并从索引存储库中检索相关图像。
- 搜索结果将显示给您,同时显示它们对应的文本描述,帮助您快速轻松地找到所需的图像。
先决条件
您必须具备以下先决条件:
- 一个 AWS 帐户
- 通过 AWS CloudFormation 获得提供和调用以下服务的权限:Amazon S3、Amazon Kendra、Lambda 和 Amazon Textract。
成本估算
将此解决方案部署为概念验证的成本在以下表中显示。这是我们使用不建议用于生产工作负载的 Amazon Kendra 开发者版的原因,但为开发人员提供了一种低成本的选择。我们假设 Amazon Kendra 的搜索功能每月使用 20 个工作日,每天使用 3 小时,因此计算出 60 个月活跃小时的相关成本。
服务 | 耗时 | 每月成本估计 |
Amazon S3 | 存储 10 GB 的数据传输 | 2.30 美元 |
Amazon Kendra | 开发者版,每月 60 小时 | 67.90 美元 |
Amazon Textract | 在 10,000 张图像上 100% 检测文档文本 | 15.00 美元 |
Amazon SageMaker | 每天使用 ml.g4dn.xlarge 上一个模型在一个端点上进行 3 小时推理,共 20 天 | 44.00 美元 |
. | . | 129.2 美元 |
使用AWS CloudFormation部署资源
CloudFormation堆栈部署以下资源:
- 一个Lambda函数,从Hugging Face hub下载图像字幕模型,并随后构建模型资产
- 一个Lambda函数,将推断代码和压缩的模型文件存储到目标S3存储桶
- 一个用于存储压缩的模型文件和推断代码的S3存储桶
- 一个用于存储上传的图像和Amazon Kendra文档的S3存储桶
- 一个用于搜索生成的图像字幕的Amazon Kendra索引
- 一个用于部署Hugging Face图像字幕模型的SageMaker实时推断终端节点
- 一个在按需增加Amazon Kendra索引时触发的Lambda函数。它调用Amazon Textract和一个SageMaker实时推断终端节点。
此外,AWS CloudFormation还部署了所有必要的AWS身份和访问管理(IAM)角色和策略,以及一个VPC和子网、安全组和Internet网关,其中运行自定义资源Lambda函数。
完成以下步骤以提供您的资源:
- 选择启动堆栈以在
us-east-1
区域中启动CloudFormation模板: - 选择下一步。
- 在指定堆栈详细信息页面上,保留参数文件的模板URL和S3 URI的默认值,然后选择下一步。
- 继续在后续页面上选择下一步。
- 选择创建堆栈以部署堆栈。
监视堆栈的状态。当状态显示为CREATE_COMPLETE时,部署完成。
导入和搜索示例图像
完成以下步骤以导入和搜索您的图像:
- 在Amazon S3控制台中,在
us-east-1
区域的kendra-image-search-stack-imagecaptions
S3存储桶中创建一个名为images
的文件夹。 - 将以下图像上传到
images
文件夹。
- 转到
us-east-1
区域的Amazon Kendra控制台。 - 在导航窗格中,选择索引,然后选择您的索引(
kendra-index
)。 - 选择数据源,然后选择
generated_image_captions
。 - 选择立即同步。
等待同步完成后,再继续下一步。
- 在导航窗格中,选择索引,然后选择
kendra-index
。 - 转到搜索控制台。
- 尝试分别或组合使用以下查询:“dog”,“umbrella”和“newsletter”,并查看Amazon Kendra对哪些图像进行了高排名。
随意测试适用于上传的图像的查询。
清理
要取消配置所有资源,请完成以下步骤:
- 在 AWS CloudFormation 控制台中,选择导航窗格中的 堆栈。
- 选择堆栈
kendra-genai-image-search
,然后选择 删除。
等待堆栈状态变为 DELETE_COMPLETE。
结论
在本帖中,我们看到了如何将 Amazon Kendra 和 GenAI 结合起来自动创建图像的有意义的元数据。最先进的 GenAI 模型非常有用,可以生成描述图像内容的文本标题。这在多个行业中都有应用,包括医疗保健和生命科学、零售和电子商务、数字资产平台和媒体。图像标题对于构建更具包容性的数字世界、重塑互联网、元宇宙和沉浸式技术,以满足视觉障碍人士的需求也至关重要。
通过标题启用的图像搜索使数字内容能够在这些应用中轻松进行搜索,无需手动努力,并消除了重复努力。我们提供的 CloudFormation 模板使部署此解决方案以使用 Amazon Kendra 启用图像搜索变得简单。可以使用存储在 Amazon S3 中的图像和 GenAI 来创建图像的文本描述,并与 Amazon Kendra 中的 CDE 一起使用以提供此解决方案。
这只是 GenAI 与 Amazon Kendra 的一个应用。要深入了解如何使用 Amazon Kendra 构建 GenAI 应用程序,请参阅《使用 Amazon Kendra、LangChain 和大型语言模型在企业数据上快速构建高准确度的生成 AI 应用程序》。要构建和扩展 GenAI 应用程序,我们推荐查看 Amazon Bedrock。