陈列检测

更新时间:
复制 MD 格式

陈列检测是基于多模态大模型(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;单张货架 / 地堆图即可识别,输出结构统一。

请求参数

参数名

类型

必填

说明

ImageUrl

String

待识别的货架 / 地堆原图 URL(公网或 OSS 可访问)。

Type

String

业务类型(预留,用于后续按业务线路由);本期上线【水乳】。

RagId

String

客户专属 SKU 向量库 ID,决定在哪一份库内召回;该库需先通过建库流程建好。

ApiId

String

如需指定自定义版本的 API 可传此参数:若在试用阶段创建过「我的 API」,可通过产品后台「智能巡检 - API 管理 - 我的 API」查询对应功能的 ApiId。

请求示例

{
  "ImageUrl": "https://xxx.com/shelf_photo.jpg",
  "Type": "水乳",
  "RagId": "cust_8001_skincare",
  "ApiId": "XXXXXX"
}

响应参数

顶层字段

字段

类型

含义

说明

Data

Object

业务数据对象

内部含 ResultUsageMap

Data.UsageMap

Object

处理计数

形如 {"ProcessingCount": 1},恒有。

Data.Result

Object

识别结果对象

内部结构见下表。

RequestId

String

平台请求 ID

平台侧链路 ID。

Code / Message / Success

String / String / Bool

调用状态

成功为 success / Success / true

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,左上、右下)

与原图等比换算。

SkuName

string

召回 SKU 名(top1)

最终商品名

召回失败时为空串,看 Error;字段名与建库侧 Sku_name 拉齐。

SkuId

string

召回 SKU 编码(top1)

SKU 唯一 ID

召回失败时为空串;字段名与建库侧 Sku_Id 拉齐。

Score

number

0~1

相似度,(cos+1)/2,越大越像

召回失败时为 null。

Error

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 元 / 次(暂定)。