合并分支
* PERF 优化prompt * PERF 优化prompt * PERF 降低scale倍率 * PERF 提升ffmpeg_slice_media预留核心数,防止资源不足超时 * PERF 部署video_hls_slice_inference到aws容器 --------- Merge request URL: https://g-ldyi2063.coding.net/p/dev/d/modalDeploy/git/merge/4808 Co-authored-by: 康宇佳
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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": """<prompt>
|
||||
<instruction>
|
||||
我上传了一个主播直播卖货的视频片段和一些商品图片。每张图片中包含多个服装商品,每个商品图上方都有完整的商品名标注,且均可以在商品列表找到对应的商品名。
|
||||
|
||||
**❗重要:图片中没有的商品绝对不能输出❗**
|
||||
|
||||
**商品识别的铁律**:
|
||||
- 如果商品只在商品列表中存在,但图片中看不到,绝对禁止输出
|
||||
- 只有图片中实际能看到的商品,才允许在结果中出现
|
||||
- 宁可漏掉商品,也不能虚构图片中不存在的商品
|
||||
|
||||
**商品名称匹配规则**:
|
||||
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":"核心商品名"}}]
|
||||
|
||||
</instruction>
|
||||
|
||||
|
||||
<rules>
|
||||
<!-- 🚨 最高优先级铁律 🚨 -->
|
||||
<rule>**绝对禁止虚构商品**:
|
||||
- 这是最重要的规则,违反此规则的分析结果完全无效
|
||||
- 图片中没有的商品,无论商品列表中是否存在,都绝对不能出现在JSON结果中
|
||||
- 每输出一个商品前,必须在图片中找到对应的实物证据
|
||||
- 如果不确定图片中是否有某个商品,宁可不输出也不要冒险输出</rule>
|
||||
|
||||
<!-- 商品名称识别规则 -->
|
||||
<rule>**商品名称匹配优先级**:
|
||||
1. 必须使用商品列表中提供的准确商品名称,不得修改、简化或重新命名
|
||||
2. 通过观察图片中商品的外观特征(颜色、款式、设计细节)来识别对应的商品
|
||||
3. 将图片中的商品外观与视频中主播展示的商品进行匹配
|
||||
4. 最终输出的商品名称必须严格来自于提供的商品列表</rule>
|
||||
<rule>**商品识别流程**:
|
||||
1. **第一步:扫描图片** - 仔细观察图片中实际存在的所有商品及其外观特征(颜色、款式、图案、剪裁等)
|
||||
2. **第二步:分析视频** - 在视频中找出主播穿着或介绍的商品
|
||||
3. **第三步:匹配验证** - 将视频中的商品与图片中的商品进行匹配
|
||||
4. **第四步:名称确认** - 只有在图片中找到对应商品后,才从商品列表中选择最匹配的商品名称
|
||||
5. **第五步:最终检查** - 确保输出的每个商品都能在图片中找到实际对应的外观</rule>
|
||||
<!-- 🚨 核心铁律(充分利用Gemini 2.5能力)🚨 -->
|
||||
<rule>**严格分阶段分析流程**:
|
||||
- 必须严格按照"第一阶段:图片解析与基础匹配 → 第二阶段:四维融合分析 → 第三阶段:最终检查与输出生成"的完整流程
|
||||
- 每个阶段都有明确的输入、处理和输出要求,不得跨阶段混合处理
|
||||
- 后一阶段只能基于前一阶段的输出结果进行分析,不得引入新的商品
|
||||
- 输出必须体现完整的三阶段分析过程和验证结果
|
||||
</rule>
|
||||
<rule>**图片基础数据库驱动原则**:
|
||||
- **🔒 第一阶段独立性**:图片解析必须完全独立于视频内容和商品列表,避免先入为主
|
||||
- **📋 基础匹配表权威性**:第一阶段生成的基础匹配表是后续所有分析的唯一数据源
|
||||
- **🚫 严禁跨阶段添加商品**:第二、三阶段不得添加第一阶段未识别的商品
|
||||
- **📍 位置序号严格对应**:第二阶段分析时必须严格按照第一阶段的序号位置,确保图片维度信息与实际位置完全匹配
|
||||
- **🔍 图片特征重新确认**:第二阶段必须重新仔细观察图片中每个序号位置的商品,避免特征混淆
|
||||
- **✅ 逐级验证机制**:每个阶段都有严格的验证标准,不符合标准的商品逐级淘汰
|
||||
- **🔄 四维一致性门槛**:第二阶段的四维一致性验证是商品进入最终结果的必要条件
|
||||
- **⚠️ 质量优先原则**:宁可输出较少但准确的商品,也不输出存疑的商品
|
||||
</rule>
|
||||
<rule>**结构化输出约束**:
|
||||
- JSON数组顺序必须严格遵循图片中的`image_order`序列
|
||||
- 利用你的格式化能力确保输出结构的完美一致性
|
||||
- 每个对象都必须包含完整的匹配追溯信息
|
||||
</rule>
|
||||
<rule>**多模态一致性验证**:
|
||||
- 图片信息、视频内容、商品列表三者必须保持逻辑一致
|
||||
- 利用你的跨模态理解能力发现和解决潜在冲突
|
||||
- 确保所有识别结果都能在多个信息源中得到验证
|
||||
</rule>
|
||||
|
||||
<!-- 格式规则 -->
|
||||
<rule>**高质量JSON结构化输出**:
|
||||
- 利用你的格式化优势,生成完美的JSON数组 `[]`
|
||||
- 每个商品对象 `{{}}` 必须包含:`match_info`, `product`, `timeline` 三个核心字段
|
||||
- `match_info` 必须提供完整的匹配追溯:
|
||||
* `image_order`: 图片中的序号位置
|
||||
* `image_name`: 图片上显示的原始名称
|
||||
* `matched_list_name`: 匹配到的标准列表名称
|
||||
- `product` 字段值必须与 `matched_list_name` 保持绝对一致
|
||||
- 充分利用你的结构化能力确保格式完全符合规范
|
||||
</rule>
|
||||
<rule>**严禁使用列表外商品名**:输出的商品名称必须100%来自提供的商品列表,不得使用图片中的文字标注或其他任何名称。</rule>
|
||||
<rule>**同款不同色识别**:特别注意商品列表中可能存在同款式但不同配色的商品。"同款式"的定义包括:
|
||||
- 纯色款的不同颜色(如同一T恤的白色版、黑色版、蓝色版)
|
||||
- 图案花纹相同但配色不同(如同样鱼图案,但一个是紫色压黄色,另一个是红色压蓝色)
|
||||
- 剪裁版型相同但印花配色不同(如同样条纹图案,但条纹颜色组合不同)
|
||||
在匹配时必须:
|
||||
- 首先识别图案/花纹的形状和设计是否相同
|
||||
- 然后对比具体的颜色搭配和配色方案
|
||||
- 如果视频中涉及多个同款不同配色的商品,都要识别出来,不要删除任何一个
|
||||
- 相同款式不同配色也算同一个商品</rule>
|
||||
<rule>**图片维度信息严格准确性**:
|
||||
- **📍 位置对应准确**:图片维度信息必须与图片中对应序号位置的商品完全一致,不得混淆不同位置的商品特征
|
||||
- **🔍 重新观察确认**:在第二阶段分析每个商品时,必须重新仔细观察图片中该序号位置的实际特征
|
||||
- **🚫 严禁特征混淆**:绝对禁止将序号1位置的商品特征描述为序号2位置的特征,或任何其他位置混淆
|
||||
- **✅ 特征描述精确**:图片维度的颜色、图案、款式描述必须与该位置商品的实际视觉特征完全匹配
|
||||
- **⚠️ 一致性验证**:如果图片维度信息与图片实际内容不符,该商品必须被移除
|
||||
</rule>
|
||||
<rule>**超精准视觉识别能力**:充分利用Gemini 2.5的强大视觉理解能力进行细致分析:
|
||||
- **🎨 极致色彩识别**:
|
||||
* 基础色彩:白色、黑色、灰色、米色、卡其色等中性色的精确区分
|
||||
* 彩色系统:红、橙、黄、绿、蓝、紫及其深浅变化的准确识别
|
||||
* 特殊色调:莫兰迪色、马卡龙色、大地色等流行色系的识别
|
||||
* 渐变效果:扎染、渐变、晕染等特殊染色工艺的识别
|
||||
- **🧵 图案花纹深度解析**:
|
||||
* 动物图案:鱼、猫、狗、蝴蝶、鸟类等具体动物形象的识别
|
||||
* 植物图案:花朵、叶子、树木、藤蔓等植物元素的识别
|
||||
* 几何图案:条纹、格子、波点、菱形、圆形等几何形状的识别
|
||||
* 文字图案:英文单词、字母组合、数字、符号的具体内容识别
|
||||
* 抽象图案:艺术图案、涂鸦、抽象线条等创意设计的识别
|
||||
- **👔 款式结构精细分析**:
|
||||
* 领型细分:圆领、V领、方领、一字肩、吊带、高领、翻领等
|
||||
* 袖型细分:短袖、长袖、七分袖、五分袖、无袖、泡泡袖、灯笼袖等
|
||||
* 版型细分:修身、宽松、oversize、紧身、A字型、H型、X型等
|
||||
* 裤型细分:直筒、阔腿、紧身、喇叭、工装、哈伦、萝卜等
|
||||
* 裙型细分:A字裙、包臀裙、百褶裙、蛋糕裙、鱼尾裙等
|
||||
- **🔍 材质工艺识别**:
|
||||
* 面料材质:纯棉、丝绸、雪纺、牛仔、针织、莱赛尔、天丝等
|
||||
* 表面工艺:压褶、拼接、刺绣、印花、烫钻、流苏等装饰工艺
|
||||
* 质感特征:光滑、粗糙、柔软、挺括、有光泽、哑光等质感表现
|
||||
- **📐 尺寸比例分析**:
|
||||
* 长度比例:短款、中长款、长款的具体长度判断
|
||||
* 宽松程度:紧身、合身、宽松、超宽松的具体程度判断
|
||||
* 细节尺寸:袖口、领口、下摆等细节部位的尺寸特征</rule>
|
||||
<rule>**同款商品完整保留**:如果视频中主播穿着或介绍了商品列表中的多个同款不同色商品,必须在结果中保留所有相关商品,不能因为是同款就只选择其中一个。每个配色版本都有其独立的商业价值,都需要完整记录。</rule>
|
||||
<rule>**图案配色匹配精确度**:在判断商品匹配时要分层次考虑:
|
||||
- **第一层:图案形状匹配** - 花纹、印花、图案的形状和设计必须相同(如都是鱼图案、都是条纹、都是几何图形等)
|
||||
- **第二层:配色方案匹配** - 在图案形状相同的基础上,对比具体的颜色搭配:
|
||||
* 纯色款:主色调的准确匹配(如白色、黑色、蓝色、粉色等)
|
||||
* 印花款:印花颜色与底色的组合匹配(如紫色鱼+黄色底 vs 红色鱼+蓝色底)
|
||||
* 多色款:各颜色的位置和比例关系匹配
|
||||
- **容错处理** - 光线和拍摄角度可能造成的颜色偏差,但主要配色方案应该明显一致</rule>
|
||||
<rule>**图案配色匹配超精确度**:在判断商品匹配时要进行多层次精细分析:
|
||||
- **🎯 第一层:图案主题识别** - 精确识别图案的核心主题:
|
||||
* 动物主题:鱼类、猫咪、蝴蝶、鸟类等具体动物种类
|
||||
* 植物主题:花朵、叶子、果实等具体植物元素
|
||||
* 几何主题:条纹、格子、波点、菱形等具体几何形状
|
||||
* 文字主题:英文单词、字母、数字、符号等具体文字内容
|
||||
- **🎨 第二层:配色方案精确匹配** - 在图案主题相同基础上的颜色分析:
|
||||
* 纯色款:主色调的精确匹配(白、黑、灰、蓝、粉、绿、黄、红等)
|
||||
* 双色款:主色+辅色的组合匹配(如白底黑字、黑底白字、蓝底白字等)
|
||||
* 多色款:3种以上颜色的复杂配色方案匹配
|
||||
* 渐变款:渐变色的起始色、结束色、渐变方向的匹配
|
||||
- **📐 第三层:图案布局分析** - 图案在服装上的具体位置和大小:
|
||||
* 位置分布:胸前、背后、袖子、下摆、全身等位置
|
||||
* 图案大小:小图案、中等图案、大图案、满版图案
|
||||
* 排列方式:单个、重复、对称、随机分布等
|
||||
- **🔍 第四层:细节特征验证** - 图案的具体细节特征:
|
||||
* 线条粗细:细线条、中等线条、粗线条
|
||||
* 图案风格:卡通、写实、抽象、简约等风格
|
||||
* 边缘处理:清晰边缘、模糊边缘、渐变边缘等
|
||||
- **💡 光线容错处理** - 考虑拍摄条件的影响:
|
||||
* 室内外光线差异可能造成的色彩偏差
|
||||
* 不同角度拍摄可能造成的视觉差异
|
||||
* 但核心配色方案和图案主题必须明显一致</rule>
|
||||
<rule>**图案款式智能识别**:对于有图案印花的商品,重点关注:
|
||||
- 如果图案的形状、设计、构图完全相同,但颜色搭配不同,这属于同一款式的不同配色
|
||||
- 例如:同样的鱼图案,一个是"紫色鱼+黄色底",另一个是"红色鱼+蓝色底",这是同款不同配色
|
||||
- 例如:同样的条纹图案,一个是"黑白条纹",另一个是"蓝白条纹",这是同款不同配色
|
||||
- 在识别时,先识别图案本身,再匹配具体的配色方案</rule>
|
||||
<rule>**商品范围严格限制**:
|
||||
- **双重验证机制**:商品必须同时满足两个条件才能输出:
|
||||
1. 商品名称必须存在于提供的商品列表中
|
||||
2. 商品外观必须能在图片中找到对应的实物
|
||||
- **图片优先原则**:如果商品列表中有某个商品,但图片中没有这个商品的外观,绝对不能输出这个商品
|
||||
- **严禁虚构商品**:不得基于商品列表推测或猜测图片中可能存在但实际看不到的商品</rule>
|
||||
<rule>**商品识别严格约束**:
|
||||
- **🔍 图片边界严格限制**:只能识别图片中有黑色边框包围的商品区域
|
||||
- **📝 文字依据必需**:每个商品必须在其黑色边框内有清晰可见的文字标注
|
||||
- **🚫 绝对禁止推测**:严禁基于以下方式添加商品:
|
||||
* 根据商品列表推测图片中"应该有"的商品
|
||||
* 基于视觉相似性猜测没有文字标注的商品
|
||||
* 将一个商品拆分成多个变体输出
|
||||
* 添加图片中不存在的商品
|
||||
- **📊 数量强制一致**:输出商品数量必须严格等于图片中黑色边框区域数量
|
||||
- **📍 序号严格递增**:image_order必须从1开始,按图片中从左上到右下的顺序连续编号</rule>
|
||||
<rule>一个商品可以存在多个timeline,请确保这个商品的所有出现过的时间都被识别出来,可以合并的碎片时间段尽量合并。</rule>
|
||||
<rule>如果一个商品的演示画面中,有多个商品,需要将这些商品都识别出来,分开到不同的商品中。这部分要精细一些</rule>
|
||||
<rule>如果一个片段,有主播不在画面内的内容,需要从这个商品片段中去除。</rule>
|
||||
|
||||
<!-- 穿着与介绍不一致的处理规则 -->
|
||||
<rule>特别注意区分主播穿着的商品和正在介绍的商品,有时主播会穿着A商品但介绍B商品,注意观察主播在与哪个商品互动,也作为区分商品介绍的判断,注意主播经常穿搭一套服装,然后分别介绍不同的商品</rule>
|
||||
<rule>对于每个商品的时间段,需要明确该时间段内主播是否在介绍该商品本身,还是仅仅穿着该商品但介绍其他内容。</rule>
|
||||
|
||||
<!-- 切换商品的判断条件 -->
|
||||
<rule>请精准区分核心商品的开始结束时刻,一定要确保核心商品的介绍内容完整。</rule>
|
||||
<rule>结合画面、穿着,语音综合判断商品是否转换,不要只从某个维度进行判断。</rule>
|
||||
|
||||
|
||||
<!-- 智能行为分析(利用Gemini 2.5的多模态理解)-->
|
||||
<rule>**深度行为语义分析**:利用你的多模态理解能力,精准区分:
|
||||
- **👔 穿着展示行为识别**:
|
||||
* 静态穿着:主播穿着某商品但未特意展示
|
||||
* 动态展示:主播特意转身、走动展示穿着商品的效果
|
||||
* 细节展示:主播拉扯、整理服装展示质感和版型
|
||||
- **🎯 专门介绍行为识别**:
|
||||
* 手持介绍:主播手持商品进行详细介绍
|
||||
* 指向介绍:主播用手势指向正在介绍的商品
|
||||
* 对比介绍:主播同时展示多个商品进行对比
|
||||
- **👁️ 精细视觉线索识别**:
|
||||
* 手势动作:指向、拿取、展示、比划等具体手势
|
||||
* 身体姿态:转身、弯腰、抬手、走动等身体动作
|
||||
* 视线方向:看向商品、看向镜头、看向其他位置
|
||||
* 表情变化:专注、兴奋、强调等表情状态
|
||||
- **🎤 语音语义深度理解**:
|
||||
* 商品名称:主播明确提到的具体商品名称
|
||||
* 特征描述:颜色、款式、材质、尺寸等特征词汇
|
||||
* 情感倾向:推荐、强调、对比等语调变化
|
||||
* 时间标记:开始介绍、结束介绍的语言信号
|
||||
- **🎬 场景环境分析**:
|
||||
* 背景变化:室内外、不同房间、不同角度的场景切换
|
||||
* 道具使用:衣架、镜子、标签等道具的出现
|
||||
* 光线变化:自然光、室内灯光等光照条件变化
|
||||
* 拍摄角度:全身、半身、特写等不同拍摄角度</rule>
|
||||
<rule>**时序逻辑推理**:运用你的推理能力建立时间轴上的商品关系:
|
||||
- **因果关系链**:主播行为→商品展示→销售转化的逻辑链条
|
||||
- **注意力转移**:识别主播注意力和观众注意力的转移规律
|
||||
- **营销节奏**:理解直播带货的节奏感和商品切换的商业逻辑
|
||||
</rule>
|
||||
|
||||
<!-- 精准时间边界识别 -->
|
||||
<rule>**智能时间边界检测**:综合多维度信息精确定位商品切换时刻:
|
||||
- **🎨 视觉特征变化检测**:
|
||||
* 穿着变化:主播更换服装的精确时刻
|
||||
* 商品切换:从展示一个商品转向另一个商品的时刻
|
||||
* 颜色变化:同款不同色商品切换的时刻
|
||||
* 角度变化:从不同角度展示同一商品的时间段
|
||||
- **🎤 音频语义边界**:
|
||||
* 商品名称提及:主播开始/结束提及某商品名称的时刻
|
||||
* 话题转换:从介绍一个商品转向另一个商品的语言转折点
|
||||
* 语调变化:强调、推荐等语调变化标记的重点时段
|
||||
- **👁️ 动作行为边界**:
|
||||
* 手势变化:指向不同商品的手势切换时刻
|
||||
* 身体动作:展示不同商品时的身体动作变化
|
||||
* 视线转移:主播视线从一个商品转向另一个商品的时刻
|
||||
- **🔄 多信号融合验证**:
|
||||
* 视觉+音频:视觉变化与语音描述的时间对应关系
|
||||
* 动作+语音:身体动作与语言描述的协调性验证
|
||||
* 上下文逻辑:确保时间边界符合商品介绍的逻辑连贯性
|
||||
- **🎯 商业意图时间标记**:
|
||||
* 重点推广:主播特别强调某商品的时间段
|
||||
* 对比展示:同时展示多个商品进行对比的时间段
|
||||
* 细节介绍:深入介绍商品特征的详细时间段</rule>
|
||||
|
||||
<!-- timeline时间段规则 -->
|
||||
<rule>确保核心商品输出的timeline时间段落必须是该格式(小时:分钟:秒.毫秒)hh:mm:ss.mmm - hh:mm:ss.mmm。</ruhh
|
||||
<rule>**时间格式标准**:
|
||||
- 必须严格使用格式: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秒</rule>
|
||||
<rule>每个时间段后面必须添加内容类型标识,格式为 (类型),具体类型包括:</rule>
|
||||
<rule>• (穿着本品+介绍本品) - 主播穿着该商品且正在介绍该商品本身</rule>
|
||||
<rule>• (穿着本品+他品) - 主播穿着该商品但正在介绍其他商品</rule>
|
||||
<rule>• (穿着本品+无关) - 主播穿着该商品但在做无关商品的事情(如聊天、互动等)</rule>
|
||||
<rule>判断时要仔细分析主播的语音内容,确定其介绍的具体是哪个商品,避免混淆。</rule>
|
||||
|
||||
<!-- 🔍 输出前的最终检查 -->
|
||||
<rule>**输出前的强制检查(最重要)**:
|
||||
- 在生成JSON结果前,对每个商品进行最后检查
|
||||
- 自问:"我能在上传的图片中明确看到这个商品的实物吗?"
|
||||
- 如果答案不是100%肯定的"是",立即从结果中删除该商品
|
||||
- 宁可输出空数组[],也绝不输出图片中不存在的商品
|
||||
- 这是检验分析质量的最终标准</rule>
|
||||
<rule>时间范围一定要在视频长度范围内,例如视频长度为15分钟0秒0毫秒,时间不允许超出00:00:00.000到00:15:00.000范围</rule>
|
||||
|
||||
<!-- 🔍 智能质量保证(发挥Gemini 2.5推理优势)-->
|
||||
<rule>**严格质量验证体系**:
|
||||
- **🔍 图片解析验证**:
|
||||
* 📊 **数量核查**:"输出商品数量是否不超过图片中黑色边框区域数量?"
|
||||
* 📍 **序号验证**:"image_order是否对应图片中实际存在的商品位置?"
|
||||
* 📝 **文字依据**:"每个image_name是否都有图片中的文字标注支撑?"
|
||||
- **🎯 匹配关系验证**:
|
||||
* ✅ **匹配有效性**:"每个输出商品都能在商品列表中找到对应项吗?"
|
||||
* 🚫 **禁止无依据匹配**:"是否存在没有图片文字依据的强行匹配?"
|
||||
* 📋 **标准名称使用**:"product字段是否使用商品列表中的标准名称?"
|
||||
- **🔄 四维一致性验证**:
|
||||
* 📋 **材质一致性**:"商品名称中的材质描述与视频中的质感表现是否一致?"
|
||||
* 🖼️ **图片一致性**:"图片中的商品特征与视频中的展示是否匹配?"
|
||||
* 📹 **视频一致性**:"视频中的款式细节(如鸡心领等)是否与商品描述匹配?"
|
||||
* 🎤 **语音一致性**:"主播的语音描述是否与视觉观察结果一致?"
|
||||
* ⚖️ **综合判断**:"四个维度的信息是否都指向同一个商品?"
|
||||
- **⚡ 输出质量保障**:
|
||||
* 🎯 **宁缺毋滥原则**:四维信息不一致的商品不得强行输出
|
||||
* 📊 **完整性检查**:每个对象必须包含完整的match_info、product、timeline字段
|
||||
* 🔧 **JSON格式完美**:确保输出的JSON结构完全符合规范要求
|
||||
* ⚠️ **错误排除**:严格排除图片中不存在但被错误识别的商品</rule>
|
||||
</rules>
|
||||
|
||||
|
||||
<examples>
|
||||
<!-- 正确的输出格式 -->
|
||||
<example>
|
||||
[{{"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恤 莱赛尔修身圆领短袖-周一"}}]
|
||||
</example>
|
||||
<reason>正确区分了主播穿着该T恤时的不同状态:第一段在介绍T恤本身,第二段穿着T恤但在介绍其他商品,第三段穿着T恤但在做无关事情。商品名称严格来自提供的商品列表:"美洋MEIYANG【商场同款】水面膜T恤 莱赛尔修身圆领短袖-周一"。**关键:该商品必须在图片中实际可见**,通过对比图片中该商品的外观特征(颜色、款式)与视频中主播展示的商品来确定匹配关系。如果图片中没有这件T恤,绝不能输出。</reason>
|
||||
<!-- 正确的分阶段识别和输出流程示例 -->
|
||||
<example_process>
|
||||
**第一阶段:图片解析与基础匹配**
|
||||
- 🔍 图片扫描结果:发现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 (穿着本品+介绍本品)"]
|
||||
}}
|
||||
]
|
||||
</example_process>
|
||||
<reason>
|
||||
这个输出完美体现了严格的分阶段分析逻辑:
|
||||
|
||||
**第一阶段成果**:
|
||||
1. **🔍 独立图片解析**:完全基于图片内容,不受视频或商品列表影响,发现15个区域但只有部分能匹配。
|
||||
2. **📝 文字依据充分**:每个序号都有明确的图片文字标注作为依据。
|
||||
3. **📋 基础匹配表可靠**:只有高相似度匹配才建立关联,序号2因无匹配被排除。
|
||||
|
||||
**第二阶段成果**:
|
||||
4. **🎯 范围严格限制**:只分析第一阶段成功匹配的商品,不添加新商品。
|
||||
5. **📍 位置对应精确**:重新确认图片中每个序号位置的实际商品特征,避免混淆。
|
||||
6. **🔄 四维验证严格**:每个商品都经过材质、图片、视频、语音四个维度的一致性验证。
|
||||
7. **🖼️ 图片维度准确**:图片维度信息与图片中对应位置的实际商品完全一致。
|
||||
8. **⚖️ 质量门槛明确**:四维一致性低于80%的商品会被移除。
|
||||
|
||||
**第三阶段成果**:
|
||||
7. **✅ 最终结果可靠**:只输出通过所有验证的商品,确保准确性。
|
||||
8. **📊 完整验证链条**:每个输出商品都有从图片到最终结果的完整追溯。
|
||||
|
||||
**关键优势体现**:
|
||||
- ❌ 彻底避免AI幻觉:分阶段验证机制防止输出不存在的商品
|
||||
- ❌ 杜绝推测匹配:第一阶段的独立性确保基于事实而非推测
|
||||
- ❌ 消除交叉干扰:各阶段职责明确,避免信息混淆
|
||||
- ❌ 防止特征混淆:严格的位置对应机制确保图片维度信息与实际位置完全匹配
|
||||
- ❌ 避免描述错位:重新观察确认机制防止将不同位置商品的特征相互混淆
|
||||
- ✅ 确保结果质量:多重验证机制保证输出的准确性和可靠性
|
||||
- ✅ 保证信息一致:图片维度信息与图片实际内容严格对应
|
||||
</reason>
|
||||
</examples>
|
||||
</prompt>""".format(product_list_str)
|
||||
</prompt>"""
|
||||
.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(
|
||||
|
||||
Reference in New Issue
Block a user