陈列场景检测

更新时间:
复制 MD 格式

1、产品简介

基于陈列场景识别与多模态大模型整体定位构建的门店陈列检测产品。产品识别货架、冷柜、地堆等陈列区域,输出可用的场景名称、位置和陈列指标,并补充设施整体框,适用于陈列设施巡检、区域展示和陈列指标复核。

2、适用场景

  1. 陈列设施巡检:识别货架、端架、地堆、立式冷柜及卧式冷柜等设施。

  2. 陈列指标复核:读取可用的占比、纯净度、饱满度等指标,供业务系统进一步评估。

  3. 陈列区域展示:在原图上展示区域位置和整体设施框。

3、功能介绍

  1. 场景结构化输出:返回场景名称、中心点、区域轮廓及可用指标。

  2. 设施整体定位:一个独立设施或堆头一框,适合整体区域审核。

  3. 分别保留两种坐标:scenes 中的位置保留识别服务原归一化坐标,grounding 使用 0–1000 整数框。

支持单张 HTTPS 图片输入;补充定位最多返回 12 个目标,每个目标包含类别、位置框和最多 24 字的可见文字,并通过 coverage 标明定位是否完整。

4、开发指南

本文请求和响应字段遵循对应搭建文档的实际大小写及结构。示例为业务工作流输入输出,不额外假设平台网关封装;对外调用地址、鉴权方式和网关封装应以实际发布接口为准。

4.1 请求参数

参数名

类型

必填

说明

imageUrl

String

是

待识别原图的 HTTPS 地址;须可访问,不含空白或 URL 用户名密码

4.2 请求示例

{
  "imageUrl": "https://example.com/images/api-06.jpg"
}

示例图片地址和知识库标识(如有)为占位值,调用时替换为实际资源。

4.3 响应参数

通用字段:

字段路径

类型

说明

success

Boolean

调用是否成功;有效业务结论不等于审核通过

errorCode

String

成功为空字符串;失败为错误码

errorMessage

String

成功为空字符串;失败为具体错误说明

result

Object

业务结果;失败时为空对象

usageMap

Object

成功为 {"ProcessingCount":1};失败为空对象

usageMap.ProcessingCount

Integer

成功处理计数为 1;失败时该字段不返回

业务字段:

字段路径

类型

说明

result.type

String

固定为 scene

result.scenes

Array

非空场景明细数组

| result.scenes[ ].sceneName | String | 场景标识,必有且非空 |

| result.scenes[ ].sceneActualName | String | 场景展示名称;缺省时为空字符串 |

| result.scenes[ ].areaRate | Number | 可选,面积占比 |

| result.scenes[ ].sceneCenter | Number[2] | 场景中心点,保留原归一化坐标;缺省时为空数组 |

| result.scenes[ ].sceneLocation | Array | 区域点列表,每项为 {x,y},保留原归一化坐标;缺省时为空数组 |

| result.scenes[ ].sceneLocation[ ].x / y | Number | 区域点横/纵坐标,不转换为千分比 |

| result.scenes[ ].ownPurity | Number | 可选,自有商品纯净度指标,具体业务口径以识别服务为准 |

| result.scenes[ ].plumpness | Number | 可选,陈列饱满度指标 |

| result.scenes[ ].shelfDistributionRate | Number | 可选,货架分布占比指标,具体业务口径以识别服务为准 |

补充定位字段:

字段路径

类型

说明

result.grounding

Object

补充元素定位结果

result.grounding.coverage

String

complete:相关可见目标完整;partial:仅部分目标有效或可辨认;空字符串:未获得有效补充定位结果

result.grounding.regions

Array

目标数组,最多 12 项;没有相关目标时可为空

| result.grounding.regions[ ].label | String | 目标类别,枚举见下表 |

| result.grounding.regions[ ].bbox_2d | Integer[4] | [左上x,左上y,右下x,右下y];0–1000;左<右,上<下 |

| result.grounding.regions[ ].text | String | 最多 24 字的可确认短名称或文字;看不清时为空字符串 |

目标类别:

label

含义

shelf

普通货架

endcap

端架

floor_stack

地面堆头

upright_cooler

立式冷柜

chest_freezer

卧式冷柜

display_area

其他陈列台或展示区

坐标换算:横坐标像素值 = 横坐标 × 原图宽度 / 1000;纵坐标像素值 = 纵坐标 × 原图高度 / 1000。

定位仅有部分结果时可返回 success=true、coverage=partial。发生截断时,仅保留已完整解析的合法目标;删除无效框、去重、截短文字或超出目标数量限制也会标记 partial。合法空 regions 可成功,但不代表前置业务结果也允许为空。主业务识别成功后,补充定位失败不影响整体成功:grounding.coverage 返回空字符串,grounding.regions 返回空数组,ProcessingCount 仍为 1。主业务识别失败时,整体返回失败。

百分数字符串转换为比例,例如 80% 转为 0.8;缺省可选标量省略。sceneCenter、sceneLocation 不改为 0–1000,也不裁剪略超 0–1 的原坐标。

4.4 响应示例

以下均为结构示例,非实测结果。

1)成功响应

{
  "success": true,
  "errorCode": "",
  "errorMessage": "",
  "result": {
    "type": "scene",
    "scenes": [
      {
        "sceneName": "shelf",
        "sceneActualName": "货架",
        "areaRate": 0.8,
        "sceneCenter": [
          0.5,
          0.5
        ],
        "sceneLocation": [
          {
            "x": 0.1,
            "y": 0.1
          },
          {
            "x": 0.9,
            "y": 0.1
          },
          {
            "x": 0.9,
            "y": 0.9
          }
        ],
        "ownPurity": 1.0,
        "plumpness": 0.8,
        "shelfDistributionRate": 0.2
      }
    ],
    "grounding": {
      "coverage": "complete",
      "regions": [
        {
          "label": "shelf",
          "bbox_2d": [
            100,
            200,
            300,
            400
          ],
          "text": "货架"
        }
      ]
    }
  },
  "usageMap": {
    "ProcessingCount": 1
  }
}

2)补充定位仅返回部分结果

{
  "success": true,
  "errorCode": "",
  "errorMessage": "",
  "result": {
    "type": "scene",
    "scenes": [
      {
        "sceneName": "shelf",
        "sceneActualName": "货架",
        "areaRate": 0.8,
        "sceneCenter": [
          0.5,
          0.5
        ],
        "sceneLocation": [
          {
            "x": 0.1,
            "y": 0.1
          },
          {
            "x": 0.9,
            "y": 0.1
          },
          {
            "x": 0.9,
            "y": 0.9
          }
        ],
        "ownPurity": 1.0,
        "plumpness": 0.8,
        "shelfDistributionRate": 0.2
      }
    ],
    "grounding": {
      "coverage": "partial",
      "regions": [
        {
          "label": "shelf",
          "bbox_2d": [
            100,
            200,
            300,
            400
          ],
          "text": ""
        }
      ]
    }
  },
  "usageMap": {
    "ProcessingCount": 1
  }
}

主业务成功,补充定位不可用

{
  "success": true,
  "errorCode": "",
  "errorMessage": "",
  "result": {
    "type": "scene",
    "scenes": [
      {
        "sceneName": "shelf",
        "sceneActualName": "货架",
        "areaRate": 0.8,
        "sceneCenter": [
          0.5,
          0.5
        ],
        "sceneLocation": [
          {
            "x": 0.1,
            "y": 0.1
          },
          {
            "x": 0.9,
            "y": 0.1
          },
          {
            "x": 0.9,
            "y": 0.9
          }
        ],
        "ownPurity": 1.0,
        "plumpness": 0.8,
        "shelfDistributionRate": 0.2
      }
    ],
    "grounding": {
      "coverage": "",

      "regions": [ ]

    }
  },
  "usageMap": {
    "ProcessingCount": 1
  }
}

参数错误响应

{
  "success": false,
  "errorCode": "InvalidParameter",
  "errorMessage": "imageUrl 必须为有效的 HTTPS 图片地址",
  "usageMap": {},
  "result": {}
}

处理失败响应

{
  "success": false,
  "errorCode": "DownstreamUnavailable",
  "errorMessage": "未获得有效的陈列场景识别结果",
  "usageMap": {},
  "result": {}
}

4.5 错误码

错误码

含义

处理建议

InvalidParameter

输入不合法或识别服务明确返回业务错误

根据 errorMessage 修正参数或业务输入后重新调用

DownstreamUnavailable

鉴权、限流、超时、空响应、缺字段或解析等处理异常

根据 errorMessage 检查资源与服务状态;临时故障可稍后重试

应结合 success、errorCode、errorMessage 判断结果。源搭建文档未约定每类业务错误对应的 HTTP 状态码。平台公共错误码可参考错误码,本接口工作流错误码以上表为准。