陈列检测
陈列检测是基于多模态大模型(MLLM)+ 视觉向量召回构建的门店商品陈列智能识别能力,面向线下零售 / 渠道门店的货架 / 地堆陈列巡检场景。产品对门店实拍的货架图、地堆图,先用多模态大模型检测出每个商品的边界框与初步名称,再以客户专属 SKU 向量库做相似度召回,把每个商品精确匹配到客户自有的 SKU,输出可直接对接业务系统的逐商品结构化结果。适用于总部对线下门店陈列的远程稽核、SKU 铺货核验、陈列合规巡检等大规模、高并发的视觉识别流水线。
能力试用请访问控制台:https://ecoa.console.aliyun.com/inspect/capabilities
适用场景
货架 / 地堆陈列识别盘点:识别一张货架 / 地堆图上的每个商品,并匹配到客户 SKU 库,输出逐商品清单(商品名 + 位置 + 相似度),替代人工逐个清点。
铺货核验 / SKU 合规:核验门店是否按总部要求陈列指定 SKU、是否存在缺货或错放,支撑大促 / 新品期的批量自动核验。
客户专属 SKU 库:客户自助上传自有 SKU 标准图,建立专属向量库(按
RagId隔离);识别时只在该客户库内召回,保证名称精确、客户间数据隔离。
功能介绍
检测 + 召回两阶段协同:多模态大模型在整图上检测出每个商品框与初步名(语义级理解,适配密集陈列、部分遮挡);再用视觉 embedding 向量在客户 SKU 库内做相似度检索,用 top1 的精确 SKU 名覆盖初步名,兼顾召回率与名称准确率。
专属向量库隔离召回:按
RagId维护每个客户的专属 SKU 向量库,识别只在对应库内检索,客户间严格隔离;新增 / 更新 SKU 实时生效。逐商品结构化输出:输出统一为
Result.Items[],每个商品独立给出边界框、召回 SKU 名、SKU 编码、相似度分,便于直接驱动下游盘点 / 核验系统,并支持 case 级人审追溯。支持的输入格式:当前支持公网或 OSS 可访问的图像 URL;单张货架 / 地堆图即可识别,输出结构统一。
请求参数
参数名 | 类型 | 必填 | 说明 |
| String | 是 | 待识别的货架 / 地堆原图 URL(公网或 OSS 可访问)。 |
| String | 是 | 业务类型(预留,用于后续按业务线路由);本期上线【水乳】。 |
| String | 是 | 客户专属 SKU 向量库 ID,决定在哪一份库内召回;该库需先通过建库流程建好。 |
| String | 否 | 如需指定自定义版本的 API 可传此参数:若在试用阶段创建过「我的 API」,可通过产品后台「智能巡检 - API 管理 - 我的 API」查询对应功能的 ApiId。 |
请求示例
{
"ImageUrl": "https://xxx.com/shelf_photo.jpg",
"Type": "水乳",
"RagId": "cust_8001_skincare",
"ApiId": "XXXXXX"
}响应参数
顶层字段
字段 | 类型 | 含义 | 说明 |
| Object | 业务数据对象 | 内部含 |
| Object | 处理计数 | 形如 |
| Object | 识别结果对象 | 内部结构见下表。 |
| String | 平台请求 ID | 平台侧链路 ID。 |
| String / String / Bool | 调用状态 | 成功为 |
Result 内部结构
字段路径 | 类型 | 取值 | 含义 | 关键约束 |
| string | 本次召回所用的库 ID | 回显,便于核对 | 与入参一致。 |
| int | 检测出的商品框总数 | 本图识别到的商品数 | 与 Items 长度一致。 |
| int | 成功召回的商品数 | 有有效 SkuName 的框数 | ≤ BoxCount。 |
| array | 逐商品结果数组 | 每个商品一项 | 按 Idx 对齐、不缺不多。 |
└ | int | 0 / 1 / … | 商品框序号 | 全局唯一。 |
└ | number[4] | [x1,y1,x2,y2] | 商品位置(千分比 0~1000,左上、右下) | 与原图等比换算。 |
└ | string | 召回 SKU 名(top1) | 最终商品名 | 召回失败时为空串,看 Error;字段名与建库侧 Sku_name 拉齐。 |
└ | string | 召回 SKU 编码(top1) | SKU 唯一 ID | 召回失败时为空串;字段名与建库侧 Sku_Id 拉齐。 |
└ | number | 0~1 | 相似度,(cos+1)/2,越大越像 | 召回失败时为 null。 |
└ | string|null | 失败原因 | 该框失败时非空 | 成功为 null。 |
命名说明:Sku_name / Sku_Id 与知识库建库侧字段保持一致,便于下游对账;其余字段沿用平台既有的大驼峰风格(Idx / Bbox / Score / Error 等)。
单框 Error 枚举:invalid_bbox(坐标非法)、invalid_crop(裁剪非法)、embed_failed(该框抠图向量化失败)。
响应示例
正常识别 —— 多商品命中召回
{
"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
}部分框异常 —— 个别框召回失败 / 低分,整体仍返回 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
}未识别到商品 —— 空货架 / 非货架图
{
"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
}库不存在 / 为空 —— 整体报错
{
"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 元 / 次(暂定)。