Térinformatikai műveletek
A térinformatikai elemzés lehetővé teszi a kameraeszközökről származó videostreamek valós idejű elemzését. Minden konfigurált kameraeszköz esetében a térinformatikai műveletek az Azure IoT Hub-példánynak küldött JSON-üzenetek kimeneti adatfolyamát generálják.
A Térinformatikai tároló a következő műveleteket valósítja meg. Ezeket a műveleteket a tároló üzembehelyezési jegyzékében konfigurálhatja.
Műveletazonosító | Leírás |
---|---|
cognitiveservices.vision.spatialanalysis-personcount |
Megszámlálja a kamera látómezőjében lévő kijelölt zónában lévő személyeket. A zónát egyetlen kamerának kell teljes mértékben lefednie ahhoz, hogy a PersonCount pontos összegeket rögzíthessen. Kibocsát egy kezdeti personCountEvent eseményt, majd a personCountEvent eseményeket, amikor a szám megváltozik. |
cognitiveservices.vision.spatialanalysis-personcrossingline |
Nyomon követi, ha egy személy átlép egy kijelölt vonalat a kamera látómezőjében. Kibocsát egy personLineEvent eseményt, amikor a személy átlépi a vonalat, és irányadatokat ad meg. |
cognitiveservices.vision.spatialanalysis-personcrossingpolygon |
Kibocsát egy personZoneEnterExitEvent eseményt, amikor egy személy belép vagy kilép a kijelölt zónából, és irányinformációt ad a átlépett zóna oldalával. Kibocsát egy personZoneDwellTimeEventet , amikor a személy kilép a zónából, és útmutatást ad, valamint a zónában töltött ezredmásodpercek számát. |
cognitiveservices.vision.spatialanalysis-persondistance |
Nyomon követi, ha az emberek megsértenek egy minimális távolsági szabályt. Rendszeres időközönként kibocsát egy personDistanceEvent-t az egyes távolságmegsértések helyével. |
cognitiveservices.vision.spatialanalysis |
Az általános művelet, amely a fent említett összes forgatókönyv futtatására használható. Ez a beállítás akkor hasznosabb, ha több forgatókönyvet szeretne futtatni ugyanazon a kamerán, vagy hatékonyabban szeretné használni a rendszererőforrásokat (például a GPU-t). |
A fenti műveletek mindegyike a szolgáltatás verziójában .debug
is elérhető (például cognitiveservices.vision.spatialanalysis-personcount.debug
). A hibakeresés képes vizualizálni a videókereteket a feldolgozásuk során. A videoképek és események vizualizációjának engedélyezéséhez a gazdaszámítógépen kell futnia xhost +
.
Fontos
Az Azure AI Vision AI-modellek észlelik és keresik az emberi jelenlétet a videófelvételekben, és egy határolókeretet adnak ki az emberi test körül. Az AI-modellek nem próbálják felderíteni az egyének identitásait vagy demográfiai adatait.
Üzemeltetési paraméterek
Az alábbiakban az egyes térinformatikai műveletekhez szükséges paramétereket kell megadni.
Üzemeltetési paraméterek | Leírás |
---|---|
Operation ID |
A fenti táblázat műveletazonosítója. |
enabled |
Logikai: igaz vagy hamis |
VIDEO_URL |
A kameraeszköz RTSP URL-címe (példa: rtsp://username:password@url ). A térinformatikai elemzés támogatja a H.264 kódolású streamet RTSP, http vagy mp4 használatával. Video_URL elhomályosított base64 sztringértékként is megadható AES-titkosítással, és ha a videó URL-címe el van rejtve, KEY_ENV akkor IV_ENV környezeti változóként kell megadni. A kulcsok és titkosítás létrehozásához használható minta segédprogram itt található. |
VIDEO_SOURCE_ID |
A kameraeszköz vagy a videostream rövid neve. Ez az esemény JSON-kimenetével lesz visszaadva. |
VIDEO_IS_LIVE |
Igaz kameraeszközökre; hamis a rögzített videók esetében. |
VIDEO_DECODE_GPU_INDEX |
Melyik GPU dekódolja a videokeretet. Alapértelmezés szerint 0. Meg kell egyeznie, mint a gpu_index többi csomópont konfiguráció, mint DETECTOR_NODE_CONFIG és CAMERACALIBRATOR_NODE_CONFIG . |
INPUT_VIDEO_WIDTH |
A bemeneti videó/stream keretének szélessége (például 1920). Ez egy nem kötelező mező, és ha meg van adva, a keret erre a méretre lesz skálázva, miközben megőrzi az oldalarányt. |
DETECTOR_NODE_CONFIG |
JSON, amely jelzi, hogy melyik GPU-n futtassa a detektorcsomópontot. Ennek a következő formátumban kell lennie: "{ \"gpu_index\": 0 }", |
TRACKER_NODE_CONFIG |
JSON, amely azt jelzi, hogy a nyomkövető csomópontban kell-e kiszámítani a sebességet. Ennek a következő formátumban kell lennie: "{ \"enable_speed\": true }", |
CAMERA_CONFIG |
Több kamera kalibrált kameraparamétereit jelző JSON. Ha a használt képességhez kalibrálásra van szükség, és már rendelkezik a kameraparaméterével, ezt a konfigurációt használhatja közvetlenül az adatok megadásához. A következő formátumban kell lennie: "{ \"cameras\": [{\"source_id\": \"endcomputer.0.persondistancegraph.detector+end_computer1\", \"camera_height\": 13.105561256408691, \"camera_focal_length\": 297.60003662109375, \"camera_tiltup_angle\": 0.9738943576812744}] }" az source_id egyes fényképezőgépek azonosítására szolgál. A közzétett eseményből source_info származhat. Ez csak akkor lép érvénybe, ha do_calibration=false a DETECTOR_NODE_CONFIG . |
CAMERACALIBRATOR_NODE_CONFIG |
JSON, amely jelzi, hogy melyik GPU-n futtassa a kamera calibrátor csomópontot, és hogy használjon-e kalibrálást vagy sem. Ennek a következő formátumban kell lennie: "{ \"gpu_index\": 0, \"do_calibration\": true, \"enable_orientation\": true}", |
CALIBRATION_CONFIG |
JSON, amely paramétereket jelez a kamera kalibrációs működésének szabályozásához. Ennek a következő formátumban kell lennie: "{\"enable_recalibration\": true, \"quality_check_frequency_seconds\": 86400}", |
SPACEANALYTICS_CONFIG |
A zóna és a vonal JSON-konfigurációja az alábbiak szerint. |
ENABLE_FACE_MASK_CLASSIFIER |
True a videóstreamben arcmaszkot viselő személyek észlelésének engedélyezéséhez, False letiltásához. Alapértelmezés szerint ez le van tiltva. Az arcmaszkészleléshez a bemeneti videoszélesség paraméterének 1920-nak "INPUT_VIDEO_WIDTH": 1920 kell lennie. Az arcmaszk attribútum nem lesz visszaadva, ha az észlelt személyek nem nézik a kamerát, vagy túl messze vannak tőle. További információkért tekintse meg a kamera elhelyezését. |
STATIONARY_TARGET_REMOVER_CONFIG |
A helyhez kötött céleltávolítás paramétereit jelző JSON, amely lehetővé teszi a hosszú távú, helyhez kötött hamis pozitív célok, például a manöken vagy a képeken lévő személyek megismerését és figyelmen kívül hagyását. A konfigurációnak a következő formátumban kell lennie: "{\"enable\": true, \"bbox_dist_threshold-in_pixels\": 5, \"buffer_length_in_seconds\": 3600, \"filter_ratio\": 0.2 }" |
A detektorcsomópont paraméterbeállításai
Az alábbi példa az DETECTOR_NODE_CONFIG
összes térinformatikai művelet paramétereire mutat be példát.
{
"gpu_index": 0,
"enable_breakpad": false
}
Név | Típus | Leírás |
---|---|---|
gpu_index |
húr | Az a GPU-index, amelyen a művelet futni fog. |
enable_breakpad |
logikai | Azt jelzi, hogy engedélyezi-e a töréspadot, amely hibakeresési célú összeomlási memóriakép létrehozására szolgál. Ez alapértelmezés szerint így van false . Ha be true van állítva, a tároló createOptions részét HostConfig is hozzá kell adnia"CapAdd": ["SYS_PTRACE"] . Alapértelmezés szerint az összeomlási memóriakép fel lesz töltve a RealTimePersonTracking AppCenter alkalmazásba, ha azt szeretné, hogy az összeomlási memóriaképek a saját AppCenter-alkalmazásba legyenek feltöltve, felülbírálhatja a környezeti változót RTPT_APPCENTER_APP_SECRET az alkalmazás alkalmazáskulcsával. |
Kamera kalibrációs csomópont paraméterbeállításai
Az alábbi példa az CAMERACALIBRATOR_NODE_CONFIG
összes térbeli elemzési művelet paramétereire mutat be példát.
{
"gpu_index": 0,
"do_calibration": true,
"enable_breakpad": false,
"enable_orientation": true
}
Név | Típus | Leírás |
---|---|---|
do_calibration |
húr | Azt jelzi, hogy a kalibrálás be van kapcsolva. do_calibration a cognitiveservices.vision.spatialanalysis-persondistance függvény megfelelő működéséhez igaznak kell lennie. do_calibration alapértelmezés szerint a következőre van True állítva: . |
enable_breakpad |
logikai | Azt jelzi, hogy engedélyezi-e a töréspadot, amely hibakeresési célú összeomlási memóriakép létrehozására szolgál. Ez alapértelmezés szerint így van false . Ha be true van állítva, a tároló createOptions részét HostConfig is hozzá kell adnia"CapAdd": ["SYS_PTRACE"] . Alapértelmezés szerint az összeomlási memóriakép fel lesz töltve a RealTimePersonTracking AppCenter alkalmazásba, ha azt szeretné, hogy az összeomlási memóriaképek a saját AppCenter-alkalmazásba legyenek feltöltve, felülbírálhatja a környezeti változót RTPT_APPCENTER_APP_SECRET az alkalmazás alkalmazáskulcsával. |
enable_orientation |
logikai | Azt jelzi, hogy ki szeretné-e számítani az észlelt személyek tájolását. enable_orientation alapértelmezés szerint a következőre van True állítva: . |
Kalibrációs konfiguráció
Ez egy példa az CALIBRATION_CONFIG
összes térbeli elemzési művelet paramétereire.
{
"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
}
Név | Típus | Leírás |
---|---|---|
enable_recalibration |
logikai | Azt jelzi, hogy az automatikus újraszámítás be van-e kapcsolva. Az alapértelmezett szint a true . |
calibration_quality_check_frequency_seconds |
egész | Az egyes minőségellenőrzések közötti minimális másodpercek száma annak megállapításához, hogy szükség van-e újraszámításra. Az alapértelmezett érték 86400 (24 óra). Csak akkor használatos, ha enable_recalibration=True . |
calibration_quality_check_sample_collect_frequency_seconds |
egész | Az újraszámításhoz és a minőség-ellenőrzéshez szükséges új adatminták összegyűjtése közötti minimális másodpercek száma. Az alapértelmezett érték 300 (5 perc). Csak akkor használatos, ha enable_recalibration=True . |
calibration_quality_check_one_round_sample_collect_num |
egész | A mintagyűjtési körönként összegyűjtendő új adatminták minimális száma. Az alapértelmezett szint a 10 . Csak akkor használatos, ha enable_recalibration=True . |
calibration_quality_check_queue_max_size |
egész | A kameramodell kalibrálásakor tárolható adatminták maximális száma. Az alapértelmezett szint a 1000 . Csak akkor használatos, ha enable_recalibration=True . |
calibration_event_frequency_seconds |
egész | A kamera kalibrálási eseményeinek kimeneti gyakorisága (másodperc). Egy érték -1 azt jelzi, hogy a fényképezőgép kalibrálását csak akkor szabad elküldeni, ha a fényképezőgép kalibrálási adatai módosultak. Az alapértelmezett szint a -1 . |
Kamera kalibrációs kimenet
Az alábbiakban egy példa látható a kamera kalibrálásának kimenetére, ha engedélyezve van. A három pont több azonos típusú objektumot jelöl a listában.
{
"type": "cameraCalibrationEvent",
"sourceInfo": {
"id": "camera1",
"timestamp": "2021-04-20T21:15:59.100Z",
"width": 512,
"height": 288,
"frameId": 531,
"cameraCalibrationInfo": {
"status": "Calibrated",
"cameraHeight": 13.294151306152344,
"focalLength": 372.0000305175781,
"tiltupAngle": 0.9581864476203918,
"lastCalibratedTime": "2021-04-20T21:15:59.058"
}
},
"zonePlacementInfo": {
"optimalZoneRegion": {
"type": "POLYGON",
"points": [
{
"x": 0.8403755868544601,
"y": 0.5515320334261838
},
{
"x": 0.15805946791862285,
"y": 0.5487465181058496
}
],
"name": "optimal_zone_region"
},
"fairZoneRegion": {
"type": "POLYGON",
"points": [
{
"x": 0.7871674491392802,
"y": 0.7437325905292479
},
{
"x": 0.22065727699530516,
"y": 0.7325905292479109
}
],
"name": "fair_zone_region"
},
"uniformlySpacedPersonBoundingBoxes": [
{
"type": "RECTANGLE",
"points": [
{
"x": 0.0297339593114241,
"y": 0.0807799442896936
},
{
"x": 0.10015649452269171,
"y": 0.2757660167130919
}
]
}
],
"personBoundingBoxGroundPoints": [
{
"x": -22.944068908691406,
"y": 31.487680435180664
}
]
}
}
További részletekért tekintse meg a térbeli elemzési művelet kimenetétsource_info
.
ZonePlacementInfo mezőnév | Típus | Leírás |
---|---|---|
optimalZonePolygon |
object | A kamera képének sokszöge, ahol a műveletekhez tartozó vonalak vagy zónák helyezhetők el az optimális eredmény érdekében. Minden értékpár egy sokszög csúcsainak x,y értékét jelöli. A sokszög azokat a területeket jelöli, ahol az embereket nyomon követik vagy megszámolják, a sokszögpontok pedig normalizált koordinátákon alapulnak (0-1), ahol a bal felső sarok (0,0, 0,0) és a jobb alsó sarok (1,0, 1,0). |
fairZonePolygon |
object | A kamera képének sokszöge, ahol a műveletekhez tartozó vonalak vagy zónák jó, de esetleg nem optimális eredményeket érhetnek el. A optimalZonePolygon tartalom részletes ismertetését lásd fentebb. |
uniformlySpacedPersonBoundingBoxes |
list | A kameraképen belül a valós térben egységesen elosztott személyek határolódobozainak listája. Az értékek normalizált koordinátákon alapulnak (0–1). |
personBoundingBoxGroundPoints |
list | A padlósíkon a kamera koordinátáinak listája. Minden koordináta a határolókeret jobb alsó sarkának uniformlySpacedPersonBoundingBoxes felel meg ugyanazzal az indexel. centerGroundPointX/centerGroundPointY A cognitiveservices.vision.spatialanalysis-persondistance AI-elemzések szakasz JSON-formátumában található mezőkben további információt talál a padlósík koordinátáinak kiszámításáról. |
Példa a videókereten vizualizált zónaelhelyezési információ kimenetére:
A zónaelhelyezési információk javaslatokat nyújtanak a konfigurációkhoz, de a legjobb eredmény érdekében a Kamera konfigurációra vonatkozó irányelveket továbbra is be kell tartani.
Tracker node parameter settings
A sebességszámítást a követő csomópont paraméterbeállításai segítségével konfigurálhatja.
{
"enable_speed": true,
"remove_stationary_objects": true,
"stationary_objects_dist_threshold_in_pixels": 5,
"stationary_objects_buffer_length_in_seconds": 3600,
"stationary_objects_filter_ratio": 0.2
}
Név | Típus | Leírás |
---|---|---|
enable_speed |
logikai | Azt jelzi, hogy ki szeretné-e számítani az észlelt személyek sebességét. enable_speed alapértelmezés szerint a következőre van True állítva: . Erősen ajánlott, hogy a sebesség és a tájolás is a legjobb becsült értékekkel rendelkezzen. |
remove_stationary_objects |
logikai | Azt jelzi, hogy el szeretné-e távolítani a helyhez kötött objektumokat. remove_stationary_objects alapértelmezés szerint Igaz értékre van állítva. |
stationary_objects_dist_threshold_in_pixels |
egész | A szomszédság távolsági küszöbértéke annak eldöntéséhez, hogy két észlelési doboz kezelhető-e ugyanazzal az észleléssel. stationary_objects_dist_threshold_in_pixels alapértelmezés szerint 5 értékre van állítva. |
stationary_objects_buffer_length_in_seconds |
egész | Az a minimális időtartam másodpercben, amelyet a rendszernek vissza kell néznie annak eldöntéséhez, hogy a cél helyhez kötött-e vagy sem. stationary_objects_buffer_length_in_seconds alapértelmezés szerint 3600 értékre van állítva. |
stationary_objects_filter_ratio |
float | Ha a rendszer az időintervallum nagyobb stationary_objects_filter_ratio (0,2-20%-stationary_objects_buffer_length_in_seconds át jelenti) helyén ismételten észlel stationary_objects_dist_threshold_in_pixels egy célhelyet, akkor az helyhez kötött célként lesz kezelve. stationary_objects_filter_ratio alapértelmezés szerint 0,2 értékre van állítva. |
Térinformatikai műveletek konfigurálása és kimenete
Zónakonfiguráció személyhez
Az alábbi példa egy JSON-bemenetet mutat be a zónát konfiguráló SPACEANALYTICS_CONFIG paraméterhez. Ehhez a művelethez több zónát is konfigurálhat.
{
"zones": [
{
"name": "lobbycamera",
"polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
"events": [
{
"type": "count",
"config": {
"trigger": "event",
"focus": "footprint"
}
}
]
}
]
}
Név | Típus | Leírás |
---|---|---|
zones |
list | Zónák listája. |
name |
húr | A zóna rövid neve. |
polygon |
list | Minden értékpár egy sokszög csúcsainak x,y értékét jelöli. A sokszög azokat a területeket jelöli, ahol az embereket nyomon követik vagy megszámolják. A sokszögpontok normalizált koordinátákon alapulnak (0-1), ahol a bal felső sarok (0,0, 0,0) és a jobb alsó sarok (1.0, 1.0). |
threshold |
float | Az események akkor lesznek kimenők, ha a személy nagyobb, mint ennyi képpont a zónán belül. Ez egy nem kötelező mező, és az érték arányban van (0-1). A 0,0253 érték például 13 képpont a képszélesség = 512 (0,0253 X 512 = ~13). |
type |
húr | A cognitiveservices.vision.spatialanalysis-personcount esetében ennek kell lenniecount . |
trigger |
húr | Esemény küldéséhez használt eseményindító típusa. A támogatott értékek az események küldésére vonatkoznak event , ha a darabszám változik, vagy interval az események rendszeres küldése, függetlenül attól, hogy a darabszám módosult-e vagy sem. |
output_frequency |
egész | Az események kimenő forgalmának sebessége. Amikor output_frequency = X, minden X esemény ki van menő, pl. output_frequency = 2 azt jelenti, hogy minden más esemény kimenet. Ez output_frequency mind a kettőre, mind event a interval . |
focus |
húr | Az események kiszámításához használt ponthely a személy határolókeretén belül. A fókusz értéke lehet footprint (a személy lábnyoma), bottom_center (a személy határolókeretének alsó közepe), center (a személy határolókeretének közepe). |
A personcrossingline vonalkonfigurációja
Az alábbi példa egy JSON-bemenetet mutat be a SPACEANALYTICS_CONFIG
sort konfiguráló paraméterhez. Ehhez a művelethez több átkelővonalat is konfigurálhat.
{
"lines": [
{
"name": "doorcamera",
"line": {
"start": {
"x": 0,
"y": 0.5
},
"end": {
"x": 1,
"y": 0.5
}
},
"events": [
{
"type": "linecrossing",
"config": {
"trigger": "event",
"focus": "footprint"
}
}
]
}
]
}
Név | Típus | Leírás |
---|---|---|
lines |
list | Sorok listája. |
name |
húr | A sor rövid neve. |
line |
list | A sor definíciója. Ez egy irányvonal, amely lehetővé teszi a "belépés" és a "kilépés" megértését. |
start |
értékpár | x, y koordináták a vonal kezdőpontjához. Az lebegőpontos értékek a csúcspontnak a bal felső sarokhoz viszonyított pozícióját jelölik. Az abszolút x, y értékek kiszámításához ezeket az értékeket meg kell szorozni a keret méretével. |
end |
értékpár | x, y koordináták a vonal zárópontjához. Az lebegőpontos értékek a csúcspontnak a bal felső sarokhoz viszonyított pozícióját jelölik. Az abszolút x, y értékek kiszámításához ezeket az értékeket meg kell szorozni a keret méretével. |
threshold |
float | Az események akkor lesznek kimenők, ha a személy nagyobb, mint ennyi képpont a zónán belül. Ez egy nem kötelező mező, és az érték arányban van (0-1). A 0,0253 érték például 13 képpont a képszélesség = 512 (0,0253 X 512 = ~13). |
type |
húr | A cognitiveservices.vision.spatialanalysis-personcrossingline esetében ennek kell lennielinecrossing . |
trigger |
húr | Esemény küldéséhez használt eseményindító típusa. Támogatott értékek: "esemény": akkor aktiválódik, ha valaki átlépi a vonalat. |
focus |
húr | Az események kiszámításához használt ponthely a személy határolókeretén belül. A fókusz értéke lehet footprint (a személy lábnyoma), bottom_center (a személy határolókeretének alsó közepe), center (a személy határolókeretének közepe). Az alapértelmezett érték a lábnyom. |
A personcrossingpolygon zónakonfigurációja
Ez egy példa a zónát konfiguráló paraméter JSON-bemenetére SPACEANALYTICS_CONFIG
. Ehhez a művelethez több zónát is konfigurálhat.
{
"zones":[
{
"name": "queuecamera",
"polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
"events":[{
"type": "zonecrossing",
"config":{
"trigger": "event",
"focus": "footprint"
}
}]
},
{
"name": "queuecamera1",
"polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
"events":[{
"type": "zonedwelltime",
"config":{
"trigger": "event",
"focus": "footprint"
}
}]
}]
}
Név | Típus | Leírás |
---|---|---|
zones |
list | Zónák listája. |
name |
húr | A zóna rövid neve. |
polygon |
list | Minden értékpár a sokszög csúcsainak x,y értékét jelöli. A sokszög azokat a területeket jelöli, ahol az embereket nyomon követik vagy megszámolják. Az lebegőpontos értékek a csúcspontnak a bal felső sarokhoz viszonyított pozícióját jelölik. Az abszolút x, y értékek kiszámításához ezeket az értékeket meg kell szorozni a keret méretével. |
target_side |
egész | Meghatározza a zóna azon oldalát, amelyet polygon úgy határoz meg, hogy megmérje, mennyi ideig néznek szembe az emberek az adott oldalon a zónában. A "dwellTimeForTargetSide" ezt a becsült időt fogja kihozni. Mindkét oldal egy számozott él a zónát jelképező sokszög két csúcsa között. A sokszög első két csúcsa közötti él például az első oldalt, az "side"=1-et jelöli. Az érték target_side a két N oldal polygon között [0,N-1] van. Ez egy nem kötelező mező. |
threshold |
float | Az események akkor lesznek kimenők, ha a személy nagyobb, mint ennyi képpont a zónán belül. Ez egy nem kötelező mező, és az érték arányban van (0-1). A 0,074 érték például 38 képpont lesz egy videón, képszélesség = 512 (0,074 X 512 = ~38). |
type |
húr | A cognitiveservices.vision.spatialanalysis-personcrossingpolygon esetében ennek vagy zonedwelltime .zonecrossing |
trigger |
húr | Esemény küldéséhez használt eseményindító típusa Támogatott értékek: "esemény": akkor aktiválódik, ha valaki belép vagy kilép a zónából. |
focus |
húr | Az események kiszámításához használt ponthely a személy határolókeretén belül. A fókusz értéke lehet footprint (a személy lábnyoma), bottom_center (a személy határolókeretének alsó közepe), center (a személy határolókeretének közepe). Az alapértelmezett érték a lábnyom. |
Zónakonfiguráció a személyre szabottsághoz
Ez egy példa a cognitiveservices.vision.spatialanalysis-persondistance zónát konfiguráló paraméter JSON-bemenetére.SPACEANALYTICS_CONFIG
Ehhez a művelethez több zónát is konfigurálhat.
{
"zones":[{
"name": "lobbycamera",
"polygon": [[0.3,0.3], [0.3,0.9], [0.6,0.9], [0.6,0.3], [0.3,0.3]],
"events":[{
"type": "persondistance",
"config":{
"trigger": "event",
"output_frequency":1,
"minimum_distance_threshold":6.0,
"maximum_distance_threshold":35.0,
"aggregation_method": "average",
"focus": "footprint"
}
}]
}]
}
Név | Típus | Leírás |
---|---|---|
zones |
list | Zónák listája. |
name |
húr | A zóna rövid neve. |
polygon |
list | Minden értékpár a sokszög csúcsainak x,y értékét jelöli. A sokszög azokat a területeket jelöli, ahol az embereket megszámolják, és megmérik a személyek közötti távolságot. Az lebegőpontos értékek a csúcspontnak a bal felső sarokhoz viszonyított pozícióját jelölik. Az abszolút x, y értékek kiszámításához ezeket az értékeket meg kell szorozni a keret méretével. |
threshold |
float | Az események akkor lesznek kimenők, ha a személy nagyobb, mint ennyi képpont a zónán belül. Ez egy nem kötelező mező, és az érték arányban van (0-1). A 0,0253 érték például 13 képpont a képszélesség = 512 (0,0253 X 512 = ~13). |
type |
húr | A cognitiveservices.vision.spatialanalysis-persondistance esetében ennek kell lennie persondistance . |
trigger |
húr | Esemény küldéséhez használt eseményindító típusa. A támogatott értékek az események küldésére vonatkoznak event , ha a darabszám változik, vagy interval az események rendszeres küldése, függetlenül attól, hogy a darabszám módosult-e vagy sem. |
output_frequency |
egész | Az események kimenő forgalmának sebessége. Amikor output_frequency = X, minden X esemény ki van menő, pl. output_frequency = 2 azt jelenti, hogy minden más esemény kimenet. Ez output_frequency mind a kettőre, mind event a interval . |
minimum_distance_threshold |
float | Egy távolság a lábban, amely elindítja a "TooClose" eseményt, ha az emberek kisebbek, mint a távolság egymástól. |
maximum_distance_threshold |
float | Egy távolság a lábban, amely kiváltja a "TooFar" eseményt, ha az emberek nagyobbak, mint a távolság egymástól. |
aggregation_method |
húr | Az összesített persondistance eredmény metódusa. A aggregation_method mind a mode average . |
focus |
húr | Az események kiszámításához használt ponthely a személy határolókeretén belül. A fókusz értéke lehet footprint (a személy lábnyoma), bottom_center (a személy határolókeretének alsó közepe), center (a személy határolókeretének közepe). |
A térbelianalízis konfigurálása
Az alábbi példa egy JSON-bemenetre a SPACEANALYTICS_CONFIG
paraméterhez, amely egy vonalat és zónát konfigurál a cognitiveservices.vision.spatialanalysis számára. Ehhez a művelethez több sort/zónát is konfigurálhat, és mindegyik sor/zóna különböző eseményeket tartalmazhat.
{
"lines": [
{
"name": "doorcamera",
"line": {
"start": {
"x": 0,
"y": 0.5
},
"end": {
"x": 1,
"y": 0.5
}
},
"events": [
{
"type": "linecrossing",
"config": {
"trigger": "event",
"focus": "footprint"
}
}
]
}
],
"zones": [
{
"name": "lobbycamera",
"polygon": [[0.3, 0.3],[0.3, 0.9],[0.6, 0.9],[0.6, 0.3],[0.3, 0.3]],
"events": [
{
"type": "persondistance",
"config": {
"trigger": "event",
"output_frequency": 1,
"minimum_distance_threshold": 6.0,
"maximum_distance_threshold": 35.0,
"focus": "footprint"
}
},
{
"type": "count",
"config": {
"trigger": "event",
"output_frequency": 1,
"focus": "footprint"
}
},
{
"type": "zonecrossing",
"config": {
"focus": "footprint"
}
},
{
"type": "zonedwelltime",
"config": {
"focus": "footprint"
}
}
]
}
]
}
Kamera konfigurációja
A zónák és vonalak konfigurálásáról a kamera elhelyezési irányelveiből tájékozódhat.
Térinformatikai művelet kimenete
Az egyes műveletek eseményei JSON formátumban kerülnek az Azure IoT Hubra.
A personcount AI-elemzések JSON formátuma
JSON-minta egy eseménykimenethez ezzel a művelettel.
{
"events": [
{
"id": "b013c2059577418caa826844223bb50b",
"type": "personCountEvent",
"detectionIds": [
"bc796b0fc2534bc59f13138af3dd7027",
"60add228e5274158897c135905b5a019"
],
"properties": {
"personCount": 2
},
"zone": "lobbycamera",
"trigger": "event"
}
],
"sourceInfo": {
"id": "camera_id",
"timestamp": "2020-08-24T06:06:57.224Z",
"width": 608,
"height": 342,
"frameId": "1400",
"cameraCalibrationInfo": {
"status": "Calibrated",
"cameraHeight": 10.306597709655762,
"focalLength": 385.3199462890625,
"tiltupAngle": 1.0969393253326416
},
"imagePath": ""
},
"detections": [
{
"type": "person",
"id": "bc796b0fc2534bc59f13138af3dd7027",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.612683747944079,
"y": 0.25340268765276636
},
{
"x": 0.7185954043739721,
"y": 0.6425260577285499
}
]
},
"confidence": 0.9559211134910583,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "0.0",
"groundOrientationAngle": "1.3",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
},
"attributes": [
{
"label": "face_mask",
"confidence": 0.99,
"task": ""
}
]
},
{
"type": "person",
"id": "60add228e5274158897c135905b5a019",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.22326200886776573,
"y": 0.17830915618361087
},
{
"x": 0.34922296122500773,
"y": 0.6297955429344847
}
]
},
"confidence": 0.9389744400978088,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "18.635927200317383",
"groundOrientationAngle": "1.3",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
},
"attributes": [
{
"label": "face_mask",
"confidence": 0.99,
"task": ""
}
]
}
],
"schemaVersion": "2.0"
}
Eseménymező neve | Típus | Leírás |
---|---|---|
id |
húr | Eseményazonosító |
type |
húr | Eseménytípus |
detectionsId |
array | Az eseményt kiváltó személyészlelés egyedi azonosítójának 1-es méretű tömbje |
properties |
Gyűjtemény | Értékek gyűjteménye |
trackinId |
húr | Az észlelt személy egyedi azonosítója |
zone |
húr | A többszög "name" mezője, amely a keresztezett zónát jelöli |
trigger |
húr | Az eseményindító típusa "esemény" vagy "intervallum" a trigger SPACEANALYTICS_CONFIG |
Észlelések mezőneve | Típus | Leírás |
---|---|---|
id |
húr | Észlelési azonosító |
type |
húr | Észlelés típusa |
region |
Gyűjtemény | Értékek gyűjteménye |
type |
húr | Régió típusa |
points |
Gyűjtemény | Jobb felső és alsó pont, ha a régió típusa TÉGLALAP |
confidence |
float | Algoritmus megbízhatósága |
attributes |
array | Attribútumok tömbje. Minden attribútum címkéből, feladatból és megbízhatóságból áll |
label |
húr | Az attribútum értéke (például azt jelzi, {label: face_mask} hogy az észlelt személy arcmaszkot visel) |
confidence (attribute) |
float | Az attribútum megbízhatósági értéke 0 és 1 között (például azt jelzi, {confidence: 0.9, label: face_nomask} hogy az észlelt személy nem visel maszkot) |
task |
húr | Az attribútumbesorolási feladat/osztály |
SourceInfo mező neve | Típus | Leírás |
---|---|---|
id |
húr | Kamera azonosító |
timestamp |
dátum: | A JSON hasznos adat kibocsátásának UTC-dátuma |
width |
egész | Videokeret szélessége |
height |
egész | Videokeret magassága |
frameId |
egész | Keretazonosító |
cameraCallibrationInfo |
Gyűjtemény | Értékek gyűjteménye |
status |
húr | A kalibrálás állapota a következő formátumban state[;progress description] : . Az állapot lehet Calibrating , Recalibrating (ha az újraszámítás engedélyezve van) vagy Calibrated . A folyamat leírási része csak akkor érvényes, ha az állapotban Calibrating Recalibrating van, és az aktuális kalibrációs folyamat előrehaladásának megjelenítésére szolgál. |
cameraHeight |
float | A kamera magassága a talaj felett lábban. Ez az automatikus skálázásból következik. |
focalLength |
float | A kamera fókusztávolsága képpontban. Ez az automatikus skálázásból következik. |
tiltUpAngle |
float | A kamera dőlési szöge függőlegesen. Ez az automatikus skálázásból következik. |
JSON formátum personcrossingline AI-elemzések
JSON-minta a művelet által kihozott észlelésekhez.
{
"events": [
{
"id": "3733eb36935e4d73800a9cf36185d5a2",
"type": "personLineEvent",
"detectionIds": [
"90d55bfc64c54bfd98226697ad8445ca"
],
"properties": {
"trackingId": "90d55bfc64c54bfd98226697ad8445ca",
"status": "CrossLeft"
},
"zone": "doorcamera"
}
],
"sourceInfo": {
"id": "camera_id",
"timestamp": "2020-08-24T06:06:53.261Z",
"width": 608,
"height": 342,
"frameId": "1340",
"imagePath": ""
},
"detections": [
{
"type": "person",
"id": "90d55bfc64c54bfd98226697ad8445ca",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.491627341822574,
"y": 0.2385801348769874
},
{
"x": 0.588894994635331,
"y": 0.6395559924387793
}
]
},
"confidence": 0.9005028605461121,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "18.635927200317383",
"groundOrientationAngle": "1.3",
"trackingId": "90d55bfc64c54bfd98226697ad8445ca",
"speed": "1.2",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
},
"attributes": [
{
"label": "face_mask",
"confidence": 0.99,
"task": ""
}
]
}
],
"schemaVersion": "2.0"
}
Eseménymező neve | Típus | Leírás |
---|---|---|
id |
húr | Eseményazonosító |
type |
húr | Eseménytípus |
detectionsId |
array | Az eseményt kiváltó személyészlelés egyedi azonosítójának 1-es méretű tömbje |
properties |
Gyűjtemény | Értékek gyűjteménye |
trackinId |
húr | Az észlelt személy egyedi azonosítója |
status |
húr | Vonalátjárók iránya, "CrossLeft" vagy "CrossRight". Az irány a vonal "végén" álló "start" képén alapul. A CrossRight balról jobbra halad. A CrossLeft jobbról balra halad. |
orientationDirection |
húr | Az észlelt személy iránya a vonal átlépése után. Az érték lehet "Balra", "Jobbra vagy Egyenes". Ez az érték kimenet, ha enable_orientation a következő értékre van állítva:True CAMERACALIBRATOR_NODE_CONFIG |
zone |
húr | A keresztezett sor "name" mezője |
Észlelések mezőneve | Típus | Leírás |
---|---|---|
id |
húr | Észlelési azonosító |
type |
húr | Észlelés típusa |
region |
Gyűjtemény | Értékek gyűjteménye |
type |
húr | Régió típusa |
points |
Gyűjtemény | Jobb felső és alsó pont, ha a régió típusa TÉGLALAP |
groundOrientationAngle |
float | A személy tájolásának óramutató járásával megegyező irányszöge a kikövetkező földi síkon |
mappedImageOrientation |
float | A személy tájolásának előrejelzett, óramutató járásával megegyező sugarú szöge a 2D képtéren |
speed |
float | Az észlelt személy becsült sebessége. Az egység foot per second (ft/s) |
confidence |
float | Algoritmus megbízhatósága |
attributes |
array | Attribútumok tömbje. Minden attribútum címkéből, feladatból és megbízhatóságból áll |
label |
húr | Az attribútum értéke (például azt jelzi, {label: face_mask} hogy az észlelt személy arcmaszkot visel) |
confidence (attribute) |
float | Az attribútum megbízhatósági értéke 0 és 1 között (például azt jelzi, {confidence: 0.9, label: face_nomask} hogy az észlelt személy nem visel maszkot) |
task |
húr | Az attribútumbesorolási feladat/osztály |
SourceInfo mező neve | Típus | Leírás |
---|---|---|
id |
húr | Kamera azonosító |
timestamp |
dátum: | A JSON hasznos adat kibocsátásának UTC-dátuma |
width |
egész | Videokeret szélessége |
height |
egész | Videokeret magassága |
frameId |
egész | Keretazonosító |
Fontos
Az AI-modell észleli a személyt, függetlenül attól, hogy a személy a kamera felé vagy távol van-e. Az AI-modell nem futtat arcfelismerést, és nem bocsát ki biometrikus adatokat.
JSON formátum personcrossingpolygon AI-elemzések
JSON-minta a művelet által a SPACEANALYTICS_CONFIG típusú észlelések kimenetéhez zonecrossing
.
{
"events": [
{
"id": "f095d6fe8cfb4ffaa8c934882fb257a5",
"type": "personZoneEnterExitEvent",
"detectionIds": [
"afcc2e2a32a6480288e24381f9c5d00e"
],
"properties": {
"trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
"status": "Enter",
"side": "1"
},
"zone": "queuecamera"
}
],
"sourceInfo": {
"id": "camera_id",
"timestamp": "2020-08-24T06:15:09.680Z",
"width": 608,
"height": 342,
"frameId": "428",
"imagePath": ""
},
"detections": [
{
"type": "person",
"id": "afcc2e2a32a6480288e24381f9c5d00e",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.8135572734631991,
"y": 0.6653949670624315
},
{
"x": 0.9937645761590255,
"y": 0.9925406829655519
}
]
},
"confidence": 0.6267998814582825,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "18.635927200317383",
"groundOrientationAngle": "1.3",
"trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
"speed": "1.2",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
},
"attributes": [
{
"label": "face_mask",
"confidence": 0.99,
"task": ""
}
]
}
],
"schemaVersion": "2.0"
}
JSON-minta a művelet által a SPACEANALYTICS_CONFIG típusú észlelések kimenetéhez zonedwelltime
.
{
"events": [
{
"id": "f095d6fe8cfb4ffaa8c934882fb257a5",
"type": "personZoneDwellTimeEvent",
"detectionIds": [
"afcc2e2a32a6480288e24381f9c5d00e"
],
"properties": {
"trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
"status": "Exit",
"side": "1",
"dwellTime": 7132.0,
"dwellFrames": 20
},
"zone": "queuecamera"
}
],
"sourceInfo": {
"id": "camera_id",
"timestamp": "2020-08-24T06:15:09.680Z",
"width": 608,
"height": 342,
"frameId": "428",
"imagePath": ""
},
"detections": [
{
"type": "person",
"id": "afcc2e2a32a6480288e24381f9c5d00e",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.8135572734631991,
"y": 0.6653949670624315
},
{
"x": 0.9937645761590255,
"y": 0.9925406829655519
}
]
},
"confidence": 0.6267998814582825,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "18.635927200317383",
"groundOrientationAngle": "1.2",
"mappedImageOrientation": "0.3",
"speed": "1.2",
"trackingId": "afcc2e2a32a6480288e24381f9c5d00e",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
}
}
],
"schemaVersion": "2.0"
}
Eseménymező neve | Típus | Leírás |
---|---|---|
id |
húr | Eseményazonosító |
type |
húr | Esemény típusa. Az érték lehet personZoneDwellTimeEvent vagy personZoneEnterExitEvent |
detectionsId |
array | Az eseményt kiváltó személyészlelés egyedi azonosítójának 1-es méretű tömbje |
properties |
Gyűjtemény | Értékek gyűjteménye |
trackinId |
húr | Az észlelt személy egyedi azonosítója |
status |
húr | A sokszögek keresztezésének iránya, "Enter" vagy "Exit" |
side |
egész | A személy által keresztezett sokszög oldalának száma. Mindkét oldal egy számozott él a zónát jelképező sokszög két csúcsa között. A sokszög első két csúcsa közötti szél az első oldalt jelöli. Az "Oldal" üres, ha az esemény nem egy adott oldalhoz van társítva az elzáródás miatt. A kilépés például akkor történt, amikor egy személy eltűnt, de nem volt látható a zóna egyik oldalán való áthaladáskor, vagy egy belépés akkor történt, amikor egy személy megjelent a zónában, de nem látták az oldalátlépést. |
dwellTime |
float | Az ezredmásodpercek száma, amelyek a zónában töltött időt jelölik. Ez a mező akkor jelenik meg, ha az esemény típusa personZoneDwellTimeEvent |
dwellFrames |
egész | A zónában töltött keretek száma. Ez a mező akkor jelenik meg, ha az esemény típusa personZoneDwellTimeEvent |
dwellTimeForTargetSide |
float | Azon ezredmásodpercek száma, amelyek azt az időt jelölik, amelyet a személy töltött a zónában, és a zónával szembesültek target_side . Ez a mező akkor jelenik meg, ha enable_orientation be van True advaCAMERACALIBRATOR_NODE_CONFIG , és a mező értéke target_side SPACEANALYTICS_CONFIG |
avgSpeed |
float | A zónában lévő személy átlagos sebessége. Az egység foot per second (ft/s) |
minSpeed |
float | A zónában lévő személy minimális sebessége. Az egység foot per second (ft/s) |
zone |
húr | A többszög "name" mezője, amely a keresztezett zónát jelöli |
Észlelések mezőneve | Típus | Leírás |
---|---|---|
id |
húr | Észlelési azonosító |
type |
húr | Észlelés típusa |
region |
Gyűjtemény | Értékek gyűjteménye |
type |
húr | Régió típusa |
points |
Gyűjtemény | Jobb felső és alsó pont, ha a régió típusa TÉGLALAP |
groundOrientationAngle |
float | A személy tájolásának óramutató járásával megegyező irányszöge a kikövetkező földi síkon |
mappedImageOrientation |
float | A személy tájolásának előrejelzett, óramutató járásával megegyező sugarú szöge a 2D képtéren |
speed |
float | Az észlelt személy becsült sebessége. Az egység foot per second (ft/s) |
confidence |
float | Algoritmus megbízhatósága |
attributes |
array | Attribútumok tömbje. Minden attribútum címkéből, feladatból és megbízhatóságból áll |
label |
húr | Az attribútum értéke (például azt jelzi, {label: face_mask} hogy az észlelt személy arcmaszkot visel) |
confidence (attribute) |
float | Az attribútum megbízhatósági értéke 0 és 1 között (például azt jelzi, {confidence: 0.9, label: face_nomask} hogy az észlelt személy nem visel maszkot) |
task |
húr | Az attribútumbesorolási feladat/osztály |
JSON formátum a persondistance AI-elemzések
JSON-minta a művelet által kihozott észlelésekhez.
{
"events": [
{
"id": "9c15619926ef417aa93c1faf00717d36",
"type": "personDistanceEvent",
"detectionIds": [
"9037c65fa3b74070869ee5110fcd23ca",
"7ad7f43fd1a64971ae1a30dbeeffc38a"
],
"properties": {
"personCount": 5,
"averageDistance": 20.807043981552123,
"minimumDistanceThreshold": 6.0,
"maximumDistanceThreshold": "Infinity",
"eventName": "TooClose",
"distanceViolationPersonCount": 2
},
"zone": "lobbycamera",
"trigger": "event"
}
],
"sourceInfo": {
"id": "camera_id",
"timestamp": "2020-08-24T06:17:25.309Z",
"width": 608,
"height": 342,
"frameId": "1199",
"cameraCalibrationInfo": {
"status": "Calibrated",
"cameraHeight": 12.9940824508667,
"focalLength": 401.2800598144531,
"tiltupAngle": 1.057669997215271
},
"imagePath": ""
},
"detections": [
{
"type": "person",
"id": "9037c65fa3b74070869ee5110fcd23ca",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.39988183975219727,
"y": 0.2719132942065858
},
{
"x": 0.5051516984638414,
"y": 0.6488402517218339
}
]
},
"confidence": 0.948630690574646,
"metadata": {
"centerGroundPointX": "-1.4638760089874268",
"centerGroundPointY": "18.29732322692871",
"groundOrientationAngle": "1.3",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
}
},
{
"type": "person",
"id": "7ad7f43fd1a64971ae1a30dbeeffc38a",
"region": {
"type": "RECTANGLE",
"points": [
{
"x": 0.5200299714740954,
"y": 0.2875368218672903
},
{
"x": 0.6457497446160567,
"y": 0.6183311060855263
}
]
},
"confidence": 0.8235412240028381,
"metadata": {
"centerGroundPointX": "2.6310102939605713",
"centerGroundPointY": "18.635927200317383",
"groundOrientationAngle": "1.3",
"footprintX": "0.7306610584259033",
"footprintY": "0.8814966493381893"
}
}
],
"schemaVersion": "2.0"
}
Eseménymező neve | Típus | Leírás |
---|---|---|
id |
húr | Eseményazonosító |
type |
húr | Eseménytípus |
detectionsId |
array | Az eseményt kiváltó személyészlelés egyedi azonosítójának 1-es méretű tömbje |
properties |
Gyűjtemény | Értékek gyűjteménye |
personCount |
egész | Az esemény kibocsátásakor észlelt személyek száma |
averageDistance |
float | A lábban lévő összes észlelt személy átlagos távolsága |
minimumDistanceThreshold |
float | A távolság a lábban, amely kiváltja a "TooClose" eseményt, ha az emberek kisebbek, mint a távolság egymástól. |
maximumDistanceThreshold |
float | A lábban lévő távolság, amely "TooFar" eseményt vált ki, ha az emberek nagyobb távolságra vannak egymástól. |
eventName |
húr | Az esemény neve TooClose sérült minimumDistanceThreshold , TooFar mikor maximumDistanceThreshold sérül, vagy unknown ha az automatikus skálázás nem fejeződött be |
distanceViolationPersonCount |
egész | Azoknak a személyeknek a száma, akiket megsértett vagy megsértett minimumDistanceThreshold maximumDistanceThreshold |
zone |
húr | A sokszög "név" mezője, amely a személyek közötti távolságra figyelt zónát jelöli |
trigger |
húr | Az eseményindító típusa "esemény" vagy "intervallum" a trigger SPACEANALYTICS_CONFIG |
Észlelések mezőneve | Típus | Leírás |
---|---|---|
id |
húr | Észlelési azonosító |
type |
húr | Észlelés típusa |
region |
Gyűjtemény | Értékek gyűjteménye |
type |
húr | Régió típusa |
points |
Gyűjtemény | Jobb felső és alsó pont, ha a régió típusa TÉGLALAP |
confidence |
float | Algoritmus megbízhatósága |
centerGroundPointX/centerGroundPointY |
2 lebegőpontos érték | x értékeket y , amelyekben az adott személy által a talajra lekövetett hely koordinátái a lábakban találhatók. x és y koordináták a padlósíkon, feltéve, hogy a padló szint. A kamera helye a forrás. |
x
Ebben centerGroundPoint
az esetben a kamera és a kamera képsíkjára merőleges személy közötti távolság összetevője. y
a kamera képsíkjával párhuzamos távolság összetevője.
Ebben a példában centerGroundPoint
a következő: {centerGroundPointX: 4, centerGroundPointY: 5}
. Ez azt jelenti, hogy van egy ember, aki négy méterre van a kamera előtt, és öt lábbal jobbra, felülről nézi a szobát.
SourceInfo mező neve | Típus | Leírás |
---|---|---|
id |
húr | Kamera azonosító |
timestamp |
dátum: | A JSON hasznos adat kibocsátásának UTC-dátuma |
width |
egész | Videokeret szélessége |
height |
egész | Videokeret magassága |
frameId |
egész | Keretazonosító |
cameraCallibrationInfo |
Gyűjtemény | Értékek gyűjteménye |
status |
húr | A kalibrálás állapota a következő formátumban state[;progress description] : . Az állapot lehet Calibrating , Recalibrating (ha az újraszámítás engedélyezve van) vagy Calibrated . A folyamat leírási része csak akkor érvényes, ha az állapotban Calibrating Recalibrating van, és az aktuális kalibrációs folyamat előrehaladásának megjelenítésére szolgál. |
cameraHeight |
float | A kamera magassága a talaj felett lábban. Ez az automatikus skálázásból következik. |
focalLength |
float | A kamera fókusztávolsága képpontban. Ez az automatikus skálázásból következik. |
tiltUpAngle |
float | A kamera dőlési szöge függőlegesen. Ez az automatikus skálázásból következik. |
A térbelianalízis AI-elemzések JSON-formátuma
A művelet kimenete a konfigurálttól events
függ, például ha zonecrossing
egy esemény van konfigurálva ehhez a művelethez, akkor a kimenet ugyanaz lesz, mint cognitiveservices.vision.spatialanalysis-personcrossingpolygon
a .
A tároló által létrehozott kimenet használata
Érdemes lehet integrálni a térinformatikai észlelést vagy eseményeket az alkalmazásba. Az alábbiakban néhány módszert érdemes megfontolni:
- A választott programozási nyelvhez tartozó Azure Event Hubs SDK használatával csatlakozzon az Azure IoT Hub végpontjához, és fogadja az eseményeket. További információ: Eszközről felhőbe irányuló üzenetek olvasása a beépített végpontról.
- Állítsa be az Üzenet-útválasztást az Azure IoT Hubon, hogy az eseményeket más végpontokra küldje, vagy mentse az eseményeket az adattárba. További információ: IoT Hub Üzenet-útválasztás.
- Állítson be egy Azure Stream Analytics-feladatot, amely valós időben dolgozza fel az eseményeket, amikor megérkeznek, és vizualizációkat hoz létre.
Térinformatikai műveletek nagy léptékű üzembe helyezése (több kamera)
A GPU-k lehető legjobb teljesítménye és kihasználtsága érdekében gráfpéldányok használatával bármilyen térinformatikai műveletet üzembe helyezhet több kamerán. Az alábbiakban egy mintakonfiguráció látható a cognitiveservices.vision.spatialanalysis-personcrossingline
művelet 15 kamerán való futtatásához.
"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>"
}
}
}
},
}
}
Név | Típus | Leírás |
---|---|---|
batch_size |
egész | Ha az összes kamera felbontása megegyezik, állítsa be batch_size az adott műveletben használni kívánt kamerák számát, ellenkező esetben állítsa be az 1 értéket batch_size , vagy hagyja meg alapértelmezettként (1), ami azt jelzi, hogy a köteg nem támogatott. |