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": 1920kell 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 truevan állítva, a tároló createOptionsré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_calibrationa 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 truevan állítva, a tároló createOptionsré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: Zone placement info visualization

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_pixelsegy 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 polygonkö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 modeaverage.
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 CalibratingRecalibrating 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:TrueCAMERACALIBRATOR_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_sideSPACEANALYTICS_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 minimumDistanceThresholdmaximumDistanceThreshold
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 centerGroundPointaz 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.

Example center ground point

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 CalibratingRecalibrating 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 eventsfü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-personcrossingpolygona .

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.

Következő lépések