文档首页/ 视频智能分析服务 VIAS/ API参考/ 算法API/ 云上服务API/ 创建云上高密度人群统计作业
更新时间:2024-09-25 GMT+08:00
分享

创建云上高密度人群统计作业

功能介绍

该接口用于创建云上高密度人群统计作业。

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST /v2/{project_id}/services/c-crowdcount-cloud/tasks

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

用户项目ID。获取方法参见获取项目ID和名称

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token,获取方法参见认证鉴权

表3 请求Body参数

参数

是否必选

参数类型

描述

name

String

作业名称,只能由中文、字母(a~z A~Z)、数字(0~9)、中划线(-)、下划线(_)组成,长度范围为[1,100]。

description

String

作业描述信息,最大长度为500字符长度。

最小长度:0

最大长度:500

schedule

TaskSchedule object

定时任务参数,定时周期 仅支持周模式。

input

TaskInput object

作业的输入配置。

output

TaskOutput object

作业的输出配置,至少需要配置一项输出方式。

config

CrowdCountServiceConfig object

作业配置参数。

service_version

String

服务版本号,输入需要满足正则:^[a-z0-9.]{3,32}$。

最小长度:3

最大长度:32

is_saved_as_template

Boolean

是否把作业配置保存成模板。

resource_order_id

String

资源订单id,与关联算法挂钩。非商用白名单的算法 就不用填,商用算法就为必填项,需要满足正则表达式^[a-z0-9-_]{4,36}$。

最小长度:4

最大长度:36

表4 TaskSchedule

参数

是否必选

参数类型

描述

type

String

计划任务的类型,使用计划任务时必填。可选类型分别为weekly(每周执行),monthly(每月执行)。

timezone

String

用户所处的时区,使用计划任务时必填。精确到分钟。

days_of_week

Array of integers

作业会在一周的哪几天执行,当且仅当计划任务类型为weekly时,该字段需填且必填。1~7分别指代星期一至星期日。

最小值:1

最大值:7

数组长度:1 - 7

days_of_month

Array of integers

作业会在一个月的哪几天执行,当且仅当计划任务类型为monthly时,该字段需填且必填。1~31分别指代一个月中的1日至31日。

最小值:1

最大值:31

periods

Array<Array<>>

时间段模式配置,指定周计划或者月计划中具体每天作业的执行时间段,至少需指定一个时间段。

表5 TaskInput

参数

是否必选

参数类型

描述

type

String

作业的输入类型,创建时必填,编辑时video_source 模式 不支持切换为其他IVA模式的type。创建时可选类型有 obs(对象存储服务存储的文件 仅云上作业支持), url(指定的文件地址或取流地址 仅云上作业支持), edgecamera(绑定在IEF的边缘摄像头 仅边缘作业支持), restful(从自定义的流媒体服务器通过Restful接口获取取流地址 云上,边缘均作业支持), vcn(VCN设备 仅边缘作业支持), video_source(视频源类型), 建议使用video_source类型,其他类型为了兼容老业务,后续将废弃。 枚举值:

  • video_source

  • obs(不建议使用,后续废弃)

  • url(不建议使用,后续废弃)

  • edgecamera(不建议使用,后续废弃)

  • restful(不建议使用,后续废弃)

  • vcn(不建议使用,后续废弃)

data

Array of TaskInputData objects

作业的输入详情,必填。针对不同的输入类型有不同的配置。创建时允许填写多路输入,但更新时只允许填写一路输入。

  • 当输入类型为:obs,需要配置 bucket,path , index 。例如: "bucket": "aicam", "path": "3rdpartylicenses.txt", "index": 0

  • 当输入类型为:url,需要配置 url, index 。例如: "url": "https://xxx-xxx.com", "index": 0

  • 当输入类型为:restful,需要配置 certificate_check, rtsp_path_in_response, url, index, headers 。例如:"certificate_check": true, "url": "https://hsaij-dasahbi.com", "rtsp_path_in_response": "data/url", "index": 0, "headers": { "AAA": "AAA" }

  • 当输入类型为:vcn,需要配置 device_id, stream_type, index。例如:"device_id": "21356478954612546874#gdhjkiushdgdksjhslmhscjsckjhdbnk", "stream_type": 1, "index": 0

  • 当输入类型为:EdgeCamera,需要配置 id, index 例如:"id": "007cdafc-6000-47ce-b0e3-870b4a0db65e","index": 0

数组长度:1 - 50

vcn

TaskInputVcn object

VCN服务器信息,仅输入类型为vcn时必填。

表6 TaskInputData

参数

是否必选

参数类型

描述

video_source_id

String

视频源id,当输入类型为video_source时必填。

stream_name

String

视频流名称。

bucket

String

OBS桶名,当输入为obs类型时必填。

最大长度:63

path

String

OBS的路径,当输入为obs类型时必填。

最大长度:1023

url

String

url输入源的地址或者获取视频流地址的restful请求地址,当输入为url类型或者edgerestful类型时必填。长度不超过1000。

最大长度:1000

headers

Object

获取视频流地址的restful请求携带的请求头,当输入为edgerestful类型时可选。整体呈json格式,以键值对的形式表示请求头和取值,最多允许10组。

certificate_check

Boolean

是否需要对https请求进行证书校验,当输入为edgerestful类型时必填。取值为true或者false。

rtsp_path_in_response

String

restful请求返回的body中,视频流地址的路径,当输入为edgerestful类型时必填。长度不超过1024。

最大长度:1024

device_id

String

VCN设备ID,当输入为vcn类型时必填。

stream_type

Integer

准备进行分析的码流,当输入为vcn类型时选填。取值范围为1~3,其中1代表主码流,2代表子码流1,3代表子码流2。

最小值:1

最大值:3

id

String

IEF挂载的边缘设备的ID,当输入为edgecamera类型时必填。

最大长度:63

表7 TaskInputVcn

参数

是否必选

参数类型

描述

ip

String

VCN服务器的IP地址,仅输入类型为vcn时必填。

port

Integer

VCN服务器的端口号,仅输入类型为vcn时必填。

最小值:0

最大值:65535

username

String

VCN服务器的账号名,仅输入类型为vcn时需填且必填,需要满足正则表达式^.{1,100}$。

password

String

VCN服务器的与账号对应的密码,仅输入类型为vcn时必填,需要满足正则表达式^.{1,1000}$。

表8 TaskOutput

参数

是否必选

参数类型

描述

obs

TaskOutputObs object

输出为obs类型时的配置信息。

dis

TaskOutputDis object

输出为dis类型时的配置信息。

webhook

TaskOutputWebhook object

输出为webhook类型时的配置信息。

event_center

Boolean

是否把告警发送至事件中心,云上作业该字段有效。

缺省值:false

表9 TaskOutputObs

参数

是否必选

参数类型

描述

bucket

String

OBS桶名,选用obs类型输出时必填,校验规则:(pattern:“^[a-z0-9](?!.[-.][-.].)([a-z0-9-.]{1,61})[a-z0-9]$”)。

最大长度:63

path

String

OBS的路径,选用obs类型输出时必填,校验规则:^(?![/.\s])(?!.//.)([^:*?"<>|]{0,1023})(?<![.\s])$。

最大长度:1023

data_category

Array of strings

作业输出数据类别的列表,选填,仅部分服务需要。当输出类型下有这个列表时,表示希望这个输出类型下存放dataCategory列表内的数据。

数组长度:0 - 10

表10 TaskOutputDis

参数

是否必选

参数类型

描述

stream_name

String

DIS流名称,选用dis类型输出时必填。

最大长度:64

data_category

Array of strings

作业输出数据类别的列表,选填,仅部分服务需要。当输出类型下有这个列表时,表示希望这个输出类型下存放dataCategory列表内的数据。

数组长度:0 - 10

表11 TaskOutputWebhook

参数

是否必选

参数类型

描述

url

String

结果回调地址,选用webhook类型输出时必填。

最大长度:1000

headers

Object

结果回调时需要携带的请求头,选用webhook类型输出时必填。整体呈json格式,以键值对的形式表示请求头和取值,至少1组,至多10组。

data_category

Array of strings

作业输出数据类别的列表,选填,仅部分服务需要。当输出类型下有这个列表时,表示希望这个输出类型下存放dataCategory列表内的数据。

数组长度:0 - 10

表12 CrowdCountServiceConfig

参数

是否必选

参数类型

描述

common

CrowdCountCommon object

作业运行时指定的具体的自定义配置项,由服务发布者定义。整体呈json格式,具体配置项参见相应算法服务的说明。

表13 CrowdCountCommon

参数

是否必选

参数类型

描述

alarm_threshold

String

人数告警阈值列表,默认值:50人,取值范围为正整数。当视频帧中出现大于等于该阈值的人数时,通过JSON输出告警图片。该字段的输入情况如下:可以针对每个ROI区域输入不同的告警阈值,每个输入用空格进行分隔。

  • 若用户输入的人数告警阈值列表多于实际的ROI个数,则取前边的人数。

  • 如果输入的人数告警阈值列表少于实际的ROI个数,则比ROI个数少的部分用默认值补齐。

  • 举例:ROI有3个,当输入25 30 20,只要有其中一个ROI告警,则发送图片。当输入25 15时,则第三个ROI会用默认值50补齐,也即变成25 15 50。当输入25 36 23 40时,算法自动选择前3个,也即25 36 23。

sampling_time_interval

Integer

视频采样处理时间间隔,默认值:10s,取值范围[5, 3600],单位秒。默认10秒采样一次视频画面,两次处理将会间隔N帧画面。

  • N的计算方式:sampling_time_interval * 视频fps。例如:视频fps=25,采样时间1秒,则两次处理之间会跳过25帧画面。

最小值:5

最大值:3600

缺省值:10

alert_mode

String

告警模式。默认值:"single"。共有两种告警模式:

  • “single”表示事件告警模式,只有出现满足人数告警阈值的新的告警事件时,才会上报告警信息;

  • “periodic”表示周期告警模式,每当经过一个视频采样处理时间间隔,就会上报告警信息。

缺省值:single

banner_detection_sw

Integer

横幅检测开关,默认值0,取值范围[0,1]。当打开横幅检测开关时,会对视频画面中的ROI区域进行横幅检测。

最小值:0

最大值:1

缺省值:0

banner_threshold

String

横幅告警阈值列表,默认值1,取值范围为正整数。该参数的用法可以参考alarm_threshold字段。

visualization_output_sw

Integer

可视化输出开关,默认是0,取值范围[0 1]。默认每个ROI区域检测到的人数大于告警阈值时,只会发送原图信息。只有打开可视化开关后,才会将检测到的行人和横幅进行可视化输出。可视化场景如下:

  • 检测到单个行人,会用红色框进行标注。

  • 检测到游行示威的横幅,会用红色框标注。

  • 如果检测到密集人群,会对该区域进行颜色渲染。

  • 每个ROI框会用黄色多边形在画面中标注。

最小值:0

最大值:1

缺省值:0

density_sw

Integer

密度估计开关。用户可自定义是否启用密度估计模型来评估人数统计结果。推荐当人数较多、告警人数阈值较大的场景启用密度估计模型;当人数较少、告警人数阈值较低的场景可不用密度估计模型。

  • 默认启用密度估计模型,取值为1,取值范围是[0, 1]。

最小值:0

最大值:1

缺省值:1

image_compression_ratio

Integer

对应控制台的界面参数“图片压缩比”。取值范围为[20, 100],默认值为90,表示图片压缩比为90%。

最小值:20

最大值:100

缺省值:90

target_roi

String

对应控制台的界面参数“检测区域设置”。

  • 表示检测区域,该字段为JSON格式的字符串,API调用时需要加转义符。详细JSON格式参见设置target_roi

  • 例如:{"polygons":[{"data":[[84,389],[1840,349],[1824,526],[78,526]]}]}

  • 参数没有携带时,默认区域为整个视频帧。

响应参数

状态码: 200

表14 响应Body参数

参数

参数类型

描述

tasks

Array of TaskResponse objects

VIAS平台创建作业的作业id列表

表15 TaskResponse

参数

参数类型

描述

id

String

VIAS平台创建的作业id。

状态码: 400

表16 响应Body参数

参数

参数类型

描述

error_code

String

错误码。

error_msg

String

错误信息描述。

detail

String

错误详情。

params

Array of strings

错误参数列举。

数组长度:0 - 1

reason

String

错误原因。

advice

String

建议。

状态码: 500

表17 响应Body参数

参数

参数类型

描述

error_code

String

错误码。

error_msg

String

错误信息描述。

detail

String

错误详情。

params

Array of strings

错误参数列举。

数组长度:0 - 1

reason

String

错误原因。

advice

String

建议。

请求示例

  • 云上高密度人群统计作业创建,使用输入源为video_source,输出为dis。

    POST /v2/{project_id}/services/c-crowdcount-cloud/tasks
    
    {
      "name" : "crowdcount-task",
      "description" : "CrowdCountDetection task test",
      "input" : {
        "type" : "video_source",
        "data" : [ {
          "video_source_id" : "xxxxxxx-xxxxxxx-xxxxxxx-xxxxx-xxxxxx"
        } ]
      },
      "output" : {
        "dis" : {
          "stream_name" : "crowdcount"
        }
      },
      "service_version" : "3.0",
      "resource_order_id" : "840a5cf90d4a4bbaa71f251dfe8fe64e",
      "config" : {
        "common" : {
          "banner_detection_sw" : 1,
          "banner_threshold" : "2",
          "alarm_threshold" : "5",
          "sampling_time_interval" : 8,
          "density_sw" : 1,
          "visualization_output_sw" : 1,
          "image_compression_ratio" : 80,
          "target_roi" : "{\"polygons\":[{\"data\":[[100,100],[1800,100],[1800,1000],[100,1000]]}]}"
        }
      }
    }
  • 云上高密度人群统计作业创建,使用输入源为obs,输出为dis。

    POST /v2/{project_id}/services/c-crowdcount-cloud/tasks
    
    {
      "name" : "crowdcount-task",
      "description" : "CrowdCountDetection task test",
      "input" : {
        "type" : "obs",
        "data" : [ {
          "bucket" : "obs_test_video",
          "path" : "test.mp4",
          "index" : 0
        } ]
      },
      "output" : {
        "dis" : {
          "stream_name" : "crowdcount"
        }
      },
      "service_version" : "3.0",
      "resource_order_id" : "840a5cf90d4a4bbaa71f251dfe8fe64e",
      "config" : {
        "common" : {
          "banner_detection_sw" : 1,
          "banner_threshold" : "2",
          "alarm_threshold" : "5",
          "sampling_time_interval" : 8,
          "density_sw" : 1,
          "visualization_output_sw" : 1,
          "image_compression_ratio" : 80,
          "target_roi" : "{\"polygons\":[{\"data\":[[100,100],[1800,100],[1800,1000],[100,1000]]}]}"
        }
      }
    }
  • 云上高密度人群统计作业创建,使用输入源为url,输出为dis。

    POST /v2/{project_id}/services/c-crowdcount-cloud/tasks
    
    {
      "name" : "crowdcount-task",
      "description" : "CrowdCountDetection task test",
      "input" : {
        "type" : "url",
        "data" : [ {
          "url" : "https://obs_test/test.mp4",
          "index" : 0
        } ]
      },
      "output" : {
        "dis" : {
          "stream_name" : "crowdcount"
        }
      },
      "service_version" : "3.0",
      "resource_order_id" : "840a5cf90d4a4bbaa71f251dfe8fe64e",
      "config" : {
        "common" : {
          "banner_detection_sw" : 1,
          "banner_threshold" : "2",
          "alarm_threshold" : "5",
          "sampling_time_interval" : 8,
          "density_sw" : 1,
          "visualization_output_sw" : 1,
          "image_compression_ratio" : 80,
          "target_roi" : "{\"polygons\":[{\"data\":[[100,100],[1800,100],[1800,1000],[100,1000]]}]}"
        }
      }
    }

响应示例

状态码: 200

创建服务作业成功。

{
  "tasks" : [ {
    "id" : "20690c67d71549c39085a3b28c18f24f"
  } ]
}

状态码

状态码

描述

200

创建服务作业成功。

400

请求错误。

500

内部错误。

错误码

请参见错误码

相关文档