空間分析作業
重要
2025 年 3 月 30 日,Azure AI 視覺空間分析將會淘汰。 請在指定的日期之前轉換至 Azure AI 影片索引器 或其他開放原始碼解決方案。 我們鼓勵您更快切換,以取得 Azure AI 影片索引器更豐富的優點。 除了您所使用的熟悉功能之外,以下是 Azure AI 視覺空間分析和 Azure AI 影片索引器之間的快速比較。
功能 | Azure AI 視覺空間分析 | Azure AI Video Indexer |
---|---|---|
Edge 支援 | Yes | Yes |
物件偵測 | 僅限人員與車輛偵測 | 偵測1000個以上的物件 |
音訊/語音處理 | 不支援 | 支援 (包括語音轉譯、翻譯和摘要) 支援 >(包括語音轉譯和情感分析) |
事件偵測和追蹤 | 支援 (追蹤人員和車輛, 事件偵測 ) | Edge 尚不支援。 雲端部分支援。 |
Azure Arc 支援 | 不支援 | 原生支援 |
重點領域 | 使用特製化追蹤進行可視化分析 | 全面分析音訊和視覺內容 |
從現在到 2025 年 3 月 30 日,您可以在指定的日期之前繼續使用 Azure AI 視覺空間分析或轉換至 Azure AI 影片索引器 。 在 2025 年 3 月 30 日之後,將不再支援空間分析容器,並停止處理新的數據流。
空間分析可讓您即時分析攝影機裝置的影片串流。 針對您設定的每個攝影機裝置,空間分析作業會產生傳送至 Azure IoT 中樞執行個體的 JSON 訊息輸出資料流。
空間分析容器會實作下列作業。 您可以在容器的部署資訊清單中設定這些作業。
作業識別碼 | 描述 |
---|---|
cognitiveservices.vision.spatialanalysis-personcount |
計算攝影機視野中指定區域內的人數。 此區域必須由單一攝影機完全涵蓋,才能讓 PersonCount 記錄精確的總數。 發出初始 personCountEvent 事件,然後在計數變更時,發出 personCountEvent 事件。 |
cognitiveservices.vision.spatialanalysis-personcrossingline |
追蹤某個人在攝影機的視野中跨越指定線的時間。 當該人跨越該線並提供方向資訊時,發出 personLineEvent 事件。 |
cognitiveservices.vision.spatialanalysis-personcrossingpolygon |
當某個人員進入或離開指定區域時,會發出 personZoneEnterExitEvent 事件,並針對已穿過區域那端提供方向資訊。 當該人離開區域時,會發出 ppersonZoneDwellTimeEvent,並提供方向資訊,以及使用者在該區域內所花費的毫秒數。 |
cognitiveservices.vision.spatialanalysis-persondistance |
追蹤人員違反最小距離規則的時間。 定期發出 personDistanceEvent 以及每個距離違規的位置。 |
cognitiveservices.vision.spatialanalysis |
一般操作,可以用來執行上述所有案例。 當您想要在相同的攝影機上執行多個案例,或更有效率地使用系統資源 (例如 GPU) 時,此選項會更實用。 |
上述所有作業也適用於 .debug
服務版本 (例如 cognitiveservices.vision.spatialanalysis-personcount.debug
)。 偵錯具有在處理影片畫面時將其視覺化的功能。 您必須在主機電腦上執行 xhost +
,才能將視訊畫面和事件視覺化。
重要
Azure AI 視覺 AI 模型會在影片畫面中偵測並找出是否有人類存在,並輸出人體周圍的週框方塊。 AI 模型不會嘗試探索個人的身分識別或人口統計。
作業參數
以下是每個空間分析作業所需的參數。
作業參數 | 描述 |
---|---|
Operation ID |
上表中的作業識別碼。 |
enabled |
布林值:true 或 false |
VIDEO_URL |
攝影機裝置的 RTSP URL (範例:rtsp://username:password@url )。 空間分析可透過 RTSP、http 或 mp4,支援 H.264 編碼的串流。 您可以使用 AES 加密,將 Video_URL 當作模糊化的 base64 字串值提供,如果影片 URL 經過模糊化,則 KEY_ENV 和 IV_ENV 必須以環境變數的形式提供。 您可以在這裡找到產生金鑰和加密的範例公用程式。 |
VIDEO_SOURCE_ID |
攝影機裝置或影片串流的易記名稱。 這會與事件 JSON 輸出一起傳回。 |
VIDEO_IS_LIVE |
True 表示攝影機裝置;false 表示錄製的影片。 |
VIDEO_DECODE_GPU_INDEX |
要解碼視訊畫面的 GPU。 預設為 0。 應該與其他節點設定中的 gpu_index 相同,例如 DETECTOR_NODE_CONFIG 和 CAMERACALIBRATOR_NODE_CONFIG 。 |
INPUT_VIDEO_WIDTH |
輸入影片/串流的畫面寬度 (例如 1920)。 這是選擇性欄位,如果有提供,畫面將會調整到此尺寸,同時保留外觀比例。 |
DETECTOR_NODE_CONFIG |
JSON,指出對其執行偵測器節點的 GPU。 格式應如下:"{ \"gpu_index\": 0 }", |
TRACKER_NODE_CONFIG |
JSON,指出是否要在追蹤器節點中計算速度。 格式應如下:"{ \"enable_speed\": true }", |
CAMERA_CONFIG |
JSON,指出多個攝影機校正後的攝影機參數。 如果您使用的技能需要校正,且您已擁有攝影機參數,則可以使用此設定來直接提供它們。 格式應如下:"{ \"cameras\": [{\"source_id\": \"endcomputer.0.persondistancegraph.detector+end_computer1\", \"camera_height\": 13.105561256408691, \"camera_focal_length\": 297.60003662109375, \"camera_tiltup_angle\": 0.9738943576812744}] }" ,source_id 用來識別每個攝影機。 其可以從所發佈事件的 source_info 中取得。 只有 do_calibration=false 在 DETECTOR_NODE_CONFIG 中時才會生效。 |
CAMERACALIBRATOR_NODE_CONFIG |
JSON,指出要對其執行攝影機校正器節點的 GPU,以及是否要使用校正。 格式應如下:"{ \"gpu_index\": 0, \"do_calibration\": true, \"enable_orientation\": true}", |
CALIBRATION_CONFIG |
JSON,指出用來控制攝影機校正運作方式的參數。 格式應如下:"{\"enable_recalibration\": true, \"quality_check_frequency_seconds\": 86400}", |
SPACEANALYTICS_CONFIG |
區域和線條的 JSON 設定,如下所述。 |
ENABLE_FACE_MASK_CLASSIFIER |
True 可啟用偵測影片串流中戴口罩的人,False 可將其停用。 此預設為停用狀態。 口罩偵測要求輸入影片寬度參數為 1920 "INPUT_VIDEO_WIDTH": 1920 。 如果偵測到的人沒有面對攝影機或離攝影機太遠,就不會傳回口罩屬性。 如需詳細資訊,請參閱攝影機放置。 |
STATIONARY_TARGET_REMOVER_CONFIG |
該 JSON 指出固定目標移除的參數,而固定目標移除會新增學習和忽略長期固定誤判目標 (例如假人或圖片中的人) 的功能。 設定的格式應該如下:"{\"enable\": true, \"bbox_dist_threshold-in_pixels\": 5, \"buffer_length_in_seconds\": 3600, \"filter_ratio\": 0.2 }" |
偵測器節點參數設定
以下是所有空間分析作業的 DETECTOR_NODE_CONFIG
參數範例。
{
"gpu_index": 0,
"enable_breakpad": false
}
名稱 | 類型 | 描述 |
---|---|---|
gpu_index |
string | 將對其執行此作業的 GPU 索引。 |
enable_breakpad |
bool | 指出是否要啟用 breakpad,這用來產生損毀傾印以供偵錯之用。 預設為 false 。 如果您將其設定為 true ,您也需要在 createOptions 容器的 HostConfig 部分新增 "CapAdd": ["SYS_PTRACE"] 。 根據預設,損毀傾印會上傳至 RealTimePersonTracking AppCenter 應用程式,如果您希望將損毀傾印上傳至您自己的 AppCenter 應用程式,您可以使用應用程式的應用程式密碼覆寫環境變數 RTPT_APPCENTER_APP_SECRET 。 |
攝影機校正節點參數設定
以下是所有空間分析作業的 CAMERACALIBRATOR_NODE_CONFIG
參數範例。
{
"gpu_index": 0,
"do_calibration": true,
"enable_breakpad": false,
"enable_orientation": true
}
名稱 | 類型 | 描述 |
---|---|---|
do_calibration |
string | 表示已開啟校正。 do_calibration 必須為 true,cognitiveservices.vision.spatialanalysis-persondistance 才能正常運作。 do_calibration 預設設為 True 。 |
enable_breakpad |
bool | 指出是否要啟用 breakpad,這用來產生損毀傾印以供偵錯之用。 預設為 false 。 如果您將其設定為 true ,您也需要在 createOptions 容器的 HostConfig 部分新增 "CapAdd": ["SYS_PTRACE"] 。 根據預設,損毀傾印會上傳至 RealTimePersonTracking AppCenter 應用程式,如果您希望將損毀傾印上傳至您自己的 AppCenter 應用程式,您可以使用應用程式的應用程式密碼覆寫環境變數 RTPT_APPCENTER_APP_SECRET 。 |
enable_orientation |
bool | 指出您是否要計算所偵測到人員的方向。 enable_orientation 預設設為 True 。 |
校正設定
這是所有空間分析作業的 CALIBRATION_CONFIG
參數範例。
{
"enable_recalibration": true,
"calibration_quality_check_frequency_seconds": 86400,
"calibration_quality_check_sample_collect_frequency_seconds": 300,
"calibration_quality_check_one_round_sample_collect_num": 10,
"calibration_quality_check_queue_max_size": 1000,
"calibration_event_frequency_seconds": -1
}
名稱 | 類型 | 描述 |
---|---|---|
enable_recalibration |
bool | 指出是否開啟自動重新校正。 預設值為 true 。 |
calibration_quality_check_frequency_seconds |
int | 每次品質檢查以判斷是否需要重新校正之間的秒數下限。 預設為 86400 (24 小時)。 只有在 enable_recalibration=True 時使用。 |
calibration_quality_check_sample_collect_frequency_seconds |
int | 收集新資料樣本以進行重新校正和品質檢查之間的秒數下限。 預設值為 300 (5 分鐘)。 只有在 enable_recalibration=True 時使用。 |
calibration_quality_check_one_round_sample_collect_num |
int | 每回合樣本收集所要收集的新資料樣本數目下限。 預設值為 10 。 只有在 enable_recalibration=True 時使用。 |
calibration_quality_check_queue_max_size |
int | 校正攝影機模型時要儲存的資料樣本數上限。 預設值為 1000 。 只有在 enable_recalibration=True 時使用。 |
calibration_event_frequency_seconds |
int | 攝影機校正事件的輸出頻率 (秒)。 值為 -1 時,表示除非攝影機校正資訊已變更,否則不應傳送攝影機校正。 預設值為 -1 。 |
攝影機校正輸出
以下是攝影機校正輸出的範例 (若已啟用)。 省略符號表示清單中還有更多相同類型的物件。
{
"type": "cameraCalibrationEvent",
"sourceInfo": {
"id": "camera1",
"timestamp": "2021-04-20T21:15:59.100Z",
"width": 512,
"height": 288,
"frameId": 531,
"cameraCalibrationInfo": {
"status": "Calibrated",
"cameraHeight": 13.294151306152344,
"focalLength": 372.0000305175781,
"tiltupAngle": 0.9581864476203918,
"lastCalibratedTime": "2021-04-20T21:15:59.058"
}
},
"zonePlacementInfo": {
"optimalZoneRegion": {
"type": "POLYGON",
"points": [
{
"x": 0.8403755868544601,
"y": 0.5515320334261838
},
{
"x": 0.15805946791862285,
"y": 0.5487465181058496
}
],
"name": "optimal_zone_region"
},
"fairZoneRegion": {
"type": "POLYGON",
"points": [
{
"x": 0.7871674491392802,
"y": 0.7437325905292479
},
{
"x": 0.22065727699530516,
"y": 0.7325905292479109
}
],
"name": "fair_zone_region"
},
"uniformlySpacedPersonBoundingBoxes": [
{
"type": "RECTANGLE",
"points": [
{
"x": 0.0297339593114241,
"y": 0.0807799442896936
},
{
"x": 0.10015649452269171,
"y": 0.2757660167130919
}
]
}
],
"personBoundingBoxGroundPoints": [
{
"x": -22.944068908691406,
"y": 31.487680435180664
}
]
}
}
如需有關 source_info
的詳細資訊,請參閱空間分析作業輸出。
ZonePlacementInfo 欄位名稱 | 類型 | 描述 |
---|---|---|
optimalZonePolygon |
object | 攝影機影像中的多邊形,其中可放置作業的線條或區域以獲得最佳結果。 每個值組都代表多邊形頂點的 x,y。 多邊形表示追蹤或計算人員所在的區域,而多邊形點則是以正規化的坐標 (0-1) 為基礎,其中左上角為 (0.0, 0.0),右下角為 (1.0, 1.0)。 |
fairZonePolygon |
object | 攝影機影像中的多邊形,其中可放置作業的線條或區域以獲得良好但可能不是最佳的結果。 如需內容的深入說明,請參閱上述的 optimalZonePolygon 。 |
uniformlySpacedPersonBoundingBoxes |
清單 | 攝影機影像內人員的周框方塊清單,在真實空間中均勻分佈。 值是以正規化座標 (0-1) 為基礎。 |
personBoundingBoxGroundPoints |
清單 | 地板平面相對於攝影機的座標清單。 每個座標都會對應到 uniformlySpacedPersonBoundingBoxes 中索引相同的周框方塊右下角。 如需有關如何計算地板平面座標的詳細資料,請參閱適用於 cognitiveservices.vision.spatialanalysis-persondistance 的 JSON 格式 AI 見解一節底下的 centerGroundPointX/centerGroundPointY 欄位。 |
在視訊畫面上視覺化的區域放置資訊輸出範例:
區域放置資訊可針對您的設定提供建議,但是仍然必須遵循攝影機設定中的指導方針,才能獲得最佳結果。
追蹤器節點參數設定
您可以透過追蹤器節點參數設定,設定速度計算。
{
"enable_speed": true,
"remove_stationary_objects": true,
"stationary_objects_dist_threshold_in_pixels": 5,
"stationary_objects_buffer_length_in_seconds": 3600,
"stationary_objects_filter_ratio": 0.2
}
名稱 | 類型 | 描述 |
---|---|---|
enable_speed |
bool | 指出您是否要計算所偵測到人員的速度。 enable_speed 預設設為 True 。 強烈建議您同時啟用速度和方向,以獲得最佳的估計值。 |
remove_stationary_objects |
bool | 指出您是否要移除固定物件。 remove_stationary_objects 預設會設定為 True。 |
stationary_objects_dist_threshold_in_pixels |
int | 判斷是否可以將兩個偵測方塊視為相同偵測的鄰近距離閾值。 stationary_objects_dist_threshold_in_pixels 預設設為 5。 |
stationary_objects_buffer_length_in_seconds |
int | 系統必須回溯查看以決定目標是否為固定目標的最低秒數。 stationary_objects_buffer_length_in_seconds 預設設為 3600。 |
stationary_objects_filter_ratio |
float | 如果針對某個目標在相同位置 (定義於 stationary_objects_dist_threshold_in_pixels ) 重複偵測到比 stationary_objects_filter_ratio (0.2 代表 20%) 更大的 stationary_objects_buffer_length_in_seconds 時間間隔,那麼就會將該目標視為固定目標。 stationary_objects_filter_ratio 預設設為 0.2。 |
空間分析作業設定和輸出
personcount 的區域設定
以下是設定區域之 SPACEANALYTICS_CONFIG 參數的 JSON 輸入範例。 您可以為此作業設定多個區域。
{
"zones": [
{
"name": "lobbycamera",
"polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
"events": [
{
"type": "count",
"config": {
"trigger": "event",
"focus": "footprint"
}
}
]
}
]
}
名稱 | 類型 | 描述 |
---|---|---|
zones |
list | 區域清單。 |
name |
string | 此區域的易記名稱。 |
polygon |
清單 | 每個值組都代表多邊形頂點的 x,y。 多邊形代表追蹤或計算人員所在的區域。 多邊形點是以正規化的坐標 (0-1) 為基礎,其中左上角為 (0.0, 0.0),右下角為 (1.0, 1.0)。 |
threshold |
float | 當人在區域內大於此像素數時,就會輸出事件。 這是選擇性的欄位,且值為比例 (0-1)。 例如,影像寬度 = 512 (0.0253 X 512 = ~13) 的視訊上,值 0.0253 將會是 13 像素。 |
type |
string | 針對 cognitiveservices.vision.spatialanalysis-personcount,這應該是 count 。 |
trigger |
string | 傳送事件的觸發程序類型。 支援的值是 event (計數變更時用於傳送事件),或 interval (用於定期傳送事件) (不論計數是否已變更)。 |
output_frequency |
int | 輸出事件的速率。 當 output_frequency = X 時,輸出每個 X 事件,例如 output_frequency = 2 表示輸出其他每個事件。 output_frequency 同時適用於 event 和 interval 。 |
focus |
string | 人員周框方塊內的點位置,用來計算事件。 焦點的值可以是 footprint (人員足跡)、bottom_center (人員周框方塊正下方)、center (人員周框方塊的中心)。 |
personcrossingline 的線條設定
以下是設定線條之 SPACEANALYTICS_CONFIG
參數的 JSON 輸入範例。 您可以為此作業設定多條交叉線。
{
"lines": [
{
"name": "doorcamera",
"line": {
"start": {
"x": 0,
"y": 0.5
},
"end": {
"x": 1,
"y": 0.5
}
},
"events": [
{
"type": "linecrossing",
"config": {
"trigger": "event",
"focus": "footprint"
}
}
]
}
]
}
名稱 | 類型 | 描述 |
---|---|---|
lines |
list | 線條清單。 |
name |
string | 此線條的易記名稱。 |
line |
清單 | 線條的定義。 這是一條方向線,可讓您了解「入口」與「出口」。 |
start |
值組 | 線條起點的 x,y 座標。 浮點值代表頂點相對於左上角的位置。 若要計算絕對 x,y 值,您可以將這些值乘以畫面大小。 |
end |
值組 | 線條終點的 x,y 座標。 浮點值代表頂點相對於左上角的位置。 若要計算絕對 x,y 值,您可以將這些值乘以畫面大小。 |
threshold |
float | 當人在區域內大於此像素數時,就會輸出事件。 這是選擇性的欄位,且值為比例 (0-1)。 例如,影像寬度 = 512 (0.0253 X 512 = ~13) 的視訊上,值 0.0253 將會是 13 像素。 |
type |
string | 針對 cognitiveservices.vision.spatialanalysis-personcrossingline,這應該是 linecrossing 。 |
trigger |
string | 傳送事件的觸發程序類型。 支援的值:"event":有人跨越該線條時引發。 |
focus |
string | 人員周框方塊內的點位置,用來計算事件。 焦點的值可以是 footprint (人員足跡)、bottom_center (人員周框方塊正下方)、center (人員周框方塊的中心)。 預設值為 footprint。 |
personcrossingpolygon 的區域設定
這是設定區域之 SPACEANALYTICS_CONFIG
參數的 JSON 輸入範例。 您可以為此作業設定多個區域。
{
"zones":[
{
"name": "queuecamera",
"polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
"events":[{
"type": "zonecrossing",
"config":{
"trigger": "event",
"focus": "footprint"
}
}]
},
{
"name": "queuecamera1",
"polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
"events":[{
"type": "zonedwelltime",
"config":{
"trigger": "event",
"focus": "footprint"
}
}]
}]
}
名稱 | 類型 | 描述 |
---|---|---|
zones |
list | 區域清單。 |
name |
string | 此區域的易記名稱。 |
polygon |
清單 | 每個值組都代表多邊形頂點的 x,y。 多邊形代表追蹤或計算人員所在的區域。 浮點值代表頂點相對於左上角的位置。 若要計算絕對 x,y 值,您可以將這些值乘以畫面大小。 |
target_side |
int | 指定 polygon 所定義區域的側邊,以測量使用者在區域中面對該側的時間長度。 'dwellTimeForTargetSide' 將會輸出該估計時間。 每一側都是多邊形的兩個頂點之間的編號邊緣,代表您的區域。 例如,多邊形前兩個頂點之間的邊緣代表第一側,'side'=1。 target_side 的值介於 [0,N-1] 之間,其中 N 是 polygon 的側邊數。 這是非必填欄位。 |
threshold |
float | 當人在區域內大於此像素數時,就會輸出事件。 這是選擇性的欄位,且值為比例 (0-1)。 例如,影像寬度 = 512 (0.074 X 512 = ~38) 的視訊上,值 0.074 將會是 38 像素。 |
type |
string | 針對 cognitiveservices.vision.spatialanalysis-personcrossingpolygon,這應該是 zonecrossing 或 zonedwelltime 。 |
trigger |
string | 傳送事件的觸發程序類型 支援的值:"event":有人進入或離開區域時引發。 |
focus |
string | 人員周框方塊內的點位置,用來計算事件。 焦點的值可以是 footprint (人員足跡)、bottom_center (人員周框方塊正下方)、center (人員周框方塊的中心)。 預設值為 footprint。 |
persondistance 的區域設定
這是 SPACEANALYTICS_CONFIG
參數的 JSON 輸入範例,其會設定 cognitiveservices.vision.spatialanalysis-persondistance 的區域。 您可以為此作業設定多個區域。
{
"zones":[{
"name": "lobbycamera",
"polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
"events":[{
"type": "persondistance",
"config":{
"trigger": "event",
"output_frequency":1,
"minimum_distance_threshold":6.0,
"maximum_distance_threshold":35.0,
"aggregation_method": "average",
"focus": "footprint"
}
}]
}]
}
名稱 | 類型 | 描述 |
---|---|---|
zones |
list | 區域清單。 |
name |
string | 此區域的易記名稱。 |
polygon |
清單 | 每個值組都代表多邊形頂點的 x,y。 多邊形代表計算人員所在的區域,以及測量人員之間的距離。 浮點值代表頂點相對於左上角的位置。 若要計算絕對 x,y 值,您可以將這些值乘以畫面大小。 |
threshold |
float | 當人在區域內大於此像素數時,就會輸出事件。 這是選擇性的欄位,且值為比例 (0-1)。 例如,影像寬度 = 512 (0.0253 X 512 = ~13) 的視訊上,值 0.0253 將會是 13 像素。 |
type |
string | 針對 cognitiveservices.vision.spatialanalysis-persondistance,這應該是 persondistance 。 |
trigger |
string | 傳送事件的觸發程序類型。 支援的值是 event (計數變更時用於傳送事件),或 interval (用於定期傳送事件) (不論計數是否已變更)。 |
output_frequency |
int | 輸出事件的速率。 當 output_frequency = X 時,輸出每個 X 事件,例如 output_frequency = 2 表示輸出其他每個事件。 output_frequency 同時適用於 event 和 interval 。 |
minimum_distance_threshold |
float | 當人員小於該距離時,將會觸發 "TooClose" 事件的距離 (以英尺為單位)。 |
maximum_distance_threshold |
float | 當人員大於該距離時,將會觸發 "TooFar" 事件的距離 (以英尺為單位)。 |
aggregation_method |
string | 彙總 persondistance 結果的方法。 aggregation_method 適用於 mode 和 average 。 |
focus |
string | 人員周框方塊內的點位置,用來計算事件。 焦點的值可以是 footprint (人員足跡)、bottom_center (人員周框方塊正下方)、center (人員周框方塊的中心)。 |
spatialanalysis 的設定
以下是 SPACEANALYTICS_CONFIG
的 JSON 輸入範例,其會設定 cognitiveservices.vision.spatialanalysis 的線條和區域。 您可以為此作業設定多個線條/區域,而且每個線條/區域都可以有不同的事件。
{
"lines": [
{
"name": "doorcamera",
"line": {
"start": {
"x": 0,
"y": 0.5
},
"end": {
"x": 1,
"y": 0.5
}
},
"events": [
{
"type": "linecrossing",
"config": {
"trigger": "event",
"focus": "footprint"
}
}
]
}
],
"zones": [
{
"name": "lobbycamera",
"polygon": [[0.3, 0.3],[0.3, 0.9],[0.6, 0.9],[0.6, 0.3],[0.3, 0.3]],
"events": [
{
"type": "persondistance",
"config": {
"trigger": "event",
"output_frequency": 1,
"minimum_distance_threshold": 6.0,
"maximum_distance_threshold": 35.0,
"focus": "footprint"
}
},
{
"type": "count",
"config": {
"trigger": "event",
"output_frequency": 1,
"focus": "footprint"
}
},
{
"type": "zonecrossing",
"config": {
"focus": "footprint"
}
},
{
"type": "zonedwelltime",
"config": {
"focus": "footprint"
}
}
]
}
]
}
攝影機設定
請參閱攝影機放置指南,以深入了解如何設定區域和線條。
空間分析作業輸出
每個作業的事件都會以 JSON 格式輸出到 Azure IoT 中樞。
Personcount AI Insights 的 JSON 格式
此作業針對事件輸出的範例 JSON。
{
"events": [
{
"id": "b013c2059577418caa826844223bb50b",
"type": "personCountEvent",
"detectionIds": [
"bc796b0fc2534bc59f13138af3dd7027",
"60add228e5274158897c135905b5a019"
],
"properties": {
"personCount": 2
},
"zone": "lobbycamera",
"trigger": "event"
}
],
"sourceInfo": {
"id": "camera_id",
"timestamp": "2020-08-24T06:06:57.224Z",
"width": 608,
"height": 342,
"frameId": "1400",
"cameraCalibrationInfo": {
"status": "Calibrated",
"cameraHeight": 10.306597709655762,
"focalLength": 385.3199462890625,
"tiltupAngle": 1.0969393253326416
},
"imagePath": ""
},
"detections": [
{
"type": "person",
"id": "bc796b0fc2534bc59f13138af3dd7027",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.612683747944079,
"y": 0.25340268765276636
},
{
"x": 0.7185954043739721,
"y": 0.6425260577285499
}
]
},
"confidence": 0.9559211134910583,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "0.0",
"groundOrientationAngle": "1.3",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
},
"attributes": [
{
"label": "face_mask",
"confidence": 0.99,
"task": ""
}
]
},
{
"type": "person",
"id": "60add228e5274158897c135905b5a019",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.22326200886776573,
"y": 0.17830915618361087
},
{
"x": 0.34922296122500773,
"y": 0.6297955429344847
}
]
},
"confidence": 0.9389744400978088,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "18.635927200317383",
"groundOrientationAngle": "1.3",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
},
"attributes": [
{
"label": "face_mask",
"confidence": 0.99,
"task": ""
}
]
}
],
"schemaVersion": "2.0"
}
事件欄位名稱 | 類型 | 描述 |
---|---|---|
id |
string | 事件識別碼 |
type |
string | 事件類型 |
detectionsId |
陣列 | 觸發此事件之人員偵測唯一識別碼的陣列大小 1 |
properties |
collection | 值的集合 |
trackinId |
string | 所偵測到人員的唯一識別碼 |
zone |
string | 多邊形的 "name" 欄位,代表穿過的區域 |
trigger |
string | 觸發程序類型為 'event' 或 'interval',端視 SPACEANALYTICS_CONFIG 中的值 trigger 而定 |
偵測欄位名稱 | 類型 | 描述 |
---|---|---|
id |
string | 偵測識別碼 |
type |
string | 偵測類型 |
region |
collection | 值的集合 |
type |
string | 區域類型 |
points |
collection | 當區域類型為 RECTANGLE 時,左上角和右下角的點 |
confidence |
float | 演算法信賴度 |
attributes |
陣列 | 屬性的陣列。 每個屬性都包含標籤、工作和信賴度 |
label |
string | 屬性值 (例如 {label: face_mask} 表示偵測到的人員有戴口罩) |
confidence (attribute) |
float | 介於 0 到 1 的屬性信賴值 (例如 {confidence: 0.9, label: face_nomask} 表示偵測到的人員「沒有」戴口罩) |
task |
string | 屬性分類工作/類別 |
SourceInfo 欄位名稱 | 類型 | 描述 |
---|---|---|
id |
string | 相機識別碼 |
timestamp |
date | 發出 JSON 承載時的 UTC 日期 |
width |
int | 視訊畫面寬度 |
height |
int | 視訊畫面高度 |
frameId |
int | 畫面識別碼 |
cameraCallibrationInfo |
collection | 值的集合 |
status |
string | 校正的狀態,格式為 state[;progress description] 。 狀態可以是 Calibrating 、Recalibrating (若已啟用重新校正) 或 Calibrated 。 進度描述部分只有在處於 Calibrating 和 Recalibrating 狀態時才有效,這是用來顯示目前校正程序的進度。 |
cameraHeight |
float | 攝影機高於地面的高度 (以英尺為單位)。 這是從自動校正推斷而來。 |
focalLength |
float | 攝影機的焦距長度 (以像素為單位)。 這是從自動校正推斷而來。 |
tiltUpAngle |
float | 攝影機從垂直方向傾斜的角度。 這是從自動校正推斷而來。 |
personcrossingline AI Insights 的 JSON 格式
此作業針對偵測輸出的範例 JSON。
{
"events": [
{
"id": "3733eb36935e4d73800a9cf36185d5a2",
"type": "personLineEvent",
"detectionIds": [
"90d55bfc64c54bfd98226697ad8445ca"
],
"properties": {
"trackingId": "90d55bfc64c54bfd98226697ad8445ca",
"status": "CrossLeft"
},
"zone": "doorcamera"
}
],
"sourceInfo": {
"id": "camera_id",
"timestamp": "2020-08-24T06:06:53.261Z",
"width": 608,
"height": 342,
"frameId": "1340",
"imagePath": ""
},
"detections": [
{
"type": "person",
"id": "90d55bfc64c54bfd98226697ad8445ca",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.491627341822574,
"y": 0.2385801348769874
},
{
"x": 0.588894994635331,
"y": 0.6395559924387793
}
]
},
"confidence": 0.9005028605461121,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "18.635927200317383",
"groundOrientationAngle": "1.3",
"trackingId": "90d55bfc64c54bfd98226697ad8445ca",
"speed": "1.2",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
},
"attributes": [
{
"label": "face_mask",
"confidence": 0.99,
"task": ""
}
]
}
],
"schemaVersion": "2.0"
}
事件欄位名稱 | 類型 | 描述 |
---|---|---|
id |
string | 事件識別碼 |
type |
string | 事件類型 |
detectionsId |
陣列 | 觸發此事件之人員偵測唯一識別碼的陣列大小 1 |
properties |
collection | 值的集合 |
trackinId |
string | 所偵測到人員的唯一識別碼 |
status |
string | 線條交叉的方向,也就是 'CrossLeft' 或 'CrossRight'。 方向是以想像站在「起點」面對「終點」為基礎。 CrossRight 是從左向右交叉。 CrossLeft 是從右向左交叉。 |
orientationDirection |
string | 偵測到的人員穿過線條後的方位方向。 值可以是 'Left'、'Right’ 或 'Straight'。 如果 enable_orientation 在 CAMERACALIBRATOR_NODE_CONFIG 中設定為 True ,則此值為輸出 |
zone |
string | 穿過的線條的 "name" 欄位 |
偵測欄位名稱 | 類型 | 描述 |
---|---|---|
id |
string | 偵測識別碼 |
type |
string | 偵測類型 |
region |
collection | 值的集合 |
type |
string | 區域類型 |
points |
collection | 當區域類型為 RECTANGLE 時,左上角和右下角的點 |
groundOrientationAngle |
float | 在推斷的地平面上,人員方向的順時針弧度角度 |
mappedImageOrientation |
float | 在 2D 影像空間上,人員方向的順時針投射弧度角度 |
speed |
float | 偵測到之人員的預估速度。 單位為 foot per second (ft/s) |
confidence |
float | 演算法信賴度 |
attributes |
陣列 | 屬性的陣列。 每個屬性都包含標籤、工作和信賴度 |
label |
string | 屬性值 (例如 {label: face_mask} 表示偵測到的人員有戴口罩) |
confidence (attribute) |
float | 介於 0 到 1 的屬性信賴值 (例如 {confidence: 0.9, label: face_nomask} 表示偵測到的人員「沒有」戴口罩) |
task |
string | 屬性分類工作/類別 |
SourceInfo 欄位名稱 | 類型 | 描述 |
---|---|---|
id |
string | 相機識別碼 |
timestamp |
date | 發出 JSON 承載時的 UTC 日期 |
width |
int | 視訊畫面寬度 |
height |
int | 視訊畫面高度 |
frameId |
int | 畫面識別碼 |
重要
AI 模型可以偵測到人,不論該人是否面向攝影機都能夠偵測到。 AI 模型不會執行臉部辨識,也不會發出任何生物特徵辨識資訊。
personcrossingpolygon AI Insights 的 JSON 格式
此作業針對偵測輸出的 JSON 範例,其 zonecrossing
類型為 SPACEANALYTICS_CONFIG。
{
"events": [
{
"id": "f095d6fe8cfb4ffaa8c934882fb257a5",
"type": "personZoneEnterExitEvent",
"detectionIds": [
"afcc2e2a32a6480288e24381f9c5d00e"
],
"properties": {
"trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
"status": "Enter",
"side": "1"
},
"zone": "queuecamera"
}
],
"sourceInfo": {
"id": "camera_id",
"timestamp": "2020-08-24T06:15:09.680Z",
"width": 608,
"height": 342,
"frameId": "428",
"imagePath": ""
},
"detections": [
{
"type": "person",
"id": "afcc2e2a32a6480288e24381f9c5d00e",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.8135572734631991,
"y": 0.6653949670624315
},
{
"x": 0.9937645761590255,
"y": 0.9925406829655519
}
]
},
"confidence": 0.6267998814582825,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "18.635927200317383",
"groundOrientationAngle": "1.3",
"trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
"speed": "1.2",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
},
"attributes": [
{
"label": "face_mask",
"confidence": 0.99,
"task": ""
}
]
}
],
"schemaVersion": "2.0"
}
此作業針對偵測輸出的 JSON 範例,其 zonedwelltime
類型為 SPACEANALYTICS_CONFIG。
{
"events": [
{
"id": "f095d6fe8cfb4ffaa8c934882fb257a5",
"type": "personZoneDwellTimeEvent",
"detectionIds": [
"afcc2e2a32a6480288e24381f9c5d00e"
],
"properties": {
"trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
"status": "Exit",
"side": "1",
"dwellTime": 7132.0,
"dwellFrames": 20
},
"zone": "queuecamera"
}
],
"sourceInfo": {
"id": "camera_id",
"timestamp": "2020-08-24T06:15:09.680Z",
"width": 608,
"height": 342,
"frameId": "428",
"imagePath": ""
},
"detections": [
{
"type": "person",
"id": "afcc2e2a32a6480288e24381f9c5d00e",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.8135572734631991,
"y": 0.6653949670624315
},
{
"x": 0.9937645761590255,
"y": 0.9925406829655519
}
]
},
"confidence": 0.6267998814582825,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "18.635927200317383",
"groundOrientationAngle": "1.2",
"mappedImageOrientation": "0.3",
"speed": "1.2",
"trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
}
}
],
"schemaVersion": "2.0"
}
事件欄位名稱 | 類型 | 描述 |
---|---|---|
id |
string | 事件識別碼 |
type |
string | 事件類型。 此值可以是 personZoneDwellTimeEvent 或 personZoneEnterExitEvent |
detectionsId |
陣列 | 觸發此事件之人員偵測唯一識別碼的陣列大小 1 |
properties |
collection | 值的集合 |
trackinId |
string | 所偵測到人員的唯一識別碼 |
status |
string | 多邊形交叉的方向,也就是 'Enter' 或 'Exit' |
side |
int | 該人穿過的多邊形的側邊數。 每一側都是多邊形的兩個頂點之間的編號邊緣,代表您的區域。 多邊形前兩個頂點之間的邊緣代表第一側。 當事件因為遮蔽而未與特定側邊相關聯時,'Side' 是空的。 例如,當某個人消失但沒有看到穿過區域的一側時,表示離開;當某個人出現但沒有看到穿過區域的一側時,表示進入。 |
dwellTime |
float | 代表人員在區域中所花費時間的毫秒數。 當事件類型為 personZoneDwellTimeEvent 時,會提供此欄位 |
dwellFrames |
int | 人員在區域中所花費的畫面數目。 當事件類型為 personZoneDwellTimeEvent 時,會提供此欄位 |
dwellTimeForTargetSide |
float | 代表人員在區域中且面向 target_side 所花費時間的毫秒數。 當 enable_orientation 在 CAMERACALIBRATOR_NODE_CONFIG 中為 True ,並在 SPACEANALYTICS_CONFIG 中設定 target_side 的值時,會提供此欄位 |
avgSpeed |
float | 人員在區域中的平均速度。 單位為 foot per second (ft/s) |
minSpeed |
float | 人員在區域中的速度下限。 單位為 foot per second (ft/s) |
zone |
string | 多邊形的 "name" 欄位,代表穿過的區域 |
偵測欄位名稱 | 類型 | 描述 |
---|---|---|
id |
string | 偵測識別碼 |
type |
string | 偵測類型 |
region |
collection | 值的集合 |
type |
string | 區域類型 |
points |
collection | 當區域類型為 RECTANGLE 時,左上角和右下角的點 |
groundOrientationAngle |
float | 在推斷的地平面上,人員方向的順時針弧度角度 |
mappedImageOrientation |
float | 在 2D 影像空間上,人員方向的順時針投射弧度角度 |
speed |
float | 偵測到之人員的預估速度。 單位為 foot per second (ft/s) |
confidence |
float | 演算法信賴度 |
attributes |
陣列 | 屬性的陣列。 每個屬性都包含標籤、工作和信賴度 |
label |
string | 屬性值 (例如 {label: face_mask} 表示偵測到的人員有戴口罩) |
confidence (attribute) |
float | 介於 0 到 1 的屬性信賴值 (例如 {confidence: 0.9, label: face_nomask} 表示偵測到的人員「沒有」戴口罩) |
task |
string | 屬性分類工作/類別 |
個人化 AI 深入解析的 JSON 格式
此作業針對偵測輸出的範例 JSON。
{
"events": [
{
"id": "9c15619926ef417aa93c1faf00717d36",
"type": "personDistanceEvent",
"detectionIds": [
"9037c65fa3b74070869ee5110fcd23ca",
"7ad7f43fd1a64971ae1a30dbeeffc38a"
],
"properties": {
"personCount": 5,
"averageDistance": 20.807043981552123,
"minimumDistanceThreshold": 6.0,
"maximumDistanceThreshold": "Infinity",
"eventName": "TooClose",
"distanceViolationPersonCount": 2
},
"zone": "lobbycamera",
"trigger": "event"
}
],
"sourceInfo": {
"id": "camera_id",
"timestamp": "2020-08-24T06:17:25.309Z",
"width": 608,
"height": 342,
"frameId": "1199",
"cameraCalibrationInfo": {
"status": "Calibrated",
"cameraHeight": 12.9940824508667,
"focalLength": 401.2800598144531,
"tiltupAngle": 1.057669997215271
},
"imagePath": ""
},
"detections": [
{
"type": "person",
"id": "9037c65fa3b74070869ee5110fcd23ca",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.39988183975219727,
"y": 0.2719132942065858
},
{
"x": 0.5051516984638414,
"y": 0.6488402517218339
}
]
},
"confidence": 0.948630690574646,
"metadata": {
"centerGroundPointX": "-1.4638760089874268",
"centerGroundPointY": "18.29732322692871",
"groundOrientationAngle": "1.3",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
}
},
{
"type": "person",
"id": "7ad7f43fd1a64971ae1a30dbeeffc38a",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.5200299714740954,
"y": 0.2875368218672903
},
{
"x": 0.6457497446160567,
"y": 0.6183311060855263
}
]
},
"confidence": 0.8235412240028381,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "18.635927200317383",
"groundOrientationAngle": "1.3",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
}
}
],
"schemaVersion": "2.0"
}
事件欄位名稱 | 類型 | 描述 |
---|---|---|
id |
string | 事件識別碼 |
type |
string | 事件類型 |
detectionsId |
陣列 | 觸發此事件之人員偵測唯一識別碼的陣列大小 1 |
properties |
collection | 值的集合 |
personCount |
int | 發出事件時偵測到的人數 |
averageDistance |
float | 所有偵測到的人之間的平均距離 (以英尺為單位) |
minimumDistanceThreshold |
float | 當人員小於該距離時,將會觸發 "TooClose" 事件的距離 (以英尺為單位)。 |
maximumDistanceThreshold |
float | 當人員大於該距離時,將會觸發 "TooFar" 事件的距離 (以英尺為單位)。 |
eventName |
string | 事件名稱為 TooClose (違反 minimumDistanceThreshold 時)、TooFar (違反 maximumDistanceThreshold 時) 或 unknown (自動校正尚未完成時) |
distanceViolationPersonCount |
int | 偵測到違反 minimumDistanceThreshold 或 maximumDistanceThreshold 的人數 |
zone |
string | 多邊形的 "name" 欄位,代表在人員之間距離受到監視的區域 |
trigger |
string | 觸發程序類型為 'event' 或 'interval',端視 SPACEANALYTICS_CONFIG 中的值 trigger 而定 |
偵測欄位名稱 | 類型 | 描述 |
---|---|---|
id |
string | 偵測識別碼 |
type |
string | 偵測類型 |
region |
collection | 值的集合 |
type |
string | 區域類型 |
points |
collection | 當區域類型為 RECTANGLE 時,左上角和右下角的點 |
confidence |
float | 演算法信賴度 |
centerGroundPointX/centerGroundPointY |
2 個浮點值 | x 、y 值,其中包含人在地面上的推斷位置的座標 (以英尺為單位)。 x 和 y 是地板平面上的座標 (假設地板是水平的)。 攝影機的位置是原點。 |
在 centerGroundPoint
中,x
是攝影機與人之間距離的元件,而該人員會與攝影機影像平面垂直。 y
是與攝影機影像平面平行的距離元件。
在此範例中,centerGroundPoint
是 {centerGroundPointX: 4, centerGroundPointY: 5}
。 這表示有一個人在攝影機前方四英尺,距離右側五英尺,從上往下看著房間。
SourceInfo 欄位名稱 | 類型 | 描述 |
---|---|---|
id |
string | 相機識別碼 |
timestamp |
date | 發出 JSON 承載時的 UTC 日期 |
width |
int | 視訊畫面寬度 |
height |
int | 視訊畫面高度 |
frameId |
int | 畫面識別碼 |
cameraCallibrationInfo |
collection | 值的集合 |
status |
string | 校正的狀態,格式為 state[;progress description] 。 狀態可以是 Calibrating 、Recalibrating (若已啟用重新校正) 或 Calibrated 。 進度描述部分只有在處於 Calibrating 和 Recalibrating 狀態時才有效,這是用來顯示目前校正程序的進度。 |
cameraHeight |
float | 攝影機高於地面的高度 (以英尺為單位)。 這是從自動校正推斷而來。 |
focalLength |
float | 攝影機的焦距長度 (以像素為單位)。 這是從自動校正推斷而來。 |
tiltUpAngle |
float | 攝影機從垂直方向傾斜的角度。 這是從自動校正推斷而來。 |
spatialanalysis AI Insights 的 JSON 格式
此作業的輸出取決於已設定的 events
,例如,如果有一個針對此作業設定的 zonecrossing
事件,則輸出會與 cognitiveservices.vision.spatialanalysis-personcrossingpolygon
相同。
使用容器所產生的輸出
您可以將空間分析偵測或事件整合到您的應用程式中。 以下是要考慮的一些方法:
- 針對您所選擇的程式設計語言使用 Azure 事件中樞 SDK,以連線至 Azure IoT 中樞端點並接收事件。 如需詳細資訊,請參閱從內建端點讀取裝置到雲端的訊息。
- 在您的 Azure IoT 中樞上設定訊息路由,以便將事件傳送至其他端點,或將事件儲存到您的資料儲存體。 如需詳細資訊,請參閱 IoT 中樞訊息路由。
- 設定 Azure 串流分析作業,以便在事件抵達時即時處理這些事件,並建立視覺效果。
大規模部署空間分析作業 (多個攝影機)
為了獲得 GPU 的最佳效能和使用率,您可以使用圖表執行個體,在多個攝影機上部署任何空間分析作業。 以下是在 15 個攝影機上執行 cognitiveservices.vision.spatialanalysis-personcrossingline
作業的範例設定。
"properties.desired": {
"globalSettings": {
"PlatformTelemetryEnabled": false,
"CustomerTelemetryEnabled": true
},
"graphs": {
"personzonelinecrossing": {
"operationId": "cognitiveservices.vision.spatialanalysis-personcrossingline",
"version": 1,
"enabled": true,
"sharedNodes": {
"shared_detector0": {
"node": "PersonCrossingLineGraph.detector",
"parameters": {
"DETECTOR_NODE_CONFIG": "{ \"gpu_index\": 0, \"batch_size\": 7, \"do_calibration\": true}",
}
},
"shared_calibrator0": {
"node": "PersonCrossingLineGraph/cameracalibrator",
"parameters": {
"CAMERACALIBRATOR_NODE_CONFIG": "{ \"gpu_index\": 0, \"do_calibration\": true, \"enable_zone_placement\": true}",
"CALIBRATION_CONFIG": "{\"enable_recalibration\": true, \"quality_check_frequency_seconds\": 86400}",
}
},
"parameters": {
"VIDEO_DECODE_GPU_INDEX": 0,
"VIDEO_IS_LIVE": true
},
"instances": {
"1": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 1>",
"VIDEO_SOURCE_ID": "camera 1",
"SPACEANALYTICS_CONFIG": "{\"zones\":[{\"name\":\"queue\",\"polygon\":[[0,0],[1,0],[0,1],[1,1],[0,0]]}]}"
}
},
"2": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 2>",
"VIDEO_SOURCE_ID": "camera 2",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"3": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 3>",
"VIDEO_SOURCE_ID": "camera 3",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"4": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 4>",
"VIDEO_SOURCE_ID": "camera 4",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"5": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 5>",
"VIDEO_SOURCE_ID": "camera 5",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"6": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 6>",
"VIDEO_SOURCE_ID": "camera 6",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"7": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 7>",
"VIDEO_SOURCE_ID": "camera 7",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"8": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 8>",
"VIDEO_SOURCE_ID": "camera 8",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"9": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 9>",
"VIDEO_SOURCE_ID": "camera 9",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"10": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 10>",
"VIDEO_SOURCE_ID": "camera 10",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"11": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 11>",
"VIDEO_SOURCE_ID": "camera 11",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"12": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 12>",
"VIDEO_SOURCE_ID": "camera 12",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"13": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 13>",
"VIDEO_SOURCE_ID": "camera 13",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"14": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 14>",
"VIDEO_SOURCE_ID": "camera 14",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
},
"15": {
"sharedNodeMap": {
"PersonCrossingLineGraph/detector": "shared_detector0",
"PersonCrossingLineGraph/cameracalibrator": "shared_calibrator0",
},
"parameters": {
"VIDEO_URL": "<Replace RTSP URL for camera 15>",
"VIDEO_SOURCE_ID": "camera 15",
"SPACEANALYTICS_CONFIG": "<Replace the zone config value, same format as above>"
}
}
}
},
}
}
名稱 | 類型 | 描述 |
---|---|---|
batch_size |
int | 如果所有攝影機的解析度都相同,將 batch_size 設定為該作業將使用的攝影機數目,否則,將 batch_size 設定為 1,或將其保留為預設值 (1),表示不支援任何批次處理。 |