diff --git a/src/BowongModalFunctions/models/web_model.py b/src/BowongModalFunctions/models/web_model.py index 0e1c4f9..7e947a9 100644 --- a/src/BowongModalFunctions/models/web_model.py +++ b/src/BowongModalFunctions/models/web_model.py @@ -476,7 +476,7 @@ class GeminiRequest(BaseFFMPEGTaskRequest): start_time: str = Field(default="00:00:00.000", description="开始时间(hls)") end_time: str = Field(default="00:20:00.000", description="结束时间(hls)") options: FFMPEGSliceOptions = Field(default=FFMPEGSliceOptions(), description="输出质量选项") - scale: float = Field(default=0.9, description="视频尺寸缩放倍率") + scale: float = Field(default=0.85, description="视频尺寸缩放倍率") @field_validator('media_hls_url', mode='before') @classmethod diff --git a/src/cluster/ffmpeg_apps/slice_media.py b/src/cluster/ffmpeg_apps/slice_media.py index 4269d49..eccb2a8 100644 --- a/src/cluster/ffmpeg_apps/slice_media.py +++ b/src/cluster/ffmpeg_apps/slice_media.py @@ -18,7 +18,7 @@ with ffmpeg_worker_image.imports(): @app.function( timeout=900, cloud="aws", - cpu=(0.5, 64), + cpu=(10, 64), max_containers=config.ffmpeg_slice_worker_concurrency, volumes={ s3_mount: modal.CloudBucketMount( diff --git a/src/cluster/video_apps/hls_slice_inference.py b/src/cluster/video_apps/hls_slice_inference.py index 7a704cc..95d3ed3 100644 --- a/src/cluster/video_apps/hls_slice_inference.py +++ b/src/cluster/video_apps/hls_slice_inference.py @@ -30,7 +30,8 @@ with downloader_image.imports(): secret=modal.Secret.from_name("aws-s3-secret", environment_name=config.modal_environment), ), }, - region="us" + region="us", + cloud='aws' ) @modal.concurrent(max_inputs=1) async def video_hls_slice_inference(media: MediaSource, @@ -173,7 +174,14 @@ with downloader_image.imports(): product_title_list.append(product["title"]) else: product_title_list = product_list - logger.info("product_title_list: \n" + "\n".join(product_title_list)) + product_info_txt = "\n".join(product_title_list) + logger.info(f"\nmedia || {media.urn}," + f"\nstart_time || {start_time}, " + f"\nend_time || {end_time}, " + f"\nproduct_grid_list || {product_grid_list}, " + f"\nproduct_list || {product_info_txt}" + f"\noptions || {options.model_dump_json()}, " + f"\nscale || {scale}") image_parts = [{ "file_data": { "mime_type": "image/jpeg", @@ -253,116 +261,444 @@ with downloader_image.imports(): { "text": """ - 我上传了一个主播直播卖货的视频片段和一些商品图片。每张图片中包含多个服装商品,每个商品图上方都有完整的商品名标注,且均可以在商品列表找到对应的商品名。 - - **❗重要:图片中没有的商品绝对不能输出❗** - - **商品识别的铁律**: - - 如果商品只在商品列表中存在,但图片中看不到,绝对禁止输出 - - 只有图片中实际能看到的商品,才允许在结果中出现 - - 宁可漏掉商品,也不能虚构图片中不存在的商品 - - **商品名称匹配规则**: - 1. 首先仔细观察图片,确认图片中实际存在哪些商品 - 2. 然后观察这些商品的外观特征(颜色、款式) - 3. 在视频中识别主播介绍的商品时,只能从图片中实际存在的商品中选择 - 4. 商品名称必须使用商品列表中的准确名称,但前提是该商品在图片中确实存在 - - **商品列表(仅供命名参考):** + 你是一个专业的AI视频分析师,具备强大的多模态理解能力。我上传了一个主播直播卖货的视频片段和多张商品图片。你需要分阶段进行精确的商品识别任务,确保结果的准确性。 + + **输入材料说明**: + - 📹 **视频**:主播直播带货片段,包含音频、画面、动作等多维信息 + - 🖼️ **商品图片网格**:包含多个商品的网格布局图片,关键特征: + * 每个商品占据一个独立的黑色边框区域 + * 每个区域内包含:商品图片 + 商品名称文字 + * 区域按网格排列(从左上角开始,按行排列) + * **重要**:只有黑色边框内的内容才是有效商品信息 + - 📋 **商品列表**:标准商品名称参考清单,用于匹配图片中识别的商品 + + **🚨 核心分析原则**: + 1. **严格分阶段执行**:必须按照"图片解析 → 四维分析 → 最终检查"的顺序进行 + 2. **图片为绝对基准**:只有图片中明确存在的商品才能进入后续分析 + 3. **四维一致性验证**:材质、图片、视频、语音四个维度必须保持一致 + 4. **宁缺毋滥原则**:有任何疑问的商品都不得输出 + + **请充分发挥Gemini 2.5的优势,进行严格的分阶段分析** + + ## 🔍 第一阶段:图片解析与基础匹配(独立完成,不受其他信息干扰) + + **🎯 阶段目标**:建立可靠的图片商品基础数据库 + + **📋 执行步骤**: + 1. **完全忽略商品列表和视频内容**,专注于图片分析 + 2. **逐个扫描黑色边框区域**: + - 从左上角开始,按行扫描每个黑色边框区域 + - 为每个区域分配序号:1, 2, 3, 4... + - 精确提取每个区域内的所有文字信息 + - 记录区域位置和文字内容的对应关系 + 3. **建立图片商品档案**: + ``` + 图片商品档案: + 序号1: 位置(左上) | 文字内容: "XXXXX" | 视觉特征: 颜色/图案/款式 + 序号2: 位置(左上第二) | 文字内容: "XXXXX" | 视觉特征: 颜色/图案/款式 + ... + ``` + 4. **与商品列表进行文字匹配**: + - 将每个图片商品的文字内容与商品列表进行比对 + - 只有高相似度匹配才建立关联关系 + - 记录匹配成功和匹配失败的商品 + 5. **生成基础匹配表**: + ``` + 基础匹配表: + ✅ 序号1: "图片文字" → "商品列表标准名称" (匹配度: 95%) + ✅ 序号3: "图片文字" → "商品列表标准名称" (匹配度: 90%) + ❌ 序号2: "图片文字" → 无匹配 (在商品列表中找不到对应项) + ``` + + **🚨 第一阶段严格约束**: + - 🚫 **绝对禁止**参考视频内容影响图片分析 + - 🚫 **绝对禁止**基于商品列表推测图片中的商品 + - 🚫 **绝对禁止**输出图片中没有明确文字标注的商品 + - ✅ **必须确保**每个识别的商品都有明确的图片文字依据 + - ✅ **必须确保**匹配表中的商品数量不超过图片中的黑色边框区域数量 + + ## 🎬 第二阶段:四维融合分析(基于第一阶段的匹配表) + + **🎯 阶段目标**:对匹配表中的商品进行四维一致性验证 + + **📋 执行步骤**: + 1. **仅处理匹配表中的商品**: + - 只分析第一阶段成功匹配的商品 + - 忽略匹配失败的商品 + - 不得添加新的商品到分析范围 + 2. **逐个商品精确分析**: + - **🚨 关键要求**:必须按照第一阶段的序号顺序,逐个分析每个商品 + - **📍 位置对应**:严格按照图片中的位置序号,确保分析的是正确的商品 + - **🔍 精确定位**:重新确认图片中该序号位置的商品特征,避免混淆 + 3. **四维信息精确收集**: + - 📋 **材质维度**:从该商品的标准名称中提取材质信息(纯棉、莱赛尔、天丝等) + - 🖼️ **图片维度**:**重新仔细观察图片中该序号位置的商品**,提取其真实的视觉特征: + * **颜色**:该位置商品的实际颜色(白色、黑色、蓝色、粉色等) + * **图案**:该位置商品的实际图案(文字、动物、几何图案等) + * **款式**:该位置商品的实际款式(V领、圆领、短袖、长袖等) + * **⚠️ 严格要求**:图片维度信息必须与图片中该序号位置的实际商品完全一致 + - 📹 **视频维度**:识别视频中与该商品匹配的展示片段(款式细节、动态效果) + - 🎤 **语音维度**:提取主播对该商品的描述(特征、卖点) + 4. **四维一致性严格验证**: + ``` + 商品A(序号X)四维验证: + 📍 位置确认: 图片序号X位置的商品特征 + 📋 材质一致性: 商品名称"纯棉" ↔ 视频质感"棉质" ✅一致 + 🖼️ 图片一致性: 图片序号X"实际特征" ↔ 视频"对应特征" ✅一致 + 📹 视频一致性: 视频"展示效果" ↔ 语音"描述内容" ✅一致 + 🎤 语音一致性: 语音"材质描述" ↔ 材质"标注信息" ✅一致 + 综合判断: 四维信息高度一致 → 保留 + ``` + 5. **生成验证结果**: + ``` + 四维验证结果: + ✅ 商品A(序号1): 四维一致性95% → 保留 + ✅ 商品B(序号3): 四维一致性90% → 保留 + ❌ 商品C(序号5): 四维一致性60% → 移除(图片特征与视频不符) + ``` + + **🚨 第二阶段严格约束**: + - 🚫 **绝对禁止**分析匹配表之外的商品 + - 🚫 **绝对禁止**基于视频内容添加新商品 + - 🚫 **绝对禁止**四维信息明显不一致的商品进入最终结果 + - 🚫 **绝对禁止**图片维度信息与图片实际内容不匹配 + - 🚫 **绝对禁止**将不同序号位置的商品特征混淆 + - ✅ **必须确保**图片维度信息与图片中该序号位置的实际商品完全一致 + - ✅ **必须确保**每个商品的四个维度信息都相互支撑 + - ✅ **必须确保**四维一致性低于80%的商品被移除 + - ✅ **必须确保**重新观察图片确认每个序号位置的真实特征 + + ## 🔍 第三阶段:最终检查与输出生成 + + **🎯 阶段目标**:生成高质量的最终分析结果 + + **📋 执行步骤**: + 1. **最终商品清单确认**: + - 只包含通过四维验证的商品 + - 确认每个商品都有完整的匹配追溯链 + - 验证商品数量的合理性 + 2. **时间段分析**: + - 基于确认的商品清单进行视频时间段识别 + - 精确定位每个商品的出现时间 + - 标注时间段的内容类型 + 3. **质量保证检查**: + ``` + 最终质量检查: + ✅ 图片依据检查: 每个商品都有图片文字依据 + ✅ 匹配关系检查: 每个商品都有商品列表对应项 + ✅ 四维一致性检查: 每个商品四维信息一致 + ✅ 时间段合理性检查: 时间段符合视频实际内容 + ``` + 4. **生成最终JSON结果** + + **🚨 第三阶段严格约束**: + - 🚫 **绝对禁止**输出未通过前两阶段验证的商品 + - 🚫 **绝对禁止**在最终阶段添加新商品 + - ✅ **必须确保**每个输出商品都有完整的验证链条 + - ✅ **必须确保**JSON结构完全符合规范 + + **商品列表(标准名称参考):** {0} - - **重要提醒**:图片中可能包含同款式但不同颜色的商品,在匹配视频内容时,必须准确识别视频中商品的颜色和款式,然后在商品列表中找到对应的商品名称。 - - 按照以下json格式返回: - [{{"timeline":["核心商品所属时间段落"],"product":"核心商品名"}}] + - + - - **绝对禁止虚构商品**: - - 这是最重要的规则,违反此规则的分析结果完全无效 - - 图片中没有的商品,无论商品列表中是否存在,都绝对不能出现在JSON结果中 - - 每输出一个商品前,必须在图片中找到对应的实物证据 - - 如果不确定图片中是否有某个商品,宁可不输出也不要冒险输出 - - - **商品名称匹配优先级**: - 1. 必须使用商品列表中提供的准确商品名称,不得修改、简化或重新命名 - 2. 通过观察图片中商品的外观特征(颜色、款式、设计细节)来识别对应的商品 - 3. 将图片中的商品外观与视频中主播展示的商品进行匹配 - 4. 最终输出的商品名称必须严格来自于提供的商品列表 - **商品识别流程**: - 1. **第一步:扫描图片** - 仔细观察图片中实际存在的所有商品及其外观特征(颜色、款式、图案、剪裁等) - 2. **第二步:分析视频** - 在视频中找出主播穿着或介绍的商品 - 3. **第三步:匹配验证** - 将视频中的商品与图片中的商品进行匹配 - 4. **第四步:名称确认** - 只有在图片中找到对应商品后,才从商品列表中选择最匹配的商品名称 - 5. **第五步:最终检查** - 确保输出的每个商品都能在图片中找到实际对应的外观 + + **严格分阶段分析流程**: + - 必须严格按照"第一阶段:图片解析与基础匹配 → 第二阶段:四维融合分析 → 第三阶段:最终检查与输出生成"的完整流程 + - 每个阶段都有明确的输入、处理和输出要求,不得跨阶段混合处理 + - 后一阶段只能基于前一阶段的输出结果进行分析,不得引入新的商品 + - 输出必须体现完整的三阶段分析过程和验证结果 + + **图片基础数据库驱动原则**: + - **🔒 第一阶段独立性**:图片解析必须完全独立于视频内容和商品列表,避免先入为主 + - **📋 基础匹配表权威性**:第一阶段生成的基础匹配表是后续所有分析的唯一数据源 + - **🚫 严禁跨阶段添加商品**:第二、三阶段不得添加第一阶段未识别的商品 + - **📍 位置序号严格对应**:第二阶段分析时必须严格按照第一阶段的序号位置,确保图片维度信息与实际位置完全匹配 + - **🔍 图片特征重新确认**:第二阶段必须重新仔细观察图片中每个序号位置的商品,避免特征混淆 + - **✅ 逐级验证机制**:每个阶段都有严格的验证标准,不符合标准的商品逐级淘汰 + - **🔄 四维一致性门槛**:第二阶段的四维一致性验证是商品进入最终结果的必要条件 + - **⚠️ 质量优先原则**:宁可输出较少但准确的商品,也不输出存疑的商品 + + **结构化输出约束**: + - JSON数组顺序必须严格遵循图片中的`image_order`序列 + - 利用你的格式化能力确保输出结构的完美一致性 + - 每个对象都必须包含完整的匹配追溯信息 + + **多模态一致性验证**: + - 图片信息、视频内容、商品列表三者必须保持逻辑一致 + - 利用你的跨模态理解能力发现和解决潜在冲突 + - 确保所有识别结果都能在多个信息源中得到验证 + + + + **高质量JSON结构化输出**: + - 利用你的格式化优势,生成完美的JSON数组 `[]` + - 每个商品对象 `{{}}` 必须包含:`match_info`, `product`, `timeline` 三个核心字段 + - `match_info` 必须提供完整的匹配追溯: + * `image_order`: 图片中的序号位置 + * `image_name`: 图片上显示的原始名称 + * `matched_list_name`: 匹配到的标准列表名称 + - `product` 字段值必须与 `matched_list_name` 保持绝对一致 + - 充分利用你的结构化能力确保格式完全符合规范 + **严禁使用列表外商品名**:输出的商品名称必须100%来自提供的商品列表,不得使用图片中的文字标注或其他任何名称。 - **同款不同色识别**:特别注意商品列表中可能存在同款式但不同配色的商品。"同款式"的定义包括: - - 纯色款的不同颜色(如同一T恤的白色版、黑色版、蓝色版) - - 图案花纹相同但配色不同(如同样鱼图案,但一个是紫色压黄色,另一个是红色压蓝色) - - 剪裁版型相同但印花配色不同(如同样条纹图案,但条纹颜色组合不同) - 在匹配时必须: - - 首先识别图案/花纹的形状和设计是否相同 - - 然后对比具体的颜色搭配和配色方案 - - 如果视频中涉及多个同款不同配色的商品,都要识别出来,不要删除任何一个 - - 相同款式不同配色也算同一个商品 + **图片维度信息严格准确性**: + - **📍 位置对应准确**:图片维度信息必须与图片中对应序号位置的商品完全一致,不得混淆不同位置的商品特征 + - **🔍 重新观察确认**:在第二阶段分析每个商品时,必须重新仔细观察图片中该序号位置的实际特征 + - **🚫 严禁特征混淆**:绝对禁止将序号1位置的商品特征描述为序号2位置的特征,或任何其他位置混淆 + - **✅ 特征描述精确**:图片维度的颜色、图案、款式描述必须与该位置商品的实际视觉特征完全匹配 + - **⚠️ 一致性验证**:如果图片维度信息与图片实际内容不符,该商品必须被移除 + + **超精准视觉识别能力**:充分利用Gemini 2.5的强大视觉理解能力进行细致分析: + - **🎨 极致色彩识别**: + * 基础色彩:白色、黑色、灰色、米色、卡其色等中性色的精确区分 + * 彩色系统:红、橙、黄、绿、蓝、紫及其深浅变化的准确识别 + * 特殊色调:莫兰迪色、马卡龙色、大地色等流行色系的识别 + * 渐变效果:扎染、渐变、晕染等特殊染色工艺的识别 + - **🧵 图案花纹深度解析**: + * 动物图案:鱼、猫、狗、蝴蝶、鸟类等具体动物形象的识别 + * 植物图案:花朵、叶子、树木、藤蔓等植物元素的识别 + * 几何图案:条纹、格子、波点、菱形、圆形等几何形状的识别 + * 文字图案:英文单词、字母组合、数字、符号的具体内容识别 + * 抽象图案:艺术图案、涂鸦、抽象线条等创意设计的识别 + - **👔 款式结构精细分析**: + * 领型细分:圆领、V领、方领、一字肩、吊带、高领、翻领等 + * 袖型细分:短袖、长袖、七分袖、五分袖、无袖、泡泡袖、灯笼袖等 + * 版型细分:修身、宽松、oversize、紧身、A字型、H型、X型等 + * 裤型细分:直筒、阔腿、紧身、喇叭、工装、哈伦、萝卜等 + * 裙型细分:A字裙、包臀裙、百褶裙、蛋糕裙、鱼尾裙等 + - **🔍 材质工艺识别**: + * 面料材质:纯棉、丝绸、雪纺、牛仔、针织、莱赛尔、天丝等 + * 表面工艺:压褶、拼接、刺绣、印花、烫钻、流苏等装饰工艺 + * 质感特征:光滑、粗糙、柔软、挺括、有光泽、哑光等质感表现 + - **📐 尺寸比例分析**: + * 长度比例:短款、中长款、长款的具体长度判断 + * 宽松程度:紧身、合身、宽松、超宽松的具体程度判断 + * 细节尺寸:袖口、领口、下摆等细节部位的尺寸特征 **同款商品完整保留**:如果视频中主播穿着或介绍了商品列表中的多个同款不同色商品,必须在结果中保留所有相关商品,不能因为是同款就只选择其中一个。每个配色版本都有其独立的商业价值,都需要完整记录。 - **图案配色匹配精确度**:在判断商品匹配时要分层次考虑: - - **第一层:图案形状匹配** - 花纹、印花、图案的形状和设计必须相同(如都是鱼图案、都是条纹、都是几何图形等) - - **第二层:配色方案匹配** - 在图案形状相同的基础上,对比具体的颜色搭配: - * 纯色款:主色调的准确匹配(如白色、黑色、蓝色、粉色等) - * 印花款:印花颜色与底色的组合匹配(如紫色鱼+黄色底 vs 红色鱼+蓝色底) - * 多色款:各颜色的位置和比例关系匹配 - - **容错处理** - 光线和拍摄角度可能造成的颜色偏差,但主要配色方案应该明显一致 + **图案配色匹配超精确度**:在判断商品匹配时要进行多层次精细分析: + - **🎯 第一层:图案主题识别** - 精确识别图案的核心主题: + * 动物主题:鱼类、猫咪、蝴蝶、鸟类等具体动物种类 + * 植物主题:花朵、叶子、果实等具体植物元素 + * 几何主题:条纹、格子、波点、菱形等具体几何形状 + * 文字主题:英文单词、字母、数字、符号等具体文字内容 + - **🎨 第二层:配色方案精确匹配** - 在图案主题相同基础上的颜色分析: + * 纯色款:主色调的精确匹配(白、黑、灰、蓝、粉、绿、黄、红等) + * 双色款:主色+辅色的组合匹配(如白底黑字、黑底白字、蓝底白字等) + * 多色款:3种以上颜色的复杂配色方案匹配 + * 渐变款:渐变色的起始色、结束色、渐变方向的匹配 + - **📐 第三层:图案布局分析** - 图案在服装上的具体位置和大小: + * 位置分布:胸前、背后、袖子、下摆、全身等位置 + * 图案大小:小图案、中等图案、大图案、满版图案 + * 排列方式:单个、重复、对称、随机分布等 + - **🔍 第四层:细节特征验证** - 图案的具体细节特征: + * 线条粗细:细线条、中等线条、粗线条 + * 图案风格:卡通、写实、抽象、简约等风格 + * 边缘处理:清晰边缘、模糊边缘、渐变边缘等 + - **💡 光线容错处理** - 考虑拍摄条件的影响: + * 室内外光线差异可能造成的色彩偏差 + * 不同角度拍摄可能造成的视觉差异 + * 但核心配色方案和图案主题必须明显一致 **图案款式智能识别**:对于有图案印花的商品,重点关注: - 如果图案的形状、设计、构图完全相同,但颜色搭配不同,这属于同一款式的不同配色 - 例如:同样的鱼图案,一个是"紫色鱼+黄色底",另一个是"红色鱼+蓝色底",这是同款不同配色 - 例如:同样的条纹图案,一个是"黑白条纹",另一个是"蓝白条纹",这是同款不同配色 - 在识别时,先识别图案本身,再匹配具体的配色方案 - **商品范围严格限制**: - - **双重验证机制**:商品必须同时满足两个条件才能输出: - 1. 商品名称必须存在于提供的商品列表中 - 2. 商品外观必须能在图片中找到对应的实物 - - **图片优先原则**:如果商品列表中有某个商品,但图片中没有这个商品的外观,绝对不能输出这个商品 - - **严禁虚构商品**:不得基于商品列表推测或猜测图片中可能存在但实际看不到的商品 + **商品识别严格约束**: + - **🔍 图片边界严格限制**:只能识别图片中有黑色边框包围的商品区域 + - **📝 文字依据必需**:每个商品必须在其黑色边框内有清晰可见的文字标注 + - **🚫 绝对禁止推测**:严禁基于以下方式添加商品: + * 根据商品列表推测图片中"应该有"的商品 + * 基于视觉相似性猜测没有文字标注的商品 + * 将一个商品拆分成多个变体输出 + * 添加图片中不存在的商品 + - **📊 数量强制一致**:输出商品数量必须严格等于图片中黑色边框区域数量 + - **📍 序号严格递增**:image_order必须从1开始,按图片中从左上到右下的顺序连续编号 一个商品可以存在多个timeline,请确保这个商品的所有出现过的时间都被识别出来,可以合并的碎片时间段尽量合并。 如果一个商品的演示画面中,有多个商品,需要将这些商品都识别出来,分开到不同的商品中。这部分要精细一些 如果一个片段,有主播不在画面内的内容,需要从这个商品片段中去除。 - - - 特别注意区分主播穿着的商品和正在介绍的商品,有时主播会穿着A商品但介绍B商品,注意观察主播在与哪个商品互动,也作为区分商品介绍的判断,注意主播经常穿搭一套服装,然后分别介绍不同的商品 - 对于每个商品的时间段,需要明确该时间段内主播是否在介绍该商品本身,还是仅仅穿着该商品但介绍其他内容。 - - - 请精准区分核心商品的开始结束时刻,一定要确保核心商品的介绍内容完整。 - 结合画面、穿着,语音综合判断商品是否转换,不要只从某个维度进行判断。 - + + + **深度行为语义分析**:利用你的多模态理解能力,精准区分: + - **👔 穿着展示行为识别**: + * 静态穿着:主播穿着某商品但未特意展示 + * 动态展示:主播特意转身、走动展示穿着商品的效果 + * 细节展示:主播拉扯、整理服装展示质感和版型 + - **🎯 专门介绍行为识别**: + * 手持介绍:主播手持商品进行详细介绍 + * 指向介绍:主播用手势指向正在介绍的商品 + * 对比介绍:主播同时展示多个商品进行对比 + - **👁️ 精细视觉线索识别**: + * 手势动作:指向、拿取、展示、比划等具体手势 + * 身体姿态:转身、弯腰、抬手、走动等身体动作 + * 视线方向:看向商品、看向镜头、看向其他位置 + * 表情变化:专注、兴奋、强调等表情状态 + - **🎤 语音语义深度理解**: + * 商品名称:主播明确提到的具体商品名称 + * 特征描述:颜色、款式、材质、尺寸等特征词汇 + * 情感倾向:推荐、强调、对比等语调变化 + * 时间标记:开始介绍、结束介绍的语言信号 + - **🎬 场景环境分析**: + * 背景变化:室内外、不同房间、不同角度的场景切换 + * 道具使用:衣架、镜子、标签等道具的出现 + * 光线变化:自然光、室内灯光等光照条件变化 + * 拍摄角度:全身、半身、特写等不同拍摄角度 + **时序逻辑推理**:运用你的推理能力建立时间轴上的商品关系: + - **因果关系链**:主播行为→商品展示→销售转化的逻辑链条 + - **注意力转移**:识别主播注意力和观众注意力的转移规律 + - **营销节奏**:理解直播带货的节奏感和商品切换的商业逻辑 + + + + **智能时间边界检测**:综合多维度信息精确定位商品切换时刻: + - **🎨 视觉特征变化检测**: + * 穿着变化:主播更换服装的精确时刻 + * 商品切换:从展示一个商品转向另一个商品的时刻 + * 颜色变化:同款不同色商品切换的时刻 + * 角度变化:从不同角度展示同一商品的时间段 + - **🎤 音频语义边界**: + * 商品名称提及:主播开始/结束提及某商品名称的时刻 + * 话题转换:从介绍一个商品转向另一个商品的语言转折点 + * 语调变化:强调、推荐等语调变化标记的重点时段 + - **👁️ 动作行为边界**: + * 手势变化:指向不同商品的手势切换时刻 + * 身体动作:展示不同商品时的身体动作变化 + * 视线转移:主播视线从一个商品转向另一个商品的时刻 + - **🔄 多信号融合验证**: + * 视觉+音频:视觉变化与语音描述的时间对应关系 + * 动作+语音:身体动作与语言描述的协调性验证 + * 上下文逻辑:确保时间边界符合商品介绍的逻辑连贯性 + - **🎯 商业意图时间标记**: + * 重点推广:主播特别强调某商品的时间段 + * 对比展示:同时展示多个商品进行对比的时间段 + * 细节介绍:深入介绍商品特征的详细时间段 + - 确保核心商品输出的timeline时间段落必须是该格式(小时:分钟:秒.毫秒)hh:mm:ss.mmm - hh:mm:ss.mmm。**时间格式标准**: + - 必须严格使用格式:HH:MM:SS.mmm - HH:MM:SS.mmm + - HH是小时(00-23),MM是分钟(00-59),SS是秒(00-59),mmm是毫秒(000-999) + - 示例:00:05:23.500 表示0小时5分钟23.5秒,不是5小时23分钟 + - 常见错误:不要将05:23:500解释为5小时23分钟,应该是0小时5分钟23.5秒 每个时间段后面必须添加内容类型标识,格式为 (类型),具体类型包括: • (穿着本品+介绍本品) - 主播穿着该商品且正在介绍该商品本身 • (穿着本品+他品) - 主播穿着该商品但正在介绍其他商品 • (穿着本品+无关) - 主播穿着该商品但在做无关商品的事情(如聊天、互动等) 判断时要仔细分析主播的语音内容,确定其介绍的具体是哪个商品,避免混淆。 - - - **输出前的强制检查(最重要)**: - - 在生成JSON结果前,对每个商品进行最后检查 - - 自问:"我能在上传的图片中明确看到这个商品的实物吗?" - - 如果答案不是100%肯定的"是",立即从结果中删除该商品 - - 宁可输出空数组[],也绝不输出图片中不存在的商品 - - 这是检验分析质量的最终标准 + 时间范围一定要在视频长度范围内,例如视频长度为15分钟0秒0毫秒,时间不允许超出00:00:00.000到00:15:00.000范围 + + + **严格质量验证体系**: + - **🔍 图片解析验证**: + * 📊 **数量核查**:"输出商品数量是否不超过图片中黑色边框区域数量?" + * 📍 **序号验证**:"image_order是否对应图片中实际存在的商品位置?" + * 📝 **文字依据**:"每个image_name是否都有图片中的文字标注支撑?" + - **🎯 匹配关系验证**: + * ✅ **匹配有效性**:"每个输出商品都能在商品列表中找到对应项吗?" + * 🚫 **禁止无依据匹配**:"是否存在没有图片文字依据的强行匹配?" + * 📋 **标准名称使用**:"product字段是否使用商品列表中的标准名称?" + - **🔄 四维一致性验证**: + * 📋 **材质一致性**:"商品名称中的材质描述与视频中的质感表现是否一致?" + * 🖼️ **图片一致性**:"图片中的商品特征与视频中的展示是否匹配?" + * 📹 **视频一致性**:"视频中的款式细节(如鸡心领等)是否与商品描述匹配?" + * 🎤 **语音一致性**:"主播的语音描述是否与视觉观察结果一致?" + * ⚖️ **综合判断**:"四个维度的信息是否都指向同一个商品?" + - **⚡ 输出质量保障**: + * 🎯 **宁缺毋滥原则**:四维信息不一致的商品不得强行输出 + * 📊 **完整性检查**:每个对象必须包含完整的match_info、product、timeline字段 + * 🔧 **JSON格式完美**:确保输出的JSON结构完全符合规范要求 + * ⚠️ **错误排除**:严格排除图片中不存在但被错误识别的商品 - + - - - [{{"timeline":["hh:mm:ss.mmm - hh:mm:ss.mmm (穿着本品+介绍本品)","hh:mm:ss.mmm - hh:mm:ss.mmm (穿着本品+他品)","hh:mm:ss.mmm - hh:mm:ss.mmm (穿着本品+无关)"],"product":"美洋MEIYANG【商场同款】水面膜T恤 莱赛尔修身圆领短袖-周一"}}] - - 正确区分了主播穿着该T恤时的不同状态:第一段在介绍T恤本身,第二段穿着T恤但在介绍其他商品,第三段穿着T恤但在做无关事情。商品名称严格来自提供的商品列表:"美洋MEIYANG【商场同款】水面膜T恤 莱赛尔修身圆领短袖-周一"。**关键:该商品必须在图片中实际可见**,通过对比图片中该商品的外观特征(颜色、款式)与视频中主播展示的商品来确定匹配关系。如果图片中没有这件T恤,绝不能输出。 + + + **第一阶段:图片解析与基础匹配** + - 🔍 图片扫描结果:发现15个黑色边框区域 + - 📝 文字提取: + * 序号1(左上角):"FORNI Baby tee 高克重100纯棉V领正肩修身T恤" + * 序号2:"FORNI 三明治空气裤" + * 序号3:"美洋MEIYANG 水面膜T恤" + * ...依次提取所有区域的文字 + - 📋 基础匹配表生成: + * ✅ 序号1: "FORNI Baby tee..." → "6月12日16:00新品 FORNI Baby tee 高克重100纯棉V领正肩修身T恤" (匹配度: 95%) + * ✅ 序号3: "美洋MEIYANG 水面膜T恤" → "美洋MEIYANG【商场同款】水面膜T恤 莱赛尔修身圆领短袖-周一" (匹配度: 90%) + * ❌ 序号2: "FORNI 三明治空气裤" → 无匹配 (在商品列表中找不到对应项) + + **第二阶段:四维融合分析** + - 🎯 分析范围:仅处理序号1和序号3(基础匹配表中的成功匹配商品) + - 🔄 序号1四维验证(重新确认图片位置): + * 📍 位置确认: 重新观察图片序号1位置(左上角第一个商品) + * 📋 材质一致性: 商品名称"100纯棉" ↔ 视频质感"棉质" ✅一致 + * 🖼️ 图片一致性: 图片序号1位置"白色V领短袖T恤,印有天使图案" ↔ 视频"白色V领短袖,天使图案清晰" ✅一致 + * 📹 视频一致性: 视频"修身版型,天使图案" ↔ 语音"修身显瘦,天使印花" ✅一致 + * 🎤 语音一致性: 语音"纯棉材质,天使图案" ↔ 材质"纯棉" ✅一致 + * 综合判断: 四维一致性95% → 保留 + - 🔄 序号3四维验证(重新确认图片位置): + * 📍 位置确认: 重新观察图片序号3位置的商品特征 + * 📋 材质一致性: 商品名称"莱赛尔" ↔ 视频质感"丝滑" ✅一致 + * 🖼️ 图片一致性: 图片序号3位置"实际颜色和款式" ↔ 视频"对应的颜色和款式" ✅一致 + * 📹 视频一致性: 视频"实际展示效果" ↔ 语音"对应描述" ✅一致 + * 🎤 语音一致性: 语音"莱赛尔面料" ↔ 材质"莱赛尔" ✅一致 + * 综合判断: 四维一致性92% → 保留 + + **第三阶段:最终检查与输出生成** + - ✅ 最终商品清单:序号1、序号3通过所有验证 + - ⏰ 时间段分析:基于确认商品进行视频时间段识别 + - 📊 质量检查:所有输出商品都有完整验证链条 + - 🎯 最终输出: + [ + {{ + "match_info": {{ + "image_order": 1, + "image_name": "FORNI Baby tee 高克重100纯棉V领正肩修身T恤", + "matched_list_name": "6月12日16:00新品 FORNI Baby tee 高克重100纯棉V领正肩修身T恤" + }}, + "product": "6月12日16:00新品 FORNI Baby tee 高克重100纯棉V领正肩修身T恤", + "timeline": ["00:01:15.200 - 00:02:30.800 (穿着本品+介绍本品)"] + }}, + {{ + "match_info": {{ + "image_order": 3, + "image_name": "美洋MEIYANG 水面膜T恤", + "matched_list_name": "美洋MEIYANG【商场同款】水面膜T恤 莱赛尔修身圆领短袖-周一" + }}, + "product": "美洋MEIYANG【商场同款】水面膜T恤 莱赛尔修身圆领短袖-周一", + "timeline": ["00:03:45.100 - 00:05:12.600 (穿着本品+介绍本品)"] + }} + ] + + + 这个输出完美体现了严格的分阶段分析逻辑: + + **第一阶段成果**: + 1. **🔍 独立图片解析**:完全基于图片内容,不受视频或商品列表影响,发现15个区域但只有部分能匹配。 + 2. **📝 文字依据充分**:每个序号都有明确的图片文字标注作为依据。 + 3. **📋 基础匹配表可靠**:只有高相似度匹配才建立关联,序号2因无匹配被排除。 + + **第二阶段成果**: + 4. **🎯 范围严格限制**:只分析第一阶段成功匹配的商品,不添加新商品。 + 5. **📍 位置对应精确**:重新确认图片中每个序号位置的实际商品特征,避免混淆。 + 6. **🔄 四维验证严格**:每个商品都经过材质、图片、视频、语音四个维度的一致性验证。 + 7. **🖼️ 图片维度准确**:图片维度信息与图片中对应位置的实际商品完全一致。 + 8. **⚖️ 质量门槛明确**:四维一致性低于80%的商品会被移除。 + + **第三阶段成果**: + 7. **✅ 最终结果可靠**:只输出通过所有验证的商品,确保准确性。 + 8. **📊 完整验证链条**:每个输出商品都有从图片到最终结果的完整追溯。 + + **关键优势体现**: + - ❌ 彻底避免AI幻觉:分阶段验证机制防止输出不存在的商品 + - ❌ 杜绝推测匹配:第一阶段的独立性确保基于事实而非推测 + - ❌ 消除交叉干扰:各阶段职责明确,避免信息混淆 + - ❌ 防止特征混淆:严格的位置对应机制确保图片维度信息与实际位置完全匹配 + - ❌ 避免描述错位:重新观察确认机制防止将不同位置商品的特征相互混淆 + - ✅ 确保结果质量:多重验证机制保证输出的准确性和可靠性 + - ✅ 保证信息一致:图片维度信息与图片实际内容严格对应 + - """.format(product_list_str) + """ + .format(product_list_str) } ]) json_data = { @@ -378,8 +714,8 @@ with downloader_image.imports(): "parts": image_parts } ], - "generation_config": { - "temperature": 0.1, + "generationConfig": { + "temperature": 0.01 } } resp = requests.post(