Bewerkingen voor ruimtelijke analyse
Ruimtelijke analyse maakt het mogelijk om realtime streamingvideo van cameraapparaten te analyseren. Voor elk cameraapparaat dat u configureert, genereren de bewerkingen voor ruimtelijke analyse een uitvoerstroom van JSON-berichten die worden verzonden naar uw exemplaar van Azure IoT Hub.
De container Ruimtelijke analyse implementeert de volgende bewerkingen:
| Bewerkings-id | Description |
|---|---|
| cognitiveservices.vision.spatialanalysis-personcount | Telt personen in een aangewezen zone in het gezichtsveld van de camera. De zone moet volledig worden gedekt door één camera, zodat PersonCount een nauwkeurig totaal kan opnemen. Stuurt een eerste personCountEvent-gebeurtenis en vervolgens personCountEvent-gebeurtenissen wanneer het aantal verandert. |
| cognitiveservices.vision.spatialanalysis-personcrossingline | Houdt bij wanneer een persoon een aangewezen lijn in het gezichtsveld van de camera passeert. Stuurt een personLineEvent-gebeurtenis wanneer de persoon de lijn passeert en directionele informatie verstrekt. |
| cognitiveservices.vision.spatialanalysis-personcrossingpolygon | Stuurt een personZoneEnterExitEvent-gebeurtenis wanneer een persoon de zone binnenkomt of verlaat en geeft directionele informatie met de genummerde kant van de zone die is kruist. Er wordt een personZoneDwellTimeEvent uitgegeven wanneer de persoon de zone verlaat en directionele informatie biedt, evenals het aantal milliseconden dat de persoon in de zone heeft besteed. |
| cognitiveservices.vision.spatialanalysis-persondistance | Houdt bij wanneer mensen een afstandsregel schenden. Er wordt periodiek een personDistanceEvent met de locatie van elke schending van de afstand. |
| cognitiveservices.vision.spatialanalysis | Algemene bewerking die kan worden gebruikt om alle hierboven genoemde scenario's uit te voeren. Deze optie is handiger wanneer u meerdere scenario's op dezelfde camera wilt uitvoeren of systeembronnen (bijvoorbeeld GPU) efficiënter wilt gebruiken. |
Alle bovenstaande bewerkingen zijn ook beschikbaar in de versie, die de mogelijkheid hebben om de videoframes te visualiseren .debug terwijl ze worden verwerkt. U moet uitvoeren op de xhost + hostcomputer om de visualisatie van videoframes en gebeurtenissen in te kunnen stellen.
| Bewerkings-id | Description |
|---|---|
| cognitiveservices.vision.spatialanalysis-personcount.debug | Telt personen in een aangewezen zone in het gezichtsveld van de camera. Stuurt een eerste personCountEvent-gebeurtenis en vervolgens personCountEvent-gebeurtenissen wanneer het aantal verandert. |
| cognitiveservices.vision.spatialanalysis-personcrossingline.debug | Houdt bij wanneer een persoon een aangewezen lijn in het gezichtsveld van de camera passeert. Stuurt een personLineEvent-gebeurtenis wanneer de persoon de lijn passeert en directionele informatie verstrekt. |
| cognitiveservices.vision.spatialanalysis-personcrossingpolygon.debug | Stuurt een personZoneEnterExitEvent-gebeurtenis wanneer een persoon de zone binnenkomt of verlaat en geeft directionele informatie met de genummerde kant van de zone die is kruist. Er wordt een personZoneDwellTimeEvent uitgegeven wanneer de persoon de zone verlaat en directionele informatie biedt, evenals het aantal milliseconden dat de persoon in de zone heeft besteed. |
| cognitiveservices.vision.spatialanalysis-persondistance.debug | Houdt bij wanneer mensen een afstandsregel schenden. Er wordt periodiek een personDistanceEvent met de locatie van elke schending van de afstand. |
| cognitiveservices.vision.spatialanalysis.debug | Algemene bewerking die kan worden gebruikt om alle hierboven genoemde scenario's uit te voeren. Deze optie is handiger wanneer u meerdere scenario's op dezelfde camera wilt uitvoeren of systeembronnen (bijvoorbeeld GPU) efficiënter wilt gebruiken. |
Ruimtelijke analyse kan ook worden uitgevoerd met Live Video Analytics hun Video AI-module.
| Bewerkings-id | Description |
|---|---|
| cognitiveservices.vision.spatialanalysis-personcount.livevideoanalytics | Telt personen in een aangewezen zone in het gezichtsveld van de camera. Stuurt een eerste personCountEvent-gebeurtenis en vervolgens personCountEvent-gebeurtenissen wanneer het aantal verandert. |
| cognitiveservices.vision.spatialanalysis-personcrossingline.livevideoanalytics | Houdt bij wanneer een persoon een aangewezen lijn in het gezichtsveld van de camera passeert. Stuurt een personLineEvent-gebeurtenis wanneer de persoon de lijn passeert en directionele informatie verstrekt. |
| cognitiveservices.vision.spatialanalysis-personcrossingpolygon.livevideoanalytics | Stuurt een personZoneEnterExitEvent-gebeurtenis wanneer een persoon de zone binnenkomt of verlaat en geeft directionele informatie met de genummerde kant van de zone die is kruist. Er wordt een personZoneDwellTimeEvent uitgegeven wanneer de persoon de zone verlaat en directionele informatie biedt, evenals het aantal milliseconden dat de persoon in de zone heeft besteed. |
| cognitiveservices.vision.spatialanalysis-persondistance.livevideoanalytics | Houdt bij wanneer mensen een afstandsregel schenden. Er wordt periodiek een personDistanceEvent met de locatie van elke schending van de afstand. |
| cognitiveservices.vision.spatialanalysis.livevideoanalytics | Algemene bewerking die kan worden gebruikt om alle hierboven genoemde scenario's uit te voeren. Deze optie is handiger wanneer u meerdere scenario's op dezelfde camera wilt uitvoeren of systeembronnen (bijvoorbeeld GPU) efficiënter wilt gebruiken. |
Live Video Analytics-bewerkingen zijn ook beschikbaar in de versie .debug (bijvoorbeeld cognitiveservices.vision.spatialanalysis-personcount.livevideoanalytics.debug) die de mogelijkheid heeft om de videoframes te visualiseren als ze worden verwerkt. U moet uitvoeren op de hostcomputer om de visualisatie van de xhost + videoframes en gebeurtenissen in te kunnen stellen
Belangrijk
De COMPUTER Vision AI-modellen detecteren en vinden menselijke aanwezigheid in videobeelden en -uitvoer met behulp van een begrendelend vak rond een menselijk lichaam. De AI-modellen proberen niet de identiteiten of demografische gegevens van personen te ontdekken.
Dit zijn de parameters die vereist zijn voor elk van deze ruimtelijke analysebewerkingen.
| Bewerkingsparameters | Description |
|---|---|
| Bewerkings-id | De bewerkings-id uit de bovenstaande tabel. |
| enabled | Booleaanse naam: waar of onwaar |
| VIDEO_URL | De RTSP-URL voor het cameraapparaat (voorbeeld: rtsp://username:password@url ). Ruimtelijke analyse ondersteunt met H.264 gecodeerde stream via RTSP, http of mp4. Video_URL kunnen worden opgegeven als een versleutelde base64-tekenreekswaarde met behulp van AES-versleuteling, en als de video-URL wordt ontsleuteld en moet worden opgegeven als KEY_ENV IV_ENV omgevingsvariabelen. Voorbeeldprogramma voor het genereren van sleutels en versleuteling vindt u hier. |
| VIDEO_SOURCE_ID | Een gebruiksvriendelijke naam voor het cameraapparaat of de videostream. Dit wordt geretourneerd met de JSON-uitvoer van de gebeurtenis. |
| VIDEO_IS_LIVE | Waar voor camera-apparaten; false voor opgenomen video's. |
| VIDEO_DECODE_GPU_INDEX | Welke GPU het videoframe moet decoderen. Standaard is dit 0. Moet hetzelfde zijn als gpu_index de in de andere knooppunt-configuratie, zoals en DETECTOR_NODE_CONFIG CAMERACALIBRATOR_NODE_CONFIG . |
| INPUT_VIDEO_WIDTH | Voer de framebreedte van de video/stream in (bijvoorbeeld 1920). Dit is een optioneel veld en indien opgegeven, wordt het frame naar deze dimensie geschaald met behoud van de aspectverhouding. |
| DETECTOR_NODE_CONFIG | JSON die aangeeft op welke GPU het detector-knooppunt moet worden uitgevoerd. Deze moet de volgende indeling hebben: "{ \"gpu_index\": 0 }", |
| TRACKER_NODE_CONFIG | JSON die aangeeft of de snelheid in het tracker-knooppunt moet worden berekend of niet. Deze moet de volgende indeling hebben: "{ \"enable_speed\": true }", |
| CAMERA_CONFIG | JSON die de ge kalibreerde cameraparameters voor meerdere camera's aangeeft. Als voor de vaardigheid die u hebt gebruikt, kalibratie is vereist en u al de cameraparameter hebt, kunt u deze configuratie gebruiken om ze rechtstreeks op te geven. Moet de volgende indeling hebben: "{ \"cameras\": [{\"source_id\": \"endcomputer.0.persondistancegraph.detector+end_computer1\", \"camera_height\": 13.105561256408691, \"camera_focal_length\": 297.60003662109375, \"camera_tiltup_angle\": 0.9738943576812744}] }" , de wordt gebruikt om elke camera te source_id identificeren. Deze kan worden op halen uit source_info de van de gebeurtenis die we hebben gepubliceerd. Deze wordt alleen van kracht wanneer do_calibration=false in DETECTOR_NODE_CONFIG . |
| CAMERACALIBRATOR_NODE_CONFIG | JSON die aangeeft op welke GPU het camerabrator-knooppunt moet worden uitgevoerd en of er gebruik moet worden gemaakt van kalibratie of niet. Deze moet de volgende indeling hebben: "{ \"gpu_index\": 0, \"do_calibration\": true, \"enable_orientation\": true}", |
| CALIBRATION_CONFIG | JSON die parameters aangeeft om te bepalen hoe de camera-kalibratie werkt. Deze moet de volgende indeling hebben: "{\"enable_recalibration\": true, \"quality_check_frequency_seconds\": 86400}", |
| SPACEANALYTICS_CONFIG | JSON-configuratie voor zone en regel, zoals hieronder wordt beschreven. |
| ENABLE_FACE_MASK_CLASSIFIER | True om het detecteren van personen die gezichtsmaskers dragen in de videostream in te schakelen, False om deze uit te schakelen. Dit is standaard uitgeschakeld. Voor gezichtsmaskerdetectie moet de parameter voor de invoervideobreedte 1920 "INPUT_VIDEO_WIDTH": 1920 zijn. Het kenmerk gezichtsmasker wordt niet geretourneerd als gedetecteerde personen zich niet op de camera of te ver van de camera hebben gericht. Raadpleeg de handleiding voor cameraplaatsing voor meer informatie |
Parameterinstellingen voor detector-knooppunt
Dit is een voorbeeld van de DETECTOR_NODE_CONFIG parameters voor alle bewerkingen voor ruimtelijke analyse.
{
"gpu_index": 0,
"enable_breakpad": false
}
| Naam | Type | Description |
|---|---|---|
gpu_index |
tekenreeks | De GPU-index waarop deze bewerking wordt uitgevoerd. |
enable_breakpad |
booleaans | Geeft aan of breakpad moet worden ingeschakeld, dat wordt gebruikt voor het genereren van een crashdump voor het gebruik van foutopsporing. Dit is false standaard. Als u deze in stelt true op , moet u ook toevoegen in het deel van container "CapAdd": ["SYS_PTRACE"] HostConfig createOptions . De crashdump wordt standaard geüpload naar de AppCenter-app RealTimePersonTracking. Als u wilt dat de crashdumps worden geüpload naar uw eigen AppCenter-app, kunt u de omgevingsvariabele overschrijven met het app-geheim van uw RTPT_APPCENTER_APP_SECRET app. |
Parameterinstellingen voor camera-kalibratie-knooppunt
Dit is een voorbeeld van de CAMERACALIBRATOR_NODE_CONFIG parameters voor alle bewerkingen voor ruimtelijke analyse.
{
"gpu_index": 0,
"do_calibration": true,
"enable_breakpad": false,
"enable_orientation": true
}
| Naam | Type | Description |
|---|---|---|
do_calibration |
tekenreeks | Geeft aan dat kalibratie is ingeschakeld. do_calibration moet waar zijn om cognitiveservices.vision.spatialanalysis-persondistance goed te laten functioneren. do_calibration is standaard ingesteld op True . |
enable_breakpad |
booleaans | Geeft aan of breakpad moet worden ingeschakeld, dat wordt gebruikt voor het genereren van een crashdump voor het gebruik van foutopsporing. Dit is false standaard. Als u deze in stelt true op , moet u ook toevoegen in het deel van container "CapAdd": ["SYS_PTRACE"] HostConfig createOptions . De crashdump wordt standaard geüpload naar de AppCenter-app RealTimePersonTracking. Als u wilt dat de crashdumps worden geüpload naar uw eigen AppCenter-app, kunt u de omgevingsvariabele overschrijven met het app-geheim van uw RTPT_APPCENTER_APP_SECRET app. |
enable_orientation |
booleaans | Geeft aan of u de oriëntatie voor de gedetecteerde personen wilt berekenen of niet. enable_orientation is standaard ingesteld op True . |
Configuratie van kalibratie
Dit is een voorbeeld van de CALIBRATION_CONFIG parameters voor alle bewerkingen voor ruimtelijke analyse.
{
"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
}
| Naam | Type | Description |
|---|---|---|
enable_recalibration |
booleaans | Geeft aan of automatische hercalibratie is ingeschakeld. De standaardinstelling is true. |
calibration_quality_check_frequency_seconds |
int | Minimaal aantal seconden tussen elke kwaliteitscontrole om te bepalen of er opnieuw moet worden gecalibreerd. De standaardwaarde is 86400 (24 uur). Alleen gebruikt wanneer enable_recalibration=True . |
calibration_quality_check_sample_collect_frequency_seconds |
int | Minimaal aantal seconden tussen het verzamelen van nieuwe gegevensvoorbeelden voor hercalibratie en kwaliteitscontrole. De standaardwaarde is 300 (5 minuten). Alleen gebruikt wanneer enable_recalibration=True . |
calibration_quality_check_one_round_sample_collect_num |
int | Minimum aantal nieuwe gegevensvoorbeelden dat per ronde van de voorbeeldverzameling moet worden verzameld. De standaardinstelling is 10. Alleen gebruikt wanneer enable_recalibration=True . |
calibration_quality_check_queue_max_size |
int | Maximum aantal gegevensvoorbeelden dat moet worden opgeslagen wanneer het cameramodel wordt ge kalibreerd. De standaardinstelling is 1000. Alleen gebruikt wanneer enable_recalibration=True . |
calibration_event_frequency_seconds |
int | Uitvoerfrequentie (seconden) van camera-kalibratiegebeurtenissen. Een waarde van -1 geeft aan dat de camera-kalibratie niet mag worden verzonden, tenzij de kalibratiegegevens van de camera zijn gewijzigd. De standaardinstelling is -1. |
Uitvoer van camera-kalibratie
Dit is een voorbeeld van de uitvoer van camera-kalibratie als deze is ingeschakeld. Beletselletsels geven meer van hetzelfde type objecten in een lijst aan.
{
"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
},
...
]
}
}
Zie Uitvoer van ruimtelijke analysebewerkingen voor meer informatie over source_info .
| ZonePlacementInfo-veldnaam | Type | Description |
|---|---|---|
optimalZonePolygon |
object | Een veelhoek in de cameraafbeelding waar lijnen of zones voor uw bewerkingen kunnen worden geplaatst voor optimale resultaten. Elk waardepaar vertegenwoordigt de x,y voor de punten van een veelhoek. De veelhoek vertegenwoordigt de gebieden waarin mensen worden bijgespoord of geteld en veelhoekpunten zijn gebaseerd op genormaliseerde coördinaten (0-1), waarbij de linkerbovenhoek (0,0, 0,0) en de rechteronderhoek (1,0, 1,0) is. |
fairZonePolygon |
object | Een veelhoek in de cameraafbeelding waar lijnen of zones voor uw bewerkingen voor goede, maar mogelijk niet optimale resultaten kunnen worden geplaatst. Zie optimalZonePolygon hierboven voor een uitgebreide uitleg van de inhoud. |
uniformlySpacedPersonBoundingBoxes |
list | Een lijst met begrenzendvakken van personen in de cameraafbeelding die gelijkmatig in de echte ruimte worden gedistribueerd. Waarden zijn gebaseerd op genormaliseerde coördinaten (0-1). |
personBoundingBoxGroundPoints |
list | Een lijst met coördinaten op het vloervlak ten opzichte van de camera. Elke coördinaat komt overeen met de rechteronderzijde van het begrensingsvak in uniformlySpacedPersonBoundingBoxes met dezelfde index. Zie het veld onder de centerGroundPoint JSON-indeling voor cognitiveservices.vision.spatialanalysis-persondistance AI Insights voor meer informatie over hoe coördinaten op de vloer worden berekend. |
Voorbeeld van de uitvoer van de zoneplaatsingsgegevens die is gevisualiseerd op een videoframe: 
De informatie over zoneplaatsing biedt suggesties voor uw configuraties, maar de richtlijnen in Cameraconfiguratie moeten nog steeds worden gevolgd voor de beste resultaten.
Parameterinstellingen voor snelheid
U kunt de snelheidsberekening configureren via de parameterinstellingen voor het tracker-knooppunt.
{
"enable_speed": true,
}
| Naam | Type | Description |
|---|---|---|
enable_speed |
booleaans | Geeft aan of u de snelheid voor de gedetecteerde personen wilt berekenen of niet. enable_speed is standaard ingesteld op True . Het wordt ten zeerste aanbevolen dat u zowel de snelheid als de afdrukstand in staat stelt om de beste geschatte waarden te hebben. |
Configuratie en uitvoer van bewerkingen voor ruimtelijke analyse
Zoneconfiguratie voor cognitiveservices.vision.spatialanalysis-personcount
Dit is een voorbeeld van een JSON-invoer voor de SPACEANALYTICS_CONFIG parameter die een zone configureert. U kunt meerdere zones configureren voor deze bewerking.
{
"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"
}
}
]
}
]
}
| Naam | Type | Description |
|---|---|---|
zones |
list | Lijst met zones. |
name |
tekenreeks | Gebruiksvriendelijke naam voor deze zone. |
polygon |
list | Elk waardepaar vertegenwoordigt de x,y voor de punten van een veelhoek. De veelhoek vertegenwoordigt de gebieden waarin mensen worden bijgespoord of geteld en veelhoekpunten zijn gebaseerd op genormaliseerde coördinaten (0-1), waarbij de linkerbovenhoek (0,0, 0,0) is en de rechteronderhoek (1,0, 1,0). |
threshold |
float | Gebeurtenissen worden verlaten wanneer de persoon groter is dan dit aantal pixels binnen de zone. |
type |
tekenreeks | Voor cognitiveservices.vision.spatialanalysis-personcount moet dit count zijn. |
trigger |
tekenreeks | Het type trigger voor het verzenden van een gebeurtenis. Ondersteunde waarden zijn voor het verzenden van gebeurtenissen wanneer het aantal wordt gewijzigd of voor het periodiek verzenden van gebeurtenissen, ongeacht of het aantal event interval is gewijzigd of niet. |
output_frequency |
int | De snelheid waarmee gebeurtenissen worden uitgegaan. Wanneer output_frequency = X, wordt elke X-gebeurtenis weggegaan, bijvoorbeeld. output_frequency = 2 betekent dat elke andere gebeurtenis uitvoer is. De output_frequency is van toepassing op zowel als event interval . |
focus |
tekenreeks | De puntlocatie binnen het begrensingsvak van de persoon die wordt gebruikt om gebeurtenissen te berekenen. De waarde van de focus kan zijn (de footprint van de persoon), (het onderste midden van het begrenzesvak van de persoon) (het midden van het footprint bottom_center center begrensvak van de persoon). |
Lijnconfiguratie voor cognitiveservices.vision.spatialanalysis-personcrossingline
Dit is een voorbeeld van een JSON-invoer voor de SPACEANALYTICS_CONFIG parameter die een regel configureert. U kunt meerdere kruisingslijnen configureren voor deze bewerking.
{
"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"
}
}
]
}
]
}
| Naam | Type | Description |
|---|---|---|
lines |
list | Lijst met regels. |
name |
tekenreeks | Gebruiksvriendelijke naam voor deze regel. |
line |
list | De definitie van de regel. Dit is een directionele lijn waarmee u inzicht hebt in 'entry' versus 'exit'. |
start |
waardepaar | x, y-coördinaten voor het beginpunt van de regel. De float-waarden vertegenwoordigen de positie van het hoekpunt ten opzichte van de linkerbovenhoek. Als u de absolute x-, y-waarden wilt berekenen, vermenigvuldigt u deze waarden met de framegrootte. |
end |
waardepaar | x, y-coördinaten voor het eindpunt van de regel. De float-waarden vertegenwoordigen de positie van het hoekpunt ten opzichte van de linkerbovenhoek. Als u de absolute x-, y-waarden wilt berekenen, vermenigvuldigt u deze waarden met de framegrootte. |
threshold |
float | Gebeurtenissen worden verlaten wanneer de persoon groter is dan dit aantal pixels binnen de zone. De standaardwaarde is 16. Dit is de aanbevolen waarde voor maximale nauwkeurigheid. |
type |
tekenreeks | Voor cognitiveservices.vision.spatialanalysis-personcrossingline moet dit linecrossing zijn. |
trigger |
tekenreeks | Het type trigger voor het verzenden van een gebeurtenis. Ondersteunde waarden: 'gebeurtenis': wordt brand wanneer iemand de regel passeert. |
focus |
tekenreeks | De puntlocatie binnen het begrensingsvak van de persoon die wordt gebruikt om gebeurtenissen te berekenen. De waarde van de focus kan zijn (de footprint van de persoon), (het onderste midden van het begrenzesvak van de persoon) (het midden van het footprint bottom_center center begrensvak van de persoon). De standaardwaarde is footprint. |
Zoneconfiguratie voor cognitiveservices.vision.spatialanalysis-personcrossingpolygon
Dit is een voorbeeld van een JSON-invoer voor de SPACEANALYTICS_CONFIG parameter die een zone configureert. U kunt meerdere zones configureren voor deze bewerking.
{
"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"
}
}]
}]
}
| Naam | Type | Description |
|---|---|---|
zones |
list | Lijst met zones. |
name |
tekenreeks | Gebruiksvriendelijke naam voor deze zone. |
polygon |
list | Elk waardepaar vertegenwoordigt de x,y voor de punten van veelhoek. De veelhoek vertegenwoordigt de gebieden waarin mensen worden bijgespoord of geteld. De float-waarden vertegenwoordigen de positie van het hoekpunt ten opzichte van de linkerbovenhoek. Als u de absolute x-, y-waarden wilt berekenen, vermenigvuldigt u deze waarden met de framegrootte. |
target_side |
int | Hiermee geeft u een kant van de zone gedefinieerd door polygon om te meten hoe lang mensen die kant gezicht terwijl in de zone. Met 'dwellTimeForTargetSide' wordt die geschatte tijd uitgevoerd. Elke zijde is een genummerde rand tussen de twee hoekhoeken van de veelhoek die uw zone vertegenwoordigt. De rand tussen de eerste twee hoekhoeken van de veelhoek vertegenwoordigt bijvoorbeeld de eerste zijde, 'side'=1. De waarde van target_side ligt tussen waar het aantal zijden van de [0,N-1] N polygon is. Dit is een optioneel veld. |
threshold |
float | Gebeurtenissen worden verlaten wanneer de persoon groter is dan dit aantal pixels binnen de zone. De standaardwaarde is 48 wanneer type zonecrossing is en 16 wanneer de tijd DwellTime is. Dit zijn de aanbevolen waarden voor maximale nauwkeurigheid. |
type |
tekenreeks | Voor cognitiveservices.vision.spatialanalysis-personcrossingpolygon moet dit zonecrossing of zonedwelltime zijn. |
trigger |
tekenreeks | Het type trigger voor het verzenden van een gebeurtenis Ondersteunde waarden: 'event': fire wanneer iemand de zone binnenkomt of verlaat. |
focus |
tekenreeks | De puntlocatie binnen het begrensingsvak van de persoon die wordt gebruikt om gebeurtenissen te berekenen. De waarde van de focus kan zijn (de footprint van de persoon), (het onderste midden van het begrensingsvak van de persoon) (het midden van het footprint bottom_center center begrensingsvak van de persoon). De standaardwaarde is footprint. |
Zoneconfiguratie voor cognitiveservices.vision.spatialanalysis-persondistance
Dit is een voorbeeld van een JSON-invoer voor de parameter SPACEANALYTICS_CONFIG die een zone configureert voor cognitiveservices.vision.spatialanalysis-persondistance. U kunt meerdere zones configureren voor deze bewerking.
{
"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"
}
}]
}]
}
| Naam | Type | Description |
|---|---|---|
zones |
list | Lijst met zones. |
name |
tekenreeks | Gebruiksvriendelijke naam voor deze zone. |
polygon |
list | Elk waardepaar vertegenwoordigt de x,y voor de punten van een veelhoek. De veelhoek vertegenwoordigt de gebieden waarin mensen worden geteld en de afstand tussen mensen wordt gemeten. De float-waarden vertegenwoordigen de positie van het hoekpunt ten opzichte van de linkerbovenhoek. Als u de absolute x-, y-waarden wilt berekenen, vermenigvuldigt u deze waarden met de framegrootte. |
threshold |
float | Gebeurtenissen worden uitgegaan wanneer de persoon groter is dan dit aantal pixels in de zone. |
type |
tekenreeks | Voor cognitiveservices.vision.spatialanalysis-persondistance moet dit persondistance zijn. |
trigger |
tekenreeks | Het type trigger voor het verzenden van een gebeurtenis. Ondersteunde waarden zijn voor het verzenden van gebeurtenissen wanneer het aantal wordt gewijzigd of voor het periodiek verzenden van gebeurtenissen, ongeacht of het aantal event interval is gewijzigd of niet. |
output_frequency |
int | De snelheid waarmee gebeurtenissen worden uitgegaan. Wanneer output_frequency = X, wordt elke X-gebeurtenis uitgegaan, bijvoorbeeld. output_frequency = 2 betekent dat elke andere gebeurtenis uitvoer is. De output_frequency is van toepassing op zowel als event interval . |
minimum_distance_threshold |
float | Een afstand in voet die een 'TooClose'-gebeurtenis activeert wanneer mensen kleiner zijn dan die afstand uit elkaar. |
maximum_distance_threshold |
float | Een afstand in voet die een 'TooFar'-gebeurtenis activeert wanneer mensen groter zijn dan die afstand uit elkaar. |
aggregation_method |
tekenreeks | De methode voor cumulatief persondistanceresultaat. De aggregation_method is van toepassing op mode zowel als average . |
focus |
tekenreeks | De puntlocatie binnen het begrensingsvak van de persoon die wordt gebruikt om gebeurtenissen te berekenen. De waarde van de focus kan zijn (de footprint van de persoon), (het onderste midden van het begrensingsvak van de persoon) (het midden van het footprint bottom_center center begrensingsvak van de persoon). |
Configuratie voor cognitiveservices.vision.spatialanalysis
Dit is een voorbeeld van een JSON-invoer voor de parameter SPACEANALYTICS_CONFIG die een lijn en zone configureert voor cognitiveservices.vision.spatialanalysis. U kunt meerdere regels/zones configureren voor deze bewerking en elke regel/zone kan verschillende gebeurtenissen hebben.
{
"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"
}
}
]
}
]
}
Cameraconfiguratie
Zie de richtlijnen voor cameraplaatsing voor meer informatie over het configureren van zones en lijnen.
Uitvoer van ruimtelijke analysebewerking
De gebeurtenissen van elke bewerking worden naar de JSON-Azure IoT Hub uitgevoerd.
JSON-indeling voor cognitiveservices.vision.spatialanalysis-personcount AI Insights
Voorbeeld-JSON voor een gebeurtenisuitvoer door deze bewerking.
{
"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"
}
| Naam gebeurtenisveld | Type | Description |
|---|---|---|
id |
tekenreeks | Gebeurtenis-id |
type |
tekenreeks | Gebeurtenistype |
detectionsId |
matrix | Matrix van grootte 1 van de unieke id van de persoonsdetectie die deze gebeurtenis heeft geactiveerd |
properties |
verzameling | Verzameling waarden |
trackinId |
tekenreeks | Unieke id van de gedetecteerde persoon |
zone |
tekenreeks | Het veld 'naam' van de veelhoek die de zone vertegenwoordigt die is doorkruist |
trigger |
tekenreeks | Het triggertype is 'gebeurtenis' of 'interval' afhankelijk van de waarde trigger van in SPACEANALYTICS_CONFIG |
| Veldnaam detectie | Type | Description |
|---|---|---|
id |
tekenreeks | Detectie-id |
type |
tekenreeks | Detectietype |
region |
verzameling | Verzameling waarden |
type |
tekenreeks | Type regio |
points |
verzameling | De linkerboven- en rechteronderpunten wanneer het regiotype RECHTHOEK is |
confidence |
float | Betrouwbaarheid van algoritmen |
face_mask |
float | De betrouwbaarheidswaarde van het kenmerk met bereik (0-1) geeft aan dat de gedetecteerde persoon een gezichtsmasker draagt |
face_nomask |
float | De betrouwbaarheidswaarde van het kenmerk met bereik (0-1) geeft aan dat de gedetecteerde persoon geen gezichtsmasker draagt |
| Naam broninfoveld | Type | Description |
|---|---|---|
id |
tekenreeks | Camera-id |
timestamp |
date | UTC-datum waarop de JSON-nettolading is weggelaten |
width |
int | Breedte van videoframe |
height |
int | Hoogte van videoframe |
frameId |
int | Frame-id |
cameraCallibrationInfo |
verzameling | Verzameling waarden |
status |
tekenreeks | De status van de kalibratie in de indeling state[;progress description] . De status kan Calibrating zijn , Recalibrating (als opnieuwliblibreren is ingeschakeld) of Calibrated . Het gedeelte met de beschrijving van de voortgang is alleen geldig wanneer het in de status en is, die wordt gebruikt om de voortgang van het Calibrating Recalibrating huidige kalibratieproces weer te geven. |
cameraHeight |
float | De hoogte van de camera boven de grond in voetjes. Dit wordt afgeleid van automatische kalibratie. |
focalLength |
float | De centrale lengte van de camera in pixels. Dit wordt afgeleid van automatische kalibratie. |
tiltUpAngle |
float | De kantelhoek van de camera van verticaal. Dit wordt afgeleid van automatische kalibratie. |
JSON-indeling voor cognitiveservices.vision.spatialanalysis-personcrossingline AI Insights
Voorbeeld-JSON voor detectie-uitvoer door deze bewerking.
{
"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"
}
| Naam gebeurtenisveld | Type | Description |
|---|---|---|
id |
tekenreeks | Gebeurtenis-id |
type |
tekenreeks | Gebeurtenistype |
detectionsId |
matrix | Matrix van grootte 1 van de unieke id van de persoonsdetectie die deze gebeurtenis heeft geactiveerd |
properties |
verzameling | Verzameling waarden |
trackinId |
tekenreeks | Unieke id van de gedetecteerde persoon |
status |
tekenreeks | Richting van lijnkruisingen, 'CrossLeft' of 'CrossRight'. Richting is gebaseerd op de stand van de 'start' aan het einde van de regel. CrossRight kruist van links naar rechts. CrossLeft gaat van rechts naar links. |
orientationDirection |
tekenreeks | De richting van de gedetecteerde persoon na het overschrijden van de lijn. De waarde kan 'Left', 'Right' of 'Straight' zijn. Deze waarde is uitvoer als enable_orientation is ingesteld op True in CAMERACALIBRATOR_NODE_CONFIG |
zone |
tekenreeks | Het veld 'naam' van de regel die is doorkruist |
| Veldnaam detectie | Type | Description |
|---|---|---|
id |
tekenreeks | Detectie-id |
type |
tekenreeks | Detectietype |
region |
verzameling | Verzameling waarden |
type |
tekenreeks | Type regio |
points |
verzameling | De punten linksboven en rechtsonder wanneer het regiotype RECHTHOEK is |
groundOrientationAngle |
float | De rechtsom radiale hoek van de richting van de persoon op het uitgestelde grondvlak |
mappedImageOrientation |
float | De verwachte rechtsom radiale hoek van de richting van de persoon op de 2D-afbeeldingsruimte |
speed |
float | De geschatte snelheid van de gedetecteerde persoon. De eenheid is foot per second (ft/s) |
confidence |
float | Betrouwbaarheid van algoritmen |
face_mask |
float | De betrouwbaarheidswaarde van het kenmerk met bereik (0-1) geeft aan dat de gedetecteerde persoon een gezichtsmasker draagt |
face_nomask |
float | De betrouwbaarheidswaarde van het kenmerk met bereik (0-1) geeft aan dat de gedetecteerde persoon geen gezichtsmasker draagt |
| SourceInfo-veldnaam | Type | Description |
|---|---|---|
id |
tekenreeks | Camera-id |
timestamp |
date | UTC-datum waarop de JSON-nettolading is ingediend |
width |
int | Breedte van videoframe |
height |
int | Hoogte van videoframe |
frameId |
int | Frame-id |
Belangrijk
Het AI-model detecteert een persoon, ongeacht of de persoon naar of van de camera kijkt. Het AI-model maakt geen gebruik van gezichtsherkenning en er wordt geen biometrische informatie verstrekt.
JSON-indeling voor cognitiveservices.vision.spatialanalysis-personcrossingpolygon AI Insights
Voorbeeld-JSON voor detectie-uitvoer door deze bewerking met zonecrossing type 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"
}
Voorbeeld-JSON voor detectie-uitvoer door deze bewerking met zonedwelltime type 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"
}
| Naam gebeurtenisveld | Type | Description |
|---|---|---|
id |
tekenreeks | Gebeurtenis-id |
type |
tekenreeks | Gebeurtenistype. De waarde kan personZoneDwellTimeEvent of personZoneEnterExitEvent zijn |
detectionsId |
matrix | Matrix van grootte 1 van de unieke id van de persoonsdetectie die deze gebeurtenis heeft geactiveerd |
properties |
verzameling | Verzameling waarden |
trackinId |
tekenreeks | Unieke id van de gedetecteerde persoon |
status |
tekenreeks | Richting van veelhoekkruisingen, 'Enter' of 'Exit' |
side |
int | Het nummer van de zijde van de veelhoek die de persoon heeft kruist. Elke zijde is een genummerde rand tussen de twee hoekhoeken van de veelhoek die uw zone vertegenwoordigt. De rand tussen de eerste twee hoekhoeken van de veelhoek vertegenwoordigt de eerste zijde. 'Side' is leeg wanneer de gebeurtenis niet is gekoppeld aan een specifieke zijde vanwege occlusie. Er is bijvoorbeeld een exit opgetreden wanneer een persoon verdwijnt, maar niet is gezien terwijl deze een kant van de zone kruist of er een enter is opgetreden toen er een persoon in de zone stond, maar deze niet aan de zijkant werd gezien. |
dwellTime |
float | Het aantal milliseconden dat de tijd vertegenwoordigt die de persoon in de zone heeft doorgebracht. Dit veld wordt opgegeven wanneer het gebeurtenistype personZoneDwellTimeEvent is |
dwellFrames |
int | Het aantal frames dat de persoon in de zone heeft uitgegeven. Dit veld wordt opgegeven wanneer het gebeurtenistype personZoneDwellTimeEvent is |
dwellTimeForTargetSide |
float | Het aantal milliseconden dat de tijd vertegenwoordigt die de persoon in de zone heeft doorgebracht en zich naar de target_side bevindt. Dit veld wordt opgegeven wanneer enable_orientation zich in en de waarde van is ingesteld True CAMERACALIBRATOR_NODE_CONFIG target_side in SPACEANALYTICS_CONFIG |
avgSpeed |
float | De gemiddelde snelheid van de persoon in de zone. De eenheid is foot per second (ft/s) |
minSpeed |
float | De minimale snelheid van de persoon in de zone. De eenheid is foot per second (ft/s) |
zone |
tekenreeks | Het veld 'naam' van de veelhoek die de zone vertegenwoordigt die is doorkruist |
| Veldnaam detectie | Type | Description |
|---|---|---|
id |
tekenreeks | Detectie-id |
type |
tekenreeks | Detectietype |
region |
verzameling | Verzameling waarden |
type |
tekenreeks | Type regio |
points |
verzameling | De linkerboven- en rechteronderpunten wanneer het regiotype RECHTHOEK is |
groundOrientationAngle |
float | De rechtsom radiale hoek van de richting van de persoon op het afgeleide grondvlak |
mappedImageOrientation |
float | De verwachte radiale hoek rechtsom van de richting van de persoon op de 2D-ruimte van de afbeelding |
speed |
float | De geschatte snelheid van de gedetecteerde persoon. De eenheid is foot per second (ft/s) |
confidence |
float | Betrouwbaarheid van algoritmen |
face_mask |
float | De betrouwbaarheidswaarde van het kenmerk met bereik (0-1) geeft aan dat de gedetecteerde persoon een gezichtsmasker draagt |
face_nomask |
float | De betrouwbaarheidswaarde van het kenmerk met bereik (0-1) geeft aan dat de gedetecteerde persoon geen gezichtsmasker draagt |
JSON-indeling voor cognitiveservices.vision.spatialanalysis-persondistance AI Insights
Voorbeeld-JSON voor detecties die door deze bewerking worden uitgevoerd.
{
"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"
}
| Naam gebeurtenisveld | Type | Description |
|---|---|---|
id |
tekenreeks | Gebeurtenis-id |
type |
tekenreeks | Gebeurtenistype |
detectionsId |
matrix | Matrix van grootte 1 van de unieke id van de persoonsdetectie die deze gebeurtenis heeft geactiveerd |
properties |
verzameling | Verzameling waarden |
personCount |
int | Aantal personen dat is gedetecteerd toen de gebeurtenis werd uitgezonden |
averageDistance |
float | De gemiddelde afstand tussen alle gedetecteerde personen in voet |
minimumDistanceThreshold |
float | De afstand in de voet die een 'TooClose'-gebeurtenis activeert wanneer mensen kleiner zijn dan die afstand uit elkaar. |
maximumDistanceThreshold |
float | De afstand in de voet die een 'TooFar'-gebeurtenis activeert wanneer mensen groter zijn dan afstand uit elkaar. |
eventName |
tekenreeks | Gebeurtenisnaam is TooClose met de minimumDistanceThreshold wordt geschonden, TooFar wanneer wordt maximumDistanceThreshold geschonden of wanneer automatische unknown kalibratie niet is voltooid |
distanceViolationPersonCount |
int | Aantal personen dat is gedetecteerd in strijd minimumDistanceThreshold met of maximumDistanceThreshold |
zone |
tekenreeks | Het veld 'naam' van de veelhoek die de zone vertegenwoordigt die is bewaakt voor het distancing tussen personen |
trigger |
tekenreeks | Het triggertype is 'gebeurtenis' of 'interval' afhankelijk van de waarde trigger van in SPACEANALYTICS_CONFIG |
| Veldnaam detectie | Type | Description |
|---|---|---|
id |
tekenreeks | Detectie-id |
type |
tekenreeks | Detectietype |
region |
verzameling | Verzameling waarden |
type |
tekenreeks | Type regio |
points |
verzameling | De linkerboven- en rechteronderpunten wanneer het regiotype RECHTHOEK is |
confidence |
float | Betrouwbaarheid van algoritmen |
centerGroundPoint |
2 float-waarden | x, y waarden met de coördinaten van de afgeleide locatie van de persoon op de grond in voet. x en y zijn coördinaten op het vlak van de vloer, ervan uitgaande dat de vloer gelijk is. De locatie van de camera is de oorsprong. |
Bij het berekenen van is de afstand van de camera naar de persoon langs een lijn die haaks staat centerGroundPoint op het x camera-afbeeldingsvlak. y is de afstand van de camera naar de persoon langs een lijn die parallel loopt aan het camera-afbeeldingsvlak.

In dit voorbeeld centerGroundPoint is {x: 4, y: 5} . Dit betekent dat er een persoon is die 1,5 meter van de camera is verwijderd en 1,5 meter rechts, en de kamer van boven naar beneden kijkt.
| Veldnaam SourceInfo | Type | Description |
|---|---|---|
id |
tekenreeks | Camera-id |
timestamp |
date | UTC-datum waarop de JSON-nettolading is ingediend |
width |
int | Breedte van videoframe |
height |
int | Hoogte van videoframe |
frameId |
int | Frame-id |
cameraCallibrationInfo |
verzameling | Verzameling waarden |
status |
tekenreeks | De status van de kalibratie in de indeling state[;progress description] . De status kan Calibrating zijn , Recalibrating (als opnieuwliblibreren is ingeschakeld) of Calibrated . Het gedeelte met de beschrijving van de voortgang is alleen geldig wanneer het in de status en is, die wordt gebruikt om de voortgang van het Calibrating Recalibrating huidige kalibratieproces weer te geven. |
cameraHeight |
float | De hoogte van de camera boven de grond in voetjes. Dit wordt afgeleid van automatische kalibratie. |
focalLength |
float | De centrale lengte van de camera in pixels. Dit wordt afgeleid van automatische kalibratie. |
tiltUpAngle |
float | De kantelhoek van de camera van verticaal. Dit wordt afgeleid van automatische kalibratie. |
JSON-indeling voor cognitiveservices.vision.spatialanalysis AI Insights
De uitvoer van deze bewerking is afhankelijk van geconfigureerd. Als er bijvoorbeeld een gebeurtenis is geconfigureerd voor deze bewerking, is de uitvoer events zonecrossing hetzelfde als cognitiveservices.vision.spatialanalysis-personcrossingpolygon .
De uitvoer gebruiken die is gegenereerd door de container
Mogelijk wilt u detectie van ruimtelijke analyse of gebeurtenissen integreren in uw toepassing. Hier zijn enkele manieren om rekening mee te houden:
- Gebruik de Azure Event Hub SDK voor de door u gekozen programmeertaal om verbinding te maken met Azure IoT Hub eindpunt en de gebeurtenissen te ontvangen. Zie Apparaat-naar-cloud-berichten lezen vanaf het ingebouwde eindpunt voor meer informatie.
- Stel berichtroutering in op uw Azure IoT Hub om de gebeurtenissen naar andere eindpunten te verzenden of de gebeurtenissen op te slaan in uw gegevensopslag. Zie IoT Hub Message Routing (Berichtroutering) voor meer informatie.
- Stel een Azure Stream Analytics taak in om de gebeurtenissen in realtime te verwerken wanneer ze binnenkomen en visualisaties te maken.
Ruimtelijke analysebewerkingen op schaal implementeren (meerdere camera's)
Om de beste prestaties en het gebruik van de GPU's te krijgen, kunt u ruimtelijke analysebewerkingen op meerdere camera's implementeren met behulp van grafieken. Hieronder vindt u een voorbeeld voor het uitvoeren van cognitiveservices.vision.spatialanalysis-personcrossingline de bewerking op vijftien camera's.
"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>"
}
}
}
},
}
}
| Naam | Type | Description |
|---|---|---|
batch_size |
int | Als alle camera's dezelfde resolutie hebben, stelt u in op het aantal camera's dat in die bewerking wordt gebruikt. Anders stelt u in op 1 of laat u deze ingesteld op batch_size standaard (1), wat aangeeft dat er geen batch_size batch wordt ondersteund. |