Åtgärder för rumslig analys

Med rumslig analys kan du analysera strömmande video i realtid från kameraenheter. För varje kameraenhet som du konfigurerar genererar åtgärderna för rumslig analys en utdataström med JSON-meddelanden som skickas till din instans av Azure IoT Hub.

Containern spatial analys implementerar följande åtgärder:

Åtgärdsidentifierare Description
cognitiveservices.vision.spatialanalysis-personcount Räknar personer i en angiven zon i kamerans visningsfält. Zonen måste vara helt täckt av en enda kamera för att PersonCount ska kunna registrera en korrekt totalsumma.
Sändar en första personCountEvent-händelse och sedan personCountEvent-händelser när antalet ändras.
cognitiveservices.vision.spatialanalysis-personcrossingline Spårar när en person passerar en angiven linje i kamerans visningsfält.
Sändar en personLineEvent-händelse när personen går över linjen och ger riktningsinformation.
cognitiveservices.vision.spatialanalysis-personcrossingpolygon Sändar en personZoneEnterExitEvent-händelse när en person kommer in i eller lämnar zonen och ger riktningsinformation med numrerad sida av zonen som korsades. Skickar ut en personZoneDwellTimeEvent när personen lämnar zonen och ger riktningsinformation samt antalet millisekunder som personen spenderade i zonen.
cognitiveservices.vision.spatialanalysis-persondistance Spårar när personer bryter mot en avståndsregel.
Skickar regelbundet en personDistanceEvent med platsen för varje avståndsöverträdelse.
cognitiveservices.vision.spatialanalysis Allmän åtgärd som kan användas för att köra alla scenarier som nämns ovan. Det här alternativet är mer användbart när du vill köra flera scenarier på samma kamera eller använda systemresurser (t.ex. GPU) mer effektivt.

Alla ovanstående åtgärder är också tillgängliga i -versionen, som har möjlighet att .debug visualisera bildrutorna när de bearbetas. Du måste köra på xhost + värddatorn för att aktivera visualisering av bildrutor och händelser.

Åtgärdsidentifierare Description
cognitiveservices.vision.spatialanalysis-personcount.debug Räknar personer i en angiven zon i kamerans visningsfält.
Sändar en första personCountEvent-händelse och sedan personCountEvent-händelser när antalet ändras.
cognitiveservices.vision.spatialanalysis-personcrossingline.debug Spårar när en person passerar en angiven linje i kamerans visningsfält.
Sändar en personLineEvent-händelse när personen går över linjen och ger riktningsinformation.
cognitiveservices.vision.spatialanalysis-personcrossingpolygon.debug Sändar en personZoneEnterExitEvent-händelse när en person kommer in i eller lämnar zonen och ger riktningsinformation med numrerad sida av zonen som korsades. Skickar ut en personZoneDwellTimeEvent när personen lämnar zonen och ger riktningsinformation samt antalet millisekunder som personen spenderade i zonen.
cognitiveservices.vision.spatialanalysis-persondistance.debug Spårar när personer bryter mot en avståndsregel.
Skickar regelbundet en personDistanceEvent med platsen för varje avståndsöverträdelse.
cognitiveservices.vision.spatialanalysis.debug Allmän åtgärd som kan användas för att köra alla scenarier som nämns ovan. Det här alternativet är mer användbart när du vill köra flera scenarier på samma kamera eller använda systemresurser (t.ex. GPU) mer effektivt.

Rumslig analys kan också köras med Live Video Analytics som video-AI-modul.

Åtgärdsidentifierare Description
cognitiveservices.vision.spatialanalysis-personcount.livevideoanalytics Räknar personer i en angiven zon i kamerans visningsfält.
Sändar en första personCountEvent-händelse och sedan personCountEvent-händelser när antalet ändras.
cognitiveservices.vision.spatialanalysis-personcrossingline.livevideoanalytics Spårar när en person passerar en angiven linje i kamerans visningsfält.
Sändar en personLineEvent-händelse när personen går över linjen och ger riktningsinformation.
cognitiveservices.vision.spatialanalysis-personcrossingpolygon.livevideoanalytics Sändar en personZoneEnterExitEvent-händelse när en person kommer in i eller lämnar zonen och ger riktningsinformation med numrerad sida av zonen som korsades. Skickar ut en personZoneDwellTimeEvent när personen lämnar zonen och ger riktningsinformation samt antalet millisekunder som personen spenderade i zonen.
cognitiveservices.vision.spatialanalysis-persondistance.livevideoanalytics Spårar när personer bryter mot en avståndsregel.
Skickar regelbundet en personDistanceEvent med platsen för varje avståndsöverträdelse.
cognitiveservices.vision.spatialanalysis.livevideoanalytics Allmän åtgärd som kan användas för att köra alla scenarier som nämns ovan. Det här alternativet är mer användbart när du vill köra flera scenarier på samma kamera eller använda systemresurser (t.ex. GPU) mer effektivt.

Live Video Analytics åtgärder är också tillgängliga i versionen .debug (t.ex. cognitiveservices.vision.spatialanalysis-personcount.livevideoanalytics.debug) som har möjlighet att visualisera bildrutorna som bearbetade. Du måste köra på xhost + värddatorn för att aktivera visualiseringen av bildrutor och händelser

Viktigt

AI-modeller för datorseende identifierar och hittar mänsklig närvaro i videosekvenser och -utdata med hjälp av en avgränsare runt en människokropp. AI-modellerna försöker inte identifiera identiteter eller demografi för individer.

Det här är de parametrar som krävs för var och en av dessa åtgärder för rumslig analys.

Åtgärdsparametrar Description
Åtgärds-ID Åtgärdsidentifieraren från tabellen ovan.
enabled Booleskt: sant eller falskt
VIDEO_URL RTSP-URL:en för kameraenheten (exempel: rtsp://username:password@url ). Spatial analys stöder H.264-kodad dataström via RTSP, http eller mp4. Video_URL kan anges som ett fördrövat base64-strängvärde med hjälp av AES-kryptering, och om video-URL:en är fördedd så måste den anges som KEY_ENV IV_ENV miljövariabler. Exempelverktyg för att generera nycklar och kryptering finns här.
VIDEO_SOURCE_ID Ett eget namn för kameraenheten eller videoströmmen. Detta returneras med händelsens JSON-utdata.
VIDEO_IS_LIVE Sant för kameraenheter; falskt för inspelade videor.
VIDEO_DECODE_GPU_INDEX Vilken GPU som ska avkodas för videoramen. Som standard är det 0. Bör vara samma som i gpu_index den andra nodkonfigurationen som DETECTOR_NODE_CONFIG och CAMERACALIBRATOR_NODE_CONFIG .
INPUT_VIDEO_WIDTH Bredd på indatavideo/ström (t.ex. 1920). Det här är ett valfritt fält och om det anges skalas ramen till den här dimensionen samtidigt som bredd–höjd-förhållandet bevaras.
DETECTOR_NODE_CONFIG JSON som anger vilken GPU som detektornoden ska köras på. Det bör ha följande format: "{ \"gpu_index\": 0 }",
TRACKER_NODE_CONFIG JSON som anger om hastigheten ska beräknas i spårarnoden eller inte. Det bör ha följande format: "{ \"enable_speed\": true }",
CAMERA_CONFIG JSON som anger kalibrerade kameraparametrar för flera kameror. Om den kunskap du använde kräver kalibrering och du redan har kameraparametern kan du använda den här config för att ange dem direkt. Ska ha följande format: "{ \"cameras\": [{\"source_id\": \"endcomputer.0.persondistancegraph.detector+end_computer1\", \"camera_height\": 13.105561256408691, \"camera_focal_length\": 297.60003662109375, \"camera_tiltup_angle\": 0.9738943576812744}] }" , används för att identifiera varje source_id kamera. Den kan komma från för source_info den händelse som vi publicerade. Den börjar bara gälla i do_calibration=false DETECTOR_NODE_CONFIG .
CAMERACALIBRATOR_NODE_CONFIG JSON som anger vilken GPU som kamerakameranoden ska köras på och om kalibrering ska användas eller inte. Det bör ha följande format: "{ \"gpu_index\": 0, \"do_calibration\": true, \"enable_orientation\": true}",
CALIBRATION_CONFIG JSON som anger parametrar för att styra hur kamerans kalibrering fungerar. Det bör ha följande format: "{\"enable_recalibration\": true, \"quality_check_frequency_seconds\": 86400}",
SPACEANALYTICS_CONFIG JSON-konfiguration för zon och rad enligt beskrivningen nedan.
ENABLE_FACE_MASK_CLASSIFIER True för att aktivera identifiering av personer som bär ansiktsmasker i videoströmmen, False för att inaktivera det. Som standard är detta inaktiverat. Identifiering av ansiktsmask kräver att parametern för videobredd för indata är 1920 "INPUT_VIDEO_WIDTH": 1920 . Ansiktsmaskattributet returneras inte om identifierade personer inte är riktade mot kameran eller är för långt från det. Mer information finns i guiden för kameraplacering

Inställningar för detektornodparameter

Det här är ett exempel på DETECTOR_NODE_CONFIG parametrar för alla åtgärder för rumslig analys.

{
"gpu_index": 0,
"enable_breakpad": false
}
Namn Typ Description
gpu_index sträng GPU-indexet som åtgärden ska köras på.
enable_breakpad boolesk Anger om du vill aktivera breakpad, som används för att generera en kraschdump för felsökning. Det är false som standard. Om du ställer in den true på måste du också lägga till i delen av "CapAdd": ["SYS_PTRACE"] HostConfig containern createOptions . Som standard laddas kraschdumpen upp till Appen RealTimePersonTracking AppCenter. Om du vill att kraschdumpar ska laddas upp till din egen AppCenter-app kan du åsidosätta miljövariabeln med appens RTPT_APPCENTER_APP_SECRET apphemlighet.

Parameterinställningar för kameraavsnydningsnod

Det här är ett exempel på CAMERACALIBRATOR_NODE_CONFIG parametrarna för alla åtgärder för rumslig analys.

{
  "gpu_index": 0,
  "do_calibration": true,
  "enable_breakpad": false,
  "enable_orientation": true
}
Namn Typ Description
do_calibration sträng Anger att kalibrering är aktiverat. do_calibration måste vara sant för att cognitiveservices.vision.spatialanalysis-persondistance ska fungera korrekt. do_calibration är som standard inställt på True .
enable_breakpad boolesk Anger om du vill aktivera breakpad, som används för att generera en kraschdump för felsökning. Det är false som standard. Om du ställer in den true på måste du också lägga till i delen av "CapAdd": ["SYS_PTRACE"] HostConfig containern createOptions . Som standard laddas kraschdumpen upp till Appen RealTimePersonTracking AppCenter. Om du vill att kraschdumpar ska laddas upp till din egen AppCenter-app kan du åsidosätta miljövariabeln med appens RTPT_APPCENTER_APP_SECRET apphemlighet.
enable_orientation boolesk Anger om du vill beräkna orienteringen för de identifierade personerna eller inte. enable_orientation är som standard inställt på True .

Konfiguration av kalibrering

Det här är ett exempel på CALIBRATION_CONFIG parametrarna för alla åtgärder för rumslig analys.

{
  "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
}
Namn Typ Description
enable_recalibration boolesk Anger om automatisk omcalibrering är aktiverat. Standardvärdet är true.
calibration_quality_check_frequency_seconds int Minsta antal sekunder mellan varje kvalitetskontroll för att avgöra omlibrering krävs eller inte. Standardvärdet 86400 är (24 timmar). Används endast när enable_recalibration=True .
calibration_quality_check_sample_collect_frequency_seconds int Minsta antal sekunder mellan insamling av nya dataprover för omcalibrering och kvalitetskontroll. Standardvärdet 300 är (5 minuter). Används endast när enable_recalibration=True .
calibration_quality_check_one_round_sample_collect_num int Minsta antal nya dataexempel som ska samlas in per omgång av urvalssamlingen. Standardvärdet är 10. Används endast när enable_recalibration=True .
calibration_quality_check_queue_max_size int Maximalt antal dataexempel som ska lagras när kameramodellen kalibreras. Standardvärdet är 1000. Används endast när enable_recalibration=True .
calibration_event_frequency_seconds int Utdatafrekvens (sekunder) för kameraövervakningshändelser. Värdet anger att -1 kamerans kalibrering inte ska skickas om inte kameraövervakningsinformationen har ändrats. Standardvärdet är -1.

Kalibreringsutdata för kamera

Det här är ett exempel på utdata från kamerans kalibrering om det är aktiverat. Ellipser visar fler av samma typ av objekt i en lista.

{
  "type": "cameraCalibrationEvent",
  "sourceInfo": {
    "id": "camera1",
    "timestamp": "2021-04-20T21:15:59.100Z",
    "width": 640,
    "height": 360,
    "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
      },
      ...
    ]
  }
}

Mer information om finns i Utdata för rumslig source_info analysåtgärd.

Fältnamn för ZonePlacementInfo Typ Description
optimalZonePolygon objekt En polygon i kamerabilden där linjer eller zoner för dina åtgärder kan placeras för optimala resultat.
Varje värdepar representerar x,y för hörn i en polygon. Polygonen representerar de områden där personer spåras eller räknas och polygonpunkterna baseras på normaliserade koordinater (0–1), där det övre vänstra hörnet är (0,0, 0,0) och det nedre högra hörnet är (1.0, 1.0).
fairZonePolygon objekt En polygon i kamerabilden där linjer eller zoner för dina åtgärder kan placeras för bra, men eventuellt inte optimala, resultat.
Se optimalZonePolygon ovan för en detaljerad förklaring av innehållet.
uniformlySpacedPersonBoundingBoxes lista En lista över avgränsade rutor med personer i kamerabilden som distribueras enhetligt i det verkliga utrymmet. Värdena baseras på normaliserade koordinater (0–1).
personBoundingBoxGroundPoints lista En lista över koordinaterna på golvplanet i förhållande till kameran. Varje koordinat motsvarar det nedre högra hörnet i markeringsrutan uniformlySpacedPersonBoundingBoxes i med samma index.
I fältet centerGroundPoint under avsnittet JSON-format för cognitiveservices.vision.spatialanalysis-persondistance AI Insights finns mer information om hur koordinaterna på golvplanet beräknas.

Exempel på utdata för zonplaceringsinformation visualiserade på en videoram: Visualisering  av zonplaceringsinformation

Informationen om zonplacering ger förslag på dina konfigurationer, men riktlinjerna i Kamerakonfiguration måste ändå följas för bästa resultat.

Hastighetsparameterinställningar

Du kan konfigurera hastighetsberäkningen via parameterinställningarna för spårarnoden.

{
"enable_speed": true,
}
Namn Typ Description
enable_speed boolesk Anger om du vill beräkna hastigheten för de identifierade personerna eller inte. enable_speed är som standard inställt på True . Vi rekommenderar starkt att du aktiverar både hastighet och orientering för att få bästa uppskattade värden.

Konfiguration och utdata för åtgärder för rumslig analys

Zonkonfiguration för cognitiveservices.vision.spatialanalysis-personcount

Det här är ett exempel på JSON-indata för SPACEANALYTICS_CONFIG som konfigurerar en zon. Du kan konfigurera flera zoner för den här åtgärden.

{
  "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",
            "threshold": 16.00,
            "focus": "footprint"
          }
        }
      ]
    }
  ]
}
Namn Typ Description
zones lista Lista över zoner.
name sträng Eget namn för den här zonen.
polygon lista Varje värdepar representerar x,y för hörn i en polygon. Polygonen representerar de områden där personer spåras eller räknas och polygonpunkter baseras på normaliserade koordinater (0–1), där det övre vänstra hörnet är (0,0, 0,0) och det nedre högra hörnet är (1.0, 1.0).
threshold flyt Händelser utgående när personen är större än det här antalet bildpunkter i zonen.
type sträng För cognitiveservices.vision.spatialanalysis-personcount ska detta vara count .
trigger sträng Typ av utlösare för att skicka en händelse. Värden som stöds är för att skicka händelser när antalet ändras eller för att skicka händelser med event interval jämna mellanrum, oavsett om antalet har ändrats eller inte.
output_frequency int Den hastighet med vilken händelser utgående. När output_frequency = X, utgående varje X-händelse, t.ex. output_frequency = 2 innebär att alla andra händelser är utdata. output_frequencygäller för både och event interval .
focus sträng Punktplatsen i personens begränsningsruta som används för att beräkna händelser. Fokusvärdet kan vara (fotavtrycket för personen), (det nedre mitten av personens begränsningsruta) (mitten av footprint bottom_center center personens begränsningsruta).

Linjekonfiguration för cognitiveservices.vision.spatialanalysis-personcrossingline

Det här är ett exempel på JSON-indata för SPACEANALYTICS_CONFIG som konfigurerar en rad. Du kan konfigurera flera korsande linjer för den här åtgärden.

{
   "lines": [
       {
           "name": "doorcamera",
           "line": {
               "start": {
                   "x": 0,
                   "y": 0.5
               },
               "end": {
                   "x": 1,
                   "y": 0.5
               }
           },
           "events": [
               {
                   "type": "linecrossing",
                   "config": {
                       "trigger": "event",
                       "threshold": 16.00,
                       "focus": "footprint"
                   }
               }
           ]
       }
   ]
}
Namn Typ Description
lines lista Lista med rader.
name sträng Eget namn för den här raden.
line lista Definitionen av raden. Det här är en riktningslinje som gör att du kan förstå "entry" kontra "exit".
start värdepar x, y-koordinater för linjens startpunkt. Flyttalsvärdena representerar positionen för hörnet i förhållande till det övre vänstra hörnet. Om du vill beräkna de absoluta x- och y-värdena multiplicerar du dessa värden med ramstorleken.
end värdepar x, y koordinater för linjens slutpunkt. Flyttalsvärdena representerar positionen för hörnet i förhållande till det övre vänstra hörnet. Om du vill beräkna de absoluta x- och y-värdena multiplicerar du dessa värden med ramstorleken.
threshold flyt Händelser utgående när personen är större än det här antalet bildpunkter i zonen. Standardvärdet är 16. Det här är det rekommenderade värdet för att uppnå maximal noggrannhet.
type sträng För cognitiveservices.vision.spatialanalysis-personcrossingline bör detta vara linecrossing .
trigger sträng Typ av utlösare för att skicka en händelse.
Värden som stöds: "event": fire when someone crosses the line.
focus sträng Punktplatsen i personens begränsningsruta som används för att beräkna händelser. Fokusvärdet kan vara (fotavtrycket för personen), (det nedre mitten av personens begränsningsruta) (mitten av footprint bottom_center center personens begränsningsruta). Standardvärdet är fotavtryck.

Zonkonfiguration för cognitiveservices.vision.spatialanalysis-personcrossingpolygon

Det här är ett exempel på JSON-indata för SPACEANALYTICS_CONFIG som konfigurerar en zon. Du kan konfigurera flera zoner för den här åtgärden.

{
"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",
               "threshold": 48.00,
               "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",
               "threshold": 16.00,
               "focus": "footprint"
               }
           }]
   }]
}
Namn Typ Description
zones lista Lista över zoner.
name sträng Eget namn för den här zonen.
polygon lista Varje värdepar representerar x,y för polygonhörn. Polygonen representerar de områden där personer spåras eller räknas. Flyttalsvärdena representerar positionen för hörnet i förhållande till det övre vänstra hörnet. Om du vill beräkna de absoluta x- och y-värdena multiplicerar du dessa värden med ramstorleken.
target_side int Anger en sida av zonen som definieras av polygon för att mäta hur länge personer ställs inför den sidan i zonen. "outputTimeForTargetSide" matar ut den uppskattade tiden. Varje sida är en numrerad kant mellan de två hörnen i polygonen som representerar din zon. Till exempel representerar kanten mellan de två första hörnen i polygonen den första sidan, "side"=1. Värdet för target_side är mellan där är antalet sidor av [0,N-1] N polygon . Detta är ett valfritt fält.
threshold flyt Händelser utgående när personen är större än det här antalet bildpunkter i zonen. Standardvärdet är 48 när typen är zonecrossing och 16 när tid är Förtid. Det här är de rekommenderade värdena för att uppnå maximal noggrannhet.
type sträng För cognitiveservices.vision.spatialanalysis-personcrossingpolygon bör detta vara zonecrossing eller zonedwelltime .
trigger sträng Typ av utlösare för att skicka en händelse
Värden som stöds: "event": fire when someone enters or exits the zone.: fire when someone enters or exits the zone.
focus sträng Punktplatsen i personens begränsningsruta som används för att beräkna händelser. Fokusvärdet kan vara (fotavtrycket för personen), (det nedre mitten av personens footprint bottom_center begränsningsruta) (mitten av center personens begränsningsruta). Standardvärdet är fotavtryck.

Zonkonfiguration för cognitiveservices.vision.spatialanalysis-persondistance

Det här är ett exempel på en JSON-indata för SPACEANALYTICS_CONFIG-parametern som konfigurerar en zon för cognitiveservices.vision.spatialanalysis-persondistance. Du kan konfigurera flera zoner för den här åtgärden.

{
"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"
           "threshold": 16.00,
           "focus": "footprint"
                   }
          }]
   }]
}
Namn Typ Description
zones lista Lista över zoner.
name sträng Eget namn för den här zonen.
polygon lista Varje värdepar representerar x,y för polygonhörn. Polygonen representerar de områden där människor räknas och avståndet mellan människor mäts. Flyttalsvärdena representerar positionen för hörnet i förhållande till det övre vänstra hörnet. Om du vill beräkna de absoluta x- och y-värdena multiplicerar du dessa värden med ramstorleken.
threshold flyt Händelser utgående när personen är större än det här antalet bildpunkter i zonen.
type sträng För cognitiveservices.vision.spatialanalysis-persondistance bör detta vara persondistance .
trigger sträng Typ av utlösare för att skicka en händelse. Värden som stöds är för att skicka händelser när antalet ändras eller för att skicka händelser med event interval jämna mellanrum, oavsett om antalet har ändrats eller inte.
output_frequency int Den hastighet med vilken händelser utgående. När output_frequency = X, utgående varje X-händelse, t.ex. output_frequency = 2 innebär att alla andra händelser är utdata. output_frequencygäller för både och event interval .
minimum_distance_threshold flyt Ett avstånd i fot som utlöser en "TooClose"-händelse när personer är mindre än avståndet.
maximum_distance_threshold flyt Ett avstånd i fot som utlöser en "TooFar"-händelse när personer är större än avståndet.
aggregation_method sträng Metoden för aggregerat persondistance-resultat. Den aggregation_method gäller för både mode och average .
focus sträng Punktplatsen i personens begränsningsruta som används för att beräkna händelser. Fokusvärdet kan vara (fotavtrycket för personen), (det nedre mitten av personens footprint bottom_center begränsningsruta) (mitten av center personens begränsningsruta).

Konfiguration för cognitiveservices.vision.spatialanalysis

Det här är ett exempel på en JSON-indata för SPACEANALYTICS_CONFIG-parametern som konfigurerar en linje och zon för cognitiveservices.vision.spatialanalysis. Du kan konfigurera flera rader/zoner för den här åtgärden och varje rad/zon kan ha olika händelser.

{
  "lines": [
    {
      "name": "doorcamera",
      "line": {
        "start": {
          "x": 0,
          "y": 0.5
        },
        "end": {
          "x": 1,
          "y": 0.5
        }
      },
      "events": [
        {
          "type": "linecrossing",
          "config": {
            "trigger": "event",
            "threshold": 16.00,
            "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,
            "threshold": 16.00,
            "focus": "footprint"
          }
        },
        {
          "type": "count",
          "config": {
            "trigger": "event",
            "output_frequency": 1,
            "threshold": 16.00,
            "focus": "footprint"
          }
        },
        {
          "type": "zonecrossing",
          "config": {
            "threshold": 48.00,
            "focus": "footprint"
          }
        },
        {
          "type": "zonedwelltime",
          "config": {
            "threshold": 16.00,
            "focus": "footprint"
          }
        }
      ]
    }
  ]
}

Kamerakonfiguration

I riktlinjerna för kameraplacering kan du läsa mer om hur du konfigurerar zoner och linjer.

Åtgärdsutdata för rumslig analys

Händelserna från varje åtgärd utgående till Azure IoT Hub JSON-format.

JSON-format för cognitiveservices.vision.spatialanalysis-personcount AI Insights

Exempel på JSON för en händelseutdata med den här åtgärden.

{
    "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,
            "centerGroundPoint": {
                "x": 0.0,
                "y": 0.0
            },
            "metadata": {
            "attributes": {
                "face_mask": 0.99
            }
        }
        },
        {
            "type": "person",
            "id": "60add228e5274158897c135905b5a019",
            "region": {
                "type": "RECTANGLE",
                "points": [
                    {
                        "x": 0.22326200886776573,
                        "y": 0.17830915618361087
                    },
                    {
                        "x": 0.34922296122500773,
                        "y": 0.6297955429344847
                    }
                ]
            },
            "confidence": 0.9389744400978088,
            "centerGroundPoint": {
                "x": 0.0,
                "y": 0.0
            },
            "metadata":{
            "attributes": {
            "face_nomask": 0.99
            }
            }
       }
    ],
    "schemaVersion": "1.0"
}
Namn på händelsefält Typ Description
id sträng Händelse-ID
type sträng Händelsetyp
detectionsId matris Matris med storlek 1 med unik identifierare för den personidentifiering som utlöste händelsen
properties samling Samling med värden
trackinId sträng Unik identifierare för den person som har identifierats
zone sträng Fältet "namn" för polygonen som representerar den zon som korsades
trigger sträng Utlösartypen är "event" eller "interval" beroende på värdet för trigger i SPACEANALYTICS_CONFIG
Namn på identifieringsfält Typ Description
id sträng Identifierings-ID
type sträng Identifieringstyp
region samling Samling med värden
type sträng Typ av region
points samling Övre vänstra och nedre högra hörnet när regiontypen är REKTANGEL
confidence flyt Algoritmförtroende
face_mask flyt Attributets konfidensvärde med intervallet (0–1) anger att den identifierade personen använder en ansiktsmask
face_nomask flyt Attributets konfidensvärde med intervallet (0–1) anger att den identifierade personen inte använder en ansiktsmask
SourceInfo-fältnamn Typ Description
id sträng Kamera-ID
timestamp date UTC-datum då JSON-nyttolasten släpptes
width int Bredd på videoram
height int Höjd på videoram
frameId int Bildruteidentifierare
cameraCallibrationInfo samling Samling med värden
status sträng Status för kalibreringen i formatet state[;progress description] . Tillståndet kan vara Calibrating , Recalibrating (om omcalibration är aktiverat) eller Calibrated . Förloppsbeskrivningsdelen är endast giltig när den är i tillståndet och , som Calibrating används för att visa Recalibrating förloppet för den aktuella kalibreringsprocessen.
cameraHeight flyt Höjden på kameran ovanför marken i fot. Detta här härledas från automatisk kalibrering.
focalLength flyt Kamerans fokuslängd i bildpunkter. Detta här härledas från automatisk kalibrering.
tiltUpAngle flyt Kamerans lutningsvinkel från vertikal. Detta här härledas från automatisk kalibrering.

JSON-format för cognitiveservices.vision.spatialanalysis-personcrossingline AI Insights

JSON-exempel för identifieringar som matas ut av den här åtgärden.

{
    "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": {
            "attributes": {
                "face_mask": 0.99
            }
        }
        }
    ],
    "schemaVersion": "1.0"
}
Namn på händelsefält Typ Description
id sträng Händelse-ID
type sträng Händelsetyp
detectionsId matris Matris med storlek 1 med unik identifierare för den personidentifiering som utlöste händelsen
properties samling Samling med värden
trackinId sträng Unik identifierare för den person som har identifierats
status sträng Riktning för linjekorsningar, antingen "CrossLeft" eller "CrossRight". Riktningen baseras på att du föreställer dig att den står vid "start"-radens "slut". CrossRight går från vänster till höger. CrossLeft passerar från höger till vänster.
orientationDirection sträng Orienteringsriktningen för den identifierade personen efter att ha korsat linjen. Värdet kan vara "Left", "Right" eller "Straight". Det här värdet är utdata enable_orientation om har angetts True till i CAMERACALIBRATOR_NODE_CONFIG
zone sträng Fältet "namn" på den rad som korsades
Namn på identifieringsfält Typ Description
id sträng Identifierings-ID
type sträng Identifieringstyp
region samling Samling med värden
type sträng Typ av region
points samling Övre vänstra och nedre högra hörnet när regiontypen är REKTANGEL
groundOrientationAngle flyt Den medurs radianska vinkeln för personens orientering på det härledde markplanet
mappedImageOrientation flyt Den projicerade medurs radianska vinkeln för personens orientering på 2D-bildutrymmet
speed flyt Uppskattad hastighet för den identifierade personen. Enheten är foot per second (ft/s)
confidence flyt Algoritmförtroende
face_mask flyt Attributets konfidensvärde med intervallet (0–1) anger att den identifierade personen använder en ansiktsmask
face_nomask flyt Attributets konfidensvärde med intervallet (0–1) anger att den identifierade personen inte använder en ansiktsmask
SourceInfo-fältnamn Typ Description
id sträng Kamera-ID
timestamp date UTC-datum då JSON-nyttolasten släpptes
width int Bredd på videoram
height int Höjd på videoram
frameId int Bildruteidentifierare

Viktigt

AI-modellen identifierar en person oavsett om personen är riktad mot eller bort från kameran. AI-modellen kör inte ansiktsigenkänning och ger ingen biometrisk information.

JSON-format för cognitiveservices.vision.spatialanalysis-personcrossingpolygon AI Insights

JSON-exempel för identifieringar av utdata från den här åtgärden zonecrossing med typen 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": {
        "attributes": {
        "face_mask": 0.99
        }
        }
           
        }
    ],
    "schemaVersion": "1.0"
}

JSON-exempel för identifieringar av utdata från den här åtgärden zonedwelltime med typen 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,
            "metadataType": "",
             "metadata": { 
                     "groundOrientationAngle": 1.2,
                     "mappedImageOrientation": 0.3,
                     "speed": 1.2
               },
        }
    ],
    "schemaVersion": "1.0"
}
Namn på händelsefält Typ Description
id sträng Händelse-ID
type sträng Händelsetyp. Värdet kan vara antingen personZoneDwellTimeEvent eller personZoneEnterExitEvent
detectionsId matris Matris med storlek 1 med unik identifierare för den personidentifiering som utlöste händelsen
properties samling Samling med värden
trackinId sträng Unik identifierare för den person som har identifierats
status sträng Riktningen för polygonkorsningar, antingen "Retur" eller "Avsluta"
side int Antalet på sidan av polygonen som personen korsade. Varje sida är en numrerad kant mellan de två hörnen i polygonen som representerar din zon. Kanten mellan de två första hörnen i polygonen representerar den första sidan. "Sida" är tom när händelsen inte är associerad med en specifik sida på grund av ocklusion. Till exempel inträffade en avslut när en person försvinner men inte sågs korsa en sida av zonen, eller när en retur inträffade när en person uppstod i zonen men inte sågs korsa en sida.
dwellTime flyt Antalet millisekunder som representerar den tid som personen spenderade i zonen. Det här fältet anges när händelsetypen är personZoneDwellTimeEvent
dwellFrames int Antalet bildrutor som personen har använt i zonen. Det här fältet anges när händelsetypen är personZoneDwellTimeEvent
dwellTimeForTargetSide flyt Antalet millisekunder som representerar den tid som personen spenderade i zonen och som var riktad mot target_side . Det här fältet anges enable_orientation när är i och värdet för anges True CAMERACALIBRATOR_NODE_CONFIG target_side i SPACEANALYTICS_CONFIG
avgSpeed flyt Den genomsnittliga hastigheten för personen i zonen. Enheten är foot per second (ft/s)
minSpeed flyt Den lägsta hastigheten för personen i zonen. Enheten är foot per second (ft/s)
zone sträng Fältet "namn" för polygonen som representerar den zon som korsades
Fältnamn för identifieringar Typ Description
id sträng Identifierings-ID
type sträng Identifieringstyp
region samling Samling värden
type sträng Typ av region
points samling Övre vänstra och nedre högra punkter när regiontypen är REKTANGEL
groundOrientationAngle flyt Den medurs radianska vinkeln för personens orientering på det härledde markplanet
mappedImageOrientation flyt Den projicerade medurs radianska vinkeln för personens orientering i 2D-bildutrymmet
speed flyt Uppskattad hastighet för den identifierade personen. Enheten är foot per second (ft/s)
confidence flyt Algoritmförtroende
face_mask flyt Attributets konfidensvärde med intervall (0–1) anger att den identifierade personen använder en ansiktsmask
face_nomask flyt Attributets konfidensvärde med intervall (0–1) anger att den identifierade personen inte använder en ansiktsmask

JSON-format för cognitiveservices.vision.spatialanalysis-persondistance AI Insights

JSON-exempel för identifieringar av utdata med den här åtgärden.

{
    "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,
            "centerGroundPoint": {
                "x": -1.4638760089874268,
                "y": 18.29732322692871
            },
            "metadataType": ""
        },
        {
            "type": "person",
            "id": "7ad7f43fd1a64971ae1a30dbeeffc38a",
            "region": {
                "type": "RECTANGLE",
                "points": [
                    {
                        "x": 0.5200299714740954,
                        "y": 0.2875368218672903
                    },
                    {
                        "x": 0.6457497446160567,
                        "y": 0.6183311060855263
                    }
                ]
            },
            "confidence": 0.8235412240028381,
            "centerGroundPoint": {
                "x": 2.6310102939605713,
                "y": 18.635927200317383
            },
            "metadataType": ""
        }
    ],
    "schemaVersion": "1.0"
}
Namn på händelsefält Typ Description
id sträng Händelse-ID
type sträng Händelsetyp
detectionsId matris Matris med storlek 1 med unik identifierare för den personidentifiering som utlöste händelsen
properties samling Samling värden
personCount int Antal personer som identifierades när händelsen utges
averageDistance flyt Det genomsnittliga avståndet mellan alla identifierade personer i fot
minimumDistanceThreshold flyt Avståndet i fot som utlöser en "TooClose"-händelse när personer är mindre än avståndet ifrån varandra.
maximumDistanceThreshold flyt Avståndet i fot som utlöser en "TooFar"-händelse när personer är större än avståndet ifrån varandra.
eventName sträng Händelsenamnet TooClose är med minimumDistanceThreshold är överträdt, TooFar när det maximumDistanceThreshold överträds eller unknown när automatisk kalibrering inte har slutförts
distanceViolationPersonCount int Antal personer som har identifierats i brott mot minimumDistanceThreshold eller maximumDistanceThreshold
zone sträng Fältet "namn" för polygonen som representerar zonen som övervakades för att ta avstånd mellan personer
trigger sträng Utlösartypen är "event" eller "interval" beroende på värdet trigger för i SPACEANALYTICS_CONFIG
Fältnamn för identifieringar Typ Description
id sträng Identifierings-ID
type sträng Identifieringstyp
region samling Samling värden
type sträng Typ av region
points samling Övre vänstra och nedre högra punkter när regiontypen är REKTANGEL
confidence flyt Algoritmförtroende
centerGroundPoint 2 flyttalsvärden x, y värden med koordinaterna för personens härdade plats på marken i fot. x och y är koordinater på golvplanet, förutsatt att golvnivån är nivå. Kamerans plats är ursprunget.

Vid beräkning är avståndet från kameran till personen längs en linje som är beroende av centerGroundPoint x kamerans bildplan. y är avståndet från kameran till personen längs en linje parallellt med kamerans bildplan.

Exempel på mittpunkt

I det här exemplet centerGroundPoint är {x: 4, y: 5} . Det innebär att det finns en person 4 meter från kameran och 5 fot till höger som tittar på rummet uppifrån och ned.

SourceInfo-fältnamn Typ Description
id sträng Kamera-ID
timestamp date UTC-datum då JSON-nyttolasten släpptes
width int Bredd på videoram
height int Höjd på videoram
frameId int Bildruteidentifierare
cameraCallibrationInfo samling Samling med värden
status sträng Status för kalibreringen i formatet state[;progress description] . Tillståndet kan vara Calibrating , Recalibrating (om omcalibration är aktiverat) eller Calibrated . Förloppsbeskrivningsdelen är endast giltig när den är i tillståndet och , som Calibrating används för att visa Recalibrating förloppet för den aktuella kalibreringsprocessen.
cameraHeight flyt Höjden på kameran ovanför marken i fot. Detta här härledas från automatisk kalibrering.
focalLength flyt Kamerans fokuslängd i bildpunkter. Detta här härledas från automatisk kalibrering.
tiltUpAngle flyt Kamerans lutningsvinkel från vertikal. Detta här härledas från automatisk kalibrering.

JSON-format för cognitiveservices.vision.spatialanalysis AI Insights

Utdata för den här åtgärden beror på konfigurerad , till exempel om det finns en händelse som konfigurerats för den här åtgärden kommer utdata events att vara samma som zonecrossing cognitiveservices.vision.spatialanalysis-personcrossingpolygon .

Använda de utdata som genereras av containern

Du kanske vill integrera identifiering eller händelser för rumslig analys i ditt program. Här är några metoder att tänka på:

  • Använd Azure Event Hub SDK för ditt valda programmeringsspråk för att ansluta Azure IoT Hub slutpunkten och ta emot händelserna. Mer information finns i Läsa meddelanden från enhet till moln från den inbyggda slutpunkten.
  • Konfigurera Meddelanderoutning på din Azure IoT Hub att skicka händelserna till andra slutpunkter eller spara händelserna i datalagringen. Mer IoT Hub finns i IoT Hub routning av meddelanden.
  • Konfigurera ett Azure Stream Analytics att bearbeta händelserna i realtid när de tas emot och skapa visualiseringar.

Distribuera åtgärder för rumslig analys i stor skala (flera kameror)

För att få bästa prestanda och användning av GPU:erna kan du distribuera alla åtgärder för rumslig analys på flera kameror med hjälp av grafinstanser. Nedan visas ett exempel för att köra cognitiveservices.vision.spatialanalysis-personcrossingline åtgärden på 15 kameror.

  "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>"
                }
            }
          }
        },
      }
  }
Namn Typ Description
batch_size int Om alla kameror har samma upplösning anger du till antalet kameror som ska användas i åtgärden. Annars anger du till 1 eller lämnar det som standard batch_size (1), vilket indikerar att ingen batch_size batch stöds.

Nästa steg