陈列检测是基于多模态大模型(MLLM)+ 视觉向量召回构建的门店商品陈列智能识别能力,面向线下零售 / 渠道门店的货架 / 地堆陈列巡检场景。产品对门店实拍的货架图、地堆图,先用多模态大模型检测出每个商品的边界框与初步名称,再以客户专属 SKU 向量库做相似度召回,把每个商品精确匹配到客户自有的 SKU,输出可直接对接业务系统的逐商品结构化结果。适用于总部对线下门店陈列的远程稽核、SKU 铺货核验、陈列合规巡检等大规模、高并发的视觉识别流水线。
能力试用请访问控制台:https://ecoa.console.aliyun.com/inspect/capabilities
一、接口说明
1. 产品简介
陈列检测是基于多模态大模型(MLLM)+ 视觉向量召回构建的门店商品陈列智能识别能力,面向线下零售 / 渠道门店的货架 / 地堆陈列巡检场景。产品对门店实拍的货架图、地堆图,先用多模态大模型检测出每个商品的边界框与初步名称,再以客户专属 SKU 向量库做相似度召回,把每个商品精确匹配到客户自有的 SKU,输出可直接对接业务系统的逐商品结构化结果。适用于总部对线下门店陈列的远程稽核、SKU 铺货核验、陈列合规巡检等大规模、高并发的视觉识别流水线。
2. 适用场景
货架 / 地堆陈列识别盘点:识别一张货架 / 地堆图上的每个商品,并匹配到客户 SKU 库,输出逐商品清单(商品名 + 位置 + 相似度),替代人工逐个清点。
铺货核验 / SKU 合规:核验门店是否按总部要求陈列指定 SKU、是否存在缺货或错放,支撑大促 / 新品期的批量自动核验。
客户专属 SKU 库:客户自助上传自有 SKU 标准图,建立专属向量库(按
RagId隔离);识别时只在该客户库内召回,保证名称精确、客户间数据隔离。
3. 功能介绍
检测 + 召回两阶段协同:多模态大模型在整图上检测出每个商品框与初步名(语义级理解,适配密集陈列、部分遮挡);再用视觉 embedding 向量在客户 SKU 库内做相似度检索,用 top1 的精确 SKU 名覆盖初步名,兼顾召回率与名称准确率。
专属向量库隔离召回:按
RagId维护每个客户的专属 SKU 向量库,识别只在对应库内检索,客户间严格隔离;新增 / 更新 SKU 实时生效。逐商品结构化输出:输出统一为
Result.Items[ ],每个商品独立给出边界框、召回 SKU 名、SKU 编码、相似度分,便于直接驱动下游盘点 / 核验系统,并支持 case 级人审追溯。支持的输入格式:当前支持公网或 OSS 可访问的图像 URL;单张货架 / 地堆图即可识别,输出结构统一。
自定义规则(Rule)支持:支持用户通过传入自定义 Prompt(
Rule字段)下发独立规则分支,满足灵活的业务定制需求。
二、流控信息与授权信息
流控信息:当前云产品 API 请求速率暂未透出。
授权信息:RAM 权限策略语句的 Action 元素为
aidge:MerchandisePlacementDetection,资源类型为全部资源(*)。请通过 RAM 访问控制设置进行授权。
三、请求参数
参数名 | 类型 | 必填 | 说明 |
ImageUrl | String | 是 | 待识别的货架 / 地堆原图 URL(公网或 OSS 可访问)。 |
Type | String | 条件必填 | 业务类型(预留,用于后续按业务线路由);本期上线【水乳】。 |
RagId | String | 条件必填 | 客户专属 SKU 向量库 ID,决定在哪一份库内召回;该库需先通过建库流程建好。 |
ApiId | String | 否 | 如需指定自定义版本的 API 可传此参数:若在试用阶段创建过「我的 API」,可通过产品后台「智能巡检 - API 管理 - 我的 API」查询对应功能的 ApiId。 |
Rule | String | 否 | 自定义规则:用户输入检测 Prompt,作为工作流入参 rule 下发,不再传 type(有 rule 走独立规则分支)。空 rule 必须填写 type 才可开始检测。 |
请求说明
当
ApiId不为空时,Type和RagId可以不填,系统将直接回填ApiId的默认值。当
ApiId为空时,Type和RagId均为必填项,否则会报错。当传入
Rule时,将走独立规则分支,此时不需要传Type。
请求示例
{
"ImageUrl": "https://xxx.com/shelf_photo.jpg",
"Type": "水乳",
"RagId": "cust_8001_skincare",
"ApiId": "XXXXXX"
}四、响应参数
1. 顶层字段
字段 | 类型 | 含义说明 |
Data | Object | 业务数据对象,内部含 |
Data.UsageMap | Object | 处理计数,形如 |
Data.Result | Object | 识别结果对象,内部结构见下表。 |
RequestId | String | 平台请求 ID,平台侧链路 ID。 |
Code | String | 错误码/状态码。正常调用成功时为 |
Message | String | 错误信息/状态信息。正常调用成功时为 |
Success | Boolean | 是否调用成功: |
2. Result 内部结构 (Data.Result)
字段路径 | 类型 | 取值 | 含义 | 关键约束 |
Result.RagId | string | - | 本次召回所用的库 ID | 回显,便于核对与入参一致。 |
Result.BoxCount | int | - | 检测出的商品框总数 | 本图识别到的商品数,与 Items 长度一致。 |
Result.RecalledCount | int | - | 成功召回的商品数 | 有有效 SkuName 的框数,≤ BoxCount。 |
Result.Items | array | - | 逐商品结果数组 | 每个商品一项,按 Idx 对齐、不缺不多。 |
└ Idx | int | 0 / 1 / … | 商品框序号 | 全局唯一。 |
└ Bbox | number[4] | [x1,y1,x2,y2] | 商品位置 | 千分比 0~1000,左上、右下,与原图等比换算。 |
└ Sku_name | string | - | 召回 SKU 名(top1) | 最终商品名。召回失败时为空串,看 Error;字段名与建库侧 |
└ Sku_Id | string | - | 召回 SKU 编码(top1) | SKU 唯一 ID。召回失败时为空串;字段名与建库侧 |
└ Score | number | 0~1 | 相似度 |
|
└ Error | string | null | - | 失败原因 | 该框失败时非空,成功为 null。 |
命名说明:Sku_name/Sku_Id与知识库建库侧字段保持一致,便于下游对账;其余字段沿用平台既有的大驼峰风格(Idx/Bbox/Score/Error等)。
单框 Error 枚举:
五、响应示例
1. 正常识别 —— 多商品命中召回
{
"Data": {
"UsageMap": { "ProcessingCount": 1 },
"Result": {
"RagId": "cust_8001_skincare",
"BoxCount": 3,
"RecalledCount": 3,
"Items": [
{ "Idx": 0, "Bbox": [120.5, 88.0, 240.0, 360.5], "Sku_name": "某品牌 舒缓保湿水 200ml", "Sku_Id": "a1b2c3d4", "Score": 0.873, "Error": null },
{ "Idx": 1, "Bbox": [240.0, 90.0, 360.0, 362.0], "Sku_name": "某品牌 舒缓保湿乳 150ml", "Sku_Id": "e5f6g7h8", "Score": 0.802, "Error": null },
{ "Idx": 2, "Bbox": [360.0, 92.0, 480.0, 364.0], "Sku_name": "某品牌 水乳套装 200ml+150ml", "Sku_Id": "m3n4o5p6", "Score": 0.781, "Error": null }
]
}
},
"RequestId": "65B3FEBD-43B4-1195-9285-C814C767B641",
"Message": "Success",
"Code": "success",
"Success": true
}2. 部分框异常 —— 个别框召回失败 / 低分,整体仍返回 200
{
"Data": {
"UsageMap": { "ProcessingCount": 1 },
"Result": {
"RagId": "cust_8001_skincare",
"BoxCount": 3,
"RecalledCount": 1,
"Items": [
{ "Idx": 0, "Bbox": [120.5, 88.0, 240.0, 360.5], "Sku_name": "某品牌 舒缓保湿水 200ml", "Sku_Id": "a1b2c3d4", "Score": 0.861, "Error": null },
{ "Idx": 1, "Bbox": [0, 0, 0, 0], "Sku_name": "", "Sku_Id": "", "Score": null, "Error": "invalid_bbox" },
{ "Idx": 2, "Bbox": [360.0, 92.0, 480.0, 364.0], "Sku_name": "", "Sku_Id": "", "Score": null, "Error": "embed_failed" }
]
}
},
"RequestId": "7B2EECC1-ABEC-1B84-956A-A452217A18C9",
"Message": "Success",
"Code": "success",
"Success": true
}3. 未识别到商品 —— 空货架 / 非货架图
{
"Data": {
"UsageMap": { "ProcessingCount": 1 },
"Result": {
"RagId": "cust_8001_skincare",
"BoxCount": 0,
"RecalledCount": 0,
"Items": [ ]
}
},
"RequestId": "C77486A5-9BA2-1FDE-90CD-C5423DAE57AD",
"Message": "Success",
"Code": "success",
"Success": true
}4. 库不存在 / 为空 —— 整体报错
{
"Data": null,
"RequestId": "150F10E9-CF63-1849-91C8-BE8B41D37C13",
"Message": "rag library not found or empty: cust_8001_skincare",
"Code": "RagNotFound",
"Success": false
}六、错误码
其他错误码参照 Aidge 平台统一错误码。
七、计费方式
0.096 元 / 次(暂定)。
八、变更历史
变更时间 | 变更内容概要 |
2026-07-23 | 新增 OpenAPI,陈列检测 |