首页 / 文章

大规模混合图像搜索:SigLIP、SPLADE、YOLOv8与Gemini Captions

设计一种可处理百万张图片的搜索系统,该系统将密集嵌入与稀疏嵌入相结合,并结合物体检测、实体识别、安全搜索以及由大语言模型生成的描述功能。

发布者:REACTAPP.TOP阅读约 6 分钟1358 词

来源: Building Image Search System Leveraging Modern AI Services

对于图片而言,仅依靠标签进行关键词匹配的效果十分有限。那些正在构建电子商务产品目录、内容管理工具或数字资产库的团队,希望搜索功能能够理解图片所展示的内容、风格及情感基调,而不仅仅是用户在标签字段中输入的文字。下面的设计介绍了一种混合式图像搜索系统,该系统能够利用视觉内容和文本查询从约一百万张图片的存储库中检索信息,且主要基于现有的人工智能服务构建,从而降低开发成本。

该架构由多个专用组件组成。下文将按照数据流经的顺序对这些组件进行介绍:嵌入模型、图像分析、描述生成、查询处理以及操作功能。

两种嵌入模型

该系统依赖于两个独立的嵌入处理流程,每个流程负责捕捉内容的不同方面。

图像处理采用SigLIP模型。在评估了CLIP和ImageBind之后,SigLIP表现更优。这是一种基于Sigmoid损失函数训练的对比式图像-文本模型,据报道其零样本ImageNet Top-1准确率约为76%,比同类CLIP模型高出几个百分点。此外,它的计算资源消耗更低,在此处提及的对比中大约减少了40%,且无需微调即可泛化到新领域。每张图像都会转化为一个密集向量,使得相近的向量表示相似的图像。

文本处理采用SPLADE v2模型。SPLADE生成的向量是稀疏的,并且直接与词汇表相关联,这带来了三大优势:

  • 由于每个维度都对应一个实际词汇,稀疏输出仍具有可解释性。
  • 它能够自动对查询词进行词汇扩展,从而缓解检索中常见的词汇不匹配问题(如“sofa”与“couch”的差异)。
  • 由于维度属于术语,因此可以追溯到导致该结果的精确词汇,从而有助于解释结果。
  • 理解每张图像

    原始像素会通过多阶段处理流程转化为可查询的信息层。

    使用YOLOv8进行物体检测。 YOLO仅需一次网络遍历即可查看整张图像,因此比Faster R-CNN之类的两阶段检测器快得多。在此配置下,其大型版本处理每张图像的平均时间约为50毫秒,足以实现高效批量处理。在包含80个常见类别的COCO数据集上,它的mAP值可达53.9%,而且该模型可轻松部署在GPU集群上。

    从通用类别到命名实体。 检测会输出人物、汽车、建筑物等标签。而高级搜索需要具体的身份信息,因此网络实体服务会将其转换:

    Example Transformation:
    
    YOLO: "person" (coordinates: [120, 45, 220, 320])
    Web Extraction: "Elon Musk" (confidence: 0.96)
    
    YOLO: "building" (coordinates: [50, 100, 400, 600])
    Web Extraction: "Eiffel Tower" (confidence: 0.92)
    

    该服务能够识别五百万多个实体,涵盖名人、地标、产品与品牌以及各类事件等类别。这一步骤实现了视觉检测与语义理解之间的衔接,因此可以针对特定歌手进行查询,而无需使用通用的个人查询方式。

    来自视觉 API 的标签。各种通用概念、活动及主题均通过标签检测得出,在测试中该功能已识别出数据库中超过10,000种不同的概念。它有助于处理三类内容:诸如远足或烹饪之类的活动、海滩或森林之类的场景,以及那些超出 YOLO 分类范围的特定物体,比如卡布奇诺,因为 YOLO 只能将其识别为“杯子”。

    安全搜索。内容会从五个维度进行标记:成人内容、暴力内容、医疗内容、恶搞内容(迷因和编辑过的图片)以及色情内容。每个维度都有一个置信度评分,因此可以按组织政策逐步调整过滤强度。这一自动化流程取代了大量人工审核工作。

    Gemini用于元数据与描述

    Gemini能够生成结构化的元数据。通过精心设计的提示词,可得到一个模板,该模板能可靠地提取25项属性,每项属性的置信度都在0到1之间,例如敏感级别和情感倾向:

    System: You are an expert image analyzer. Extract the following attributes from the image, with a confidence score (0-1):
    
    1. sensitivity (none, low, medium, high)
    2. emotion (neutral, joy, sadness, surprise, etc.)
    3. emotion_triggered (yes/no)
    4. text_overlay (yes/no)
    5. has_frames (yes/no)
    6. has_religious_symbols (yes/no)
    7. has_scattered_objects (yes/no)
    8. style (photographic, illustrated, cartoon, abstract, etc.)
    9. has_crowd (yes/no)
    ...
    [full list of 25 attributes]
    
    Response format: JSON object with attributes as keys and values as described above.
    

    检测结果、实体、属性及元数据的综合输出会输入到第二个 Gemini 提示词中,用以生成完整描述。此处提示词的设计至关重要,因为这些描述必须满足以下要求:

    1. 包含大量关键词,以便于文本搜索。
    2. 结构一致,从而能够被可靠解析。
    3. 在上下文中具有实际意义,能说明所检测到的实体为何重要。
    4. 需考虑情感、风格等属性。
    5. 撰写时需考虑到可能的搜索词。

    模板格式如下:

    Generate a comprehensive, search-optimized description for this image based on the following data:
    
    [Entity data from object detection and recognition]
    [Label data from Vision API]
    [Structured metadata from previous Gemini analysis]
    
    Your description should:
    1. Begin with the most significant entities and their actions/relationships
    2. Include key visual attributes (colors, style, composition)
    3. Mention emotional tone and aesthetic qualities
    4. Incorporate likely search terms
    5. Be 3-5 sentences in length
    

    首先取原始检测数据:

    Objects: person (0.98), guitar (0.95), microphone (0.92)
    Entities: Taylor Swift (0.97)
    Labels: concert, performance, stage, entertainment
    Metadata: emotion=joy, has_crowd=yes, style=photographic, dominant_color=purple
    

    经过优化后,它就变成了一个可搜索的句子:

    Taylor Swift performs energetically on stage with an acoustic guitar during a concert, singing into a microphone with passionate expression. The image captures the excitement of a live performance with purple stage lighting creating a vibrant atmosphere. This high-quality photograph conveys feelings of joy and excitement, with Swift's iconic performance style clearly visible. The composition includes partial views of an enthusiastic crowd in the foreground, making this suitable for music, entertainment, and celebrity content.
    

    这类描述包含大量可搜索的内容,在具体语境中仍具有意义,同时具备视觉与情感属性,还能反映用户可能输入的内容。

    回答查询

    查询处理需经过六个步骤:

    1. 分析。通过意图分类判断用户是需要特定实体、风格、情感还是其他属性。
    2. 实体提取。将查询中的命名实体与实体数据库进行匹配,从而为其赋予适当的权重。
    3. 嵌入。使用SPLADE v2和SigLIP对查询进行嵌入处理,使其与图像的表示方式保持一致。
    4. 向量搜索。通过查询嵌入从索引中检索出最接近的图像嵌入向量。
  • 策略过滤。会应用针对特定地区和组织级别的规则:符合用户所在地区的安全阈值、品牌安全要求、适合年龄的过滤机制以及许可权限。
  • 重新排序。多个因素会调整初次展示的顺序:
    • 多样性,采用贪心算法确保所选图片之间的余弦距离保持在最低水平。
    • 新鲜度,通过时间衰减机制提升较新内容的权重:score_boost = base_score * (1 + alpha * exp(-beta * days_old))。
    • 受欢迎程度,通过对数衰减机制防止过度使用的内容占据主导地位。
    • 针对特定领域的业务规则调整。

    两个难题

    延迟问题。由于需要串联多个服务栈,导致处理时间变长,最初每张图片的端到端处理时间超过四秒。为解决这一问题,采取了异步并行调用、对非交互式流程进行批量处理、将服务部署在相近位置以减少网络传输时间,以及根据图片复杂度划分不同处理层级等措施。最终每张图片的平均处理时间降至850毫秒,95%的图片能在1.2秒内完成处理。

    集成复杂性。每个服务都有独立的API、错误处理机制及性能特征。为应对这一问题,采用了统一的抽象层来实现一致的错误处理,为每个服务配置了断路器与备用方案,为所有依赖项提供了健康状态监控功能,并设置了分级降级机制,从而确保系统在部分组件出现故障时仍能正常运行。

    成果与后续计划

    采用托管型人工智能服务取得了显著成效。与定制开发预计需要的12个月相比,实际开发时间仅用了4个月;搜索结果的用户满意度提升了40%,而手动标记和分类的工作量则减少了80%。

    仍有若干发展方向:基于用户行为的个性化定制、交互式结果优化、结合文本与图像的查询处理、能够从点击行为中学习的反馈机制,以及为特定行业微调嵌入模型。